diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 000000000..acf811458 --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,35 @@ +Please fill in the following items if you don't know the root cause. + +Which distribution and version?: +(E.g. Fedora 27. Check /etc/fedora-release) + +Which desktop environment and version?: +(E.g. GNOME 3.24. Check $XDG_CURRENT_DESKTOP and your ISO image.) + +Which session type?: +(X11 or Wayland. Check $XDG_SESSION_TYPE) + +Which application and version?: +(E.g. gedit 3.24, leafpad, kate, xterm) + +IBus version?: +(Run `ibus version`) + +Issue description: + + +Steps to reproduce: +1. +1. +1. +1. + +Can you reproduce your problem when you restart ibus-daemon? (yes / no): +(Run `ibus exit` and `ibus-daemon --xim &`) + +Do you see any errors when you run ibus-daemon with the verbose option?: +(Run `ibus-daemon --xim --verbose &` and look at the output when you encounter your problem.) + + +Can you reproduce your problem with a new user account instead of the current your account? (yes / no): + diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..100b3be42 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,79 @@ +language: c +compiler: gcc +os: linux + +# Require gettext-0.19.8 +dist: focal + +branches: + only: + - master + +# FIXME: Run script in every arch +arch: + - amd64 + #- ppc64le + #- s390x + #- arm64 + +addons: + apt: + packages: + # For autogen.sh + - autopoint + # For make from + # https://packages.ubuntu.com/search?searchon=sourcenames&keywords=ibus + - desktop-file-utils + - gobject-introspection + - gtk-doc-tools + - iso-codes + - libdconf-dev + - libgirepository1.0-dev + - libglib2.0-dev + - libgtk-3-bin + - libgtk-3-dev + - libgtk2.0-dev + - libnotify-dev + - libtool + - libwayland-dev + - python-gi-dev + - python3-all + - unicode-cldr-core + - unicode-data + - valac + +jobs: + include: + - name: Build in Ubuntu + before_script: + - sudo apt-get -qq update + env: + - SAVE_DIST_FILES=0 + script: + - set -e + - git config pull.rebase false + - git pull --depth=200 + # configure options from + # https://salsa.debian.org/debian/ibus/-/blob/master/debian/rules + - > + ./autogen.sh + --enable-gtk-doc + --with-python=/usr/bin/python3 + --with-ucd-dir='/usr/share/unicode' + --enable-install-tests + # Set the cutom DESTDIR because the default DESTDIR + # /home/travis/bulid/fujiwarat/$PKG/ibus/ibus-$VERSION/_inst seems to be + # too long and failed to set DESTDIR to install bindings/pygobject/IBus.py + - > + make distcheck + DISTCHECK_CONFIGURE_FLAGS=" + --enable-gtk-doc + --disable-schemas-install + --enable-memconf + --with-python=/usr/bin/python3 + --with-ucd-dir='/usr/share/unicode' + --enable-install-tests + " + DISABLE_GUI_TESTS="ibus-compose ibus-keypress test-stress xkb-latin-layouts" + VERBOSE=1 + DESTDIR="$HOME/build/$USER/dest" diff --git a/AUTHORS b/AUTHORS index 0951c2edb..f177cf26e 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,6 +1,10 @@ Peng Huang +Maintainers: +----------- +Takao Fujiwara + Translators: ----------- ar.po: diff --git a/COPYING.unicode b/COPYING.unicode new file mode 100644 index 000000000..28d30606b --- /dev/null +++ b/COPYING.unicode @@ -0,0 +1,52 @@ +(Apply to data/annotations/en.xml) + +UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE + + Unicode Data Files include all data files under the directories +http://www.unicode.org/Public/, http://www.unicode.org/reports/, and +http://www.unicode.org/cldr/data/. Unicode Data Files do not include PDF +online code charts under the directory http://www.unicode.org/Public/. +Software includes any source code published in the Unicode Standard or under +the directories http://www.unicode.org/Public/, +http://www.unicode.org/reports/, and http://www.unicode.org/cldr/data/. + + NOTICE TO USER: Carefully read the following legal agreement. BY +DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES +("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND +AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF +YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA +FILES OR SOFTWARE. + + COPYRIGHT AND PERMISSION NOTICE + + Copyright © 1991-2016 Unicode, Inc. All rights reserved. Distributed under +the Terms of Use in http://www.unicode.org/copyright.html. + + Permission is hereby granted, free of charge, to any person obtaining a +copy of the Unicode data files and any associated documentation (the "Data +Files") or Unicode software and any associated documentation (the "Software") +to deal in the Data Files or Software without restriction, including without +limitation the rights to use, copy, modify, merge, publish, distribute, and/or +sell copies of the Data Files or Software, and to permit persons to whom the +Data Files or Software are furnished to do so, provided that (a) the above +copyright notice(s) and this permission notice appear with all copies of the +Data Files or Software, (b) both the above copyright notice(s) and this +permission notice appear in associated documentation, and (c) there is clear +notice in each modified Data File or in the Software as well as in the +documentation associated with the Data File(s) or Software that the data or +software has been modified. + + THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD +PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN +THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL +DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE +DATA FILES OR SOFTWARE. + + Except as contained in this notice, the name of a copyright holder shall +not be used in advertising or otherwise to promote the sale, use or other +dealings in these Data Files or Software without prior written authorization +of the copyright holder. diff --git a/Makefile.am b/Makefile.am index e648e44c8..9ff786dc3 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2,27 +2,34 @@ # # ibus - The Input Bus # -# Copyright (c) 2007-2010 Peng Huang -# Copyright (c) 2007-2010 Red Hat, Inc. +# Copyright (c) 2007-2016 Peng Huang +# Copyright (c) 2015-2019 Takao Fujiwara +# Copyright (c) 2007-2019 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA NULL = +if ENABLE_UI UI_DIR = ui +endif + +if ENABLE_ENGINE +ENGINE_DIR = engine +endif if ENABLE_SETUP SETUP_DIR = setup @@ -40,17 +47,18 @@ endif SUBDIRS = \ src \ + bindings \ util \ conf \ client \ - engine \ - tools \ + portal \ data \ m4 \ po \ docs \ - bindings \ + $(ENGINE_DIR) \ $(UI_DIR) \ + tools \ $(DAEMON_DIR) \ $(PYTHON_LIB_DIRS) \ $(SETUP_DIR) \ @@ -63,6 +71,7 @@ pkgconfig_DATA = ibus-@IBUS_API_VERSION@.pc ibus_pc_in = ibus-@IBUS_API_VERSION@.pc.in EXTRA_DIST = \ + COPYING.unicode \ autogen.sh \ $(ibus_pc_in) \ ibus.spec.in \ @@ -83,17 +92,28 @@ install-data-hook: DISTCHECK_CONFIGURE_FLAGS = \ --enable-gtk-doc \ --disable-schemas-install \ - --disable-introspection \ + --enable-memconf \ $(NULL) dist-hook: if test -d .git ; then \ git log --name-status --date=iso > $(distdir)/ChangeLog ; \ + IBUS_PREV_MICRO_VERSION=`expr $(IBUS_MICRO_VERSION) - 1`; \ + IBUS_PREV_VERSION=\ +"$(IBUS_MAJOR_VERSION).$(IBUS_MINOR_VERSION).$$IBUS_PREV_MICRO_VERSION"; \ + echo "Changes in IBus $(IBUS_VERSION)" > $(distdir)/NEWS; \ + echo "" >> $(distdir)/NEWS; \ + git shortlog $$IBUS_PREV_VERSION...$(IBUS_VERSION) \ + >> $(distdir)/NEWS; \ + echo "" >> $(distdir)/NEWS; \ + git log $$IBUS_PREV_VERSION...$(IBUS_VERSION) --reverse \ + --pretty=format:'%s (%an) %h' >> $(distdir)/NEWS; \ fi distclean-local: if test "x$(srcdir)" = "x."; then :; else \ rm -f ChangeLog; \ + rm -f NEWS; \ fi MAINTAINERCLEANFILES = \ @@ -118,48 +138,6 @@ srpm: dist @PACKAGE_NAME@.spec --define "_specdir `pwd`/rpm" \ @PACKAGE_NAME@.spec -.PHONY: debian/changelog -debian/changelog: - $(AM_V_GEN) \ - ( \ - . /etc/lsb-release; \ - date=`date -R`; \ - version=@VERSION@; \ - serie=$(serie); \ - if test -z "$$serie"; then \ - serie=$$DISTRIB_CODENAME; \ - fi; \ - if test -z "$$release"; then \ - release=1; \ - fi; \ - s=`cat debian/changelog.in`; \ - eval "echo \"$${s}\""; \ - ) > $@ - -ppa: dist debian/changelog - $(AM_V_GEN) \ - ( \ - mkdir ppa; \ - cd ppa; \ - tar zxvf ../$(distdir).tar.gz ; \ - cd $(distdir); \ - cp -a ../../debian . ; \ - cd debian; \ - debuild -S -sa ; \ - ) - -dpkg: dist debian/changelog - $(AM_V_GEN) \ - ( \ - mkdir ppa; \ - cd ppa; \ - tar zxvf ../$(distdir).tar.gz ; \ - cd $(distdir); \ - cp -a ../../debian . ; \ - cd debian; \ - debuild -b -us -uc; \ - ) - clean-rpm: $(RM) -r "`uname -i`" diff --git a/README b/README index 01b870ea1..2a85f10d8 100644 --- a/README +++ b/README @@ -18,10 +18,9 @@ ibus: It is ibus daemon. hotkeys: -Ctrl + Space: Enable or Disable input method -Ctrl + Shift: Change input method. +Super + Space: Change input method. -For more detail please refer to http://code.google.com/p/ibus/wiki/ReadMe . +For more detail please refer to https://github.com/ibus/ibus/wiki/ReadMe . Peng Huang diff --git a/autogen.sh b/autogen.sh index c4cea1a42..1acbf7059 100755 --- a/autogen.sh +++ b/autogen.sh @@ -1,25 +1,90 @@ #!/bin/sh # Run this to generate all the initial makefiles, etc. -srcdir=`dirname $0` -test -z "$srcdir" && srcdir=. +: ${srcdir=$(dirname $0)} +: ${srcdir:=.} +: ${SAVE_DIST_FILES:=0} -PKG_NAME="ibus" +olddir=$(pwd) +# shellcheck disable=SC2016 +PKG_NAME=$(autoconf --trace 'AC_INIT:$1' configure.ac) +WANT_GTK_DOC=0 +GCC_VERSION=$(gcc --version | head -1 | awk '{print $3}') +GCC_MAJOR_VERSION=$(echo "$GCC_VERSION" | awk -F. '{print $1}') +FEDORA_PKG1='autoconf automake libtool gettext-devel' +FEDORA_PKG2='glib2-devel gtk2-devel gtk3-devel + wayland-devel' +FEDORA_PKG3='cldr-emoji-annotation iso-codes-devel unicode-emoji unicode-ucd + xkeyboard-config-devel' -(test -f $srcdir/configure.ac \ - && test -f $srcdir/README ) || { +CFLAGS=${CFLAGS-"-Wall -Wformat -Werror=format-security"} +(test $GCC_MAJOR_VERSION -ge 10) && { + CFLAGS="$CFLAGS -fanalyzer -fsanitize=address -fsanitize=leak" + FEDORA_PKG1="$FEDORA_PKG1 libasan" +} + +cd "$srcdir" + +(test -f configure.ac \ + && test -f README ) || { echo -n "**Error**: Directory "\`$srcdir\'" does not look like the" echo " top-level $PKG_NAME directory" exit 1 } -which gnome-autogen.sh || { - echo "You need to install gnome-common from the GNOME CVS" - exit 1 +(test $(grep -q "^GTK_DOC_CHECK" configure.ac)) || { + WANT_GTK_DOC=1 + FEDORA_PKG2="$FEDORA_PKG2 gtk-doc" +} + +(test -f ChangeLog) || { + touch ChangeLog } -(test -f $srcdir/ChangeLog) || { - touch $srcdir/ChangeLog +(test "x$DISABLE_INSTALL_PKGS" = "x") && { + (test -f /etc/fedora-release ) && { + rpm -q $FEDORA_PKG1 || exit 1 + rpm -q $FEDORA_PKG2 || exit 1 + rpm -q $FEDORA_PKG3 || exit 1 + dnf update --assumeno $FEDORA_PKG1 || exit 1 + dnf update --assumeno $FEDORA_PKG2 || exit 1 + dnf update --assumeno $FEDORA_PKG3 || exit 1 + } +} + +CONFIGFLAGS="$@" +(test "$#" = 0 -a "x$NOCONFIGURE" = "x" ) && { + echo "*** WARNING: I am going to run 'configure' with no arguments." >&2 + echo "*** If you wish to pass any to it, please specify them on the" >&2 + echo "*** '$0' command line." >&2 + echo "" >&2 + (test $WANT_GTK_DOC -eq 1) && CONFIGFLAGS="--enable-gtk-doc $@" +} + +(test $WANT_GTK_DOC -eq 1) && gtkdocize --copy + +ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I m4" REQUIRED_AUTOMAKE_VERSION=1.11 \ +autoreconf --verbose --force --install || exit 1 + +cd "$olddir" +(test "x$NOCONFIGURE" = "x" ) && { + echo "$srcdir/configure $CONFIGFLAGS" + $srcdir/configure $CONFIGFLAGS || exit 1 + (test "$1" = "--help" ) && { + exit 0 + } || { + echo "Now type 'make' to compile $PKG_NAME" || exit 1 + } +} || { + echo "Skipping configure process." } -ACLOCAL_FLAGS="$ACLOCAL_FLAGS -I m4" REQUIRED_AUTOMAKE_VERSION=1.10 CFLAGS="-Wall $CFLAGS" . gnome-autogen.sh +cd "$srcdir" +(test "x$SAVE_DIST_FILES" = "x0" ) && { + # rm engine/simple.xml.in src/ibusemojigen.h src/ibusunicodegen.h + for d in engine src; do + echo "make -C $d maintainer-clean-generic" + make -C $d maintainer-clean-generic + done +} || : +cd "$olddir" diff --git a/bindings/Makefile.am b/bindings/Makefile.am index 135849c75..01766b466 100644 --- a/bindings/Makefile.am +++ b/bindings/Makefile.am @@ -8,24 +8,29 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA -if ENABLE_VALA +if ENABLE_VAPIGEN VALA_DIR = vala endif +if ENABLE_PYGOBJECT +PYGOBJECT_DIR = pygobject +endif + SUBDIRS = \ $(VALA_DIR) \ + $(PYGOBJECT_DIR) \ $(NULL) -include $(top_srcdir)/git.mk diff --git a/bindings/pygobject/Makefile.am b/bindings/pygobject/Makefile.am new file mode 100644 index 000000000..84bd37cb5 --- /dev/null +++ b/bindings/pygobject/Makefile.am @@ -0,0 +1,94 @@ +# vim:set et sts=4 sw=4: +# +# ibus - The Input Bus +# +# Copyright (c) 2012 Daiki Ueno +# Copyright (c) 2014-2016 Peng Huang +# Copyright (c) 2018-2019 Takao Fujiwara +# Copyright (c) 2012-2018 Red Hat, Inc. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA + +NULL = + +if ENABLE_PYTHON2 +py2_compile = PYTHON=$(PYTHON2) $(SHELL) $(py_compile) +overrides2dir = $(py2overridesdir) +overrides2_DATA = \ + gi/overrides/IBus.py \ + $(NULL) +endif + +overridesdir = $(pyoverridesdir) +overrides_PYTHON = \ + gi/overrides/IBus.py \ + $(NULL) + +TESTS = + +if ENABLE_TESTS +TESTS += test-override-ibus.py +endif + +# IBus.Keymap() accesses keymap files +TESTS_ENVIRONMENT = \ + PYTHONPATH=$(top_srcdir)/tests:$${PYTHONPATH:+:$$PYTHONPATH} \ + LD_LIBRARY_PATH=$(top_builddir)/src/.libs:$$LD_LIBRARY_PATH \ + GI_TYPELIB_PATH=$(top_builddir)/src:$$GI_TYPELIB_PATH \ + IBUS_KEYMAP_PATH=$(top_srcdir)/data/keymaps \ + $(NULL) + +LOG_COMPILER = $(PYTHON) -B + +EXTRA_DIST = \ + gi/__init__.py \ + gi/overrides/__init__.py \ + test-override-ibus.py \ + $(NULL) + +install-data-hook: + @$(NORMAL_INSTALL) +if ENABLE_PYTHON2 + @for data in $(overrides2_DATA); do \ + file=`echo $$data | sed -e 's|^.*/||'`; \ + dlist="$$dlist $$file"; \ + done; \ + $(py2_compile) --destdir "$(DESTDIR)" \ + --basedir "$(overrides2dir)" \ + $$dlist +endif + $(NULL) +uninstall-hook: + @$(NORMAL_UNINSTALL) +if ENABLE_PYTHON2 + @list='$(overrides2_DATA)'; test -n "$(overrides2dir)" || list=; \ + py_files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$py_files" || exit 0; \ + dir='$(DESTDIR)$(overrides2dir)'; \ + pyc_files=`echo "$$py_files" | sed 's|$$|c|'`; \ + pyo_files=`echo "$$py_files" | sed 's|$$|o|'`; \ + for files in \ + "$$py_files" \ + "$$pyc_files" \ + "$$pyo_files" \ + ; do \ + test -z "$$files" || rm -f "$$dir/$$files" || st=$$?; \ + done; \ + exit $$st +endif + $(NULL) + +-include $(top_srcdir)/git.mk diff --git a/bindings/pygobject/gi/__init__.py b/bindings/pygobject/gi/__init__.py new file mode 100644 index 000000000..bb1f50a43 --- /dev/null +++ b/bindings/pygobject/gi/__init__.py @@ -0,0 +1,24 @@ +# vim:set et sts=4 sw=4: +# +# ibus - The Input Bus +# +# Copyright (c) 2012 Daiki Ueno +# Copyright (c) 2011 Peng Huang +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA + +from pkgutil import extend_path +__path__ = extend_path(__path__, __name__) diff --git a/bindings/pygobject/gi/overrides/IBus.py b/bindings/pygobject/gi/overrides/IBus.py new file mode 100644 index 000000000..4f42e3eb2 --- /dev/null +++ b/bindings/pygobject/gi/overrides/IBus.py @@ -0,0 +1,236 @@ +# vim:set et sts=4 sw=4: +# +# ibus - The Input Bus +# +# Copyright (c) 2012 Daiki Ueno +# Copyright (c) 2011 Peng Huang +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA + +from gi.repository import GObject + +from ..overrides import override + +# for newer pygobject: https://bugzilla.gnome.org/show_bug.cgi?id=686828 +# from ..module import get_introspection_module +# IBus = get_introspection_module('IBus') +from ..importer import modules +IBus = modules['IBus']._introspection_module + +__all__ = [] + +class Attribute(IBus.Attribute): + def __new__(cls, type=0, value=0, start_index=0, end_index=0): + return IBus.Attribute.new(type, value, start_index, end_index) + +Attribute = override(Attribute) +__all__.append('Attribute') + +class Component(IBus.Component): + # Backward compatibility: allow non-keyword arguments + def __init__(self, + name='', + description='', + version='', + license='', + author='', + homepage='', + command_line='', + textdomain='', + **kwargs): + super(Component, self).__init__(name=name, + description=description, + version=version, + license=license, + author=author, + homepage=homepage, + command_line=command_line, + textdomain=textdomain, + **kwargs) + + # Backward compatibility: allow keyword arguments + def add_engine(self, engine=None, **kwargs): + if engine is None: + engine = EngineDesc(**kwargs) + super(Component, self).add_engine(engine) + +Component = override(Component) +__all__.append('Component') + +class Config(IBus.Config): + # Backward compatibility: accept default arg + def get_value(self, section, name, default=None): + value = super(Config, self).get_value(section, name) + if value is None: + return default + return value + + # Backward compatibility: unset value if value is None + # Note that we don't call GLib.Variant.unpack here + def set_value(self, section, name, value): + if value is None: + self.unset(section, name) + else: + super(Config, self).set_value(section, name, value) + +Config = override(Config) +__all__.append('Config') + +class EngineDesc(IBus.EngineDesc): + # Backward compatibility: allow non-keyword arguments + def __init__(self, + name='', + longname='', + description='', + language='', + license='', + author='', + icon='', + layout='us', + hotkeys='', + rank=0, + symbol='', + setup='', + layout_variant='', + layout_option='', + version='', + textdomain='', + **kwargs): + super(EngineDesc, self).__init__(name=name, + longname=longname, + description=description, + language=language, + license=license, + author=author, + icon=icon, + layout=layout, + hotkeys=hotkeys, + rank=rank, + symbol=symbol, + setup=setup, + layout_variant=layout_variant, + layout_option=layout_option, + version=version, + textdomain=textdomain, + **kwargs) + +EngineDesc = override(EngineDesc) +__all__.append('EngineDesc') + +class Factory(IBus.Factory): + # Backward compatibility: allow non-keyword arguments + def __init__(self, bus=None, **kwargs): + if bus is not None: + kwargs.setdefault('connection', bus.get_connection()) + kwargs.setdefault('object_path', IBus.PATH_FACTORY) + super(Factory, self).__init__(**kwargs) + +Factory = override(Factory) +__all__.append('Factory') + +class Keymap(IBus.Keymap): + # Backward compatibility: allow non-keyword arguments + def __new__(cls, name): + return IBus.Keymap.new(name) + + def __init__(*args, **kwargs): + pass + +Keymap = override(Keymap) +__all__.append('Keymap') + +class LookupTable(IBus.LookupTable): + # Backward compatibility: allow non-keyword arguments + def __new__(cls, + page_size=5, + cursor_pos=0, + cursor_visible=True, + round=False, + orientation=IBus.Orientation.SYSTEM, + candidates=[], + labels=[]): + table = IBus.LookupTable.new(page_size, + cursor_pos, + cursor_visible, + round) + table.set_orientation(orientation) + for candidate in candidates: + table.append_candidate(candidate) + for index, label in enumerate(labels): + table.set_label(index, label) + return table + + def __init__(self, *args, **kwargs): + pass + + # Backward compatibility: rename + def show_cursor(self, visible): + self.set_cursor_visible(visible) + + # Backward compatibility: rename + def clean(self): + self.clear() + +LookupTable = override(LookupTable) +__all__.append('LookupTable') + +class Property(IBus.Property): + # Backward compatibility: allow non-keyword arguments + def __init__(self, + key='', + type=IBus.PropType.NORMAL, + label='', + icon='', + tooltip='', + sensitive=True, + visible=True, + state=IBus.PropState.UNCHECKED, + symbol='', + **kwargs): + prop_type = kwargs.pop('prop_type', type) + if label != None and not isinstance(label, IBus.Text): + label = Text(label) + if tooltip != None and not isinstance(tooltip, IBus.Text): + tooltip = Text(tooltip) + if symbol != None and not isinstance(symbol, IBus.Text): + symbol = Text(symbol) + super(Property, self).__init__(key=key, + prop_type=prop_type, + label=label, + icon=icon, + tooltip=tooltip, + sensitive=sensitive, + visible=visible, + state=state, + symbol=symbol, + **kwargs) + +Property = override(Property) +__all__.append('Property') + +class Text(IBus.Text): + # Backward compatibility: allow non-keyword arguments + def __new__(cls, string='', attrs=None): + text = IBus.Text.new_from_string(string) + if attrs is not None: + text.set_attributes(attrs) + return text + + def __init__(self, *args, **kwargs): + pass + +Text = override(Text) +__all__.append('Text') diff --git a/bindings/pygobject/gi/overrides/__init__.py b/bindings/pygobject/gi/overrides/__init__.py new file mode 100644 index 000000000..bb1f50a43 --- /dev/null +++ b/bindings/pygobject/gi/overrides/__init__.py @@ -0,0 +1,24 @@ +# vim:set et sts=4 sw=4: +# +# ibus - The Input Bus +# +# Copyright (c) 2012 Daiki Ueno +# Copyright (c) 2011 Peng Huang +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA + +from pkgutil import extend_path +__path__ = extend_path(__path__, __name__) diff --git a/bindings/pygobject/test-override-ibus.py b/bindings/pygobject/test-override-ibus.py new file mode 100644 index 000000000..087a6558f --- /dev/null +++ b/bindings/pygobject/test-override-ibus.py @@ -0,0 +1,133 @@ +# vim:set et sts=4 sw=4: +# +# ibus - The Input Bus +# +# Copyright (c) 2012 Daiki Ueno +# Copyright (c) 2011 Peng Huang +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA + +import unittest + +import os +import sys + +# move the script path at the end, so the necessary modules in system +# pygobject can be loaded first +tests_builddir = os.path.abspath(os.path.dirname(__file__)) +sys.path = [path for path in sys.path if path != tests_builddir] +sys.path.append(tests_builddir) + +from gi.repository import GLib, IBus + +class TestOverride(unittest.TestCase): + def setUp(self): + self.__bus = IBus.Bus() + + def test_attribute(self): + # construction with keyword args + attr = IBus.Attribute(type=IBus.AttrType.UNDERLINE, + value=IBus.AttrUnderline.SINGLE, + start_index=0, + end_index=10) + + def test_component(self): + # construction with keyword args + component = IBus.Component(name='foo', description='foo desc') + self.assertEqual(component.props.name, 'foo') + # construction with non-keyword args + component = IBus.Component('bar', 'bar desc') + self.assertEqual(component.props.name, 'bar') + + def test_config(self): + if not self.__bus.is_connected(): + self.skipTest('bus not connected') + + config = self.__bus.get_config() + if config is None: + self.skipTest('config service not running') + + config.unset("test", "v1") + + # get_value with no default arg + retval = config.get_value("test", "v1") + self.assertEqual(retval, None) + + # get_value with default arg + retval = config.get_value("test", "v1", GLib.Variant('i', 43)) + self.assertEqual(retval, GLib.Variant('i', 43)) + + # set_value with non-null arg + retval = config.set_value("test", "v1", GLib.Variant('i', 43)) + retval = config.get_value("test", "v1") + self.assertEqual(retval, GLib.Variant('i', 43)) + + # set_value with null arg (= unset) + retval = config.set_value("test", "v1", None) + self.assertEqual(retval, None) + + def test_engine_desc(self): + # construction with keyword args + desc = IBus.EngineDesc(name='foo') + self.assertEqual(desc.props.name, 'foo') + # construction with non-keyword args + desc = IBus.EngineDesc('bar') + self.assertEqual(desc.props.name, 'bar') + + def test_factory(self): + if not self.__bus.is_connected(): + self.skipTest('bus not connected') + + # construction with keyword args + factory = IBus.Factory(connection=self.__bus.get_connection(), + object_path=IBus.PATH_FACTORY) + self.assertEqual(factory.props.object_path, IBus.PATH_FACTORY) + # construction with non-keyword args + factory = IBus.Factory(self.__bus) + self.assertEqual(factory.props.object_path, IBus.PATH_FACTORY) + + def test_keymap(self): + # construction with non-keyword args + keymap = IBus.Keymap('us') + self.assertEqual(keymap.name, 'us') + + def test_lookup_table(self): + # construction with keyword args + table = IBus.LookupTable(page_size=6) + self.assertEqual(table.page_size, 6) + # construction with non-keyword args + table = IBus.LookupTable() + self.assertEqual(table.page_size, 5) + table = IBus.LookupTable(7) + self.assertEqual(table.page_size, 7) + + def test_property(self): + # construction with keyword args + prop = IBus.Property(key='foo') + self.assertEqual(prop.props.key, 'foo') + # construction with non-keyword args + prop = IBus.Property('bar') + self.assertEqual(prop.props.key, 'bar') + + def test_text(self): + # construction with non-keyword args + text = IBus.Text('foo') + self.assertEqual(text.text, 'foo') + text = IBus.Text.new_from_string('bar') + self.assertEqual(text.text, 'bar') + +if __name__ == '__main__': + unittest.main() diff --git a/bindings/vala/IBus-1.0-custom.vala b/bindings/vala/IBus-1.0-custom.vala index 144d75e22..ec46fc903 100644 --- a/bindings/vala/IBus-1.0-custom.vala +++ b/bindings/vala/IBus-1.0-custom.vala @@ -6,4 +6,19 @@ namespace IBus { [CCode (cname = "ibus_text_new_from_static_string", has_construct_function = false)] public Text.from_static_string (string str); } + public class ExtensionEvent : IBus.Serializable { + [CCode (cname = "ibus_extension_event_new", has_construct_function = true)] + public ExtensionEvent (string first_property_name, ...); + } + public class XEvent : IBus.Serializable { + [CCode (cname = "ibus_x_event_new", has_construct_function = true)] + public XEvent (string first_property_name, ...); + } + public class PanelService : IBus.Service { + public void panel_extension_register_keys(string first_property_name, ...); + } + public class EmojiData : IBus.Serializable { + [CCode (cname = "ibus_emoji_data_new", has_construct_function = true)] + public EmojiData (string first_property_name, ...); + } } diff --git a/bindings/vala/IBusEmojiDialog-1.0.metadata b/bindings/vala/IBusEmojiDialog-1.0.metadata new file mode 100644 index 000000000..cd5c5b219 --- /dev/null +++ b/bindings/vala/IBusEmojiDialog-1.0.metadata @@ -0,0 +1 @@ +IBusEmojiDialog cheader_filename="ibusemojidialog.h" diff --git a/bindings/vala/Makefile.am b/bindings/vala/Makefile.am index 074140ee5..e4ecab977 100644 --- a/bindings/vala/Makefile.am +++ b/bindings/vala/Makefile.am @@ -2,50 +2,190 @@ # # ibus - The Input Bus # -# Copyright (c) 2007-2010 Peng Huang -# Copyright (c) 2007-2010 Red Hat, Inc. +# Copyright (c) 2007-2016 Peng Huang +# Copyright (c) 2017-2018 Takao Fujiwara +# Copyright (c) 2007-2017 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA -vapidir = $(datadir)/vala/vapi -dist_vapi_DATA = \ - ibus-@IBUS_API_VERSION@.vapi \ - ibus-@IBUS_API_VERSION@.deps \ - $(NULL) +-include $(VAPIGEN_MAKEFILE) + +libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la + +noinst_LTLIBRARIES = +noinst_DATA = +INTROSPECTION_GIRS = +girdir = $(datadir)/gir-1.0 + +AM_CPPFLAGS = \ + -I$(top_srcdir)/src \ + -I$(top_builddir)/src \ + -include $(CONFIG_HEADER) \ + $(NULL) +AM_CFLAGS = \ + -DG_LOG_DOMAIN=\"IBUS\" \ + -DPKGDATADIR=\"$(pkgdatadir)\" \ + -DIBUS_DISABLE_DEPRECATED \ + -Wno-unused-variable \ + -Wno-unused-but-set-variable \ + -Wno-unused-function \ + $(NULL) +AM_VALAFLAGS = \ + --vapidir=$(builddir) \ + --vapidir=$(srcdir) \ + --pkg=posix \ + --pkg=gtk+-3.0 \ + --pkg=gdk-x11-3.0 \ + --pkg=ibus-1.0 \ + --pkg=config \ + --pkg=xi \ + --target-glib="$(VALA_TARGET_GLIB_VERSION)" \ + $(NULL) -# Don't rebuild vapi every time gir is updated. vapi_deps = \ - $(srcdir)/IBus-1.0.metadata \ - $(srcdir)/IBus-1.0-custom.vala \ - | \ - $(top_srcdir)/src/IBus-@IBUS_API_VERSION@.gir \ + IBus-1.0.metadata \ + $(top_builddir)/src/IBus-1.0.gir \ $(NULL) -ibus-@IBUS_API_VERSION@.vapi: $(vapi_deps) - $(AM_V_GEN) $(VAPIGEN) --library ibus-@IBUS_API_VERSION@ \ - --pkg gio-2.0 \ - --metadatadir=$(srcdir) \ - $(top_srcdir)/src/IBus-@IBUS_API_VERSION@.gir \ - $(srcdir)/IBus-1.0-custom.vala +ibus-1.0.vapi: $(vapi_deps) -EXTRA_DIST = \ - IBus-1.0.metadata \ - IBus-1.0-custom.vala \ +ibus_vapi = ibus-1.0.vapi +VAPIGEN_VAPIS = $(ibus_vapi) + +ibus_1_0_vapi_DEPS = gio-2.0 +ibus_1_0_vapi_METADATADIRS = $(srcdir) +ibus_1_0_vapi_FILES = \ + $(top_builddir)/src/IBus-1.0.gir \ + $(srcdir)/IBus-1.0-custom.vala \ $(NULL) -MAINTAINERCLEANFILES = ibus-@IBUS_API_VERSION@.vapi +vapidir = $(datadir)/vala/vapi +vapi_DATA = $(ibus_vapi) $(ibus_vapi:.vapi=.deps) + +MAINTAINERCLEANFILES = $(ibus_vapi) +DISTCLEANFILES = $(ibus_vapi) + +EXTRA_DIST = \ + $(ibus_vapi) \ + IBus-1.0.metadata \ + IBus-1.0-custom.vala \ + IBusEmojiDialog-1.0.metadata \ + ibus-1.0.deps \ + ibus-emoji-dialog-1.0.deps \ + config.vapi \ + gdk-wayland.vapi \ + xi.vapi \ + $(NULL) + +if ENABLE_EMOJI_DICT +AM_VALAFLAGS += --define=EMOJI_DICT + +libibus_emoji_dialog = libibus-emoji-dialog-1.0.la +noinst_LTLIBRARIES += $(libibus_emoji_dialog) + +libibus_emoji_dialog_1_0_la_SOURCES = \ + candidatearea.vala \ + emojier.vala \ + iconwidget.vala \ + pango.vala \ + separator.vala \ + $(NULL) +libibus_emoji_dialog_1_0_la_CFLAGS = \ + $(AM_CFLAGS) \ + @GLIB2_CFLAGS@ \ + @GIO2_CFLAGS@ \ + @GTHREAD2_CFLAGS@ \ + @GTK3_CFLAGS@ \ + @X11_CFLAGS@ \ + -DBINDIR=\"$(bindir)\" \ + $(NULL) +libibus_emoji_dialog_1_0_la_LIBADD = \ + @GLIB2_LIBS@ \ + @GIO2_LIBS@ \ + @GTHREAD2_LIBS@ \ + @GTK3_LIBS@ \ + @X11_LIBS@ \ + -lXi \ + $(libibus) \ + $(NULL) +libibus_emoji_dialog_1_0_la_LDFLAGS = \ + -no-undefined \ + -export-symbols-regex "ibus_.*" \ + $(NULL) + +# per file setting is needed to avoid conflicting LN_S by calling +# duplicated times in parallel make +%.vala: $(ibus_vapi) + if test ! -f $@ ; then \ + $(LN_S) $(top_srcdir)/ui/gtk3/$@ .; \ + fi; + +MAINTAINERCLEANFILES += $(libibus_emoji_dialog_1_0_la_SOURCES) +DISTCLEANFILES += $(libibus_emoji_dialog_1_0_la_SOURCES) + +if HAVE_INTROSPECTION +-include $(INTROSPECTION_MAKEFILE) +INTROSPECTION_SCANNER_ARGS = +INTROSPECTION_COMPILER_ARGS = \ + --includedir=$(srcdir) \ + --includedir=. \ + --includedir=$(top_srcdir)/src \ + $(NULL) + + +emoji_headers = \ + $(top_srcdir)/ui/gtk3/ibusemojidialog.h \ + $(NULL) + +IBusEmojiDialog-1.0.gir: $(libibus_emoji_dialog) Makefile +IBusEmojiDialog_1_0_gir_SCANNERFLAGS = \ + --pkg-export=ibus-1.0 \ + --pkg=gtk+-3.0 \ + $(IBUS_GIR_SCANNERFLAGS) \ + $(NULL) +IBusEmojiDialog_1_0_gir_INCLUDES = Gtk-3.0 GLib-2.0 GObject-2.0 Gio-2.0 +IBusEmojiDialog_1_0_gir_LIBS = $(libibus_emoji_dialog) $(libibus) +IBusEmojiDialog_1_0_gir_FILES = $(emoji_headers) +IBusEmojiDialog_1_0_gir_CFLAGS = \ + -I$(srcdir) \ + -I$(builddir) \ + -I$(top_srcdir)/src \ + $(NULL) + +ibus_emoji_dialog_gir = IBusEmojiDialog-1.0.gir +INTROSPECTION_GIRS += $(ibus_emoji_dialog_gir) +noinst_DATA += $(ibus_emoji_dialog_gir) +EXTRA_DIST += $(ibus_emoji_dialog_gir) +MAINTAINERCLEANFILES += $(ibus_emoji_dialog_gir) +DISTCLEANFILES += $(ibus_emoji_dialog_gir) + +ibus-emoji-dialog-1.0.vapi: $(ibus_emoji_dialog_gir) IBusEmojiDialog-1.0.metadata +ibus_emoji_dialog_vapi = ibus-emoji-dialog-1.0.vapi +ibus_emoji_dialog_1_0_vapi_DEPS = gtk+-3.0 gio-2.0 +ibus_emoji_dialog_1_0_vapi_METADATADIRS = $(srcdir) +ibus_emoji_dialog_1_0_vapi_FILES = IBusEmojiDialog-1.0.gir +VAPIGEN_VAPIS += $(ibus_emoji_dialog_vapi) +noinst_DATA += $(ibus_emoji_dialog_vapi) +EXTRA_DIST += $(ibus_emoji_dialog_vapi) +MAINTAINERCLEANFILES += $(ibus_emoji_dialog_vapi) +DISTCLEANFILES += $(ibus_emoji_dialog_vapi) + +endif +#end of HAVE_INTROSPECTION +endif +# end of ENABLE_EMOJI_DICT -include $(top_srcdir)/git.mk diff --git a/bindings/vala/config.vapi b/bindings/vala/config.vapi new file mode 100644 index 000000000..45ab61b09 --- /dev/null +++ b/bindings/vala/config.vapi @@ -0,0 +1,13 @@ +[CCode (cprefix = "", lower_case_cprefix = "", cheader_filename = "config.h")] +namespace Config +{ + public const string PACKAGE_DATADIR; + public const string PACKAGE_NAME; + public const string PACKAGE_VERSION; + public const string BINDIR; + public const string DATADIR; + public const string PKGDATADIR; + public const string LIBEXECDIR; + public const string GETTEXT_PACKAGE; + public const string LOCALEDIR; +} diff --git a/bindings/vala/gdk-wayland.vapi b/bindings/vala/gdk-wayland.vapi new file mode 100644 index 000000000..c65f2be48 --- /dev/null +++ b/bindings/vala/gdk-wayland.vapi @@ -0,0 +1,7 @@ +[CCode (cprefix = "", lower_case_cprefix = "", cheader_filename = "gdk/gdkwayland.h")] +namespace GdkWayland +{ + [CCode (type_id = "gdk_wayland_display_get_type ()")] + public class Display : Gdk.Display { + } +} diff --git a/bindings/vala/ibus-emoji-dialog-1.0.deps b/bindings/vala/ibus-emoji-dialog-1.0.deps new file mode 100644 index 000000000..5049a1ad2 --- /dev/null +++ b/bindings/vala/ibus-emoji-dialog-1.0.deps @@ -0,0 +1,2 @@ +gtk+-3.0 +gio-2.0 diff --git a/bindings/vala/test/enchant.vala b/bindings/vala/test/enchant.vala index 3128dba9c..557444897 100644 --- a/bindings/vala/test/enchant.vala +++ b/bindings/vala/test/enchant.vala @@ -151,7 +151,7 @@ class TestEngine : Engine { "org.freedesktop.IBus.Vala", "ValaTest", "0.0.1", "GPL", "Peng Huang ", - "http://code.google.com/p/ibus/", + "https://github.com/ibus/ibus/", "", "ibus-vala"); var engine = new EngineDesc ("vala-debug", diff --git a/bindings/vala/xi.vapi b/bindings/vala/xi.vapi new file mode 100644 index 000000000..29c42511a --- /dev/null +++ b/bindings/vala/xi.vapi @@ -0,0 +1,53 @@ +[CCode (cprefix = "", lower_case_cprefix = "", cheader_filename = "X11/extensions/XInput2.h")] +namespace XI { + public enum EventType { + [CCode (cname = "XI_KeyPress")] + KeyPress, + [CCode (cname = "XI_KeyRelease")] + KeyRelease, + } + + [CCode (cname = "XIAllMasterDevices")] + public const int AllMasterDevices; + + [CCode (cname = "XI_LASTEVENT")] + public const int LASTEVENT; + + [Compact] + [CCode (cname = "XIEventMask", destroy_function = "")] + public struct EventMask { + public int deviceid; + [CCode (array_length_cname = "mask_len")] + public uchar[] mask; + } + + [CCode (cname = "XISetMask")] + public void set_mask(void *mask, EventType type); + + [Compact] + [CCode (cname = "XIGrabModifiers", destroy_function = "")] + public struct GrabModifiers { + public int modifiers; + public int status; + } + + [CCode (cname = "XIGrabKeycode")] + public int grab_keycode (X.Display display, + int deviceid, + int keycode, + X.Window grab_window, + int grab_mode, + int paired_device_mode, + bool owner_events, + XI.EventMask mask, + [CCode (array_length_pos = 8.9)] + XI.GrabModifiers[] modifiers); + + [CCode (cname = "XIUngrabKeycode")] + public int ungrab_keycode (X.Display display, + int deviceid, + int keycode, + X.Window grab_window, + [CCode (array_length_pos = 4.9)] + XI.GrabModifiers[] modifiers); +} diff --git a/bus/Makefile.am b/bus/Makefile.am index 2b619edc8..e173ee251 100644 --- a/bus/Makefile.am +++ b/bus/Makefile.am @@ -2,29 +2,31 @@ # # ibus - The Input Bus # -# Copyright (c) 2007-2010 Peng Huang -# Copyright (c) 2007-2010 Red Hat, Inc. +# Copyright (c) 2007-2013 Peng Huang +# Copyright (c) 2013-2022 Takao Fujiwara +# Copyright (c) 2007-2022 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA NULL = +SUBDIRS = . services libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la -INCLUDES = \ +AM_CPPFLAGS = \ -I$(top_srcdir)/src \ -I$(top_builddir)/src \ $(NULL) @@ -38,7 +40,6 @@ AM_CFLAGS = \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DBINDIR=\"@bindir@\" \ -DIBUS_DISABLE_DEPRECATED \ - $(INCLUDES) \ $(NULL) AM_LDADD = \ @GOBJECT2_LIBS@ \ @@ -71,8 +72,6 @@ commonsrc = \ connection.h \ matchrule.c \ matchrule.h \ - registry.c \ - registry.h \ marshalers.c \ marshalers.h \ types.h \ @@ -108,25 +107,30 @@ marshalers.c: marshalers.h marshalers.list $(GLIB_GENMARSHAL) --prefix=bus_marshal $(srcdir)/marshalers.list --body --internal) > $@.tmp && \ mv $@.tmp $@ +if ENABLE_EMOJI_DICT +AM_CFLAGS += -DEMOJI_DICT +endif +if ENABLE_TESTS TESTS = \ test-matchrule \ - test-registry \ test-stress \ $(NULL) +endif -noinst_PROGRAMS = $(TESTS) +TESTS_ENVIRONMENT = \ + top_builddir=$(top_builddir) \ + top_srcdir=$(top_srcdir) \ + builddir=$(builddir) \ + srcdir=$(srcdir) \ + LD_LIBRARY_PATH="$(top_builddir)/src/.libs:$(top_builddir)/src" \ + DISABLE_GUI_TESTS="$(DISABLE_GUI_TESTS)" \ + DISABLE_DAEMONIZE_IN_TESTS="$(DISABLE_DAEMONIZE_IN_TESTS)" \ + $(NULL) -test_registry_SOURCES = \ - $(commonsrc) \ - test-registry.c \ - $(NULL) -test_registry_CFLAGS = \ - $(AM_CFLAGS) \ - $(NULL) -test_registry_LDADD = \ - $(AM_LDADD) \ - $(NULL) +LOG_COMPILER = $(top_srcdir)/src/tests/runtest + +noinst_PROGRAMS = $(TESTS) test_matchrule_DEPENDENCIES = \ $(libibus) \ @@ -159,12 +163,13 @@ test_stress_LDADD = \ $(NULL) EXTRA_DIST = \ - $(desktop_in_files) \ + $(man_one_in_files) \ marshalers.list \ $(NULL) -DISTCLEANFILES = \ - $(desktop_DATA) \ +CLEANFILES = \ + $(man_one_DATA) \ + $(man_one_files) \ $(NULL) $(libibus): @@ -175,9 +180,15 @@ test: ibus-daemon G_DEBUG=fatal_warnings \ $(builddir)/ibus-daemon -v -desktopdir = $(datadir)/applications -desktop_in_files = ibus.desktop.in -desktop_DATA = $(desktop_in_files:.desktop.in=.desktop) -@INTLTOOL_DESKTOP_RULE@ +man_one_in_files = ibus-daemon.1.in +man_one_files = $(man_one_in_files:.1.in=.1) +man_one_DATA =$(man_one_files:.1=.1.gz) +man_onedir = $(mandir)/man1 +%.1: %.1.in + $(AM_V_GEN) sed \ + -e 's|@VERSION[@]|$(VERSION)|g' $< > $@.tmp && \ + mv $@.tmp $@ +%.1.gz: %.1 + $(AM_V_GEN) gzip -c $< > $@.tmp && mv $@.tmp $@ -include $(top_srcdir)/git.mk diff --git a/bus/component.c b/bus/component.c index 868aa16c3..6d0bc0ae9 100644 --- a/bus/component.c +++ b/bus/component.c @@ -7,17 +7,17 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include "component.h" diff --git a/bus/component.h b/bus/component.h index e675eab21..0822484f8 100644 --- a/bus/component.h +++ b/bus/component.h @@ -7,17 +7,17 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #ifndef __BUS_COMPONENT_H_ #define __BUS_COMPONENT_H_ diff --git a/bus/connection.c b/bus/connection.c index 5273fcc16..559e9d918 100644 --- a/bus/connection.c +++ b/bus/connection.c @@ -7,17 +7,17 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include diff --git a/bus/connection.h b/bus/connection.h index 2a34319f1..440faf1e6 100644 --- a/bus/connection.h +++ b/bus/connection.h @@ -7,17 +7,17 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #ifndef __BUS_CONNECTION_H_ #define __BUS_CONNECTION_H_ diff --git a/bus/dbusimpl.c b/bus/dbusimpl.c index 3ff24cac9..59787a80a 100644 --- a/bus/dbusimpl.c +++ b/bus/dbusimpl.c @@ -1,23 +1,24 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2013 Peng Huang + * Copyright (C) 2015-2020 Takao Fujiwara + * Copyright (C) 2008-2020 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include "dbusimpl.h" @@ -28,7 +29,6 @@ #include "ibusimpl.h" #include "marshalers.h" #include "matchrule.h" -#include "registry.h" #include "types.h" enum { @@ -61,10 +61,10 @@ struct _BusDBusImpl { /* a serial number used to generate a unique name of a bus. */ guint id; - GMutex *dispatch_lock; + GMutex dispatch_lock; GList *dispatch_queue; - GMutex *forward_lock; + GMutex forward_lock; GList *forward_queue; /* a list of BusMethodCall to be used to reply when services are @@ -330,8 +330,6 @@ bus_name_service_new (const gchar *name) static void bus_name_service_free (BusNameService *service) { - GSList *list = NULL; - g_assert (service != NULL); g_slist_free_full (service->owners, @@ -347,6 +345,8 @@ bus_name_service_set_primary_owner (BusNameService *service, BusConnectionOwner *owner, BusDBusImpl *dbus) { + gboolean has_old_owner = FALSE; + g_assert (service != NULL); g_assert (owner != NULL); g_assert (dbus != NULL); @@ -354,6 +354,13 @@ bus_name_service_set_primary_owner (BusNameService *service, BusConnectionOwner *old = service->owners != NULL ? (BusConnectionOwner *)service->owners->data : NULL; + /* rhbz#1432252 If bus_connection_get_unique_name() == NULL, + * "Hello" method is not received yet. + */ + if (old != NULL && bus_connection_get_unique_name (old->conn) != NULL) { + has_old_owner = TRUE; + } + if (old != NULL) { g_signal_emit (dbus, dbus_signals[NAME_LOST], @@ -373,7 +380,8 @@ bus_name_service_set_primary_owner (BusNameService *service, 0, owner->conn, service->name, - old != NULL ? bus_connection_get_unique_name (old->conn) : "", + has_old_owner ? bus_connection_get_unique_name (old->conn) : + "", bus_connection_get_unique_name (owner->conn)); if (old != NULL && old->do_not_queue != 0) { @@ -430,6 +438,7 @@ bus_name_service_remove_owner (BusNameService *service, BusDBusImpl *dbus) { GSList *owners; + gboolean has_new_owner = FALSE; g_assert (service != NULL); g_assert (owner != NULL); @@ -442,6 +451,13 @@ bus_name_service_remove_owner (BusNameService *service, BusConnectionOwner *_new = NULL; if (owners->next != NULL) { _new = (BusConnectionOwner *)owners->next->data; + /* rhbz#1406699 If bus_connection_get_unique_name() == NULL, + * "Hello" method is not received yet. + */ + if (_new != NULL && + bus_connection_get_unique_name (_new->conn) != NULL) { + has_new_owner = TRUE; + } } if (dbus != NULL) { @@ -450,7 +466,7 @@ bus_name_service_remove_owner (BusNameService *service, 0, owner->conn, service->name); - if (_new != NULL) { + if (has_new_owner) { g_signal_emit (dbus, dbus_signals[NAME_ACQUIRED], 0, @@ -463,7 +479,7 @@ bus_name_service_remove_owner (BusNameService *service, _new != NULL ? _new->conn : NULL, service->name, bus_connection_get_unique_name (owner->conn), - _new != NULL ? bus_connection_get_unique_name (_new->conn) : ""); + has_new_owner ? bus_connection_get_unique_name (_new->conn) : ""); } } @@ -584,8 +600,8 @@ bus_dbus_impl_init (BusDBusImpl *dbus) NULL, (GDestroyNotify) bus_name_service_free); - dbus->dispatch_lock = g_mutex_new (); - dbus->forward_lock = g_mutex_new (); + g_mutex_init (&dbus->dispatch_lock); + g_mutex_init (&dbus->forward_lock); /* other members are automatically zero-initialized. */ } @@ -635,6 +651,9 @@ bus_dbus_impl_destroy (BusDBusImpl *dbus) (GDestroyNotify) bus_method_call_free); dbus->start_service_calls = NULL; + g_mutex_clear (&dbus->dispatch_lock); + g_mutex_clear (&dbus->forward_lock); + /* FIXME destruct _lock and _queue members. */ IBUS_OBJECT_CLASS(bus_dbus_impl_parent_class)->destroy ((IBusObject *) dbus); } @@ -732,7 +751,8 @@ bus_dbus_impl_name_has_owner (BusDBusImpl *dbus, g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, - "'%s' is not a legal bus name"); + "'%s' is not a legal bus name", + name ? name : "(null)"); return; } @@ -1092,6 +1112,7 @@ bus_dbus_impl_release_name (BusDBusImpl *dbus, GDBusMethodInvocation *invocation) { const gchar *name= NULL; + BusNameService *service; g_variant_get (parameters, "(&s)", &name); if (name == NULL || @@ -1112,11 +1133,25 @@ bus_dbus_impl_release_name (BusDBusImpl *dbus, } guint retval; - if (g_hash_table_lookup (dbus->names, name) == NULL) { + service = g_hash_table_lookup (dbus->names, name); + if (service == NULL) { retval = 2; /* DBUS_RELEASE_NAME_REPLY_NON_EXISTENT */ } else { + /* "ReleaseName" method removes the name in connection->names + * and the connection owner. + * bus_dbus_impl_connection_destroy_cb() removes all + * connection->names and the connection owners. + * See also comments in bus_dbus_impl_connection_destroy_cb(). + */ if (bus_connection_remove_name (connection, name)) { + BusConnectionOwner *owner = + bus_name_service_find_owner (service, connection); + bus_name_service_remove_owner (service, owner, dbus); + if (service->owners == NULL) { + g_hash_table_remove (dbus->names, service->name); + } + bus_connection_owner_free (owner); retval = 1; /* DBUS_RELEASE_NAME_REPLY_RELEASED */ } else { @@ -1187,9 +1222,8 @@ bus_dbus_impl_start_service_by_name (BusDBusImpl *dbus, return; } - BusRegistry *registry = BUS_DEFAULT_REGISTRY; - BusComponent *component = bus_registry_lookup_component_by_name (registry, - name); + BusComponent *component = bus_ibus_impl_lookup_component_by_name ( + BUS_DEFAULT_IBUS, name); if (component == NULL || !bus_component_start (component, g_verbose)) { g_dbus_method_invocation_return_error (invocation, @@ -1713,11 +1747,11 @@ bus_dbus_impl_forward_message_idle_cb (BusDBusImpl *dbus) { g_return_val_if_fail (dbus->forward_queue != NULL, FALSE); - g_mutex_lock (dbus->forward_lock); + g_mutex_lock (&dbus->forward_lock); BusForwardData *data = (BusForwardData *) dbus->forward_queue->data; dbus->forward_queue = g_list_delete_link (dbus->forward_queue, dbus->forward_queue); gboolean has_message = (dbus->forward_queue != NULL); - g_mutex_unlock (dbus->forward_lock); + g_mutex_unlock (&dbus->forward_lock); do { const gchar *destination = g_dbus_message_get_destination (data->message); @@ -1784,10 +1818,10 @@ bus_dbus_impl_forward_message (BusDBusImpl *dbus, data->message = g_object_ref (message); data->sender_connection = g_object_ref (connection); - g_mutex_lock (dbus->forward_lock); + g_mutex_lock (&dbus->forward_lock); gboolean is_running = (dbus->forward_queue != NULL); dbus->forward_queue = g_list_append (dbus->forward_queue, data); - g_mutex_unlock (dbus->forward_lock); + g_mutex_unlock (&dbus->forward_lock); if (!is_running) { g_idle_add_full (G_PRIORITY_DEFAULT, @@ -1834,20 +1868,20 @@ bus_dbus_impl_dispatch_message_by_rule_idle_cb (BusDBusImpl *dbus) if (G_UNLIKELY (IBUS_OBJECT_DESTROYED (dbus))) { /* dbus was destryed */ - g_mutex_lock (dbus->dispatch_lock); + g_mutex_lock (&dbus->dispatch_lock); g_list_free_full (dbus->dispatch_queue, (GDestroyNotify) bus_dispatch_data_free); dbus->dispatch_queue = NULL; - g_mutex_unlock (dbus->dispatch_lock); + g_mutex_unlock (&dbus->dispatch_lock); return FALSE; /* return FALSE to prevent this callback to be called again. */ } /* remove fist node */ - g_mutex_lock (dbus->dispatch_lock); + g_mutex_lock (&dbus->dispatch_lock); BusDispatchData *data = (BusDispatchData *) dbus->dispatch_queue->data; dbus->dispatch_queue = g_list_delete_link (dbus->dispatch_queue, dbus->dispatch_queue); gboolean has_message = (dbus->dispatch_queue != NULL); - g_mutex_unlock (dbus->dispatch_lock); + g_mutex_unlock (&dbus->dispatch_lock); GList *link = NULL; GList *recipients = NULL; @@ -1901,11 +1935,11 @@ bus_dbus_impl_dispatch_message_by_rule (BusDBusImpl *dbus, g_object_set_qdata ((GObject *) message, dispatched_quark, GINT_TO_POINTER (1)); /* append dispatch data into the queue, and start idle task if necessary */ - g_mutex_lock (dbus->dispatch_lock); + g_mutex_lock (&dbus->dispatch_lock); gboolean is_running = (dbus->dispatch_queue != NULL); dbus->dispatch_queue = g_list_append (dbus->dispatch_queue, bus_dispatch_data_new (message, skip_connection)); - g_mutex_unlock (dbus->dispatch_lock); + g_mutex_unlock (&dbus->dispatch_lock); if (!is_running) { g_idle_add_full (G_PRIORITY_DEFAULT, (GSourceFunc) bus_dbus_impl_dispatch_message_by_rule_idle_cb, diff --git a/bus/dbusimpl.h b/bus/dbusimpl.h index 13cdde676..56114e381 100644 --- a/bus/dbusimpl.h +++ b/bus/dbusimpl.h @@ -7,17 +7,17 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #ifndef __BUS_DBUS_IMPL_H_ #define __BUS_DBUS_IMPL_H_ diff --git a/bus/engineproxy.c b/bus/engineproxy.c index 417b47c0b..2d98995c3 100644 --- a/bus/engineproxy.c +++ b/bus/engineproxy.c @@ -1,23 +1,24 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2013 Peng Huang + * Copyright (C) 2015-2018 Takao Fujiwara + * Copyright (C) 2008-2016 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include "engineproxy.h" @@ -55,11 +56,18 @@ struct _BusEngineProxy { IBusText *surrounding_text; guint surrounding_cursor_pos; guint selection_anchor_pos; + + /* cached properties */ + IBusPropList *prop_list; }; struct _BusEngineProxyClass { IBusProxyClass parent; /* class members */ + void (* register_properties) (BusEngineProxy *engine, + IBusPropList *prop_list); + void (* update_property) (BusEngineProxy *engine, + IBusProperty *prop); }; enum { @@ -82,6 +90,7 @@ enum { CURSOR_DOWN_LOOKUP_TABLE, REGISTER_PROPERTIES, UPDATE_PROPERTY, + PANEL_EXTENSION, LAST_SIGNAL, }; @@ -93,6 +102,7 @@ enum { static guint engine_signals[LAST_SIGNAL] = { 0 }; static IBusText *text_empty = NULL; +static IBusPropList *prop_list_empty = NULL; /* functions prototype */ static void bus_engine_proxy_set_property (BusEngineProxy *engine, @@ -103,6 +113,12 @@ static void bus_engine_proxy_get_property (BusEngineProxy *engine, guint prop_id, GValue *value, GParamSpec *pspec); +static void bus_engine_proxy_real_register_properties + (BusEngineProxy *engine, + IBusPropList *prop_list); +static void bus_engine_proxy_real_update_property + (BusEngineProxy *engine, + IBusProperty *prop); static void bus_engine_proxy_real_destroy (IBusProxy *proxy); static void bus_engine_proxy_g_signal (GDBusProxy *proxy, const gchar *sender_name, @@ -125,6 +141,9 @@ bus_engine_proxy_class_init (BusEngineProxyClass *class) gobject_class->set_property = (GObjectSetPropertyFunc)bus_engine_proxy_set_property; gobject_class->get_property = (GObjectGetPropertyFunc)bus_engine_proxy_get_property; + class->register_properties = bus_engine_proxy_real_register_properties; + class->update_property = bus_engine_proxy_real_update_property; + IBUS_PROXY_CLASS (class)->destroy = bus_engine_proxy_real_destroy; G_DBUS_PROXY_CLASS (class)->g_signal = bus_engine_proxy_g_signal; @@ -334,7 +353,7 @@ bus_engine_proxy_class_init (BusEngineProxyClass *class) g_signal_new (I_("register-properties"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, - 0, + G_STRUCT_OFFSET (BusEngineProxyClass, register_properties), NULL, NULL, bus_marshal_VOID__OBJECT, G_TYPE_NONE, @@ -345,21 +364,36 @@ bus_engine_proxy_class_init (BusEngineProxyClass *class) g_signal_new (I_("update-property"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, - 0, + G_STRUCT_OFFSET (BusEngineProxyClass, update_property), NULL, NULL, bus_marshal_VOID__OBJECT, G_TYPE_NONE, 1, IBUS_TYPE_PROPERTY); + engine_signals[PANEL_EXTENSION] = + g_signal_new (I_("panel-extension"), + G_TYPE_FROM_CLASS (class), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + bus_marshal_VOID__OBJECT, + G_TYPE_NONE, + 1, + IBUS_TYPE_EXTENSION_EVENT); + text_empty = ibus_text_new_from_static_string (""); g_object_ref_sink (text_empty); + + prop_list_empty = ibus_prop_list_new (); + g_object_ref_sink (prop_list_empty); } static void bus_engine_proxy_init (BusEngineProxy *engine) { engine->surrounding_text = g_object_ref_sink (text_empty); + engine->prop_list = g_object_ref_sink (prop_list_empty); } static void @@ -394,6 +428,26 @@ bus_engine_proxy_get_property (BusEngineProxy *engine, } +static void +bus_engine_proxy_real_register_properties (BusEngineProxy *engine, + IBusPropList *prop_list) +{ + g_assert (IBUS_IS_PROP_LIST (prop_list)); + + if (engine->prop_list != prop_list_empty) + g_object_unref (engine->prop_list); + engine->prop_list = (IBusPropList *) g_object_ref_sink (prop_list); +} + +static void +bus_engine_proxy_real_update_property (BusEngineProxy *engine, + IBusProperty *prop) +{ + g_return_if_fail (prop); + if (engine->prop_list) + ibus_prop_list_update_property (engine->prop_list, prop); +} + static void bus_engine_proxy_real_destroy (IBusProxy *proxy) { @@ -414,6 +468,11 @@ bus_engine_proxy_real_destroy (IBusProxy *proxy) engine->surrounding_text = NULL; } + if (engine->prop_list) { + g_object_unref (engine->prop_list); + engine->prop_list = NULL; + } + IBUS_PROXY_CLASS (bus_engine_proxy_parent_class)->destroy ((IBusProxy *)engine); } @@ -584,6 +643,20 @@ bus_engine_proxy_g_signal (GDBusProxy *proxy, return; } + if (g_strcmp0 (signal_name, "PanelExtension") == 0) { + GVariant *arg0 = NULL; + g_variant_get (parameters, "(v)", &arg0); + g_return_if_fail (arg0 != NULL); + + IBusExtensionEvent *event = IBUS_EXTENSION_EVENT ( + ibus_serializable_deserialize (arg0)); + g_variant_unref (arg0); + g_return_if_fail (event != NULL); + g_signal_emit (engine, engine_signals[PANEL_EXTENSION], 0, event); + _g_object_unref_if_floating (event); + return; + } + g_return_if_reached (); } @@ -596,8 +669,7 @@ bus_engine_proxy_new_internal (const gchar *path, g_assert (IBUS_IS_ENGINE_DESC (desc)); g_assert (G_IS_DBUS_CONNECTION (connection)); - GDBusProxyFlags flags = G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START | - G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES; + GDBusProxyFlags flags = G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START; BusEngineProxy *engine = (BusEngineProxy *) g_initable_new (BUS_TYPE_ENGINE_PROXY, NULL, @@ -617,7 +689,7 @@ bus_engine_proxy_new_internal (const gchar *path, } typedef struct { - GSimpleAsyncResult *simple; + GTask *task; IBusEngineDesc *desc; BusComponent *component; BusFactoryProxy *factory; @@ -631,8 +703,8 @@ typedef struct { static void engine_proxy_new_data_free (EngineProxyNewData *data) { - if (data->simple != NULL) { - g_object_unref (data->simple); + if (data->task != NULL) { + g_object_unref (data->task); } if (data->desc != NULL) { @@ -676,15 +748,14 @@ create_engine_ready_cb (BusFactoryProxy *factory, GAsyncResult *res, EngineProxyNewData *data) { - g_return_if_fail (data->simple != NULL); + g_return_if_fail (data->task != NULL); GError *error = NULL; gchar *path = bus_factory_proxy_create_engine_finish (factory, res, &error); if (path == NULL) { - g_simple_async_result_set_from_error (data->simple, error); - g_simple_async_result_complete_in_idle (data->simple); + g_task_return_error (data->task, error); engine_proxy_new_data_free (data); return; } @@ -696,8 +767,7 @@ create_engine_ready_cb (BusFactoryProxy *factory, g_free (path); /* FIXME: set destroy callback ? */ - g_simple_async_result_set_op_res_gpointer (data->simple, engine, NULL); - g_simple_async_result_complete_in_idle (data->simple); + g_task_return_pointer (data->task, engine, NULL); engine_proxy_new_data_free (data); } @@ -731,10 +801,7 @@ notify_factory_cb (BusComponent *component, /* We *have to* disconnect the cancelled_cb here, since g_dbus_proxy_call * calls create_engine_ready_cb even if the proxy call is cancelled, and * in this case, create_engine_ready_cb itself will return error using - * g_simple_async_result_set_from_error and g_simple_async_result_complete. - * Otherwise, g_simple_async_result_complete might be called twice for a - * single data->simple twice (first in cancelled_cb and later in - * create_engine_ready_cb). */ + * g_task_return_error(). */ if (data->cancellable && data->cancelled_handler_id != 0) { g_cancellable_disconnect (data->cancellable, data->cancelled_handler_id); data->cancelled_handler_id = 0; @@ -761,12 +828,10 @@ notify_factory_cb (BusComponent *component, static gboolean timeout_cb (EngineProxyNewData *data) { - g_simple_async_result_set_error (data->simple, - G_DBUS_ERROR, - G_DBUS_ERROR_FAILED, - "Timeout was reached"); - g_simple_async_result_complete_in_idle (data->simple); - + g_task_return_new_error (data->task, + G_DBUS_ERROR, + G_DBUS_ERROR_FAILED, + "Timeout was reached"); engine_proxy_new_data_free (data); return FALSE; @@ -782,11 +847,10 @@ timeout_cb (EngineProxyNewData *data) static gboolean cancelled_idle_cb (EngineProxyNewData *data) { - g_simple_async_result_set_error (data->simple, - G_DBUS_ERROR, - G_DBUS_ERROR_FAILED, - "Operation was cancelled"); - g_simple_async_result_complete_in_idle (data->simple); + g_task_return_new_error (data->task, + G_DBUS_ERROR, + G_DBUS_ERROR_FAILED, + "Operation was cancelled"); engine_proxy_new_data_free (data); @@ -812,23 +876,21 @@ bus_engine_proxy_new (IBusEngineDesc *desc, GAsyncReadyCallback callback, gpointer user_data) { + GTask *task; + g_assert (IBUS_IS_ENGINE_DESC (desc)); g_assert (cancellable == NULL || G_IS_CANCELLABLE (cancellable)); g_assert (callback); - GSimpleAsyncResult *simple = - g_simple_async_result_new (NULL, - callback, - user_data, - bus_engine_proxy_new); + task = g_task_new (NULL, cancellable, callback, user_data); + g_task_set_source_tag (task, bus_engine_proxy_new); if (g_cancellable_is_cancelled (cancellable)) { - g_simple_async_result_set_error (simple, - G_DBUS_ERROR, - G_DBUS_ERROR_FAILED, - "Operation was cancelled"); - g_simple_async_result_complete_in_idle (simple); - g_object_unref (simple); + g_task_return_new_error (task, + G_DBUS_ERROR, + G_DBUS_ERROR_FAILED, + "Operation was cancelled"); + g_object_unref (task); return; } @@ -836,7 +898,7 @@ bus_engine_proxy_new (IBusEngineDesc *desc, data->desc = g_object_ref (desc); data->component = bus_component_from_engine_desc (desc); g_object_ref (data->component); - data->simple = simple; + data->task = task; data->timeout = timeout; data->factory = bus_component_get_factory (data->component); @@ -868,7 +930,7 @@ bus_engine_proxy_new (IBusEngineDesc *desc, /* We don't have to connect to cancelled_cb here, since g_dbus_proxy_call * calls create_engine_ready_cb even if the proxy call is cancelled, and * in this case, create_engine_ready_cb itself can return error using - * g_simple_async_result_set_from_error and g_simple_async_result_complete. */ + * g_task_return_error(). */ bus_factory_proxy_create_engine (data->factory, data->desc, timeout, @@ -882,15 +944,28 @@ BusEngineProxy * bus_engine_proxy_new_finish (GAsyncResult *res, GError **error) { - GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (res); + GTask *task; + gboolean had_error; + BusEngineProxy *retval = NULL; g_assert (error == NULL || *error == NULL); - g_assert (g_simple_async_result_get_source_tag (simple) == bus_engine_proxy_new); - - if (g_simple_async_result_propagate_error (simple, error)) + g_assert (g_task_is_valid (res, NULL)); + + task = G_TASK (res); + g_assert (g_task_get_source_tag (task) == bus_engine_proxy_new); + + /* g_task_propagate_error() is not a public API and + * g_task_had_error() needs to be called before + * g_task_propagate_pointer() clears task->error. + */ + had_error = g_task_had_error (task); + retval = g_task_propagate_pointer (task, error); + if (had_error) { + g_assert (retval == NULL); return NULL; + } - return (BusEngineProxy *) g_simple_async_result_get_op_res_gpointer(simple); + return retval; } void @@ -1088,6 +1163,44 @@ void bus_engine_proxy_set_surrounding_text (BusEngineProxy *engine, } } +void +bus_engine_proxy_set_content_type (BusEngineProxy *engine, + guint purpose, + guint hints) +{ + g_assert (BUS_IS_ENGINE_PROXY (engine)); + + GVariant *cached_content_type = + g_dbus_proxy_get_cached_property ((GDBusProxy *) engine, + "ContentType"); + GVariant *content_type = g_variant_new ("(uu)", purpose, hints); + + g_variant_ref_sink (content_type); + if (cached_content_type == NULL || + !g_variant_equal (content_type, cached_content_type)) { + g_dbus_proxy_call ((GDBusProxy *) engine, + "org.freedesktop.DBus.Properties.Set", + g_variant_new ("(ssv)", + IBUS_INTERFACE_ENGINE, + "ContentType", + content_type), + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, + NULL, + NULL); + + /* Need to update the cache by manual since there is a timing issue. */ + g_dbus_proxy_set_cached_property ((GDBusProxy *) engine, + "ContentType", + content_type); + } + + if (cached_content_type != NULL) + g_variant_unref (cached_content_type); + g_variant_unref (content_type); +} + /* a macro to generate a function to call a nullary D-Bus method. */ #define DEFINE_FUNCTION(Name, name) \ void \ @@ -1203,6 +1316,14 @@ bus_engine_proxy_get_desc (BusEngineProxy *engine) return engine->desc; } +IBusPropList * +bus_engine_proxy_get_properties (BusEngineProxy *engine) +{ + g_assert (BUS_IS_ENGINE_PROXY (engine)); + + return engine->prop_list; +} + gboolean bus_engine_proxy_is_enabled (BusEngineProxy *engine) { @@ -1211,6 +1332,44 @@ bus_engine_proxy_is_enabled (BusEngineProxy *engine) return engine->enabled; } +void +bus_engine_proxy_panel_extension_received (BusEngineProxy *engine, + IBusExtensionEvent *event) +{ + GVariant *variant; + g_assert (BUS_IS_ENGINE_PROXY (engine)); + g_assert (IBUS_IS_EXTENSION_EVENT (event)); + + variant = ibus_serializable_serialize_object ( + IBUS_SERIALIZABLE (event)); + g_return_if_fail (variant != NULL); + g_dbus_proxy_call ((GDBusProxy *)engine, + "PanelExtensionReceived", + g_variant_new ("(v)", variant), + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, + NULL, + NULL); +} + +void +bus_engine_proxy_panel_extension_register_keys (BusEngineProxy *engine, + GVariant *parameters) +{ + g_assert (BUS_IS_ENGINE_PROXY (engine)); + g_assert (parameters); + + g_dbus_proxy_call ((GDBusProxy *)engine, + "PanelExtensionRegisterKeys", + g_variant_new ("(v)", g_variant_ref (parameters)), + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, + NULL, + NULL); +} + static gboolean initable_init (GInitable *initable, GCancellable *cancellable, diff --git a/bus/engineproxy.h b/bus/engineproxy.h index f61fc343e..a3006b472 100644 --- a/bus/engineproxy.h +++ b/bus/engineproxy.h @@ -1,23 +1,24 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2013 Peng Huang + * Copyright (C) 2018 Takao Fujiwara + * Copyright (C) 2008-2018 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #ifndef __BUS_ENGINE_PROXY_H_ #define __BUS_ENGINE_PROXY_H_ @@ -49,7 +50,7 @@ G_BEGIN_DECLS typedef struct _BusEngineProxy BusEngineProxy; typedef struct _BusEngineProxyClass BusEngineProxyClass; -GType bus_engine_proxy_get_type (void); +GType bus_engine_proxy_get_type (void); /** * bus_engine_proxy_new: @@ -59,189 +60,293 @@ GType bus_engine_proxy_get_type (void); * @callback: a function to be called when the method invocation is done. * @user_data: a pointer that will be passed to the callback. */ -void bus_engine_proxy_new (IBusEngineDesc *desc, - gint timeout, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data); +void bus_engine_proxy_new (IBusEngineDesc *desc, + gint timeout, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); /** * bus_engine_proxy_new_finish: - * @returns: On success, return an engine object. On error, return NULL. + * @res: A #GAsyncResult. + * @error: Return location for error or %NULL. + * @returns: On success, return an engine object. On error, return %NULL. * - * Get the result of bus_engine_proxy_new call. You have to call this function in the GAsyncReadyCallback function. + * Get the result of bus_engine_proxy_new() call. You have to call this + * function in the #GAsyncReadyCallback function. */ -BusEngineProxy *bus_engine_proxy_new_finish (GAsyncResult *res, - GError **error); +BusEngineProxy *bus_engine_proxy_new_finish (GAsyncResult *res, + GError **error); /** * bus_engine_proxy_get_desc: + * @engine: A #BusEngineProxy. * - * Get an IBusEngineDesc object associated with the engine. + * Get an #IBusEngineDesc object associated with the engine. */ -IBusEngineDesc *bus_engine_proxy_get_desc (BusEngineProxy *engine); +IBusEngineDesc *bus_engine_proxy_get_desc (BusEngineProxy *engine); /** * bus_engine_proxy_process_key_event: - * @callback: a function to be called when the method invocation is done. + * @engine: A #BusEngineProxy. + * @keyval: Key symbol of the key press. + * @keycode: KeyCode of the key press. + * @state: Key modifier flags. + * @callback: A function to be called when the method invocation is done. + * @user_data: Data supplied to @callback. * * Call "ProcessKeyEvent" method of an engine asynchronously. */ -void bus_engine_proxy_process_key_event (BusEngineProxy *engine, - guint keyval, - guint keycode, - guint state, - GAsyncReadyCallback callback, - gpointer user_data); +void bus_engine_proxy_process_key_event + (BusEngineProxy *engine, + guint keyval, + guint keycode, + guint state, + GAsyncReadyCallback callback, + gpointer user_data); /** * bus_engine_proxy_set_cursor_location: + * @engine: A #BusEngineProxy. + * @x: X coordinate of the cursor. + * @y: Y coordinate of the cursor. + * @w: Width of the cursor. + * @h: Height of the cursor. * - * Call "SetCursorLocation" method of an engine asynchronously. Unlike bus_engine_proxy_process_key_event, there's no way to know the - * result of the method invocation. If the same coordinate is given twice or more, the function does nothing from the second time. + * Call "SetCursorLocation" method of an engine asynchronously. Unlike + * bus_engine_proxy_process_key_event(), there's no way to know the + * result of the method invocation. If the same coordinate is given + * twice or more, the function does nothing from the second time. */ -void bus_engine_proxy_set_cursor_location - (BusEngineProxy *engine, - gint x, - gint y, - gint w, - gint h); +void bus_engine_proxy_set_cursor_location + (BusEngineProxy *engine, + gint x, + gint y, + gint w, + gint h); /** * bus_engine_proxy_focus_in: + * @engine: A #BusEngineProxy. * - * Call "FocusIn" method of an engine asynchronously. Do nothing if the engine already has a focus. + * Call "FocusIn" method of an engine asynchronously. Do nothing if + * the engine already has a focus. */ -void bus_engine_proxy_focus_in (BusEngineProxy *engine); +void bus_engine_proxy_focus_in (BusEngineProxy *engine); /** * bus_engine_proxy_focus_out: + * @engine: A #BusEngineProxy. * - * Call "FocusOut" method of an engine asynchronously. Do nothing if the engine does not have a focus. + * Call "FocusOut" method of an engine asynchronously. Do nothing if + * the engine does not have a focus. */ -void bus_engine_proxy_focus_out (BusEngineProxy *engine); +void bus_engine_proxy_focus_out (BusEngineProxy *engine); /** * bus_engine_proxy_reset: + * @engine: A #BusEngineProxy. * * Call "Reset" method of an engine asynchronously. */ -void bus_engine_proxy_reset (BusEngineProxy *engine); +void bus_engine_proxy_reset (BusEngineProxy *engine); /** * bus_engine_proxy_set_capabilities: + * @engine: A #BusEngineProxy. + * @caps: Capabilities flags of IBusEngine, see #IBusCapabilite. * * Call "SetCapabilities" method of an engine asynchronously. */ -void bus_engine_proxy_set_capabilities (BusEngineProxy *engine, - guint caps); +void bus_engine_proxy_set_capabilities + (BusEngineProxy *engine, + guint caps); /** * bus_engine_proxy_page_up: + * @engine: A #BusEngineProxy. * * Call "PageUp" method of an engine asynchronously. */ -void bus_engine_proxy_page_up (BusEngineProxy *engine); +void bus_engine_proxy_page_up (BusEngineProxy *engine); /** * bus_engine_proxy_page_down: + * @engine: A #BusEngineProxy. * * Call "PageDown" method of an engine asynchronously. */ -void bus_engine_proxy_page_down (BusEngineProxy *engine); +void bus_engine_proxy_page_down (BusEngineProxy *engine); /** * bus_engine_proxy_cursor_up: + * @engine: A #BusEngineProxy. * * Call "CursorUp" method of an engine asynchronously. */ -void bus_engine_proxy_cursor_up (BusEngineProxy *engine); +void bus_engine_proxy_cursor_up (BusEngineProxy *engine); /** * bus_engine_proxy_cursor_down: + * @engine: A #BusEngineProxy. * * Call "CursorDown" method of an engine asynchronously. */ -void bus_engine_proxy_cursor_down (BusEngineProxy *engine); +void bus_engine_proxy_cursor_down (BusEngineProxy *engine); /** * bus_engine_proxy_candidate_clicked: + * @engine: A #BusEngineProxy. + * @index: Index of candidate be clicked. + * @button: Mouse button. + * @state: Keyboard state. * * Call "CandidateClicked" method of an engine asynchronously. */ -void bus_engine_proxy_candidate_clicked (BusEngineProxy *engine, - guint index, - guint button, - guint state); +void bus_engine_proxy_candidate_clicked + (BusEngineProxy *engine, + guint index, + guint button, + guint state); /** * bus_engine_proxy_enable: + * @engine: A #BusEngineProxy. * - * Call "Enable" method of an engine asynchronously. Do nothing if the engine is already enabled. + * Call "Enable" method of an engine asynchronously. Do nothing if the + * engine is already enabled. */ -void bus_engine_proxy_enable (BusEngineProxy *engine); +void bus_engine_proxy_enable (BusEngineProxy *engine); /** * bus_engine_proxy_disable: + * @engine: A #BusEngineProxy. * - * Call "Disable" method of an engine asynchronously. Do nothing if the engine is already disabled. + * Call "Disable" method of an engine asynchronously. Do nothing if + * the engine is already disabled. */ -void bus_engine_proxy_disable (BusEngineProxy *engine); +void bus_engine_proxy_disable (BusEngineProxy *engine); /** * bus_engine_proxy_property_activate: + * @engine: A #BusEngineProxy. + * @name: Property name. + * @state: Property state. * * Call "PropertyActivate" method of an engine asynchronously. */ -void bus_engine_proxy_property_activate (BusEngineProxy *engine, - const gchar *prop_name, - guint state); +void bus_engine_proxy_property_activate + (BusEngineProxy *engine, + const gchar *prop_name, + guint state); /** * bus_engine_proxy_property_show: + * @engine: A #BusEngineProxy. + * @prop_name: Property name. * * Call "PropertyShow" method of an engine asynchronously. */ -void bus_engine_proxy_property_show (BusEngineProxy *engine, - const gchar *prop_name); +void bus_engine_proxy_property_show + (BusEngineProxy *engine, + const gchar *prop_name); /** * bus_engine_proxy_property_hide: + * @engine: A #BusEngineProxy. + * @prop_name: Property name. * * Call "PropertyHide" method of an engine asynchronously. */ -void bus_engine_proxy_property_hide (BusEngineProxy *engine, - const gchar *prop_name); +void bus_engine_proxy_property_hide + (BusEngineProxy *engine, + const gchar *prop_name); /** * bus_engine_proxy_is_enabled: - * @returns: TRUE if the engine is enabled. + * @engine: A #BusEngineProxy. + * @returns: %TRUE if the engine is enabled. */ -gboolean bus_engine_proxy_is_enabled (BusEngineProxy *engine); +gboolean bus_engine_proxy_is_enabled (BusEngineProxy *engine); /** * bus_engine_proxy_set_surrounding_text: + * @engine: A #BusEngineProxy. + * @text: The surrounding text. + * @cursor_pos: The cursor position on surrounding text. + * @anchor_pos: The anchor position on selection area. * * Call "SetSurroundingText" method of an engine asynchronously. */ -void bus_engine_proxy_set_surrounding_text - (BusEngineProxy *engine, - IBusText *text, - guint cursor_pos, - guint anchor_pos); +void bus_engine_proxy_set_surrounding_text + (BusEngineProxy *engine, + IBusText *text, + guint cursor_pos, + guint anchor_pos); /** * bus_engine_proxy_process_hand_writing_event: + * @engine: A #BusEngineProxy. + * @coordinates: A #GVariant containing an array of coordinates. * - * Call "ProcessHandWritingEvent" method of an engine asynchronously. The type of the GVariant should be "(ad)". - * See ibus_input_context_process_hand_writing_event for details. + * Call "ProcessHandWritingEvent" method of an engine + * asynchronously. The type of the GVariant should be "(ad)". See + * ibus_input_context_process_hand_writing_event() for details. */ -void bus_engine_proxy_process_hand_writing_event - (BusEngineProxy *engine, - GVariant *coordinates); +void bus_engine_proxy_process_hand_writing_event + (BusEngineProxy *engine, + GVariant *coordinates); /** * bus_engine_proxy_cancel_hand_writing: + * @engine: A #BusEngineProxy. + * @n_strokes: The number of strokes to be removed. 0 means "remove all". * * Call "CancelHandWriting" method of an engine asynchronously. - * See ibus_input_context_cancel_hand_writing for details. + * See ibus_input_context_cancel_hand_writing() for details. + */ +void bus_engine_proxy_cancel_hand_writing + (BusEngineProxy *engine, + guint n_strokes); + +/** + * bus_engine_proxy_set_content_type: + * @engine: A #BusEngineProxy. + * @purpose: Primary purpose of the input context, as an #IBusInputPurpose. + * @hints: Hints that augment @purpose, as an #IBusInputHints. + * + * Call "SetContentType" method of an engine asynchronously. + * See ibus_input_context_set_content_type() for details. + */ +void bus_engine_proxy_set_content_type + (BusEngineProxy *engine, + guint purpose, + guint hints); + +/** + * bus_engine_proxy_get_properties: + * @engine: A #BusEngineProxy. + * @returns: An #IBusPropList. + * + * Get an #IBusPropList object associated with the engine. + */ +IBusPropList *bus_engine_proxy_get_properties + (BusEngineProxy *engine); + +/** + * bus_engine_proxy_panel_extension_received: + * @engine: A #BusEngineProxy. + * @event: An #IBusExtensionEvent. + * + * Send an #IBusExtensionEvent to the engine. + */ +void bus_engine_proxy_panel_extension_received + (BusEngineProxy *engine, + IBusExtensionEvent *event); + +/** + * bus_engine_proxy_panel_extension_register_keys: + * @engine: A #BusEngineProxy. + * @parameters: A #GVariant array which includes the name and shortcut keys. + * + * Send shortcut keys to the engine to enable the extension. */ -void bus_engine_proxy_cancel_hand_writing - (BusEngineProxy *engine, - guint n_strokes); +void bus_engine_proxy_panel_extension_register_keys + (BusEngineProxy *engine, + GVariant *parameters); G_END_DECLS #endif diff --git a/bus/factoryproxy.c b/bus/factoryproxy.c index 973424e8a..f92662da7 100644 --- a/bus/factoryproxy.c +++ b/bus/factoryproxy.c @@ -7,17 +7,17 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include "factoryproxy.h" diff --git a/bus/factoryproxy.h b/bus/factoryproxy.h index 504501901..50bf05c84 100644 --- a/bus/factoryproxy.h +++ b/bus/factoryproxy.h @@ -7,17 +7,17 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #ifndef __BUS_FACTORY_PROXY_H_ #define __BUS_FACTORY_PROXY_H_ diff --git a/bus/global.c b/bus/global.c index 47b872189..8758d923a 100644 --- a/bus/global.c +++ b/bus/global.c @@ -2,34 +2,32 @@ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2019 Red Hat, Inc. * Copyright (c) 2012 Google, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ +#include + #include "global.h" gchar **g_argv = NULL; -gchar *g_address = "unix:tmpdir=/tmp"; +gchar *g_address = IBUS_SOCKET_DIR; gchar *g_cache = "auto"; gboolean g_mempro = FALSE; gboolean g_verbose = FALSE; -gint g_gdbus_timeout = 5000; -#ifdef G_THREADS_ENABLED -gint g_monitor_timeout = 0; -#endif - +gint g_gdbus_timeout = 15000; diff --git a/bus/global.h b/bus/global.h index 7bf2a1a12..abaebbd81 100644 --- a/bus/global.h +++ b/bus/global.h @@ -7,17 +7,17 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #ifndef __BUS_GLOBAL_H_ #define __BUS_GLOBAL_H_ @@ -34,9 +34,6 @@ extern gchar *g_cache; extern gboolean g_mempro; extern gboolean g_verbose; extern gint g_gdbus_timeout; -#ifdef G_THREADS_ENABLED -extern gint g_monitor_timeout; -#endif G_END_DECLS diff --git a/bus/ibus-daemon.1.in b/bus/ibus-daemon.1.in new file mode 100644 index 000000000..ed975aedc --- /dev/null +++ b/bus/ibus-daemon.1.in @@ -0,0 +1,72 @@ +.\" This file is distributed under the same license as the ibus +.\" package. +.\" Copyright (C) Takao Fujiwara , 2013. +.\" Copyright (c) Peng Huang , 2013. +.\" +.TH IBUS-DAEMON "1" "April 2010" "@VERSION@" "User Commands" +.SH NAME +.B ibus\-daemon +\- daemon program for ibus + +.SH SYNOPSIS +.B ibus\-daemon +[\fIOPTION\fR]... + +.SH DESCRIPTION + +.PP +IBus is an Intelligent Input Bus. It is a new input framework for Linux +OS. It provides full featured and user friendly input method user +interface. It also may help developers to develop input method easily. + +.PP +.B ibus\-daemon +is a daemon program for ibus and it is also a start up program for users +to activate ibus daemon, engines and panel. + +.SS "Help Options:" +.TP +\fB\-h\fR, \fB\-\-help\fR +Show help options + +.SS "Application Options:" +.TP +\fB\-d\fR, \fB\-\-daemonize\fR +run ibus as background process. +.TP +\fB\-s\fR, \fB\-\-single\fR +do not execute panel and config module. +.TP +\fB\-x\fR, \fB\-\-xim\fR +execute ibus XIM server. +.TP +\fB\-n\fR, \fB\-\-desktop\fR=\fIname\fR +specify the name of desktop session. [default=gnome] +.TP +\fB\-p\fR, \fB\-\-panel\fR=\fIcmdline\fR +specify the cmdline of panel program. +.TP +\fB\-c\fR, \fB\-\-config\fR=\fIcmdline\fR +specify the cmdline of config program. +.TP +\fB\-a\fR, \fB\-\-address\fR=\fIaddress\fR +specify the address of ibus daemon. +.TP +\fB\-r\fR, \fB\-\-replace\fR +if there is an old ibus\-daemon is running, it will be replaced. +.TP +\fB\-t\fR, \fB\-\-cache\fR=\fImode\fR [default is auto] +force to re\-scan components, and re\-create registry cache. +auto, refresh, none is available. +.TP +\fB\-o\fR, \fB\-\-timeout\fR=\fItimeout\fR [default is 2000] +dbus reply timeout in milliseconds. +.TP +\fB\-v\fR, \fB\-\-verbose\fR +verbose. + +.SH BUGS +If you find a bug, please report it at https://github.com/ibus/ibus/issues + +.SH "SEE ALSO" +.BR ibus (1) diff --git a/bus/ibus.desktop.in b/bus/ibus.desktop.in deleted file mode 100644 index 9784f1142..000000000 --- a/bus/ibus.desktop.in +++ /dev/null @@ -1,13 +0,0 @@ -[Desktop Entry] -_Name=IBus -_GenericName=Input Method Framework -_Comment=Start IBus Input Method Framework -Exec=ibus-daemon --xim -Icon=ibus -Terminal=false -Type=Application -Categories=System;Utility; -X-GNOME-Autostart-Phase=Applications -X-GNOME-AutoRestart=false -X-GNOME-Autostart-Notify=true -X-KDE-autostart-after=panel diff --git a/bus/ibusimpl.c b/bus/ibusimpl.c index 7d804577c..49a138fea 100644 --- a/bus/ibusimpl.c +++ b/bus/ibusimpl.c @@ -1,23 +1,24 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2013 Peng Huang + * Copyright (C) 2011-2021 Takao Fujiwara + * Copyright (C) 2008-2021 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include "ibusimpl.h" @@ -35,7 +36,6 @@ #include "global.h" #include "inputcontext.h" #include "panelproxy.h" -#include "registry.h" #include "server.h" #include "types.h" @@ -51,26 +51,40 @@ struct _BusIBusImpl { /* a fake input context for global engine support */ BusInputContext *fake_context; - /* a list of engines that are started by a user (without the --ibus command line flag.) */ + /* a list of engines that are started by a user (without the --ibus + * command line flag.) */ GList *register_engine_list; - /* if TRUE, ibus-daemon uses a keysym translated by the system (i.e. XKB) as-is. - * otherwise, ibus-daemon itself converts keycode into keysym. */ + /* if TRUE, ibus-daemon uses a keysym translated by the system + * (i.e. XKB) as-is. otherwise, ibus-daemon itself converts keycode + * into keysym. */ gboolean use_sys_layout; gboolean embed_preedit_text; - BusRegistry *registry; + IBusRegistry *registry; + + /* a list of BusComponent objects that are created from component XML + * files (or from the cache of them). */ + GList *components; + + /* a mapping from an engine name (e.g. 'pinyin') to the corresponding + * IBusEngineDesc object. */ + GHashTable *engine_table; BusInputContext *focused_context; BusPanelProxy *panel; + BusPanelProxy *emoji_extension; + gboolean enable_emoji_extension; - /* a default keymap of ibus-daemon (usually "us") which is used only when use_sys_layout is FALSE. */ + /* a default keymap of ibus-daemon (usually "us") which is used only + * when use_sys_layout is FALSE. */ IBusKeymap *keymap; gboolean use_global_engine; gchar *global_engine_name; gchar *global_previous_engine_name; + GVariant *extension_register_keys; }; struct _BusIBusImplClass { @@ -92,86 +106,107 @@ static guint _signals[LAST_SIGNAL] = { 0 }; */ /* functions prototype */ -static void bus_ibus_impl_destroy (BusIBusImpl *ibus); -static void bus_ibus_impl_service_method_call - (IBusService *service, - GDBusConnection *connection, - const gchar *sender, - const gchar *object_path, - const gchar *interface_name, - const gchar *method_name, - GVariant *parameters, - GDBusMethodInvocation - *invocation); -/* TODO use property to replace some getter and setter in future */ -#if 0 -static GVariant *ibus_ibus_impl_service_get_property - (IBusService *service, - GDBusConnection *connection, - const gchar *sender, - const gchar *object_path, - const gchar *interface_name, - const gchar *property_name, - GError **error); -static gboolean ibus_ibus_impl_service_set_property - (IBusService *service, - GDBusConnection *connection, - const gchar *sender, - const gchar *object_path, - const gchar *interface_name, - const gchar *property_name, - GVariant *value, - GError **error); -#endif -static void bus_ibus_impl_registry_changed (BusIBusImpl *ibus); +static void bus_ibus_impl_destroy (BusIBusImpl *ibus); +static void bus_ibus_impl_service_method_call + (IBusService *service, + GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *method_name, + GVariant *parameters, + GDBusMethodInvocation + *invocation); +static GVariant * + bus_ibus_impl_service_get_property + (IBusService *service, + GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *property_name, + GError **error); +static gboolean + bus_ibus_impl_service_set_property + (IBusService *service, + GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *property_name, + GVariant *value, + GError **error); +static void bus_ibus_impl_registry_init + (BusIBusImpl *ibus); +static void bus_ibus_impl_registry_changed + (BusIBusImpl *ibus); +static void bus_ibus_impl_registry_destroy + (BusIBusImpl *ibus); +static void bus_ibus_impl_component_name_owner_changed + (BusIBusImpl *ibus, + const gchar *name, + const gchar *old_name, + const gchar *new_name); static void bus_ibus_impl_global_engine_changed - (BusIBusImpl *ibus); + (BusIBusImpl *ibus); static void bus_ibus_impl_set_context_engine_from_desc - (BusIBusImpl *ibus, - BusInputContext *context, - IBusEngineDesc *desc); + (BusIBusImpl *ibus, + BusInputContext *context, + IBusEngineDesc *desc); static BusInputContext *bus_ibus_impl_create_input_context - (BusIBusImpl *ibus, - BusConnection *connection, - const gchar *client); + (BusIBusImpl *ibus, + BusConnection *connection, + const gchar *client); static IBusEngineDesc - *bus_ibus_impl_get_engine_desc (BusIBusImpl *ibus, - const gchar *engine_name); + *bus_ibus_impl_get_engine_desc + (BusIBusImpl *ibus, + const gchar *engine_name); static void bus_ibus_impl_set_focused_context - (BusIBusImpl *ibus, - BusInputContext *context); + (BusIBusImpl *ibus, + BusInputContext *context); +static void bus_ibus_impl_property_changed + (BusIBusImpl *service, + const gchar *property_name, + GVariant *value); /* some callback functions */ -static void _context_engine_changed_cb (BusInputContext *context, - BusIBusImpl *ibus); - -/* The interfaces available in this class, which consists of a list of methods this class implements and - * a list of signals this class may emit. Method calls to the interface that are not defined in this XML - * will be automatically rejected by the GDBus library (see src/ibusservice.c for details.) */ +static void _context_engine_changed_cb + (BusInputContext *context, + BusIBusImpl *ibus); + +/* The interfaces available in this class, which consists of a list of + * methods this class implements and a list of signals this class may emit. + * Method calls to the interface that are not defined in this XML will + * be automatically rejected by the GDBus library (see src/ibusservice.c + * for details.) + * Implement org.freedesktop.DBus.Properties + * http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-properties */ static const gchar introspection_xml[] = "\n" " \n" - " \n" - " \n" - " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" " \n" " \n" " \n" " \n" - " \n" - " \n" - " \n" " \n" " \n" " \n" - " \n" - " \n" - " \n" " \n" - " \n" - " \n" - " \n" - " \n" + " \n" " \n" " \n" " \n" @@ -181,26 +216,46 @@ static const gchar introspection_xml[] = " \n" " \n" " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" " \n" " \n" + " \n" " \n" " \n" " \n" " \n" - " \n" - " \n" - " \n" - " \n" - " \n" - " \n" " \n" " \n" + " \n" + " \n" + " \n" + " \n" + " \n" " \n" - " \n" - " \n" - " \n" - " \n" - " \n" " \n" "\n"; @@ -210,12 +265,20 @@ G_DEFINE_TYPE (BusIBusImpl, bus_ibus_impl, IBUS_TYPE_SERVICE) static void bus_ibus_impl_class_init (BusIBusImplClass *class) { - IBUS_OBJECT_CLASS (class)->destroy = (IBusObjectDestroyFunc) bus_ibus_impl_destroy; + IBUS_OBJECT_CLASS (class)->destroy = + (IBusObjectDestroyFunc) bus_ibus_impl_destroy; /* override the parent class's implementation. */ - IBUS_SERVICE_CLASS (class)->service_method_call = bus_ibus_impl_service_method_call; - /* register the xml so that bus_ibus_impl_service_method_call will be called on a method call defined in the xml (e.g. 'GetAddress'.) */ - ibus_service_class_add_interfaces (IBUS_SERVICE_CLASS (class), introspection_xml); + IBUS_SERVICE_CLASS (class)->service_method_call = + bus_ibus_impl_service_method_call; + IBUS_SERVICE_CLASS (class)->service_get_property = + bus_ibus_impl_service_get_property; + IBUS_SERVICE_CLASS (class)->service_set_property = + bus_ibus_impl_service_set_property; + /* register the xml so that bus_ibus_impl_service_method_call will be + * called on a method call defined in the xml (e.g. 'GetAddress'.) */ + ibus_service_class_add_interfaces (IBUS_SERVICE_CLASS (class), + introspection_xml); } /** @@ -231,15 +294,145 @@ _panel_destroy_cb (BusPanelProxy *panel, g_assert (BUS_IS_PANEL_PROXY (panel)); g_assert (BUS_IS_IBUS_IMPL (ibus)); - g_return_if_fail (ibus->panel == panel); - - ibus->panel = NULL; + if (ibus->panel == panel) + ibus->panel = NULL; + else if (ibus->emoji_extension == panel) + ibus->emoji_extension = NULL; + else + g_return_if_reached (); g_object_unref (panel); } static void -_registry_changed_cb (BusRegistry *registry, - BusIBusImpl *ibus) +bus_ibus_impl_set_panel_extension_mode (BusIBusImpl *ibus, + IBusExtensionEvent *event) +{ + gboolean is_extension = FALSE; + g_return_if_fail (BUS_IS_IBUS_IMPL (ibus)); + g_return_if_fail (IBUS_IS_EXTENSION_EVENT (event)); + + if (!ibus->emoji_extension) { + g_warning ("Panel extension is not running."); + return; + } + + g_return_if_fail (BUS_IS_PANEL_PROXY (ibus->emoji_extension)); + + ibus->enable_emoji_extension = ibus_extension_event_is_enabled (event); + is_extension = ibus_extension_event_is_extension (event); + if (ibus->focused_context != NULL) { + if (ibus->enable_emoji_extension) { + bus_input_context_set_emoji_extension (ibus->focused_context, + ibus->emoji_extension); + } else { + bus_input_context_set_emoji_extension (ibus->focused_context, NULL); + } + if (is_extension) + bus_input_context_panel_extension_received (ibus->focused_context, + event); + } + if (is_extension) + return; + + /* Use the DBus method because it seems any DBus signal, + * g_dbus_message_new_signal(), cannot be reached to the server. */ + bus_panel_proxy_panel_extension_received (ibus->emoji_extension, + event); +} + +static void +bus_ibus_impl_set_panel_extension_keys (BusIBusImpl *ibus, + GVariant *parameters) +{ + BusEngineProxy *engine = NULL; + + g_return_if_fail (BUS_IS_IBUS_IMPL (ibus)); + g_return_if_fail (parameters); + + if (!ibus->emoji_extension) { + g_warning ("Panel extension is not running."); + return; + } + + if (ibus->extension_register_keys) + g_variant_unref (ibus->extension_register_keys); + ibus->extension_register_keys = g_variant_ref_sink (parameters); + if (ibus->focused_context != NULL) { + engine = bus_input_context_get_engine (ibus->focused_context); + } + if (!engine) + return; + bus_engine_proxy_panel_extension_register_keys (engine, parameters); +} + +static void +_panel_panel_extension_cb (BusPanelProxy *panel, + IBusExtensionEvent *event, + BusIBusImpl *ibus) +{ + bus_ibus_impl_set_panel_extension_mode (ibus, event); +} + +static void +_panel_panel_extension_register_keys_cb (BusInputContext *context, + GVariant *parameters, + BusIBusImpl *ibus) +{ + bus_ibus_impl_set_panel_extension_keys (ibus, parameters); +} + +static void +_panel_update_preedit_text_received_cb (BusPanelProxy *panel, + IBusText *text, + guint cursor_pos, + gboolean visible, + BusIBusImpl *ibus) +{ + g_return_if_fail (BUS_IS_IBUS_IMPL (ibus)); + + if (!ibus->focused_context) + return; + bus_input_context_update_preedit_text (ibus->focused_context, + text, cursor_pos, visible, IBUS_ENGINE_PREEDIT_CLEAR, FALSE); +} + +static void +_panel_update_lookup_table_received_cb (BusPanelProxy *panel, + IBusLookupTable *table, + gboolean visible, + BusIBusImpl *ibus) +{ + g_return_if_fail (BUS_IS_IBUS_IMPL (ibus)); + g_return_if_fail (IBUS_IS_LOOKUP_TABLE (table)); + + if (!ibus->focused_context) + return; + /* Call bus_input_context_update_lookup_table() instead of + * bus_panel_proxy_update_lookup_table() for panel extensions because + * bus_input_context_page_up() can call bus_panel_proxy_page_up_received(). + */ + bus_input_context_update_lookup_table ( + ibus->focused_context, table, visible, TRUE); +} + +static void +_panel_update_auxiliary_text_received_cb (BusPanelProxy *panel, + IBusText *text, + gboolean visible, + BusIBusImpl *ibus) +{ + g_return_if_fail (BUS_IS_IBUS_IMPL (ibus)); + g_return_if_fail (IBUS_IS_TEXT (text)); + + if (!ibus->panel) + return; + bus_panel_proxy_update_auxiliary_text ( + ibus->panel, text, visible); +} + +static void +_registry_changed_cb (IBusRegistry *registry, + BusIBusImpl *ibus) { bus_ibus_impl_registry_changed (ibus); } @@ -258,43 +451,108 @@ _dbus_name_owner_changed_cb (BusDBusImpl *dbus, const gchar *new_name, BusIBusImpl *ibus) { + PanelType panel_type = PANEL_TYPE_NONE; + g_assert (BUS_IS_DBUS_IMPL (dbus)); g_assert (name != NULL); g_assert (old_name != NULL); g_assert (new_name != NULL); g_assert (BUS_IS_IBUS_IMPL (ibus)); - if (g_strcmp0 (name, IBUS_SERVICE_PANEL) == 0) { + if (!g_strcmp0 (name, IBUS_SERVICE_PANEL)) + panel_type = PANEL_TYPE_PANEL; + else if (!g_strcmp0 (name, IBUS_SERVICE_PANEL_EXTENSION_EMOJI)) + panel_type = PANEL_TYPE_EXTENSION_EMOJI; + + do { + if (panel_type == PANEL_TYPE_NONE) + break; if (g_strcmp0 (new_name, "") != 0) { /* a Panel process is started. */ BusConnection *connection; - - if (ibus->panel != NULL) { - ibus_proxy_destroy ((IBusProxy *) ibus->panel); - /* panel should be NULL after destroy. See _panel_destroy_cb for details. */ - g_assert (ibus->panel == NULL); + BusInputContext *context = NULL; + BusPanelProxy **panel = (panel_type == PANEL_TYPE_PANEL) ? + &ibus->panel : &ibus->emoji_extension; + GDBusConnection *dbus_connection = NULL; + + if (*panel != NULL) { + ibus_proxy_destroy ((IBusProxy *)(*panel)); + /* panel should be NULL after destroy. See _panel_destroy_cb + * for details. */ + g_assert (*panel == NULL); } - connection = bus_dbus_impl_get_connection_by_name (BUS_DEFAULT_DBUS, new_name); + connection = bus_dbus_impl_get_connection_by_name (BUS_DEFAULT_DBUS, + new_name); g_return_if_fail (connection != NULL); - ibus->panel = bus_panel_proxy_new (connection); + dbus_connection = bus_connection_get_dbus_connection (connection); + /* rhbz#1349148 rhbz#1385349 + * Avoid SEGV of BUS_IS_PANEL_PROXY (ibus->panel) + * This function is called during destroying the connection + * in this case? */ + if (dbus_connection == NULL || + g_dbus_connection_is_closed (dbus_connection)) { + new_name = ""; + break; + } + + *panel = bus_panel_proxy_new (connection, panel_type); + if (panel_type == PANEL_TYPE_EXTENSION_EMOJI) + ibus->enable_emoji_extension = FALSE; - g_signal_connect (ibus->panel, + g_signal_connect (*panel, "destroy", G_CALLBACK (_panel_destroy_cb), ibus); + g_signal_connect (*panel, + "panel-extension", + G_CALLBACK (_panel_panel_extension_cb), + ibus); + g_signal_connect (*panel, + "panel-extension-register-keys", + G_CALLBACK ( + _panel_panel_extension_register_keys_cb), + ibus); + g_signal_connect ( + *panel, + "update-preedit-text-received", + G_CALLBACK (_panel_update_preedit_text_received_cb), + ibus); + g_signal_connect ( + *panel, + "update-lookup-table-received", + G_CALLBACK (_panel_update_lookup_table_received_cb), + ibus); + g_signal_connect ( + *panel, + "update-auxiliary-text-received", + G_CALLBACK (_panel_update_auxiliary_text_received_cb), + ibus); if (ibus->focused_context != NULL) { - bus_panel_proxy_focus_in (ibus->panel, ibus->focused_context); + context = ibus->focused_context; } else if (ibus->use_global_engine) { - bus_panel_proxy_focus_in (ibus->panel, ibus->fake_context); + context = ibus->fake_context; + } + + if (context != NULL) { + BusEngineProxy *engine; + + bus_panel_proxy_focus_in (*panel, context); + + engine = bus_input_context_get_engine (context); + if (engine != NULL) { + IBusPropList *prop_list = + bus_engine_proxy_get_properties (engine); + bus_panel_proxy_register_properties (*panel, prop_list); + } } } - } + } while (0); - bus_registry_name_owner_changed (ibus->registry, name, old_name, new_name); + bus_ibus_impl_component_name_owner_changed (ibus, name, old_name, new_name); } /** @@ -329,19 +587,7 @@ bus_ibus_impl_init (BusIBusImpl *ibus) ibus->contexts = NULL; ibus->focused_context = NULL; ibus->panel = NULL; - ibus->registry = bus_registry_new (); - - g_signal_connect (ibus->registry, - "changed", - G_CALLBACK (_registry_changed_cb), - ibus); -#ifdef G_THREADS_ENABLED - extern gint g_monitor_timeout; - if (g_monitor_timeout != 0) { - /* Start the monitor of registry changes. */ - bus_registry_start_monitor_changes (ibus->registry); - } -#endif + ibus->emoji_extension = NULL; ibus->keymap = ibus_keymap_get ("us"); @@ -359,6 +605,8 @@ bus_ibus_impl_init (BusIBusImpl *ibus) "name-owner-changed", G_CALLBACK (_dbus_name_owner_changed_cb), ibus); + + bus_ibus_impl_registry_init (ibus); } /** @@ -374,9 +622,8 @@ bus_ibus_impl_destroy (BusIBusImpl *ibus) gint status; gboolean flag; - bus_registry_stop_all_components (ibus->registry); + g_list_foreach (ibus->components, (GFunc) bus_component_stop, NULL); - pid = 0; timeout = 0; flag = FALSE; while (1) { @@ -429,21 +676,46 @@ bus_ibus_impl_destroy (BusIBusImpl *ibus) ibus->fake_context = NULL; } + bus_ibus_impl_registry_destroy (ibus); + IBUS_OBJECT_CLASS (bus_ibus_impl_parent_class)->destroy (IBUS_OBJECT (ibus)); } /** * _ibus_get_address: * - * Implement the "GetAddress" method call of the org.freedesktop.IBus interface. + * Implement the "Address" method call of the org.freedesktop.IBus interface. */ +static GVariant * +_ibus_get_address (BusIBusImpl *ibus, + GDBusConnection *connection, + GError **error) +{ + if (error) { + *error = NULL; + } + + return g_variant_new_string (bus_server_get_address ()); +} + static void -_ibus_get_address (BusIBusImpl *ibus, - GVariant *parameters, - GDBusMethodInvocation *invocation) +_ibus_get_address_depre (BusIBusImpl *ibus, + GVariant *parameters, + GDBusMethodInvocation *invocation) { + GDBusConnection *connection = + g_dbus_method_invocation_get_connection (invocation); + GError *error = NULL; + GVariant *variant = NULL; + + g_warning ("org.freedesktop.IBus.GetAddress() is deprecated!"); + + variant = _ibus_get_address (ibus, connection, &error); + g_dbus_method_invocation_return_value (invocation, - g_variant_new ("(s)", bus_server_get_address ())); + g_variant_new ("(s)", g_variant_get_string (variant, NULL))); + + g_variant_unref (variant); } static IBusEngineDesc * @@ -494,7 +766,8 @@ bus_ibus_impl_get_engine_desc (BusIBusImpl *ibus, IBusEngineDesc *desc = _find_engine_desc_by_name (ibus, engine_name); if (desc == NULL) { - desc = bus_registry_find_engine_by_name (ibus->registry, engine_name); + desc = (IBusEngineDesc *) g_hash_table_lookup (ibus->engine_table, + engine_name); } return desc; } @@ -512,6 +785,21 @@ bus_ibus_impl_set_context_engine_from_desc (BusIBusImpl *ibus, NULL); } +static void +_context_panel_extension_cb (BusInputContext *context, + IBusExtensionEvent *event, + BusIBusImpl *ibus) +{ + bus_ibus_impl_set_panel_extension_mode (ibus, event); +} + +const static struct { + const gchar *name; + GCallback callback; +} context_signals [] = { + { "panel-extension", G_CALLBACK (_context_panel_extension_cb) } +}; + /** * bus_ibus_impl_set_focused_context: * @@ -521,6 +809,11 @@ static void bus_ibus_impl_set_focused_context (BusIBusImpl *ibus, BusInputContext *context) { + gint i; + BusEngineProxy *engine = NULL; + guint purpose = 0; + guint hints = 0; + g_assert (BUS_IS_IBUS_IMPL (ibus)); g_assert (context == NULL || BUS_IS_INPUT_CONTEXT (context)); g_assert (context == NULL || bus_input_context_get_capabilities (context) & IBUS_CAP_FOCUS); @@ -530,27 +823,51 @@ bus_ibus_impl_set_focused_context (BusIBusImpl *ibus, return; } - BusEngineProxy *engine = NULL; - if (ibus->focused_context) { if (ibus->use_global_engine) { /* dettach engine from the focused context */ engine = bus_input_context_get_engine (ibus->focused_context); if (engine) { g_object_ref (engine); + /* _ic_focus_in() can be called before _ic_focus_out() is + * called under the async processes of two ibus clients. + * E.g. gedit is a little slower v.s. a simple GtkTextView + * application is the fastest when you click a Hangul + * preedit text between the applications. + * preedit will be committed with focus-out in the ibus client + * likes ibus-im.so + * so do not commit preedit here in focus-in event. + */ + bus_input_context_clear_preedit_text (ibus->focused_context, + FALSE); bus_input_context_set_engine (ibus->focused_context, NULL); + bus_input_context_set_emoji_extension (ibus->focused_context, + NULL); } } if (ibus->panel != NULL) bus_panel_proxy_focus_out (ibus->panel, ibus->focused_context); + if (ibus->emoji_extension != NULL) { + bus_panel_proxy_focus_out (ibus->emoji_extension, + ibus->focused_context); + } + bus_input_context_set_emoji_extension (ibus->focused_context, NULL); + bus_input_context_get_content_type (ibus->focused_context, + &purpose, &hints); + for (i = 0; i < G_N_ELEMENTS(context_signals); i++) { + g_signal_handlers_disconnect_by_func (ibus->focused_context, + context_signals[i].callback, ibus); + } g_object_unref (ibus->focused_context); ibus->focused_context = NULL; } if (context == NULL && ibus->use_global_engine) { context = ibus->fake_context; + if (context) + bus_input_context_set_content_type (context, purpose, hints); } if (context) { @@ -559,10 +876,24 @@ bus_ibus_impl_set_focused_context (BusIBusImpl *ibus, if (engine != NULL) { bus_input_context_set_engine (context, engine); bus_input_context_enable (context); + if (ibus->enable_emoji_extension) { + bus_input_context_set_emoji_extension (context, + ibus->emoji_extension); + } else { + bus_input_context_set_emoji_extension (context, NULL); + } + } + for (i = 0; i < G_N_ELEMENTS(context_signals); i++) { + g_signal_connect (ibus->focused_context, + context_signals[i].name, + context_signals[i].callback, + ibus); } if (ibus->panel != NULL) bus_panel_proxy_focus_in (ibus->panel, context); + if (ibus->emoji_extension != NULL) + bus_panel_proxy_focus_in (ibus->emoji_extension, context); } if (engine != NULL) @@ -578,6 +909,12 @@ bus_ibus_impl_set_global_engine (BusIBusImpl *ibus, if (ibus->focused_context) { bus_input_context_set_engine (ibus->focused_context, engine); + if (ibus->enable_emoji_extension) { + bus_input_context_set_emoji_extension (ibus->focused_context, + ibus->emoji_extension); + } else { + bus_input_context_set_emoji_extension (ibus->focused_context, NULL); + } } else if (ibus->fake_context) { bus_input_context_set_engine (ibus->fake_context, engine); } @@ -731,19 +1068,14 @@ _context_focus_out_cb (BusInputContext *context, return; } - - if (ibus->use_global_engine == FALSE) { - /* Do not change the focused context, if use_global_engine option is enabled. - * If focused context swith to NULL, users can not swith engine in panel anymore. - **/ - bus_ibus_impl_set_focused_context (ibus, NULL); - } + bus_ibus_impl_set_focused_context (ibus, NULL); } /** * _context_destroy_cb: * - * A callback function to be called when the "destroy" signal is sent to the context. + * A callback function to be called when the "destroy" signal is sent to the + * context. */ static void _context_destroy_cb (BusInputContext *context, @@ -752,8 +1084,16 @@ _context_destroy_cb (BusInputContext *context, g_assert (BUS_IS_IBUS_IMPL (ibus)); g_assert (BUS_IS_INPUT_CONTEXT (context)); - if (context == ibus->focused_context) { + if (context == ibus->focused_context) bus_ibus_impl_set_focused_context (ibus, NULL); + + if (ibus->panel && + bus_input_context_get_capabilities (context) & IBUS_CAP_FOCUS) { + bus_panel_proxy_destroy_context (ibus->panel, context); + } + if (ibus->emoji_extension && + bus_input_context_get_capabilities (context) & IBUS_CAP_FOCUS) { + bus_panel_proxy_destroy_context (ibus->emoji_extension, context); } ibus->contexts = g_list_remove (ibus->contexts, context); @@ -839,24 +1179,65 @@ _ibus_create_input_context (BusIBusImpl *ibus, } /** - * _ibus_current_input_context: + * _ibus_get_current_input_context: * - * Implement the "CurrentInputContext" method call of the org.freedesktop.IBus interface. + * Implement the "CurrentInputContext" method call of the + * org.freedesktop.IBus interface. */ -static void -_ibus_current_input_context (BusIBusImpl *ibus, - GVariant *parameters, - GDBusMethodInvocation *invocation) +static GVariant * +_ibus_get_current_input_context (BusIBusImpl *ibus, + GDBusConnection *connection, + GError **error) { + GVariant *retval = NULL; + if (error) { + *error = NULL; + } + if (!ibus->focused_context) { - g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, - "No focused input context"); + g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, + "No focused input context"); + return NULL; } else { - const gchar *path = ibus_service_get_object_path ((IBusService *) ibus->focused_context); + const gchar *path = ibus_service_get_object_path ( + (IBusService *) ibus->focused_context); /* the format-string 'o' is for a D-Bus object path. */ - g_dbus_method_invocation_return_value (invocation, g_variant_new ("(o)", path)); + retval = g_variant_new_object_path (path); + if (!retval) { + g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, + "Could not get object path from %s", + path ? path : "(null)"); + } + } + return retval; +} + +static void +_ibus_current_input_context_depre (BusIBusImpl *ibus, + GVariant *parameters, + GDBusMethodInvocation *invocation) +{ + GDBusConnection *connection = + g_dbus_method_invocation_get_connection (invocation); + GVariant *variant = NULL; + GError *error = NULL; + + g_warning ("org.freedesktop.IBus.CurrentInputContext() is deprecated!"); + + variant = _ibus_get_current_input_context (ibus, connection, &error); + + if (variant == NULL) { + g_dbus_method_invocation_return_error ( + invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, + "%s", error->message); + g_error_free (error); + } else { + const gchar *path = g_variant_get_string (variant, NULL); + g_dbus_method_invocation_return_value (invocation, + g_variant_new ("(o)", path)); + g_variant_unref (variant); } } @@ -888,7 +1269,8 @@ _component_destroy_cb (BusComponent *component, /** * _ibus_register_component: * - * Implement the "RegisterComponent" method call of the org.freedesktop.IBus interface. + * Implement the "RegisterComponent" method call of the + * org.freedesktop.IBus interface. */ static void _ibus_register_component (BusIBusImpl *ibus, @@ -896,23 +1278,27 @@ _ibus_register_component (BusIBusImpl *ibus, GDBusMethodInvocation *invocation) { GVariant *variant = g_variant_get_child_value (parameters, 0); - IBusComponent *component = (IBusComponent *) ibus_serializable_deserialize (variant); + IBusComponent *component = + (IBusComponent *) ibus_serializable_deserialize (variant); if (!IBUS_IS_COMPONENT (component)) { if (component) g_object_unref (component); - g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, - "The first argument should be an IBusComponent."); + g_dbus_method_invocation_return_error ( + invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, + "The first argument should be an IBusComponent."); return; } - BusConnection *connection = bus_connection_lookup (g_dbus_method_invocation_get_connection (invocation)); + BusConnection *connection = bus_connection_lookup ( + g_dbus_method_invocation_get_connection (invocation)); BusFactoryProxy *factory = bus_factory_proxy_new (connection); if (factory == NULL) { g_object_unref (component); - g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, - "Create factory failed."); + g_dbus_method_invocation_return_error ( + invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, + "Create factory failed."); return; } @@ -930,31 +1316,63 @@ _ibus_register_component (BusIBusImpl *ibus, ibus->register_engine_list = g_list_concat (ibus->register_engine_list, engines); - g_signal_connect (buscomp, "destroy", G_CALLBACK (_component_destroy_cb), ibus); + g_signal_connect (buscomp, + "destroy", + G_CALLBACK (_component_destroy_cb), + ibus); g_dbus_method_invocation_return_value (invocation, NULL); } /** - * _ibus_list_engines: + * _ibus_get_engines: * - * Implement the "ListEngines" method call of the org.freedesktop.IBus interface. + * Implement the "Engines" method call of the org.freedesktop.IBus interface. */ -static void -_ibus_list_engines (BusIBusImpl *ibus, - GVariant *parameters, - GDBusMethodInvocation *invocation) +static GVariant * +_ibus_get_engines (BusIBusImpl *ibus, + GDBusConnection *connection, + GError **error) { GVariantBuilder builder; + GList *engines = NULL; + GList *p; + + if (error) { + *error = NULL; + } + g_variant_builder_init (&builder, G_VARIANT_TYPE ("av")); - GList *engines = bus_registry_get_engines (ibus->registry); - GList *p; + engines = g_hash_table_get_values (ibus->engine_table); + for (p = engines; p != NULL; p = p->next) { - g_variant_builder_add (&builder, "v", ibus_serializable_serialize ((IBusSerializable *) p->data)); + g_variant_builder_add ( + &builder, "v", + ibus_serializable_serialize ((IBusSerializable *) p->data)); } + g_list_free (engines); - g_dbus_method_invocation_return_value (invocation, g_variant_new ("(av)", &builder)); + + return g_variant_builder_end (&builder); +} + +static void +_ibus_list_engines_depre (BusIBusImpl *ibus, + GVariant *parameters, + GDBusMethodInvocation *invocation) +{ + GDBusConnection *connection = + g_dbus_method_invocation_get_connection (invocation); + GError *error = NULL; + GVariant *variant = NULL; + + g_warning ("org.freedesktop.IBus.ListEngines() is deprecated!"); + + variant = _ibus_get_engines (ibus, connection, &error); + + g_dbus_method_invocation_return_value (invocation, + g_variant_new ("(@av)", variant)); } /** @@ -976,8 +1394,8 @@ _ibus_get_engines_by_names (BusIBusImpl *ibus, GVariantBuilder builder; g_variant_builder_init (&builder, G_VARIANT_TYPE ("av")); while (names[i] != NULL) { - IBusEngineDesc *desc = bus_registry_find_engine_by_name ( - ibus->registry, names[i++]); + IBusEngineDesc *desc = (IBusEngineDesc *) g_hash_table_lookup ( + ibus->engine_table, names[i++]); if (desc == NULL) continue; g_variant_builder_add ( @@ -989,23 +1407,50 @@ _ibus_get_engines_by_names (BusIBusImpl *ibus, } /** - * _ibus_list_active_engines: + * _ibus_get_active_engines: * - * Implement the "ListActiveEngines" method call of the org.freedesktop.IBus interface. + * Implement the "ActiveEngines" method call of the + * org.freedesktop.IBus interface. */ -static void -_ibus_list_active_engines (BusIBusImpl *ibus, - GVariant *parameters, - GDBusMethodInvocation *invocation) +static GVariant * +_ibus_get_active_engines (BusIBusImpl *ibus, + GDBusConnection *connection, + GError **error) { GVariantBuilder builder; + GList *p; + + if (error) { + *error = NULL; + } + g_variant_builder_init (&builder, G_VARIANT_TYPE ("av")); - GList *p; for (p = ibus->register_engine_list; p != NULL; p = p->next) { - g_variant_builder_add (&builder, "v", ibus_serializable_serialize ((IBusSerializable *) p->data)); + g_variant_builder_add ( + &builder, "v", + ibus_serializable_serialize ((IBusSerializable *) p->data)); } - g_dbus_method_invocation_return_value (invocation, g_variant_new ("(av)", &builder)); + + return g_variant_builder_end (&builder); +} + +static void +_ibus_list_active_engines_depre (BusIBusImpl *ibus, + GVariant *parameters, + GDBusMethodInvocation *invocation) +{ + GDBusConnection *connection = + g_dbus_method_invocation_get_connection (invocation); + GError *error = NULL; + GVariant *variant = NULL; + + g_warning ("org.freedesktop.IBus.ListActiveEngines() is deprecated!"); + + variant = _ibus_get_active_engines (ibus, connection, &error); + + g_dbus_method_invocation_return_value (invocation, + g_variant_new ("(@av)", variant)); } /** @@ -1024,9 +1469,10 @@ _ibus_exit (BusIBusImpl *ibus, g_dbus_method_invocation_return_value (invocation, NULL); /* Make sure the reply has been sent out before exit */ - g_dbus_connection_flush_sync (g_dbus_method_invocation_get_connection (invocation), - NULL, - NULL); + g_dbus_connection_flush_sync ( + g_dbus_method_invocation_get_connection (invocation), + NULL, + NULL); bus_server_quit (restart); } @@ -1047,42 +1493,96 @@ _ibus_ping (BusIBusImpl *ibus, /** * _ibus_get_use_sys_layout: * - * Implement the "GetUseSysLayout" method call of the org.freedesktop.IBus interface. + * Implement the "UseSysLayout" method call of the + * org.freedesktop.IBus interface. */ +static GVariant * +_ibus_get_use_sys_layout (BusIBusImpl *ibus, + GDBusConnection *connection, + GError **error) +{ + if (error) { + *error = NULL; + } + + return g_variant_new_boolean (ibus->use_sys_layout); +} + static void -_ibus_get_use_sys_layout (BusIBusImpl *ibus, - GVariant *parameters, - GDBusMethodInvocation *invocation) +_ibus_get_use_sys_layout_depre (BusIBusImpl *ibus, + GVariant *parameters, + GDBusMethodInvocation *invocation) { + GDBusConnection *connection = + g_dbus_method_invocation_get_connection (invocation); + GError *error = NULL; + GVariant *variant = NULL; + + g_warning ("org.freedesktop.IBus.GetUseSysLayout() is deprecated!"); + + variant = _ibus_get_use_sys_layout (ibus, connection, &error); + g_dbus_method_invocation_return_value (invocation, - g_variant_new ("(b)", ibus->use_sys_layout)); + g_variant_new ("(b)", g_variant_get_boolean (variant))); + + g_variant_unref (variant); } /** * _ibus_get_use_global_engine: * - * Implement the "GetUseGlobalEngine" method call of the org.freedesktop.IBus interface. + * Implement the "UseGlobalEngine" method call of the + * org.freedesktop.IBus interface. */ +static GVariant * +_ibus_get_use_global_engine (BusIBusImpl *ibus, + GDBusConnection *connection, + GError **error) +{ + if (error) { + *error = NULL; + } + + return g_variant_new_boolean (ibus->use_global_engine); +} + static void -_ibus_get_use_global_engine (BusIBusImpl *ibus, - GVariant *parameters, - GDBusMethodInvocation *invocation) +_ibus_get_use_global_engine_depre (BusIBusImpl *ibus, + GVariant *parameters, + GDBusMethodInvocation *invocation) { + GDBusConnection *connection = + g_dbus_method_invocation_get_connection (invocation); + GError *error = NULL; + GVariant *variant = NULL; + + g_warning ("org.freedesktop.IBus.GetUseGlobalEngine() is deprecated!"); + + variant = _ibus_get_use_global_engine (ibus, connection, &error); + g_dbus_method_invocation_return_value (invocation, - g_variant_new ("(b)", ibus->use_global_engine)); + g_variant_new ("(b)", g_variant_get_boolean (variant))); + + g_variant_unref (variant); } /** * _ibus_get_global_engine: * - * Implement the "GetGlobalEngine" method call of the org.freedesktop.IBus interface. + * Implement the "GlobalEngine" method call of the + * org.freedesktop.IBus interface. */ -static void -_ibus_get_global_engine (BusIBusImpl *ibus, - GVariant *parameters, - GDBusMethodInvocation *invocation) +static GVariant * +_ibus_get_global_engine (BusIBusImpl *ibus, + GDBusConnection *connection, + GError **error) { IBusEngineDesc *desc = NULL; + GVariant *retval = NULL; + + if (error) { + *error = NULL; + } do { if (!ibus->use_global_engine) @@ -1096,15 +1596,50 @@ _ibus_get_global_engine (BusIBusImpl *ibus, if (desc == NULL) break; - GVariant *variant = ibus_serializable_serialize ((IBusSerializable *) desc); - g_dbus_method_invocation_return_value (invocation, - g_variant_new ("(v)", variant)); - return; + GVariant *variant = ibus_serializable_serialize ( + (IBusSerializable *) desc); + // Set type "v" for introspection_xml. + retval = g_variant_new_variant (variant); + if (!retval) { + g_set_error (error, + G_DBUS_ERROR, G_DBUS_ERROR_FAILED, + "Failed to serialize engine desc."); + } + return retval; } while (0); - g_dbus_method_invocation_return_error (invocation, - G_DBUS_ERROR, G_DBUS_ERROR_FAILED, - "No global engine."); + g_set_error (error, + G_DBUS_ERROR, G_DBUS_ERROR_FAILED, + "No global engine."); + return NULL; +} + +static void +_ibus_get_global_engine_depre (BusIBusImpl *ibus, + GVariant *parameters, + GDBusMethodInvocation *invocation) +{ + GDBusConnection *connection = + g_dbus_method_invocation_get_connection (invocation); + GError *error = NULL; + GVariant *variant = NULL; + + g_warning ("org.freedesktop.IBus.GetGlobalEngine() is deprecated!"); + + variant = _ibus_get_global_engine (ibus, connection, &error); + + if (variant == NULL) { + g_dbus_method_invocation_return_error ( + invocation, + G_DBUS_ERROR, G_DBUS_ERROR_FAILED, + "%s", error->message); + g_error_free (error); + } else { + GVariant *retval = g_variant_get_variant (variant); + g_dbus_method_invocation_return_value (invocation, + g_variant_new ("(v)", retval)); + g_variant_unref (variant); + } } struct _SetGlobalEngineData { @@ -1122,16 +1657,17 @@ _ibus_set_global_engine_ready_cb (BusInputContext *context, GError *error = NULL; if (!bus_input_context_set_engine_by_desc_finish (context, res, &error)) { - g_error_free (error); g_dbus_method_invocation_return_error (data->invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, - "Set global engine failed."); - + "Set global engine failed: %s", + error->message); + g_error_free (error); } else { g_dbus_method_invocation_return_value (data->invocation, NULL); + BusEngineProxy *engine = bus_input_context_get_engine (context); if (ibus->use_global_engine && (context != ibus->focused_context)) { /* context and ibus->focused_context don't match. This means that * the focus is moved before _ibus_set_global_engine() asynchronous @@ -1139,14 +1675,28 @@ _ibus_set_global_engine_ready_cb (BusInputContext *context, * being focused hasn't been updated. Update the engine here so that * subsequent _ibus_get_global_engine() call could return a * consistent engine name. */ - BusEngineProxy *engine = bus_input_context_get_engine (context); if (engine && ibus->focused_context != NULL) { g_object_ref (engine); bus_input_context_set_engine (context, NULL); + bus_input_context_set_emoji_extension (context, NULL); bus_input_context_set_engine (ibus->focused_context, engine); + if (ibus->enable_emoji_extension) { + bus_input_context_set_emoji_extension ( + ibus->focused_context, + ibus->emoji_extension); + } else { + bus_input_context_set_emoji_extension ( + ibus->focused_context, + NULL); + } g_object_unref (engine); } } + if (engine && ibus->extension_register_keys) { + bus_engine_proxy_panel_extension_register_keys ( + engine, + ibus->extension_register_keys); + } } g_object_unref (ibus); @@ -1156,7 +1706,8 @@ _ibus_set_global_engine_ready_cb (BusInputContext *context, /** * _ibus_set_global_engine: * - * Implement the "SetGlobalEngine" method call of the org.freedesktop.IBus interface. + * Implement the "SetGlobalEngine" method call of the + * org.freedesktop.IBus interface. */ static void _ibus_set_global_engine (BusIBusImpl *ibus, @@ -1182,7 +1733,7 @@ _ibus_set_global_engine (BusIBusImpl *ibus, g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, - "Can not find engine %s.", + "Cannot find engine %s.", engine_name); return; } @@ -1199,17 +1750,22 @@ _ibus_set_global_engine (BusIBusImpl *ibus, } /** - * _ibus_is_global_engine_enabled: + * _ibus_get_global_engine_enabled: * - * Implement the "IsGlobalEngineEnabled" method call of the org.freedesktop.IBus interface. + * Implement the "GlobalEngineEnabled" method call of the + * org.freedesktop.IBus interface. */ -static void -_ibus_is_global_engine_enabled (BusIBusImpl *ibus, - GVariant *parameters, - GDBusMethodInvocation *invocation) +static GVariant * +_ibus_get_global_engine_enabled (BusIBusImpl *ibus, + GDBusConnection *connection, + GError **error) { gboolean enabled = FALSE; + if (error) { + *error = NULL; + } + do { if (!ibus->use_global_engine) break; @@ -1223,14 +1779,148 @@ _ibus_is_global_engine_enabled (BusIBusImpl *ibus, enabled = TRUE; } while (0); + return g_variant_new_boolean (enabled); +} + +static void +_ibus_is_global_engine_enabled_depre (BusIBusImpl *ibus, + GVariant *parameters, + GDBusMethodInvocation *invocation) +{ + GDBusConnection *connection = + g_dbus_method_invocation_get_connection (invocation); + GError *error = NULL; + GVariant *variant = NULL; + + g_warning ("org.freedesktop.IBus.IsGlobalEngineEnabled() is deprecated!"); + + variant = _ibus_get_global_engine_enabled (ibus, connection, &error); + g_dbus_method_invocation_return_value (invocation, - g_variant_new ("(b)", enabled)); + g_variant_new ("(b)", g_variant_get_boolean (variant))); + + g_variant_unref (variant); +} + +/** + * _ibus_set_preload_engines: + * + * Implement the "PreloadEngines" method call of the + * org.freedesktop.IBus interface. + */ +static gboolean +_ibus_set_preload_engines (BusIBusImpl *ibus, + GDBusConnection *connection, + GVariant *value, + GError **error) +{ + int i, j; + const gchar **names = NULL; + IBusEngineDesc *desc = NULL; + BusComponent *component = NULL; + BusFactoryProxy *factory = NULL; + GPtrArray *array = g_ptr_array_new (); + + if (error) { + *error = NULL; + } + + g_variant_get (value, "^a&s", &names); + + for (i = 0; names[i] != NULL; i++) { + gboolean has_component = FALSE; + + desc = bus_ibus_impl_get_engine_desc(ibus, names[i]); + + if (desc == NULL) { + g_set_error (error, + G_DBUS_ERROR, + G_DBUS_ERROR_FAILED, + "Cannot find engine %s.", + names[i]); + g_ptr_array_free (array, FALSE); + return FALSE; + } + + component = bus_component_from_engine_desc (desc); + factory = bus_component_get_factory (component); + + if (factory != NULL) { + continue; + } + + for (j = 0; j < array->len; j++) { + if (component == (BusComponent *) g_ptr_array_index (array, j)) { + has_component = TRUE; + break; + } + } + + if (!has_component) { + g_ptr_array_add (array, component); + } + } + + for (j = 0; j < array->len; j++) { + bus_component_start ((BusComponent *) g_ptr_array_index (array, j), + g_verbose); + } + + g_ptr_array_free (array, FALSE); + + bus_ibus_impl_property_changed (ibus, "PreloadEngines", value); + + return TRUE; +} + +/** + * _ibus_get_embed_preedit_text: + * + * Implement the "EmbedPreeditText" method call of + * the org.freedesktop.IBus interface. + */ +static GVariant * +_ibus_get_embed_preedit_text (BusIBusImpl *ibus, + GDBusConnection *connection, + GError **error) +{ + if (error) { + *error = NULL; + } + + return g_variant_new_boolean (ibus->embed_preedit_text); +} + +/** + * _ibus_set_embed_preedit_text: + * + * Implement the "EmbedPreeditText" method call of + * the org.freedesktop.IBus interface. + */ +static gboolean +_ibus_set_embed_preedit_text (BusIBusImpl *ibus, + GDBusConnection *connection, + GVariant *value, + GError **error) +{ + if (error) { + *error = NULL; + } + + gboolean embed_preedit_text = g_variant_get_boolean (value); + if (embed_preedit_text != ibus->embed_preedit_text) { + ibus->embed_preedit_text = embed_preedit_text; + bus_ibus_impl_property_changed (ibus, "EmbedPreeditText", value); + } + + return TRUE; } /** * bus_ibus_impl_service_method_call: * - * Handle a D-Bus method call whose destination and interface name are both "org.freedesktop.IBus" + * Handle a D-Bus method call whose destination and interface name are + * both "org.freedesktop.IBus" */ static void bus_ibus_impl_service_method_call (IBusService *service, @@ -1242,9 +1932,10 @@ bus_ibus_impl_service_method_call (IBusService *service, GVariant *parameters, GDBusMethodInvocation *invocation) { - if (g_strcmp0 (interface_name, "org.freedesktop.IBus") != 0) { + if (g_strcmp0 (interface_name, IBUS_INTERFACE_IBUS) != 0) { IBUS_SERVICE_CLASS (bus_ibus_impl_parent_class)->service_method_call ( - service, connection, sender, object_path, interface_name, method_name, + service, connection, sender, object_path, + interface_name, method_name, parameters, invocation); return; } @@ -1252,35 +1943,142 @@ bus_ibus_impl_service_method_call (IBusService *service, /* all methods in the xml definition above should be listed here. */ static const struct { const gchar *method_name; - void (* method_callback) (BusIBusImpl *, GVariant *, GDBusMethodInvocation *); + void (* method_callback) (BusIBusImpl *, + GVariant *, + GDBusMethodInvocation *); } methods [] = { /* IBus interface */ - { "GetAddress", _ibus_get_address }, { "CreateInputContext", _ibus_create_input_context }, - { "CurrentInputContext", _ibus_current_input_context }, { "RegisterComponent", _ibus_register_component }, - { "ListEngines", _ibus_list_engines }, { "GetEnginesByNames", _ibus_get_engines_by_names }, - { "ListActiveEngines", _ibus_list_active_engines }, { "Exit", _ibus_exit }, { "Ping", _ibus_ping }, - { "GetUseSysLayout", _ibus_get_use_sys_layout }, - { "GetUseGlobalEngine", _ibus_get_use_global_engine }, - { "GetGlobalEngine", _ibus_get_global_engine }, { "SetGlobalEngine", _ibus_set_global_engine }, - { "IsGlobalEngineEnabled", _ibus_is_global_engine_enabled }, + /* Start of deprecated methods */ + { "GetAddress", _ibus_get_address_depre }, + { "CurrentInputContext", _ibus_current_input_context_depre }, + { "ListEngines", _ibus_list_engines_depre }, + { "ListActiveEngines", _ibus_list_active_engines_depre }, + { "GetUseSysLayout", _ibus_get_use_sys_layout_depre }, + { "GetUseGlobalEngine", _ibus_get_use_global_engine_depre }, + { "GetGlobalEngine", _ibus_get_global_engine_depre }, + { "IsGlobalEngineEnabled", _ibus_is_global_engine_enabled_depre }, + /* End of deprecated methods */ }; gint i; for (i = 0; i < G_N_ELEMENTS (methods); i++) { if (g_strcmp0 (methods[i].method_name, method_name) == 0) { - methods[i].method_callback ((BusIBusImpl *) service, parameters, invocation); + methods[i].method_callback ((BusIBusImpl *) service, + parameters, + invocation); return; } } - /* notreached - unknown method calls that are not in the introspection_xml should be handled by the GDBus library. */ - g_return_if_reached (); + g_warning ("service_method_call received an unknown method: %s", + method_name ? method_name : "(null)"); +} + +/** + * bus_ibus_impl_service_get_property: + * + * Handle org.freedesktop.DBus.Properties.Get + */ +static GVariant * +bus_ibus_impl_service_get_property (IBusService *service, + GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *property_name, + GError **error) +{ + gint i; + + static const struct { + const gchar *method_name; + GVariant * (* method_callback) (BusIBusImpl *, + GDBusConnection *, + GError **); + } methods [] = { + { "Address", _ibus_get_address }, + { "CurrentInputContext", _ibus_get_current_input_context }, + { "Engines", _ibus_get_engines }, + { "ActiveEngines", _ibus_get_active_engines }, + { "GlobalEngine", _ibus_get_global_engine }, + { "EmbedPreeditText", _ibus_get_embed_preedit_text }, + }; + + if (g_strcmp0 (interface_name, IBUS_INTERFACE_IBUS) != 0) { + return IBUS_SERVICE_CLASS ( + bus_ibus_impl_parent_class)->service_get_property ( + service, connection, sender, object_path, + interface_name, property_name, + error); + } + + for (i = 0; i < G_N_ELEMENTS (methods); i++) { + if (g_strcmp0 (methods[i].method_name, property_name) == 0) { + return methods[i].method_callback ((BusIBusImpl *) service, + connection, + error); + } + } + + g_warning ("service_get_property received an unknown property: %s", + property_name ? property_name : "(null)"); + return NULL; +} + +/** + * bus_ibus_impl_service_set_property: + * + * Handle org.freedesktop.DBus.Properties.Set + */ +static gboolean +bus_ibus_impl_service_set_property (IBusService *service, + GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *property_name, + GVariant *value, + GError **error) +{ + gint i; + + static const struct { + const gchar *method_name; + gboolean (* method_callback) (BusIBusImpl *, + GDBusConnection *, + GVariant *, + GError **); + } methods [] = { + { "PreloadEngines", _ibus_set_preload_engines }, + { "EmbedPreeditText", _ibus_set_embed_preedit_text }, + }; + + if (g_strcmp0 (interface_name, IBUS_INTERFACE_IBUS) != 0) { + return IBUS_SERVICE_CLASS ( + bus_ibus_impl_parent_class)->service_set_property ( + service, connection, sender, object_path, + interface_name, property_name, + value, error); + } + + for (i = 0; i < G_N_ELEMENTS (methods); i++) { + if (g_strcmp0 (methods[i].method_name, property_name) == 0) { + return methods[i].method_callback ((BusIBusImpl *) service, + connection, + value, + error); + } + } + + g_warning ("service_set_property received an unknown property: %s", + property_name ? property_name : "(null)"); + return FALSE; } BusIBusImpl * @@ -1318,13 +2116,213 @@ bus_ibus_impl_get_keymap (BusIBusImpl *ibus) return ibus->keymap; } -BusRegistry * -bus_ibus_impl_get_registry (BusIBusImpl *ibus) +/** + * bus_ibus_impl_registry_init: + * + * Initialize IBusRegistry. + */ +static void +bus_ibus_impl_registry_init (BusIBusImpl *ibus) { + GList *p; + GList *components; + IBusRegistry *registry = ibus_registry_new (); + + ibus->registry = NULL; + ibus->components = NULL; + ibus->engine_table = g_hash_table_new (g_str_hash, g_str_equal); + + if (g_strcmp0 (g_cache, "none") == 0) { + /* Only load registry, but not read and write cache. */ + ibus_registry_load (registry); + } + else if (g_strcmp0 (g_cache, "refresh") == 0) { + /* Load registry and overwrite the cache. */ + ibus_registry_load (registry); + ibus_registry_save_cache (registry, TRUE); + } + else if (g_strcmp0 (g_cache, "auto") == 0) { + /* Load registry from cache. If the cache does not exist or + * it is outdated, then generate it. + */ + if (ibus_registry_load_cache (registry, FALSE) == FALSE || + ibus_registry_check_modification (registry)) { + + ibus_object_destroy (IBUS_OBJECT (registry)); + registry = ibus_registry_new (); + + if (ibus_registry_load_cache (registry, TRUE) == FALSE || + ibus_registry_check_modification (registry)) { + + ibus_object_destroy (IBUS_OBJECT (registry)); + registry = ibus_registry_new (); + ibus_registry_load (registry); + ibus_registry_save_cache (registry, TRUE); + } + } + } + + ibus->registry = registry; + components = ibus_registry_get_components (registry); + + for (p = components; p != NULL; p = p->next) { + IBusComponent *component = (IBusComponent *) p->data; + BusComponent *buscomp = bus_component_new (component, + NULL /* factory */); + GList *engines = NULL; + GList *p1; + + g_object_ref_sink (buscomp); + ibus->components = g_list_append (ibus->components, buscomp); + + engines = bus_component_get_engines (buscomp); + for (p1 = engines; p1 != NULL; p1 = p1->next) { + IBusEngineDesc *desc = (IBusEngineDesc *) p1->data; + const gchar *name = ibus_engine_desc_get_name (desc); + if (g_hash_table_lookup (ibus->engine_table, name) == NULL) { + g_hash_table_insert (ibus->engine_table, + (gpointer) name, + desc); + } else { + g_message ("Engine %s is already registered by other component", + name); + } + } + g_list_free (engines); + } + + g_list_free (components); + + g_signal_connect (ibus->registry, + "changed", + G_CALLBACK (_registry_changed_cb), + ibus); + ibus_registry_start_monitor_changes (ibus->registry); +} + +static void +bus_ibus_impl_registry_destroy (BusIBusImpl *ibus) +{ + g_list_free_full (ibus->components, g_object_unref); + ibus->components = NULL; + + g_clear_pointer (&ibus->engine_table, g_hash_table_destroy); + + /* g_clear_pointer() does not set the cast. */ + ibus_object_destroy (IBUS_OBJECT (ibus->registry)); + ibus->registry = NULL; + + if (ibus->extension_register_keys) + g_clear_pointer (&ibus->extension_register_keys, g_variant_unref); +} + +static gint +_component_is_name_cb (BusComponent *component, + const gchar *name) +{ + g_assert (BUS_IS_COMPONENT (component)); + g_assert (name); + + return g_strcmp0 (bus_component_get_name (component), name); +} + +static void +bus_ibus_impl_component_name_owner_changed (BusIBusImpl *ibus, + const gchar *name, + const gchar *old_name, + const gchar *new_name) +{ + BusComponent *component; + BusFactoryProxy *factory; + + g_assert (BUS_IS_IBUS_IMPL (ibus)); + g_assert (name); + g_assert (old_name); + g_assert (new_name); + + component = bus_ibus_impl_lookup_component_by_name (ibus, name); + + if (component == NULL) { + /* name is a unique name, or a well-known name we don't know. */ + return; + } + + if (g_strcmp0 (old_name, "") != 0) { + /* the component is stopped. */ + factory = bus_component_get_factory (component); + + if (factory != NULL) { + ibus_proxy_destroy ((IBusProxy *) factory); + } + } + + if (g_strcmp0 (new_name, "") != 0) { + /* the component is started. */ + BusConnection *connection = + bus_dbus_impl_get_connection_by_name (BUS_DEFAULT_DBUS, + new_name); + if (connection == NULL) + return; + + factory = bus_factory_proxy_new (connection); + if (factory == NULL) + return; + bus_component_set_factory (component, factory); + g_object_unref (factory); + } +} + +BusComponent * +bus_ibus_impl_lookup_component_by_name (BusIBusImpl *ibus, + const gchar *name) +{ + GList *p; g_assert (BUS_IS_IBUS_IMPL (ibus)); + g_assert (name); + + p = g_list_find_custom (ibus->components, + name, + (GCompareFunc) _component_is_name_cb); + if (p) { + return (BusComponent *) p->data; + } + else { + return NULL; + } +} + +/** + * bus_ibus_impl_property_changed + * + * Send a "PropertiesChanged" D-Bus signal for a property to buses + * (connections) that are listening to the signal. + */ +static void +bus_ibus_impl_property_changed (BusIBusImpl *service, + const gchar *property_name, + GVariant *value) +{ + GDBusMessage *message = + g_dbus_message_new_signal ("/org/freedesktop/IBus", + "org.freedesktop.DBus.Properties", + "PropertiesChanged"); - return ibus->registry; + /* set a non-zero serial to make libdbus happy */ + g_dbus_message_set_serial (message, 1); + g_dbus_message_set_sender (message, "org.freedesktop.IBus"); + + GVariantBuilder *builder = g_variant_builder_new (G_VARIANT_TYPE_ARRAY); + g_variant_builder_add (builder, "{sv}", property_name, value); + g_dbus_message_set_body (message, + g_variant_new ("(sa{sv}as)", + "org.freedesktop.IBus", + builder, + NULL)); + g_variant_builder_unref (builder); + + bus_dbus_impl_dispatch_message_by_rule (BUS_DEFAULT_DBUS, message, NULL); + g_object_unref (message); } /** diff --git a/bus/ibusimpl.h b/bus/ibusimpl.h index ade022bbd..0bb18daf0 100644 --- a/bus/ibusimpl.h +++ b/bus/ibusimpl.h @@ -1,31 +1,31 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* bus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2013 Peng Huang + * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #ifndef __BUS_IBUS_IMPL_H_ #define __BUS_IBUS_IMPL_H_ #include #include "connection.h" +#include "component.h" #include "inputcontext.h" -#include "registry.h" #include "factoryproxy.h" #include "panelproxy.h" #include "engineproxy.h" @@ -52,8 +52,6 @@ (bus_ibus_impl_get_default ()) #define BUS_DEFAULT_KEYMAP \ (bus_ibus_impl_get_keymap (BUS_DEFAULT_IBUS)) -#define BUS_DEFAULT_REGISTRY \ - (bus_ibus_impl_get_registry (BUS_DEFAULT_IBUS)) G_BEGIN_DECLS @@ -75,7 +73,9 @@ BusIBusImpl *bus_ibus_impl_get_default (void); BusFactoryProxy *bus_ibus_impl_lookup_factory (BusIBusImpl *ibus, const gchar *path); IBusKeymap *bus_ibus_impl_get_keymap (BusIBusImpl *ibus); -BusRegistry *bus_ibus_impl_get_registry (BusIBusImpl *ibus); +BusComponent *bus_ibus_impl_lookup_component_by_name + (BusIBusImpl *ibus, + const gchar *name); gboolean bus_ibus_impl_is_use_sys_layout (BusIBusImpl *ibus); gboolean bus_ibus_impl_is_embed_preedit_text (BusIBusImpl *ibus); diff --git a/bus/inputcontext.c b/bus/inputcontext.c index 49c4a2694..8d84fd056 100644 --- a/bus/inputcontext.c +++ b/bus/inputcontext.c @@ -1,23 +1,24 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2014 Peng Huang + * Copyright (C) 2015-2018 Takao Fujiwara + * Copyright (C) 2008-2016 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include "inputcontext.h" @@ -34,7 +35,7 @@ struct _SetEngineByDescData { /* context related to the data */ BusInputContext *context; /* set engine by desc result, cancellable */ - GSimpleAsyncResult *simple; + GTask *task; /* a object to cancel bus_engine_proxy_new call */ GCancellable *cancellable; /* a object being passed to the bus_input_context_set_engine_by_desc function. if origin_cancellable is cancelled by someone, @@ -72,6 +73,7 @@ struct _BusInputContext { guint preedit_cursor_pos; gboolean preedit_visible; guint preedit_mode; + gboolean client_commit_preedit; /* auxiliary text */ IBusText *auxiliary_text; @@ -89,6 +91,13 @@ struct _BusInputContext { /* incompleted set engine by desc request */ SetEngineByDescData *data; + + /* content-type (primary purpose and hints) */ + guint purpose; + guint hints; + + BusPanelProxy *emoji_extension; + gboolean is_extension_lookup_table; }; struct _BusInputContextClass { @@ -101,6 +110,7 @@ struct _BusInputContextClass { enum { PROCESS_KEY_EVENT, SET_CURSOR_LOCATION, + SET_CURSOR_LOCATION_RELATIVE, FOCUS_IN, FOCUS_OUT, UPDATE_PREEDIT_TEXT, @@ -120,6 +130,8 @@ enum { UPDATE_PROPERTY, ENGINE_CHANGED, REQUEST_ENGINE, + SET_CONTENT_TYPE, + PANEL_EXTENSION, LAST_SIGNAL, }; @@ -132,72 +144,78 @@ typedef struct _BusInputContextPrivate BusInputContextPrivate; static guint context_signals[LAST_SIGNAL] = { 0 }; /* functions prototype */ -static void bus_input_context_destroy (BusInputContext *context); +static void bus_input_context_destroy + (BusInputContext *context); static void bus_input_context_service_method_call - (IBusService *service, - GDBusConnection *connection, - const gchar *sender, - const gchar *object_path, - const gchar *interface_name, - const gchar *method_name, - GVariant *parameters, - GDBusMethodInvocation *invocation); -static void bus_input_context_unset_engine (BusInputContext *context); -static void bus_input_context_commit_text (BusInputContext *context, - IBusText *text); -static void bus_input_context_update_preedit_text - (BusInputContext *context, - IBusText *text, - guint cursor_pos, - gboolean visible, - guint mode); + (IBusService *service, + GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *method_name, + GVariant *parameters, + GDBusMethodInvocation *invocation); +static gboolean bus_input_context_service_set_property + (IBusService *service, + GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *property_name, + GVariant *value, + GError **error); +static void bus_input_context_unset_engine + (BusInputContext *context); static void bus_input_context_show_preedit_text - (BusInputContext *context); + (BusInputContext *context, + gboolean is_extension); static void bus_input_context_hide_preedit_text - (BusInputContext *context); + (BusInputContext *context, + gboolean is_extension); static void bus_input_context_update_auxiliary_text - (BusInputContext *context, - IBusText *text, - gboolean visible); + (BusInputContext *context, + IBusText *text, + gboolean visible); static void bus_input_context_show_auxiliary_text - (BusInputContext *context); + (BusInputContext *context); static void bus_input_context_hide_auxiliary_text - (BusInputContext *context); -static void bus_input_context_update_lookup_table - (BusInputContext *context, - IBusLookupTable *table, - gboolean visible); + (BusInputContext *context); static void bus_input_context_show_lookup_table - (BusInputContext *context); + (BusInputContext *context); static void bus_input_context_hide_lookup_table - (BusInputContext *context); + (BusInputContext *context); static void bus_input_context_page_up_lookup_table - (BusInputContext *context); + (BusInputContext *context); static void bus_input_context_page_down_lookup_table - (BusInputContext *context); + (BusInputContext *context); static void bus_input_context_cursor_up_lookup_table - (BusInputContext *context); + (BusInputContext *context); static void bus_input_context_cursor_down_lookup_table - (BusInputContext *context); + (BusInputContext *context); static void bus_input_context_register_properties - (BusInputContext *context, - IBusPropList *props); + (BusInputContext *context, + IBusPropList *props); static void bus_input_context_update_property - (BusInputContext *context, - IBusProperty *prop); -static void _engine_destroy_cb (BusEngineProxy *factory, - BusInputContext *context); + (BusInputContext *context, + IBusProperty *prop); +static void _engine_destroy_cb (BusEngineProxy *factory, + BusInputContext *context); static IBusText *text_empty = NULL; static IBusLookupTable *lookup_table_empty = NULL; static IBusPropList *props_empty = NULL; -/* The interfaces available in this class, which consists of a list of methods this class implements and - * a list of signals this class may emit. Method calls to the interface that are not defined in this XML - * will be automatically rejected by the GDBus library (see src/ibusservice.c for details.) */ +/* The interfaces available in this class, which consists of a list of + * methods this class implements and a list of signals this class may + * emit. Method calls to the interface that are not defined in this + * XML will be automatically rejected by the GDBus library (see + * src/ibusservice.c for details.) */ static const gchar introspection_xml[] = "" " " + /* properties */ + " " + " \n" /* methods */ " " " " @@ -211,6 +229,12 @@ static const gchar introspection_xml[] = " " " " " " + " " + " " + " " + " " + " " + " " " " " " " " @@ -253,6 +277,12 @@ static const gchar introspection_xml[] = " " " " " " + " " + " " + " " + " " + " " + " " " " " " " " @@ -316,7 +346,10 @@ bus_input_context_class_init (BusInputContextClass *class) ibus_object_class->destroy = (IBusObjectDestroyFunc) bus_input_context_destroy; /* override the parent class's implementation. */ - IBUS_SERVICE_CLASS (class)->service_method_call = bus_input_context_service_method_call; + IBUS_SERVICE_CLASS (class)->service_method_call = + bus_input_context_service_method_call; + IBUS_SERVICE_CLASS (class)->service_set_property = + bus_input_context_service_set_property; /* register the xml so that bus_ibus_impl_service_method_call will be called on a method call defined in the xml (e.g. 'FocusIn'.) */ ibus_service_class_add_interfaces (IBUS_SERVICE_CLASS (class), introspection_xml); @@ -327,7 +360,7 @@ bus_input_context_class_init (BusInputContextClass *class) G_SIGNAL_RUN_LAST, 0, NULL, NULL, - bus_marshal_BOOL__UINT_UINT_UINT, + bus_marshal_BOOLEAN__UINT_UINT_UINT, G_TYPE_BOOLEAN, 3, G_TYPE_UINT, @@ -348,6 +381,20 @@ bus_input_context_class_init (BusInputContextClass *class) G_TYPE_INT, G_TYPE_INT); + context_signals[SET_CURSOR_LOCATION_RELATIVE] = + g_signal_new (I_("set-cursor-location-relative"), + G_TYPE_FROM_CLASS (class), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + bus_marshal_VOID__INT_INT_INT_INT, + G_TYPE_NONE, + 4, + G_TYPE_INT, + G_TYPE_INT, + G_TYPE_INT, + G_TYPE_INT); + context_signals[FOCUS_IN] = g_signal_new (I_("focus-in"), G_TYPE_FROM_CLASS (class), @@ -542,6 +589,29 @@ bus_input_context_class_init (BusInputContextClass *class) 1, G_TYPE_STRING); + context_signals[SET_CONTENT_TYPE] = + g_signal_new (I_("set-content-type"), + G_TYPE_FROM_CLASS (class), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + bus_marshal_VOID__UINT_UINT, + G_TYPE_NONE, + 2, + G_TYPE_UINT, + G_TYPE_UINT); + + context_signals[PANEL_EXTENSION] = + g_signal_new (I_("panel-extension"), + G_TYPE_FROM_CLASS (class), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + bus_marshal_VOID__OBJECT, + G_TYPE_NONE, + 1, + IBUS_TYPE_EXTENSION_EVENT); + text_empty = ibus_text_new_from_string (""); g_object_ref_sink (text_empty); lookup_table_empty = ibus_lookup_table_new (9 /* page size */, 0, FALSE, FALSE); @@ -607,23 +677,20 @@ bus_input_context_destroy (BusInputContext *context) IBUS_OBJECT_CLASS (bus_input_context_parent_class)->destroy (IBUS_OBJECT (context)); } -/** - * bus_input_context_emit_signal: - * @signal_name: The D-Bus signal name to emit which is in the introspection_xml. - * - * Emit the D-Bus signal. - */ static gboolean -bus_input_context_emit_signal (BusInputContext *context, +bus_input_context_send_signal (BusInputContext *context, + const gchar *interface_name, const gchar *signal_name, GVariant *parameters, GError **error) { - if (context->connection == NULL) + if (context->connection == NULL) { + g_variant_unref (parameters); return TRUE; + } GDBusMessage *message = g_dbus_message_new_signal (ibus_service_get_object_path ((IBusService *)context), - "org.freedesktop.IBus.InputContext", + interface_name, signal_name); g_dbus_message_set_sender (message, "org.freedesktop.IBus"); g_dbus_message_set_destination (message, bus_connection_get_unique_name (context->connection)); @@ -638,28 +705,142 @@ bus_input_context_emit_signal (BusInputContext *context, return retval; } +/** + * bus_input_context_emit_signal: + * @signal_name: The D-Bus signal name to emit which is in the introspection_xml. + * + * Emit the D-Bus signal. + */ +static gboolean +bus_input_context_emit_signal (BusInputContext *context, + const gchar *signal_name, + GVariant *parameters, + GError **error) +{ + if (context->connection == NULL) { + /* fake context has no connections. */ + if (parameters) + g_variant_unref (parameters); + return TRUE; + } + + return bus_input_context_send_signal (context, + "org.freedesktop.IBus.InputContext", + signal_name, + parameters, + error); +} + +/** + * bus_input_context_property_changed: + * @context: a #BusInputContext + * @property_name: The D-Bus property name which has changed + * @value: The new value of the property + * + * Emit the D-Bus "PropertiesChanged" signal for a property. + * Returns: %TRUE on success, %FALSE on failure + */ +static gboolean +bus_input_context_property_changed (BusInputContext *context, + const gchar *property_name, + GVariant *value, + GError **error) +{ + if (context->connection == NULL) + return TRUE; + + GVariantBuilder builder; + g_variant_builder_init (&builder, G_VARIANT_TYPE_ARRAY); + g_variant_builder_add (&builder, "{sv}", property_name, value); + return bus_input_context_send_signal (context, + "org.freedesktop.DBus.Properties", + "PropertiesChanged", + g_variant_new ("(sa{sv}as)", + "org.freedesktop.IBus", + &builder, + NULL), + error); +} + + +/** + * _panel_process_key_event_cb: + * + * A GAsyncReadyCallback function to be called when + * bus_panel_proxy_process_key_event() is finished. + */ +static void +_panel_process_key_event_cb (GObject *source, + GAsyncResult *res, + GDBusMethodInvocation *invocation) +{ + GError *error = NULL; + GVariant *value = g_dbus_proxy_call_finish ((GDBusProxy *)source, + res, + &error); + if (value != NULL) { + g_dbus_method_invocation_return_value (invocation, value); + g_variant_unref (value); + } + else { + g_dbus_method_invocation_return_gerror (invocation, error); + g_error_free (error); + } +} + +typedef struct _ProcessKeyEventData ProcessKeyEventData; +struct _ProcessKeyEventData { + GDBusMethodInvocation *invocation; + BusInputContext *context; + guint keyval; + guint keycode; + guint modifiers; +}; + /** * _ic_process_key_event_reply_cb: * - * A GAsyncReadyCallback function to be called when bus_engine_proxy_process_key_event() is finished. + * A GAsyncReadyCallback function to be called when + * bus_engine_proxy_process_key_event() is finished. */ static void _ic_process_key_event_reply_cb (GObject *source, GAsyncResult *res, - GDBusMethodInvocation *invocation) + ProcessKeyEventData *data) { + GDBusMethodInvocation *invocation = data->invocation; + BusInputContext *context = data->context; + guint keyval = data->keyval; + guint keycode = data->keycode; + guint modifiers = data->modifiers; GError *error = NULL; GVariant *value = g_dbus_proxy_call_finish ((GDBusProxy *)source, res, &error); + if (value != NULL) { - g_dbus_method_invocation_return_value (invocation, value); + gboolean retval = FALSE; + g_variant_get (value, "(b)", &retval); + if (context->emoji_extension && !retval) { + bus_panel_proxy_process_key_event (context->emoji_extension, + keyval, + keycode, + modifiers, + (GAsyncReadyCallback) + _panel_process_key_event_cb, + invocation); + } else { + g_dbus_method_invocation_return_value (invocation, value); + } g_variant_unref (value); } else { g_dbus_method_invocation_return_gerror (invocation, error); g_error_free (error); } + + g_object_unref (context); + g_slice_free (ProcessKeyEventData, data); } /** @@ -688,14 +869,49 @@ _ic_process_key_event (BusInputContext *context, } } + /* If I move the focus from the URL entry box of google-chrome + * to the text buffer of gnome-terminal, + * focus-in/focus-out of google-chrome is caused after + * focus-in of gonme-terminal and gnome-terminal loses the focus. + * The following focus events are received in ibusimcontext: + * 1) (gnome-terminal:445): IBUS-WARNING **: 15:32:36:717 focus_in + * 2) (google-chrome:495): IBUS-WARNING **: 15:32:36:866 focus_out + * 3) (google-chrome:495): IBUS-WARNING **: 15:32:36:875 focus_in + * 4) (google-chrome:495): IBUS-WARNING **: 15:32:36:890 focus_out + * In 2), Just return because focused_context is not google-chrome. + * In 3), focused_context is changed from gnome-terminal to google-chrome + * In 4), focused_context is changed from google-chrome to faked_context. + * + * It seems google-chrome has a popup window of the prediction of URL + * and async focus-in/focus-out. + */ + if (context->has_focus && context->engine == NULL && + context->fake == FALSE) { + BusInputContext *focused_context = + bus_ibus_impl_get_focused_input_context (BUS_DEFAULT_IBUS); + + if (focused_context != NULL && context != focused_context && + (context->capabilities & IBUS_CAP_FOCUS) != 0) { + context->has_focus = FALSE; + bus_input_context_focus_in (context); + } + } + /* ignore key events, if it is a fake input context */ if (context->has_focus && context->engine && context->fake == FALSE) { + ProcessKeyEventData *data = g_slice_new0 (ProcessKeyEventData); + data->invocation = invocation; + data->context = g_object_ref (context); + data->keyval = keyval; + data->keycode = keycode; + data->modifiers = modifiers; bus_engine_proxy_process_key_event (context->engine, keyval, keycode, modifiers, - (GAsyncReadyCallback) _ic_process_key_event_reply_cb, - invocation); + (GAsyncReadyCallback) + _ic_process_key_event_reply_cb, + data); } else { g_dbus_method_invocation_return_value (invocation, g_variant_new ("(b)", FALSE)); @@ -730,6 +946,53 @@ _ic_set_cursor_location (BusInputContext *context, context->y, context->w, context->h); + if (context->emoji_extension) { + bus_panel_proxy_set_cursor_location (context->emoji_extension, + context->x, + context->y, + context->w, + context->h); + } + } +} + +/** + * _ic_set_cursor_location_relative: + * + * Implement the "SetCursorLocationRelative" method call of the + * org.freedesktop.IBus.InputContext interface. + * + * Unlike _ic_set_cursor_location, this doesn't deliver the location + * to the engine proxy, since the relative coordinates are not very + * useful for engines. + */ +static void +_ic_set_cursor_location_relative (BusInputContext *context, + GVariant *parameters, + GDBusMethodInvocation *invocation) +{ + gint x, y, w, h; + + g_dbus_method_invocation_return_value (invocation, NULL); + + g_variant_get (parameters, "(iiii)", &x, &y, &w, &h); + + if (context->capabilities & IBUS_CAP_FOCUS) { + g_signal_emit (context, + context_signals[SET_CURSOR_LOCATION_RELATIVE], + 0, + x, + y, + w, + h); + if (context->emoji_extension) { + bus_panel_proxy_set_cursor_location_relative ( + context->emoji_extension, + x, + y, + w, + h); + } } } @@ -813,6 +1076,12 @@ _ic_reset (BusInputContext *context, GDBusMethodInvocation *invocation) { if (context->engine) { + if (context->preedit_mode == IBUS_ENGINE_PREEDIT_COMMIT) { + if (context->client_commit_preedit) + bus_input_context_clear_preedit_text (context, FALSE); + else + bus_input_context_clear_preedit_text (context, TRUE); + } bus_engine_proxy_reset (context->engine); } g_dbus_method_invocation_return_value (invocation, NULL); @@ -948,11 +1217,6 @@ _ic_get_engine (BusInputContext *context, g_variant_new ("(v)", ibus_serializable_serialize ((IBusSerializable *)desc))); } -/** - * bus_input_context_service_method_call: - * - * Handle a D-Bus method call whose destination and interface name are both "org.freedesktop.IBus.InputContext" - */ static void _ic_set_surrounding_text (BusInputContext *context, GVariant *parameters, @@ -985,6 +1249,25 @@ _ic_set_surrounding_text (BusInputContext *context, g_dbus_method_invocation_return_value (invocation, NULL); } +/* + * Since IBusService is inherited by IBusImpl, this method cannot be + * applied to IBusServiceClass.method_call() directly but can be in + * each child class.method_call(). + */ +static gboolean +bus_input_context_service_authorized_method (IBusService *service, + GDBusConnection *connection) +{ + if (ibus_service_get_connection (service) == connection) + return TRUE; + return FALSE; +} + +/** + * bus_input_context_service_method_call: + * + * Handle a D-Bus method call whose destination and interface name are both "org.freedesktop.IBus.InputContext" + */ static void bus_input_context_service_method_call (IBusService *service, GDBusConnection *connection, @@ -1014,6 +1297,7 @@ bus_input_context_service_method_call (IBusService *service, } methods [] = { { "ProcessKeyEvent", _ic_process_key_event }, { "SetCursorLocation", _ic_set_cursor_location }, + { "SetCursorLocationRelative", _ic_set_cursor_location_relative }, { "ProcessHandWritingEvent", _ic_process_hand_writing_event }, { "CancelHandWriting", _ic_cancel_hand_writing }, @@ -1024,10 +1308,14 @@ bus_input_context_service_method_call (IBusService *service, { "PropertyActivate", _ic_property_activate }, { "SetEngine", _ic_set_engine }, { "GetEngine", _ic_get_engine }, - { "SetSurroundingText", _ic_set_surrounding_text}, + { "SetSurroundingText", _ic_set_surrounding_text } }; gint i; + + if (!bus_input_context_service_authorized_method (service, connection)) + return; + for (i = 0; i < G_N_ELEMENTS (methods); i++) { if (g_strcmp0 (method_name, methods[i].method_name) == 0) { methods[i].method_callback ((BusInputContext *)service, parameters, invocation); @@ -1038,6 +1326,94 @@ bus_input_context_service_method_call (IBusService *service, g_return_if_reached (); } +static void +_ic_set_content_type (BusInputContext *context, + GVariant *value) +{ + guint purpose = 0; + guint hints = 0; + + g_variant_get (value, "(uu)", &purpose, &hints); + if (purpose != context->purpose || hints != context->hints) { + GError *error; + gboolean retval; + + context->purpose = purpose; + context->hints = hints; + + if (context->has_focus && context->engine) + bus_engine_proxy_set_content_type (context->engine, + purpose, + hints); + + if (context->has_focus) { + g_signal_emit (context, + context_signals[SET_CONTENT_TYPE], + 0, + context->purpose, + context->hints); + } + + error = NULL; + retval = bus_input_context_property_changed (context, + "ContentType", + value, + &error); + if (!retval) { + g_warning ("Failed to emit PropertiesChanged signal: %s", + error->message); + g_error_free (error); + } + } +} + +static void +_ic_set_client_commit_preedit (BusInputContext *context, + GVariant *value) +{ + g_variant_get (value, "(b)", &context->client_commit_preedit); +} + +static gboolean +bus_input_context_service_set_property (IBusService *service, + GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *property_name, + GVariant *value, + GError **error) +{ + if (g_strcmp0 (interface_name, IBUS_INTERFACE_INPUT_CONTEXT) != 0) { + return IBUS_SERVICE_CLASS (bus_input_context_parent_class)-> + service_set_property (service, + connection, + sender, + object_path, + interface_name, + property_name, + value, + error); + } + + if (!bus_input_context_service_authorized_method (service, connection)) + return FALSE; + + g_return_val_if_fail (BUS_IS_INPUT_CONTEXT (service), FALSE); + + if (g_strcmp0 (property_name, "ContentType") == 0) { + _ic_set_content_type (BUS_INPUT_CONTEXT (service), value); + return TRUE; + } + if (g_strcmp0 (property_name, "ClientCommitPreedit") == 0) { + _ic_set_client_commit_preedit (BUS_INPUT_CONTEXT (service), value); + return TRUE; + } + + g_return_val_if_reached (FALSE); +} + + gboolean bus_input_context_has_focus (BusInputContext *context) { @@ -1066,6 +1442,7 @@ bus_input_context_focus_in (BusInputContext *context) bus_engine_proxy_enable (context->engine); bus_engine_proxy_set_capabilities (context->engine, context->capabilities); bus_engine_proxy_set_cursor_location (context->engine, context->x, context->y, context->w, context->h); + bus_engine_proxy_set_content_type (context->engine, context->purpose, context->hints); } if (context->capabilities & IBUS_CAP_FOCUS) { @@ -1101,22 +1478,44 @@ bus_input_context_focus_in (BusInputContext *context) /** * bus_input_context_clear_preedit_text: + * @context: A #BusInputContext + * @with_signal: %FALSE if the preedit is already updated in ibus clients + * likes ibus-im.so. Otherwise %TRUE. * - * Clear context->preedit_text. If the preedit mode is IBUS_ENGINE_PREEDIT_COMMIT, commit it before clearing. + * Clear context->preedit_text. If the preedit mode is + * IBUS_ENGINE_PREEDIT_COMMIT, commit it before clearing. */ -static void -bus_input_context_clear_preedit_text (BusInputContext *context) +void +bus_input_context_clear_preedit_text (BusInputContext *context, + gboolean with_signal) { + IBusText *preedit_text; + guint preedit_mode; + gboolean preedit_visible; + g_assert (BUS_IS_INPUT_CONTEXT (context)); - if (context->preedit_visible && - context->preedit_mode == IBUS_ENGINE_PREEDIT_COMMIT) { - bus_input_context_commit_text (context, context->preedit_text); + if (!with_signal) { + g_object_unref (context->preedit_text); + context->preedit_mode = IBUS_ENGINE_PREEDIT_CLEAR; + context->preedit_text = (IBusText *) g_object_ref_sink (text_empty); + context->preedit_cursor_pos = 0; + context->preedit_visible = FALSE; + return; } - /* always clear preedit text */ + /* always clear preedit text to reset the cursor position in the + * client application before commit the preeit text. */ + preedit_text = g_object_ref (context->preedit_text); + preedit_mode = context->preedit_mode; + preedit_visible = context->preedit_visible; bus_input_context_update_preedit_text (context, - text_empty, 0, FALSE, IBUS_ENGINE_PREEDIT_CLEAR); + text_empty, 0, FALSE, IBUS_ENGINE_PREEDIT_CLEAR, TRUE); + + if (preedit_visible && preedit_mode == IBUS_ENGINE_PREEDIT_COMMIT) { + bus_input_context_commit_text (context, preedit_text); + } + g_object_unref (preedit_text); } void @@ -1127,9 +1526,15 @@ bus_input_context_focus_out (BusInputContext *context) if (!context->has_focus) return; - bus_input_context_clear_preedit_text (context); + if (context->client_commit_preedit) + bus_input_context_clear_preedit_text (context, FALSE); + else + bus_input_context_clear_preedit_text (context, TRUE); bus_input_context_update_auxiliary_text (context, text_empty, FALSE); - bus_input_context_update_lookup_table (context, lookup_table_empty, FALSE); + bus_input_context_update_lookup_table (context, + lookup_table_empty, + FALSE, + FALSE); bus_input_context_register_properties (context, props_empty); if (context->engine) { @@ -1149,7 +1554,12 @@ bus_input_context_focus_out (BusInputContext *context) { \ g_assert (BUS_IS_INPUT_CONTEXT (context)); \ \ - if (context->has_focus && context->engine) { \ + if (context->is_extension_lookup_table && \ + context->emoji_extension) { \ + bus_panel_proxy_##name##_lookup_table (context->emoji_extension); \ + return; \ + } \ + if (context->has_focus && context->engine) { \ bus_engine_proxy_##name (context->engine); \ } \ } @@ -1169,6 +1579,14 @@ bus_input_context_candidate_clicked (BusInputContext *context, { g_assert (BUS_IS_INPUT_CONTEXT (context)); + if (context->is_extension_lookup_table && context->emoji_extension) { + bus_panel_proxy_candidate_clicked_lookup_table ( + context->emoji_extension, + index, + button, + state); + return; + } if (context->engine) { bus_engine_proxy_candidate_clicked (context->engine, index, @@ -1189,77 +1607,33 @@ bus_input_context_property_activate (BusInputContext *context, } } -static void -bus_input_context_commit_text (BusInputContext *context, - IBusText *text) -{ - g_assert (BUS_IS_INPUT_CONTEXT (context)); - - if (text == text_empty || text == NULL) - return; - - GVariant *variant = ibus_serializable_serialize ((IBusSerializable *)text); - bus_input_context_emit_signal (context, - "CommitText", - g_variant_new ("(v)", variant), - NULL); -} - -/** - * bus_input_context_update_preedit_text: - * - * Update a preedit text. Send D-Bus signal to update status of client or send glib signal to the panel, depending on capabilities of the client. - */ -static void -bus_input_context_update_preedit_text (BusInputContext *context, - IBusText *text, - guint cursor_pos, - gboolean visible, - guint mode) -{ - g_assert (BUS_IS_INPUT_CONTEXT (context)); - - if (context->preedit_text) { - g_object_unref (context->preedit_text); - } - - context->preedit_text = (IBusText *) g_object_ref_sink (text ? text : text_empty); - context->preedit_cursor_pos = cursor_pos; - context->preedit_visible = visible; - context->preedit_mode = mode; - - if (PREEDIT_CONDITION) { - GVariant *variant = ibus_serializable_serialize ((IBusSerializable *)context->preedit_text); - bus_input_context_emit_signal (context, - "UpdatePreeditText", - g_variant_new ("(vub)", variant, context->preedit_cursor_pos, context->preedit_visible), - NULL); - } - else { - g_signal_emit (context, - context_signals[UPDATE_PREEDIT_TEXT], - 0, - context->preedit_text, - context->preedit_cursor_pos, - context->preedit_visible); - } -} - /** * bus_input_context_show_preedit_text: * * Show a preedit text. Send D-Bus signal to update status of client or send glib signal to the panel, depending on capabilities of the client. */ static void -bus_input_context_show_preedit_text (BusInputContext *context) +bus_input_context_show_preedit_text (BusInputContext *context, + gboolean is_extension) { g_assert (BUS_IS_INPUT_CONTEXT (context)); - if (context->preedit_visible) { + if (context->preedit_visible) + return; + if (!is_extension && context->emoji_extension) return; - } - context->preedit_visible = TRUE; + if (!is_extension) + context->preedit_visible = TRUE; + + if (context->emoji_extension && !is_extension) { + /* Do not use HIDE_PREEDIT_TEXT signal below but call + * bus_panel_proxy_hide_preedit_text() directly for the extension only + * but not for the normal panel. + */ + bus_panel_proxy_show_preedit_text (context->emoji_extension); + return; + } if (PREEDIT_CONDITION) { bus_input_context_emit_signal (context, @@ -1280,15 +1654,25 @@ bus_input_context_show_preedit_text (BusInputContext *context) * Hide a preedit text. Send D-Bus signal to update status of client or send glib signal to the panel, depending on capabilities of the client. */ static void -bus_input_context_hide_preedit_text (BusInputContext *context) +bus_input_context_hide_preedit_text (BusInputContext *context, + gboolean is_extension) { g_assert (BUS_IS_INPUT_CONTEXT (context)); - if (!context->preedit_visible) { + if (!is_extension && !context->preedit_visible) return; - } - context->preedit_visible = FALSE; + if (!is_extension) + context->preedit_visible = FALSE; + + if (context->emoji_extension && !is_extension) { + /* Do not use HIDE_PREEDIT_TEXT signal below but call + * bus_panel_proxy_hide_preedit_text() directly for the extension only + * but not for the normal panel. + */ + bus_panel_proxy_hide_preedit_text (context->emoji_extension); + return; + } if (PREEDIT_CONDITION) { bus_input_context_emit_signal (context, @@ -1398,17 +1782,22 @@ bus_input_context_hide_auxiliary_text (BusInputContext *context) /** * bus_input_context_update_lookup_table: - * - * Update contents in the lookup table. - * Send D-Bus signal to update status of client or send glib signal to the panel, depending on capabilities of the client. + * @context: #BusInputContext + * @table: #IBusLookupTable + * @visible: %TRUE if the lookup table is visible, otherwise %FALSE. + * @is_extension: %TRUE if the lookup table is called by a panel extension. + * %FALSE if it's called by an engine. + * I.e. is_extension_lookup_table means the owner of the lookup table. */ -static void +void bus_input_context_update_lookup_table (BusInputContext *context, IBusLookupTable *table, - gboolean visible) + gboolean visible, + gboolean is_extension) { g_assert (BUS_IS_INPUT_CONTEXT (context)); + context->is_extension_lookup_table = is_extension; if (context->lookup_table) { g_object_unref (context->lookup_table); } @@ -1773,7 +2162,9 @@ _engine_update_preedit_text_cb (BusEngineProxy *engine, g_assert (context->engine == engine); - bus_input_context_update_preedit_text (context, text, cursor_pos, visible, mode); + bus_input_context_update_preedit_text (context, text, + cursor_pos, visible, mode, + TRUE); } /** @@ -1813,7 +2204,7 @@ _engine_update_lookup_table_cb (BusEngineProxy *engine, g_assert (context->engine == engine); - bus_input_context_update_lookup_table (context, table, visible); + bus_input_context_update_lookup_table (context, table, visible, FALSE); } /** @@ -1854,6 +2245,44 @@ _engine_update_property_cb (BusEngineProxy *engine, bus_input_context_update_property (context, prop); } +/** + * _engine_panel_extension_cb: + * + * A function to be called when "panel-extension" glib signal is sent + * from the engine object. + */ +static void +_engine_panel_extension_cb (BusEngineProxy *engine, + IBusExtensionEvent *event, + BusInputContext *context) +{ + g_signal_emit (context, context_signals[PANEL_EXTENSION], 0, event); +} + +static void +_engine_show_preedit_text_cb (BusEngineProxy *engine, + BusInputContext *context) +{ + g_assert (BUS_IS_ENGINE_PROXY (engine)); + g_assert (BUS_IS_INPUT_CONTEXT (context)); + + g_assert (context->engine == engine); + + bus_input_context_show_preedit_text (context, FALSE); +} + +static void +_engine_hide_preedit_text_cb (BusEngineProxy *engine, + BusInputContext *context) +{ + g_assert (BUS_IS_ENGINE_PROXY (engine)); + g_assert (BUS_IS_INPUT_CONTEXT (context)); + + g_assert (context->engine == engine); + + bus_input_context_hide_preedit_text (context, FALSE); +} + #define DEFINE_FUNCTION(name) \ static void \ _engine_##name##_cb (BusEngineProxy *engine, \ @@ -1867,8 +2296,6 @@ _engine_update_property_cb (BusEngineProxy *engine, bus_input_context_##name (context); \ } -DEFINE_FUNCTION (show_preedit_text) -DEFINE_FUNCTION (hide_preedit_text) DEFINE_FUNCTION (show_auxiliary_text) DEFINE_FUNCTION (hide_auxiliary_text) DEFINE_FUNCTION (show_lookup_table) @@ -1953,6 +2380,7 @@ bus_input_context_enable (BusInputContext *context) bus_engine_proxy_enable (context->engine); bus_engine_proxy_set_capabilities (context->engine, context->capabilities); bus_engine_proxy_set_cursor_location (context->engine, context->x, context->y, context->w, context->h); + bus_engine_proxy_set_content_type (context->engine, context->purpose, context->hints); } void @@ -1960,9 +2388,12 @@ bus_input_context_disable (BusInputContext *context) { g_assert (BUS_IS_INPUT_CONTEXT (context)); - bus_input_context_clear_preedit_text (context); + bus_input_context_clear_preedit_text (context, TRUE); bus_input_context_update_auxiliary_text (context, text_empty, FALSE); - bus_input_context_update_lookup_table (context, lookup_table_empty, FALSE); + bus_input_context_update_lookup_table (context, + lookup_table_empty, + FALSE, + FALSE); bus_input_context_register_properties (context, props_empty); if (context->engine) { @@ -1995,7 +2426,8 @@ const static struct { { "cursor-down-lookup-table", G_CALLBACK (_engine_cursor_down_lookup_table_cb) }, { "register-properties", G_CALLBACK (_engine_register_properties_cb) }, { "update-property", G_CALLBACK (_engine_update_property_cb) }, - { "destroy", G_CALLBACK (_engine_destroy_cb) }, + { "panel-extension", G_CALLBACK (_engine_panel_extension_cb) }, + { "destroy", G_CALLBACK (_engine_destroy_cb) } }; static void @@ -2003,9 +2435,12 @@ bus_input_context_unset_engine (BusInputContext *context) { g_assert (BUS_IS_INPUT_CONTEXT (context)); - bus_input_context_clear_preedit_text (context); + bus_input_context_clear_preedit_text (context, TRUE); bus_input_context_update_auxiliary_text (context, text_empty, FALSE); - bus_input_context_update_lookup_table (context, lookup_table_empty, FALSE); + bus_input_context_update_lookup_table (context, + lookup_table_empty, + FALSE, + FALSE); bus_input_context_register_properties (context, props_empty); if (context->engine) { @@ -2015,6 +2450,10 @@ bus_input_context_unset_engine (BusInputContext *context) g_signal_handlers_disconnect_by_func (context->engine, engine_signals[i].callback, context); } + /* focus out engine so that the next call of + bus_engine_proxy_focus_in() will take effect and trigger + RegisterProperties. */ + bus_engine_proxy_focus_out (context->engine); g_object_unref (context->engine); context->engine = NULL; } @@ -2053,6 +2492,7 @@ bus_input_context_set_engine (BusInputContext *context, bus_engine_proxy_enable (context->engine); bus_engine_proxy_set_capabilities (context->engine, context->capabilities); bus_engine_proxy_set_cursor_location (context->engine, context->x, context->y, context->w, context->h); + bus_engine_proxy_set_content_type (context->engine, context->purpose, context->hints); } } g_signal_emit (context, @@ -2068,8 +2508,8 @@ static void set_engine_by_desc_data_free (SetEngineByDescData *data) g_object_unref (data->context); } - if (data->simple != NULL) { - g_object_unref (data->simple); + if (data->task != NULL) { + g_object_unref (data->task); } if (data->cancellable != NULL) @@ -2099,17 +2539,16 @@ new_engine_cb (GObject *obj, BusEngineProxy *engine = bus_engine_proxy_new_finish (res, &error); if (engine == NULL) { - g_simple_async_result_set_from_error (data->simple, error); - g_error_free (error); + g_task_return_error (data->task, error); } else { if (data->context->data != data) { - /* Request has been overriden or cancelled */ + /* Request has been overridden or cancelled */ g_object_unref (engine); - g_simple_async_result_set_error (data->simple, - G_IO_ERROR, - G_IO_ERROR_CANCELLED, - "Opertation was cancelled"); + g_task_return_new_error (data->task, + G_IO_ERROR, + G_IO_ERROR_CANCELLED, + "Opertation was cancelled"); } else { /* Let BusEngineProxy call a Disable signal. */ @@ -2117,13 +2556,10 @@ new_engine_cb (GObject *obj, bus_input_context_set_engine (data->context, engine); g_object_unref (engine); bus_input_context_enable (data->context); - g_simple_async_result_set_op_res_gboolean (data->simple, TRUE); + g_task_return_boolean (data->task, TRUE); } } - /* Call the callback function for bus_input_context_set_engine_by_desc(). */ - g_simple_async_result_complete_in_idle (data->simple); - set_engine_by_desc_data_free (data); } @@ -2191,6 +2627,9 @@ bus_input_context_set_engine_by_desc (BusInputContext *context, GAsyncReadyCallback callback, gpointer user_data) { + GTask *task; + SetEngineByDescData *data; + g_assert (BUS_IS_INPUT_CONTEXT (context)); g_assert (IBUS_IS_ENGINE_DESC (desc)); g_assert (cancellable == NULL || G_IS_CANCELLABLE (cancellable)); @@ -2206,27 +2645,23 @@ bus_input_context_set_engine_by_desc (BusInputContext *context, if (callback == NULL) callback = (GAsyncReadyCallback) set_engine_by_desc_ready_cb; - GSimpleAsyncResult *simple = - g_simple_async_result_new ((GObject *) context, - callback, - user_data, - bus_input_context_set_engine_by_desc); + task = g_task_new (context, cancellable, callback, user_data); + g_task_set_source_tag (task, bus_input_context_set_engine_by_desc); if (g_cancellable_is_cancelled (cancellable)) { - g_simple_async_result_set_error (simple, - G_IO_ERROR, - G_IO_ERROR_CANCELLED, - "Operation was cancelled"); - g_simple_async_result_complete_in_idle (simple); - g_object_unref (simple); + g_task_return_new_error (task, + G_IO_ERROR, + G_IO_ERROR_CANCELLED, + "Operation was cancelled"); + g_object_unref (task); return; } - SetEngineByDescData *data = g_slice_new0 (SetEngineByDescData); + data = g_slice_new0 (SetEngineByDescData); context->data = data; data->context = context; g_object_ref (context); - data->simple = simple; + data->task = task; if (cancellable != NULL) { data->origin_cancellable = cancellable; @@ -2253,13 +2688,22 @@ bus_input_context_set_engine_by_desc_finish (BusInputContext *context, GAsyncResult *res, GError **error) { - GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (res); + GTask *task; + gboolean had_error; g_assert (BUS_IS_INPUT_CONTEXT (context)); - g_assert (g_simple_async_result_get_source_tag (simple) == + g_assert (g_task_is_valid (res, context)); + task = G_TASK (res); + g_assert (g_task_get_source_tag (task) == bus_input_context_set_engine_by_desc); - if (g_simple_async_result_propagate_error (simple, error)) + /* g_task_propagate_error() is not a public API and + * g_task_had_error() needs to be called before + * g_task_propagate_pointer() clears task->error. + */ + had_error = g_task_had_error (task); + g_task_propagate_pointer (task, error); + if (had_error) return FALSE; return TRUE; } @@ -2324,3 +2768,168 @@ bus_input_context_get_client (BusInputContext *context) g_assert (BUS_IS_INPUT_CONTEXT (context)); return context->client; } + +void +bus_input_context_get_content_type (BusInputContext *context, + guint *purpose, + guint *hints) +{ + g_assert (BUS_IS_INPUT_CONTEXT (context)); + g_return_if_fail (purpose != NULL && hints != NULL); + + *purpose = context->purpose; + *hints = context->hints; +} + +void +bus_input_context_set_content_type (BusInputContext *context, + guint purpose, + guint hints) +{ + GVariant *value; + + g_assert (BUS_IS_INPUT_CONTEXT (context)); + + value = g_variant_ref_sink (g_variant_new ("(uu)", purpose, hints)); + _ic_set_content_type (context, value); + g_variant_unref (value); +} + +void +bus_input_context_commit_text_use_extension (BusInputContext *context, + IBusText *text, + gboolean use_extension) +{ + g_assert (BUS_IS_INPUT_CONTEXT (context)); + + if (text == text_empty || text == NULL) + return; + + if (use_extension && context->emoji_extension) { + bus_panel_proxy_commit_text_received (context->emoji_extension, text); + } else { + GVariant *variant = ibus_serializable_serialize ( + (IBusSerializable *)text); + bus_input_context_emit_signal (context, + "CommitText", + g_variant_new ("(v)", variant), + NULL); + } +} + +void +bus_input_context_commit_text (BusInputContext *context, + IBusText *text) +{ + bus_input_context_commit_text_use_extension (context, text, TRUE); +} + +void +bus_input_context_update_preedit_text (BusInputContext *context, + IBusText *text, + guint cursor_pos, + gboolean visible, + guint mode, + gboolean use_extension) +{ + gboolean extension_visible = FALSE; + g_assert (BUS_IS_INPUT_CONTEXT (context)); + + if (context->preedit_text) { + g_object_unref (context->preedit_text); + } + + context->preedit_text = (IBusText *) g_object_ref_sink (text ? text : + text_empty); + context->preedit_cursor_pos = cursor_pos; + if (use_extension) { + context->preedit_visible = visible; + context->preedit_mode = mode; + } + extension_visible = context->preedit_visible || + (context->emoji_extension != NULL); + + if (use_extension && context->emoji_extension) { + bus_panel_proxy_update_preedit_text (context->emoji_extension, + context->preedit_text, + context->preedit_cursor_pos, + context->preedit_visible); + } else if (PREEDIT_CONDITION) { + GVariant *variant = ibus_serializable_serialize ( + (IBusSerializable *)context->preedit_text); + if (context->client_commit_preedit) { + bus_input_context_emit_signal ( + context, + "UpdatePreeditTextWithMode", + g_variant_new ("(vubu)", + variant, + context->preedit_cursor_pos, + extension_visible, + context->preedit_mode), + NULL); + } else { + bus_input_context_emit_signal ( + context, + "UpdatePreeditText", + g_variant_new ("(vub)", + variant, + context->preedit_cursor_pos, + extension_visible), + NULL); + } + } else { + g_signal_emit (context, + context_signals[UPDATE_PREEDIT_TEXT], + 0, + context->preedit_text, + context->preedit_cursor_pos, + extension_visible); + } +} + +void +bus_input_context_set_emoji_extension (BusInputContext *context, + BusPanelProxy *emoji_extension) +{ + g_assert (BUS_IS_INPUT_CONTEXT (context)); + + if (context->emoji_extension) + g_object_unref (context->emoji_extension); + context->emoji_extension = emoji_extension; + if (emoji_extension) { + g_object_ref (context->emoji_extension); + if (!context->connection) + return; + bus_input_context_show_preedit_text (context, TRUE); + bus_panel_proxy_set_cursor_location (context->emoji_extension, + context->x, + context->y, + context->w, + context->h); + } else { + if (!context->connection) + return; + /* https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/113 + * Cannot use bus_input_context_hide_preedit_text () yet. + */ + if (!context->preedit_visible) { + bus_input_context_update_preedit_text (context, + text_empty, + 0, + FALSE, + IBUS_ENGINE_PREEDIT_CLEAR, + FALSE); + } + } +} + +void +bus_input_context_panel_extension_received (BusInputContext *context, + IBusExtensionEvent *event) +{ + g_assert (BUS_IS_INPUT_CONTEXT (context)); + + if (!context->engine) + return; + bus_engine_proxy_panel_extension_received (context->engine, event); +} diff --git a/bus/inputcontext.h b/bus/inputcontext.h index 43e04cd85..7105fff87 100644 --- a/bus/inputcontext.h +++ b/bus/inputcontext.h @@ -1,23 +1,24 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ -/* bus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. +/* ibus - The Input Bus + * Copyright (C) 2008-2014 Peng Huang + * Copyright (C) 2017-2018 Takao Fujiwara + * Copyright (C) 2008-2018 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #ifndef __BUS_INPUT_CONTEXT_H_ #define __BUS_INPUT_CONTEXT_H_ @@ -27,186 +28,369 @@ #include "connection.h" #include "factoryproxy.h" +#ifndef __BUS_PANEL_PROXY_DEFINED +#define __BUS_PANEL_PROXY_DEFINED +typedef struct _BusPanelProxy BusPanelProxy; +#endif + /* * Type macros. */ /* define GOBJECT macros */ -#define BUS_TYPE_INPUT_CONTEXT \ +#define BUS_TYPE_INPUT_CONTEXT \ (bus_input_context_get_type ()) -#define BUS_INPUT_CONTEXT(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), BUS_TYPE_INPUT_CONTEXT, BusInputContext)) -#define BUS_INPUT_CONTEXT_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST ((klass), BUS_TYPE_INPUT_CONTEXT, BusInputContextClass)) -#define BUS_IS_INPUT_CONTEXT(obj) \ +#define BUS_INPUT_CONTEXT(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + BUS_TYPE_INPUT_CONTEXT, \ + BusInputContext)) +#define BUS_INPUT_CONTEXT_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), \ + BUS_TYPE_INPUT_CONTEXT, \ + BusInputContextClass)) +#define BUS_IS_INPUT_CONTEXT(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BUS_TYPE_INPUT_CONTEXT)) -#define BUS_IS_INPUT_CONTEXT_CLASS(klass) \ +#define BUS_IS_INPUT_CONTEXT_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), BUS_TYPE_INPUT_CONTEXT)) -#define BUS_INPUT_CONTEXT_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), BUS_TYPE_INPUT_CONTEXT, BusInputContextClass)) +#define BUS_INPUT_CONTEXT_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + BUS_TYPE_INPUT_CONTEXT, \ + BusInputContextClass)) G_BEGIN_DECLS typedef struct _BusInputContext BusInputContext; typedef struct _BusInputContextClass BusInputContextClass; -GType bus_input_context_get_type (void); -BusInputContext *bus_input_context_new (BusConnection *connection, - const gchar *client); +GType bus_input_context_get_type (void); +BusInputContext *bus_input_context_new (BusConnection *connection, + const gchar *client); /** * bus_input_context_focus_in: + * @context: A #BusInputContext. * - * Give a focus to the context. Call FocusIn, Enable, SetCapabilities, and SetCursorLocation methods of the engine for the context, - * and then emit glib signals to the context object. This function does nothing if the context already has a focus. + * Give a focus to the context. Call FocusIn, Enable, SetCapabilities, + * and SetCursorLocation methods of the engine for the context, + * and then emit glib signals to the context object. This function does + * nothing if the context already has a focus. */ -void bus_input_context_focus_in (BusInputContext *context); +void bus_input_context_focus_in (BusInputContext *context); /** * bus_input_context_focus_out: + * @context: A #BusInputContext. * - * Remove a focus from the context. Call FocusOut method of the engine for the context. + * Remove a focus from the context. Call FocusOut method of the engine for + * the context. * This function does nothing if the context does not have a focus. */ -void bus_input_context_focus_out (BusInputContext *context); +void bus_input_context_focus_out + (BusInputContext *context); /** * bus_input_context_has_focus: + * @context: A #BusInputContext. * @returns: context->has_focus. */ -gboolean bus_input_context_has_focus (BusInputContext *context); +gboolean bus_input_context_has_focus + (BusInputContext *context); /** * bus_input_context_enable: + * @context: A #BusInputContext. * - * Enable the current engine for the context. Request an engine (if needed), call FocusIn, Enable, SetCapabilities, and SetCursorLocation methods - * of the engine for the context, and then emit glib and D-Bus "enabled" signals. + * Enable the current engine for the context. Request an engine (if needed), + * call FocusIn, Enable, SetCapabilities, and SetCursorLocation methods + * of the engine for the context, and then emit glib and D-Bus "enabled" + * signals. */ -void bus_input_context_enable (BusInputContext *context); +void bus_input_context_enable (BusInputContext *context); /** * bus_input_context_disable: + * @context: A #BusInputContext. * - * Disable the current engine for the context. Request an engine (if needed), call FocusIn, Enable, SetCapabilities, and SetCursorLocation methods - * of the engine for the context, and then emit glib and D-Bus "enabled" signals. + * Disable the current engine for the context. Request an engine (if needed), + * call FocusIn, Enable, SetCapabilities, and SetCursorLocation methods + * of the engine for the context, and then emit glib and D-Bus "enabled" + * signals. */ -void bus_input_context_disable (BusInputContext *context); +void bus_input_context_disable (BusInputContext *context); /** * bus_input_context_page_up: + * @context: A #BusInputContext. * * Call page_up method of the current engine proxy. */ -void bus_input_context_page_up (BusInputContext *context); +void bus_input_context_page_up (BusInputContext *context); /** * bus_input_context_page_down: + * @context: A #BusInputContext. * * Call page_down method of the current engine proxy. */ -void bus_input_context_page_down (BusInputContext *context); +void bus_input_context_page_down + (BusInputContext *context); /** * bus_input_context_cursor_up: + * @context: A #BusInputContext. * * Call cursor_up method of the current engine proxy. */ -void bus_input_context_cursor_up (BusInputContext *context); +void bus_input_context_cursor_up + (BusInputContext *context); /** * bus_input_context_cursor_down: + * @context: A #BusInputContext. * * Call cursor_down method of the current engine proxy. */ -void bus_input_context_cursor_down (BusInputContext *context); +void bus_input_context_cursor_down + (BusInputContext *context); /** * bus_input_context_candidate_clicked: + * @context: A #BusInputContext. + * @index: An index. + * @button: A button number. + * @state: A button state. * * Call candidate_clicked method of the current engine proxy. */ -void bus_input_context_candidate_clicked(BusInputContext *context, - guint index, - guint button, - guint state); +void bus_input_context_candidate_clicked + (BusInputContext *context, + guint index, + guint button, + guint state); /** * bus_input_context_set_engine: + * @context: A #BusInputContext. + * @engine: A #BusEngineProxy. * * Use the engine on the context. */ -void bus_input_context_set_engine (BusInputContext *context, - BusEngineProxy *engine); +void bus_input_context_set_engine + (BusInputContext *context, + BusEngineProxy *engine); /** * bus_input_context_set_engine_by_desc: + * @context: A #BusInputContext. * @desc: the engine to use on the context. * @timeout: timeout (in ms) for D-Bus calls. - * @callback: a function to be called when bus_input_context_set_engine_by_desc is finished. if NULL, the default callback - * function, which just calls bus_input_context_set_engine_by_desc_finish, is used. + * @callback: a function to be called when bus_input_context_set_engine_by_desc + * is finished. if NULL, the default callback + * function, which just calls + * bus_input_context_set_engine_by_desc_finish, is used. + * @user_data: an argument of @callback. * * Create a new BusEngineProxy object and use it on the context. */ void bus_input_context_set_engine_by_desc - (BusInputContext *context, - IBusEngineDesc *desc, - gint timeout, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data); + (BusInputContext *context, + IBusEngineDesc *desc, + gint timeout, + GCancellable + *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); /** * bus_input_context_set_engine_by_desc_finish: + * @context: A #BusInputContext. + * @res: A #GAsyncResult. + * @error: A #GError. * - * A function to be called by the GAsyncReadyCallback function for bus_input_context_set_engine_by_desc. + * A function to be called by the GAsyncReadyCallback function for + * bus_input_context_set_engine_by_desc. */ gboolean bus_input_context_set_engine_by_desc_finish - (BusInputContext *context, - GAsyncResult *res, - GError **error); + (BusInputContext *context, + GAsyncResult *res, + GError **error); /** * bus_input_context_get_engine: + * @context: A #BusInputContext. * * Get a BusEngineProxy object of the current engine. */ -BusEngineProxy *bus_input_context_get_engine (BusInputContext *context); +BusEngineProxy *bus_input_context_get_engine + (BusInputContext *context); /** * bus_input_context_get_engine_desc: + * @context: A #BusInputContext. * * Get an IBusEngineDesc object of the current engine. */ -IBusEngineDesc *bus_input_context_get_engine_desc (BusInputContext *context); +IBusEngineDesc *bus_input_context_get_engine_desc + (BusInputContext *context); /** * bus_input_context_property_activate: + * @context: A #BusInputContext. + * @prop_name: A property name. + * @prop_state: A property state. * * Call property_activate method of the current engine proxy. */ -void bus_input_context_property_activate(BusInputContext *context, - const gchar *prop_name, - gint prop_state); +void bus_input_context_property_activate + (BusInputContext *context, + const gchar *prop_name, + gint + prop_state); /** * bus_input_context_get_capabilities: + * @context: A #BusInputContext. * @returns: context->capabilities. */ -guint bus_input_context_get_capabilities (BusInputContext *context); +guint bus_input_context_get_capabilities + (BusInputContext *context); /** * bus_input_context_set_capabilities: + * @context: A #BusInputContext. + * @capabilities: capabilities. * * Call set_capabilities method of the current engine proxy. */ -void bus_input_context_set_capabilities (BusInputContext *context, - guint capabilities); +void bus_input_context_set_capabilities + (BusInputContext *context, + guint + capabilities); /** * bus_input_context_get_client: + * @context: A #BusInputContext. * @returns: context->client. */ -const gchar *bus_input_context_get_client (BusInputContext *context); +const gchar *bus_input_context_get_client + (BusInputContext *context); + +/** + * bus_input_context_get_content_type: + * @context: A #BusInputContext. + * @purpose: Input purpose. + * @hints: Input hints. + */ +void bus_input_context_get_content_type + (BusInputContext *context, + guint *purpose, + guint *hints); + +/** + * bus_input_context_set_content_type: + * @context: A #BusInputContext. + * @purpose: Input purpose. + * @hints: Input hints. + */ +void bus_input_context_set_content_type + (BusInputContext *context, + guint purpose, + guint hints); + +/** + * bus_input_context_commit_text: + * @context: A #BusInputContext. + * @text: A committed text. + */ +void bus_input_context_commit_text + (BusInputContext *context, + IBusText *text); + +/** + * bus_input_context_commit_text: + * @context: A #BusInputContext. + * @text: A committed text. + * @use_extension: Use an extension if it's %TRUE and the extension is + * available. + */ +void bus_input_context_commit_text_use_extension + (BusInputContext *context, + IBusText *text, + gboolean use_extension); + +/** + * bus_input_context_set_emoji_extension: + * @context: A #BusInputContext. + * @extension: A #BusPanelProxy. + */ +void bus_input_context_set_emoji_extension + (BusInputContext *context, + BusPanelProxy *extension); + +/** + * bus_input_context_update_preedit_text: + * @context: A #BusInputContext. + * @text: An #IBusText. + * @cursor_pos: The cursor position. + * @visible: %TRUE if the preedit is visible. Otherwise %FALSE. + * @mode: The preedit commit mode. + * @use_extension: %TRUE if preedit text is sent to the extesion at first. + * + * Update a preedit text. Send D-Bus signal to update status of client or + * send glib signal to the panel, depending on capabilities of the client. + */ +void bus_input_context_update_preedit_text + (BusInputContext *context, + IBusText *text, + guint cursor_pos, + gboolean visible, + guint mode, + gboolean + use_extension); + +/** + * bus_input_context_update_lookup_table: + * @context: A #BusInputContext. + * @table: An #IBusTable. + * @visible: %TRUE if the lookup table is visible. Otherwise %FALSE. + * @is_extension: %TRUE if the lookup table is created by panel extensions. + * + * Update contents in the lookup table. + * Send D-Bus signal to update status of client or send glib signal to the + * panel, depending on capabilities of the client. + */ +void bus_input_context_update_lookup_table + (BusInputContext *context, + IBusLookupTable *table, + gboolean visible, + gboolean + is_extension); + + +/** + * bus_input_context_panel_extension_received: + * @context: A #BusInputContext. + * @event: An #IBusExtensionEvent. + * + * Send An #IBusExtensionEvent callback from an extension. + */ +void bus_input_context_panel_extension_received + (BusInputContext *context, + IBusExtensionEvent *event); + +/** + * bus_input_context_clear_preedit_text: + * + * Clear context->preedit_text. If the preedit mode is + * IBUS_ENGINE_PREEDIT_COMMIT and with_signal is %TRUE, commit it before + * clearing. + * If with_signal is %FALSE, this just clears the preedit coditions + * and the actual preedit is handled in ibus clients. + */ +void bus_input_context_clear_preedit_text + (BusInputContext *context, + gboolean + with_signal); G_END_DECLS #endif diff --git a/bus/main.c b/bus/main.c index d59b5b74c..e80185b12 100644 --- a/bus/main.c +++ b/bus/main.c @@ -1,23 +1,24 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2013 Peng Huang + * Copyright (C) 2013-2018 Takao Fujiwara + * Copyright (C) 2008-2018 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include #include @@ -32,6 +33,10 @@ #include #include +#ifdef HAVE_SYS_PRCTL_H +#include +#endif + #include "global.h" #include "ibusimpl.h" #include "server.h" @@ -42,9 +47,16 @@ static gboolean xim = FALSE; static gboolean replace = FALSE; static gboolean restart = FALSE; static gchar *panel = "default"; +static gchar *emoji_extension = "default"; static gchar *config = "default"; static gchar *desktop = "gnome"; +static gchar *panel_extension_disable_users[] = { + "gdm", + "gnome-initial-setup", + "liveuser" +}; + static void show_version_and_quit (void) { @@ -60,14 +72,12 @@ static const GOptionEntry entries[] = { "xim", 'x', 0, G_OPTION_ARG_NONE, &xim, "execute ibus XIM server.", NULL }, { "desktop", 'n', 0, G_OPTION_ARG_STRING, &desktop, "specify the name of desktop session. [default=gnome]", "name" }, { "panel", 'p', 0, G_OPTION_ARG_STRING, &panel, "specify the cmdline of panel program. pass 'disable' not to start a panel program.", "cmdline" }, + { "emoji-extension", 'E', 0, G_OPTION_ARG_STRING, &emoji_extension, "specify the cmdline of emoji extension program. pass 'disable' not to start an extension program.", "cmdline" }, { "config", 'c', 0, G_OPTION_ARG_STRING, &config, "specify the cmdline of config program. pass 'disable' not to start a config program.", "cmdline" }, { "address", 'a', 0, G_OPTION_ARG_STRING, &g_address, "specify the address of ibus daemon.", "address" }, { "replace", 'r', 0, G_OPTION_ARG_NONE, &replace, "if there is an old ibus-daemon is running, it will be replaced.", NULL }, { "cache", 't', 0, G_OPTION_ARG_STRING, &g_cache, "specify the cache mode. [auto/refresh/none]", NULL }, - { "timeout", 'o', 0, G_OPTION_ARG_INT, &g_gdbus_timeout, "gdbus reply timeout in milliseconds. pass -1 to use the default timeout of gdbus.", "timeout [default is 5000]" }, -#ifdef G_THREADS_ENABLED - { "monitor-timeout", 'j', 0, G_OPTION_ARG_INT, &g_monitor_timeout, "timeout of poll changes of engines in seconds. 0 to disable it. ", "timeout [default is 0]" }, -#endif + { "timeout", 'o', 0, G_OPTION_ARG_INT, &g_gdbus_timeout, "gdbus reply timeout in milliseconds. pass -1 to use the default timeout of gdbus.", "timeout [default is 15000]" }, { "mem-profile", 'm', 0, G_OPTION_ARG_NONE, &g_mempro, "enable memory profile, send SIGUSR2 to print out the memory profile.", NULL }, { "restart", 'R', 0, G_OPTION_ARG_NONE, &restart, "restart panel and config processes when they die.", NULL }, { "verbose", 'v', 0, G_OPTION_ARG_NONE, &g_verbose, "verbose.", NULL }, @@ -155,21 +165,21 @@ daemon (gint nochdir, gint noclose) } #endif -/* - * _sig_usr2_handler: - * @sig: the signal number, which is usually SIGUSR2. - * - * A signal handler for SIGUSR2 signal. Dump a summary of memory usage to stderr. - */ +#ifdef HAVE_SYS_PRCTL_H static void -_sig_usr2_handler (int sig) +_sig_usr1_handler (int sig) { - g_mem_profile (); + g_warning ("The parent process died."); + bus_server_quit (FALSE); } +#endif gint main (gint argc, gchar **argv) { + int i; + const gchar *username = ibus_get_user_name (); + setlocale (LC_ALL, ""); GOptionContext *context = g_option_context_new ("- ibus daemon"); @@ -188,15 +198,12 @@ main (gint argc, gchar **argv) } if (g_mempro) { - g_mem_set_vtable (glib_mem_profiler_table); - signal (SIGUSR2, _sig_usr2_handler); + g_warning ("--mem-profile no longer works with the GLib 2.46 or later"); } /* check uid */ { - const gchar *username = ibus_get_user_name (); - uid_t uid = getuid (); - struct passwd *pwd = getpwuid (uid); + struct passwd *pwd = getpwuid (getuid ()); if (pwd == NULL || g_strcmp0 (pwd->pw_name, username) != 0) { g_printerr ("Please run ibus-daemon with login user! Do not run ibus-daemon with sudo or su.\n"); @@ -207,7 +214,7 @@ main (gint argc, gchar **argv) /* daemonize process */ if (daemonize) { if (daemon (1, 0) != 0) { - g_printerr ("Can not daemonize ibus.\n"); + g_printerr ("Cannot daemonize ibus.\n"); exit (-1); } } @@ -217,9 +224,6 @@ main (gint argc, gchar **argv) ibus_init (); -#ifdef G_THREADS_ENABLED - g_thread_init (NULL); -#endif ibus_set_log_handler (g_verbose); /* check if ibus-daemon is running in this session */ @@ -240,11 +244,18 @@ main (gint argc, gchar **argv) } bus_server_init (); + for (i = 0; i < G_N_ELEMENTS(panel_extension_disable_users); i++) { + if (!g_strcmp0 (username, panel_extension_disable_users[i]) != 0) { + emoji_extension = "disable"; + break; + } + } if (!single) { /* execute config component */ if (g_strcmp0 (config, "default") == 0) { BusComponent *component; - component = bus_registry_lookup_component_by_name (BUS_DEFAULT_REGISTRY, IBUS_SERVICE_CONFIG); + component = bus_ibus_impl_lookup_component_by_name ( + BUS_DEFAULT_IBUS, IBUS_SERVICE_CONFIG); if (component) { bus_component_set_restart (component, restart); } @@ -260,7 +271,8 @@ main (gint argc, gchar **argv) /* execute panel component */ if (g_strcmp0 (panel, "default") == 0) { BusComponent *component; - component = bus_registry_lookup_component_by_name (BUS_DEFAULT_REGISTRY, IBUS_SERVICE_PANEL); + component = bus_ibus_impl_lookup_component_by_name ( + BUS_DEFAULT_IBUS, IBUS_SERVICE_PANEL); if (component) { bus_component_set_restart (component, restart); } @@ -274,12 +286,73 @@ main (gint argc, gchar **argv) } } +#ifdef EMOJI_DICT + if (g_strcmp0 (emoji_extension, "default") == 0) { + BusComponent *component; + component = bus_ibus_impl_lookup_component_by_name ( + BUS_DEFAULT_IBUS, IBUS_SERVICE_PANEL_EXTENSION); + if (component) { + bus_component_set_restart (component, restart); + } + if (component != NULL && + !bus_component_start (component, g_verbose)) { + g_printerr ("Can not execute default panel program\n"); + exit (-1); + } + } else if (g_strcmp0 (emoji_extension, "disable") != 0 && + g_strcmp0 (emoji_extension, "") != 0) { + if (!execute_cmdline (emoji_extension)) + exit (-1); + } +#endif + /* execute ibus xim server */ if (xim) { if (!execute_cmdline (LIBEXECDIR "/ibus-x11 --kill-daemon")) exit (-1); } + if (!daemonize) { + if (getppid () == 1) { + g_warning ("The parent process died."); + exit (0); + } +#ifdef HAVE_SYS_PRCTL_H + /* Currently ibus-x11 detects XIOError and assume the error as the + * desktop session is closed and ibus-x11 calls Exit D-Bus method to + * exit ibus-daemon. But a few desktop sessions cause XError before + * XIOError and GTK does not allow to bind XError by applications and + * GTK calls gdk_x_error() with XError. + * + * E.g. GdkX11Screen calls XGetSelectionOwner() for "_XSETTINGS_S?" + * atoms during the logout but the selection owner already becomes + * NULL and the NULL window causes XError with + * gdk_x11_window_foreign_new_for_display(). + * + * Since ibus-x11 exits with XError before XIOError, gnome-shell + * can detects the exit of ibus-daemon a little earlier and + * gnome-shell restarts ibus-daemon but gnome-shell dies soon. + * Then gnome-shell dies but ibus-daemon is alive, it's a problem. + * Because it causes double ibus-x11 of GDM and a login user + * and double XSetSelectionOwner() is not allowed for the unique + * "ibus" atom and the user cannot use XIM but not GtkIMModule. + * + * Probably we could fix the ibus process problem if we would fix + * XError about the X selection owner or stop to restart ibus-daemon + * in gonme-shell when the session is logging out. + * Maybe using SessionManager.LogoutRemote() or + * global.screen.get_display().get_xdisplay() + * But I assume there are other scenarios to cause the problem. + * + * And I decided ibus-daemon always exits with the parent's death here + * to avoid unexpected ibus restarts during the logout. + */ + if (prctl (PR_SET_PDEATHSIG, SIGUSR1)) + g_printerr ("Cannot bind SIGUSR1 for parent death\n"); + else + signal (SIGUSR1, _sig_usr1_handler); +#endif + } bus_server_run (); return 0; } diff --git a/bus/marshalers.list b/bus/marshalers.list index 7bc5dc3a9..31e6c433f 100644 --- a/bus/marshalers.list +++ b/bus/marshalers.list @@ -1,4 +1,4 @@ -BOOL:UINT,UINT,UINT +BOOLEAN:UINT,UINT,UINT OBJECT:STRING VOID:INT,UINT VOID:INT,INT,INT,INT @@ -10,5 +10,7 @@ VOID:OBJECT,UINT,BOOLEAN,UINT VOID:OBJECT,STRING,STRING,STRING VOID:STRING VOID:STRING,INT +VOID:UINT,UINT VOID:UINT,UINT,UINT +VOID:VARIANT VOID:VOID diff --git a/bus/matchrule.c b/bus/matchrule.c index 836e71eff..4fb1d902e 100644 --- a/bus/matchrule.c +++ b/bus/matchrule.c @@ -7,17 +7,17 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include "matchrule.h" @@ -198,30 +198,31 @@ find_key (const gchar **p) static gchar * find_value (const gchar **p) { - GString *text; - - text = g_string_new (""); - SKIP_WHITE (*p); - if (**p != '\'') - goto failed; - (*p) ++; - - while (**p != '\'') { - if (**p == '\0') - goto failed; - if (**p == '\\') + if (**p == '\'') { + GString *text = g_string_new (""); + (*p) ++; + while (**p != '\'') { + if (**p == '\0') { + g_string_free (text, TRUE); + return NULL; + } + if (**p == '\\') + (*p) ++; + g_string_append_c (text, **p); (*p) ++; - g_string_append_c (text, **p); + } (*p) ++; + return g_string_free (text, FALSE); + } else if (strncmp (*p, "true", 4) == 0) { + *p += 4; + return g_strdup ("true"); + } else if (strncmp (*p, "false", 5) == 0) { + *p += 5; + return g_strdup ("false"); } - (*p) ++; - - return g_string_free (text, FALSE); -failed: - g_string_free (text, TRUE); return NULL; } @@ -372,6 +373,11 @@ bus_match_rule_new (const gchar *text) goto failed; bus_match_rule_set_arg (rule, i, p->value); } + else if (g_strcmp0 (p->key, "eavesdrop") == 0) { + if (g_strcmp0 (p->value, "true") != 0 && + g_strcmp0 (p->value, "false") != 0) + goto failed; + } else goto failed; } diff --git a/bus/matchrule.h b/bus/matchrule.h index 3ecc18855..1dd304cd6 100644 --- a/bus/matchrule.h +++ b/bus/matchrule.h @@ -7,17 +7,17 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #ifndef __BUS_MATCH_RULE_H_ #define __BUS_MATCH_RULE_H_ diff --git a/bus/panelproxy.c b/bus/panelproxy.c index abca0741e..e6001ebfc 100644 --- a/bus/panelproxy.c +++ b/bus/panelproxy.c @@ -1,23 +1,24 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2014 Peng Huang + * Copyright (C) 2017-2018 Takao Fujiwara + * Copyright (C) 2008-2018 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include "panelproxy.h" @@ -49,6 +50,12 @@ enum { PROPERTY_ACTIVATE, PROPERTY_SHOW, PROPERTY_HIDE, + COMMIT_TEXT, + PANEL_EXTENSION, + PANEL_EXTENSION_REGISTER_KEYS, + UPDATE_PREEDIT_TEXT_RECEIVED, + UPDATE_LOOKUP_TABLE_RECEIVED, + UPDATE_AUXILIARY_TEXT_RECEIVED, LAST_SIGNAL, }; @@ -57,6 +64,7 @@ struct _BusPanelProxy { /* instance members */ BusInputContext *focused_context; + PanelType panel_type; }; struct _BusPanelProxyClass { @@ -75,6 +83,8 @@ struct _BusPanelProxyClass { void (* property_activate) (BusPanelProxy *panel, const gchar *prop_name, gint prop_state); + void (* commit_text) (BusPanelProxy *panel, + IBusText *text); }; static guint panel_signals[LAST_SIGNAL] = { 0 }; @@ -99,26 +109,46 @@ static void bus_panel_proxy_property_activate (BusPanelProxy *panel, const gchar *prop_name, gint prop_state); +static void bus_panel_proxy_commit_text + (BusPanelProxy *panel, + IBusText *text); G_DEFINE_TYPE(BusPanelProxy, bus_panel_proxy, IBUS_TYPE_PROXY) BusPanelProxy * -bus_panel_proxy_new (BusConnection *connection) +bus_panel_proxy_new (BusConnection *connection, + PanelType panel_type) { + const gchar *path = NULL; + GObject *obj; + BusPanelProxy *panel; + g_assert (BUS_IS_CONNECTION (connection)); - GObject *obj; + switch (panel_type) { + case PANEL_TYPE_PANEL: + path = IBUS_PATH_PANEL; + break; + case PANEL_TYPE_EXTENSION_EMOJI: + path = IBUS_PATH_PANEL_EXTENSION_EMOJI; + break; + default: + g_return_val_if_reached (NULL); + } + obj = g_initable_new (BUS_TYPE_PANEL_PROXY, NULL, NULL, - "g-object-path", IBUS_PATH_PANEL, + "g-object-path", path, "g-interface-name", IBUS_INTERFACE_PANEL, "g-connection", bus_connection_get_dbus_connection (connection), "g-default-timeout", g_gdbus_timeout, "g-flags", G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START | G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES, NULL); - return BUS_PANEL_PROXY (obj); + panel = BUS_PANEL_PROXY (obj); + panel->panel_type = panel_type; + return panel; } static void @@ -133,6 +163,7 @@ bus_panel_proxy_class_init (BusPanelProxyClass *class) class->cursor_down = bus_panel_proxy_cursor_down; class->candidate_clicked = bus_panel_proxy_candidate_clicked; class->property_activate = bus_panel_proxy_property_activate; + class->commit_text = bus_panel_proxy_commit_text; /* install signals */ panel_signals[PAGE_UP] = @@ -214,6 +245,76 @@ bus_panel_proxy_class_init (BusPanelProxyClass *class) G_TYPE_NONE, 1, G_TYPE_STRING); + panel_signals[COMMIT_TEXT] = + g_signal_new (I_("commit-text"), + G_TYPE_FROM_CLASS (class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET(BusPanelProxyClass, commit_text), + NULL, NULL, + bus_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, + IBUS_TYPE_TEXT); + + panel_signals[PANEL_EXTENSION] = + g_signal_new (I_("panel-extension"), + G_TYPE_FROM_CLASS (class), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + bus_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, + IBUS_TYPE_EXTENSION_EVENT); + + panel_signals[PANEL_EXTENSION_REGISTER_KEYS] = + g_signal_new (I_("panel-extension-register-keys"), + G_TYPE_FROM_CLASS (class), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + bus_marshal_VOID__VARIANT, + G_TYPE_NONE, 1, + G_TYPE_VARIANT); + + panel_signals[UPDATE_PREEDIT_TEXT_RECEIVED] = + g_signal_new (I_("update-preedit-text-received"), + G_TYPE_FROM_CLASS (class), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + bus_marshal_VOID__OBJECT_UINT_BOOLEAN, + G_TYPE_NONE, 3, + IBUS_TYPE_TEXT, + G_TYPE_UINT, + G_TYPE_BOOLEAN); + + panel_signals[UPDATE_LOOKUP_TABLE_RECEIVED] = + g_signal_new (I_("update-lookup-table-received"), + G_TYPE_FROM_CLASS (class), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + bus_marshal_VOID__OBJECT_BOOLEAN, + G_TYPE_NONE, 2, + IBUS_TYPE_LOOKUP_TABLE, + G_TYPE_BOOLEAN); + + panel_signals[UPDATE_AUXILIARY_TEXT_RECEIVED] = + g_signal_new (I_("update-auxiliary-text-received"), + G_TYPE_FROM_CLASS (class), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + bus_marshal_VOID__OBJECT_BOOLEAN, + G_TYPE_NONE, 2, + IBUS_TYPE_TEXT, + G_TYPE_BOOLEAN); +} + +static void +_g_object_unref_if_floating (gpointer instance) +{ + if (g_object_is_floating (instance)) + g_object_unref (instance); } static void @@ -232,7 +333,8 @@ bus_panel_proxy_real_destroy (IBusProxy *proxy) panel->focused_context = NULL; } - IBUS_PROXY_CLASS(bus_panel_proxy_parent_class)->destroy ((IBusProxy *)panel); + IBUS_PROXY_CLASS(bus_panel_proxy_parent_class)-> + destroy ((IBusProxy *)panel); } /** @@ -299,6 +401,88 @@ bus_panel_proxy_g_signal (GDBusProxy *proxy, return; } + if (g_strcmp0 ("CommitText", signal_name) == 0) { + GVariant *arg0 = NULL; + + g_variant_get (parameters, "(v)", &arg0); + g_return_if_fail (arg0); + IBusText *text = IBUS_TEXT (ibus_serializable_deserialize (arg0)); + g_variant_unref (arg0); + g_return_if_fail (text); + g_signal_emit (panel, panel_signals[COMMIT_TEXT], 0, text); + _g_object_unref_if_floating (text); + return; + } + + if (g_strcmp0 ("PanelExtension", signal_name) == 0) { + GVariant *arg0 = NULL; + + g_variant_get (parameters, "(v)", &arg0); + g_return_if_fail (arg0); + IBusExtensionEvent *event = IBUS_EXTENSION_EVENT ( + ibus_serializable_deserialize (arg0)); + g_variant_unref (arg0); + g_return_if_fail (event); + g_signal_emit (panel, panel_signals[PANEL_EXTENSION], 0, event); + _g_object_unref_if_floating (event); + return; + } + + if (g_strcmp0 ("PanelExtensionRegisterKeys", signal_name) == 0) { + g_signal_emit (panel, panel_signals[PANEL_EXTENSION_REGISTER_KEYS], 0, + parameters); + return; + } + + if (g_strcmp0 ("UpdatePreeditTextReceived", signal_name) == 0) { + GVariant *variant = NULL; + guint cursor_pos = 0; + gboolean visible = FALSE; + IBusText *text = NULL; + + g_variant_get (parameters, "(vub)", &variant, &cursor_pos, &visible); + g_return_if_fail (variant); + text = (IBusText *) ibus_serializable_deserialize (variant); + g_variant_unref (variant); + g_return_if_fail (text); + g_signal_emit (panel, panel_signals[UPDATE_PREEDIT_TEXT_RECEIVED], 0, + text, cursor_pos, visible); + _g_object_unref_if_floating (text); + return; + } + + if (g_strcmp0 ("UpdateLookupTableReceived", signal_name) == 0) { + GVariant *variant = NULL; + gboolean visible = FALSE; + IBusLookupTable *table = NULL; + + g_variant_get (parameters, "(vb)", &variant, &visible); + g_return_if_fail (variant); + table = (IBusLookupTable *) ibus_serializable_deserialize (variant); + g_variant_unref (variant); + g_return_if_fail (table); + g_signal_emit (panel, panel_signals[UPDATE_LOOKUP_TABLE_RECEIVED], 0, + table, visible); + _g_object_unref_if_floating (table); + return; + } + + if (g_strcmp0 ("UpdateAuxiliaryTextReceived", signal_name) == 0) { + GVariant *variant = NULL; + gboolean visible = FALSE; + IBusText *text = NULL; + + g_variant_get (parameters, "(vb)", &variant, &visible); + g_return_if_fail (variant); + text = (IBusText *) ibus_serializable_deserialize (variant); + g_variant_unref (variant); + g_return_if_fail (text); + g_signal_emit (panel, panel_signals[UPDATE_AUXILIARY_TEXT_RECEIVED], 0, + text, visible); + _g_object_unref_if_floating (text); + return; + } + /* shound not be reached */ g_return_if_reached (); } @@ -319,6 +503,21 @@ bus_panel_proxy_set_cursor_location (BusPanelProxy *panel, -1, NULL, NULL, NULL); } +void +bus_panel_proxy_set_cursor_location_relative (BusPanelProxy *panel, + gint x, + gint y, + gint w, + gint h) +{ + g_assert (BUS_IS_PANEL_PROXY (panel)); + g_dbus_proxy_call ((GDBusProxy *)panel, + "SetCursorLocationRelative", + g_variant_new ("(iiii)", x, y, w, h), + G_DBUS_CALL_FLAGS_NONE, + -1, NULL, NULL, NULL); +} + void bus_panel_proxy_update_preedit_text (BusPanelProxy *panel, IBusText *text, @@ -398,6 +597,20 @@ bus_panel_proxy_update_property (BusPanelProxy *panel, -1, NULL, NULL, NULL); } +void +bus_panel_proxy_set_content_type (BusPanelProxy *panel, + guint purpose, + guint hints) +{ + g_assert (BUS_IS_PANEL_PROXY (panel)); + + g_dbus_proxy_call ((GDBusProxy *)panel, + "ContentType", + g_variant_new ("(uu)", purpose, hints), + G_DBUS_CALL_FLAGS_NONE, + -1, NULL, NULL, NULL); +} + #define DEFINE_FUNC(name) \ static void \ bus_panel_proxy_##name (BusPanelProxy *panel) \ @@ -443,6 +656,23 @@ bus_panel_proxy_property_activate (BusPanelProxy *panel, } } +static void +bus_panel_proxy_commit_text (BusPanelProxy *panel, + IBusText *text) +{ + gboolean use_extension = TRUE; + g_assert (BUS_IS_PANEL_PROXY (panel)); + g_assert (text != NULL); + + if (!panel->focused_context) + return; + if (panel->panel_type != PANEL_TYPE_PANEL) + use_extension = FALSE; + bus_input_context_commit_text_use_extension (panel->focused_context, + text, + use_extension); +} + #define DEFINE_FUNCTION(Name, name) \ void bus_panel_proxy_##name (BusPanelProxy *panel) \ { \ @@ -484,6 +714,22 @@ _context_set_cursor_location_cb (BusInputContext *context, bus_panel_proxy_set_cursor_location (panel, x, y, w, h); } +static void +_context_set_cursor_location_relative_cb (BusInputContext *context, + gint x, + gint y, + gint w, + gint h, + BusPanelProxy *panel) +{ + g_assert (BUS_IS_INPUT_CONTEXT (context)); + g_assert (BUS_IS_PANEL_PROXY (panel)); + + g_return_if_fail (panel->focused_context == context); + + bus_panel_proxy_set_cursor_location_relative (panel, x, y, w, h); +} + static void _context_update_preedit_text_cb (BusInputContext *context, IBusText *text, @@ -497,6 +743,16 @@ _context_update_preedit_text_cb (BusInputContext *context, g_return_if_fail (panel->focused_context == context); + /* The callback is called with X11 applications but + * the callback is not called for extensions and panel + * extensions are always calls by + * bus_panel_proxy_update_preedit_text() directly + * because panel extensions forward UpdatePreeditText to + * UpdatePreeditTextReceived and it can be an infinite + * loop. + */ + if (panel->panel_type != PANEL_TYPE_PANEL) + return; bus_panel_proxy_update_preedit_text (panel, text, cursor_pos, @@ -575,6 +831,20 @@ _context_destroy_cb (BusInputContext *context, bus_panel_proxy_focus_out (panel, context); } +static void +_context_set_content_type_cb (BusInputContext *context, + guint purpose, + guint hints, + BusPanelProxy *panel) +{ + g_assert (BUS_IS_INPUT_CONTEXT (context)); + g_assert (BUS_IS_PANEL_PROXY (panel)); + + g_return_if_fail (panel->focused_context == context); + + bus_panel_proxy_set_content_type (panel, purpose, hints); +} + #define DEFINE_FUNCTION(name) \ static void _context_##name##_cb (BusInputContext *context, \ BusPanelProxy *panel) \ @@ -587,8 +857,31 @@ _context_destroy_cb (BusInputContext *context, bus_panel_proxy_##name (panel); \ } -DEFINE_FUNCTION (show_preedit_text) -DEFINE_FUNCTION (hide_preedit_text) +#define DEFINE_FUNCTION_NO_EXTENSION(name) \ + static void _context_##name##_cb (BusInputContext *context, \ + BusPanelProxy *panel) \ + { \ + g_assert (BUS_IS_INPUT_CONTEXT (context)); \ + g_assert (BUS_IS_PANEL_PROXY (panel)); \ + \ + g_return_if_fail (panel->focused_context == context); \ + \ + /* The callback is called with X11 applications but \ + * the callback is not called for extensions and panel \ + * extensions are always calls by \ + * bus_panel_proxy_update_preedit_text() directly \ + * because panel extensions forward UpdatePreeditText to \ + * UpdatePreeditTextReceived and it can be an infinite \ + * loop. \ + */ \ + if (panel->panel_type != PANEL_TYPE_PANEL) \ + return; \ + bus_panel_proxy_##name (panel); \ + } + + +DEFINE_FUNCTION_NO_EXTENSION (show_preedit_text) +DEFINE_FUNCTION_NO_EXTENSION (hide_preedit_text) DEFINE_FUNCTION (show_auxiliary_text) DEFINE_FUNCTION (hide_auxiliary_text) DEFINE_FUNCTION (show_lookup_table) @@ -600,12 +893,14 @@ DEFINE_FUNCTION (cursor_down_lookup_table) DEFINE_FUNCTION (state_changed) #undef DEFINE_FUNCTION +#undef DEFINE_FUNCTION_NO_EXTENSION static const struct { gchar *name; GCallback callback; } input_context_signals[] = { { "set-cursor-location", G_CALLBACK (_context_set_cursor_location_cb) }, + { "set-cursor-location-relative", G_CALLBACK (_context_set_cursor_location_relative_cb) }, { "update-preedit-text", G_CALLBACK (_context_update_preedit_text_cb) }, { "show-preedit-text", G_CALLBACK (_context_show_preedit_text_cb) }, @@ -629,12 +924,18 @@ static const struct { { "engine-changed", G_CALLBACK (_context_state_changed_cb) }, { "destroy", G_CALLBACK (_context_destroy_cb) }, + + { "set-content-type", G_CALLBACK (_context_set_content_type_cb) }, }; void bus_panel_proxy_focus_in (BusPanelProxy *panel, BusInputContext *context) { + const gchar *path; + guint purpose, hints; + gint i; + g_assert (BUS_IS_PANEL_PROXY (panel)); g_assert (BUS_IS_INPUT_CONTEXT (context)); @@ -647,7 +948,7 @@ bus_panel_proxy_focus_in (BusPanelProxy *panel, g_object_ref_sink (context); panel->focused_context = context; - const gchar *path = ibus_service_get_object_path ((IBusService *)context); + path = ibus_service_get_object_path ((IBusService *)context); g_dbus_proxy_call ((GDBusProxy *)panel, "FocusIn", @@ -656,13 +957,15 @@ bus_panel_proxy_focus_in (BusPanelProxy *panel, -1, NULL, NULL, NULL); /* install signal handlers */ - gint i; for (i = 0; i < G_N_ELEMENTS (input_context_signals); i++) { g_signal_connect (context, input_context_signals[i].name, input_context_signals[i].callback, panel); } + + bus_input_context_get_content_type (context, &purpose, &hints); + bus_panel_proxy_set_content_type (panel, purpose, hints); } void @@ -694,3 +997,100 @@ bus_panel_proxy_focus_out (BusPanelProxy *panel, panel->focused_context = NULL; } +void +bus_panel_proxy_destroy_context (BusPanelProxy *panel, + BusInputContext *context) +{ + const gchar *path; + + g_assert (BUS_IS_PANEL_PROXY (panel)); + g_assert (BUS_IS_INPUT_CONTEXT (context)); + + g_object_ref_sink (context); + path = ibus_service_get_object_path ((IBusService *)context); + + g_dbus_proxy_call ((GDBusProxy *)panel, + "DestroyContext", + g_variant_new ("(o)", path), + G_DBUS_CALL_FLAGS_NONE, + -1, NULL, NULL, NULL); + + g_object_unref (context); +} + +PanelType +bus_panel_proxy_get_panel_type (BusPanelProxy *panel) +{ + g_assert (BUS_IS_PANEL_PROXY (panel)); + return panel->panel_type; +} + +void +bus_panel_proxy_panel_extension_received (BusPanelProxy *panel, + IBusExtensionEvent *event) +{ + GVariant *data; + + g_assert (BUS_IS_PANEL_PROXY (panel)); + g_assert (event); + + data = ibus_serializable_serialize (IBUS_SERIALIZABLE (event)); + g_return_if_fail (data); + g_dbus_proxy_call ((GDBusProxy *)panel, + "PanelExtensionReceived", + g_variant_new ("(v)", data), + G_DBUS_CALL_FLAGS_NONE, + -1, NULL, NULL, NULL); +} + +void +bus_panel_proxy_process_key_event (BusPanelProxy *panel, + guint keyval, + guint keycode, + guint state, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_assert (BUS_IS_PANEL_PROXY (panel)); + + g_dbus_proxy_call ((GDBusProxy *)panel, + "ProcessKeyEvent", + g_variant_new ("(uuu)", keyval, keycode, state), + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, + callback, + user_data); +} + +void +bus_panel_proxy_commit_text_received (BusPanelProxy *panel, + IBusText *text) +{ + GVariant *variant; + + g_assert (BUS_IS_PANEL_PROXY (panel)); + g_assert (IBUS_IS_TEXT (text)); + + variant = ibus_serializable_serialize (IBUS_SERIALIZABLE (text)); + g_dbus_proxy_call ((GDBusProxy *)panel, + "CommitTextReceived", + g_variant_new ("(v)", variant), + G_DBUS_CALL_FLAGS_NONE, + -1, NULL, NULL, NULL); +} + +void +bus_panel_proxy_candidate_clicked_lookup_table (BusPanelProxy *panel, + guint index, + guint button, + guint state) +{ + g_assert (BUS_IS_PANEL_PROXY (panel)); + + g_dbus_proxy_call ((GDBusProxy *)panel, + "CandidateClickedLookupTable", + g_variant_new ("(uuu)", index, button, state), + G_DBUS_CALL_FLAGS_NONE, + -1, NULL, NULL, NULL); +} diff --git a/bus/panelproxy.h b/bus/panelproxy.h index 427e409f9..4d8afb986 100644 --- a/bus/panelproxy.h +++ b/bus/panelproxy.h @@ -1,23 +1,24 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2014 Peng Huang + * Copyright (C) 2017-2018 Takao Fujiwara + * Copyright (C) 2008-2018 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #ifndef __BUS_PANEL_PROXY_H_ #define __BUS_PANEL_PROXY_H_ @@ -36,62 +37,125 @@ #define BUS_PANEL_PROXY(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), BUS_TYPE_PANEL_PROXY, BusPanelProxy)) #define BUS_PANEL_PROXY_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST ((klass), BUS_TYPE_PANEL_PROXY, BusPanelProxyClass)) + (G_TYPE_CHECK_CLASS_CAST ((klass), \ + BUS_TYPE_PANEL_PROXY, \ + BusPanelProxyClass)) #define BUS_IS_PANEL_PROXY(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BUS_TYPE_PANEL_PROXY)) #define BUS_IS_PANEL_PROXY_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), BUS_TYPE_PANEL_PROXY)) #define BUS_PANEL_PROXY_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), BUS_TYPE_PANEL_PROXY, BusPanelProxyClass)) + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + BUS_TYPE_PANEL_PROXY, \ + BusPanelProxyClass)) G_BEGIN_DECLS +typedef enum +{ + PANEL_TYPE_NONE, + PANEL_TYPE_PANEL, + PANEL_TYPE_EXTENSION_EMOJI +} PanelType; + typedef struct _BusPanelProxy BusPanelProxy; typedef struct _BusPanelProxyClass BusPanelProxyClass; -GType bus_panel_proxy_get_type (void); -BusPanelProxy *bus_panel_proxy_new (BusConnection *connection); +GType bus_panel_proxy_get_type (void); +BusPanelProxy *bus_panel_proxy_new (BusConnection *connection, + PanelType panel_type); +gboolean bus_panel_proxy_send_signal (BusPanelProxy *panel, + const gchar *interface_name, + const gchar *signal_name, + GVariant *parameters, + GError **error); /* functions that invoke D-Bus methods of the panel component. */ -void bus_panel_proxy_focus_in (BusPanelProxy *panel, - BusInputContext *context); -void bus_panel_proxy_focus_out (BusPanelProxy *panel, - BusInputContext *context); +void bus_panel_proxy_focus_in (BusPanelProxy *panel, + BusInputContext *context); +void bus_panel_proxy_focus_out (BusPanelProxy *panel, + BusInputContext *context); +void bus_panel_proxy_destroy_context + (BusPanelProxy *panel, + BusInputContext *context); void bus_panel_proxy_set_cursor_location - (BusPanelProxy *panel, - gint32 x, - gint32 y, - gint32 w, - gint32 h); -void bus_panel_proxy_update_preedit_text(BusPanelProxy *panel, - IBusText *text, - guint cursor_pos, - gboolean visible); -void bus_panel_proxy_show_preedit_text (BusPanelProxy *panel); -void bus_panel_proxy_hide_preedit_text (BusPanelProxy *panel); + (BusPanelProxy *panel, + gint32 x, + gint32 y, + gint32 w, + gint32 h); +void bus_panel_proxy_set_cursor_location_relative + (BusPanelProxy *panel, + gint32 x, + gint32 y, + gint32 w, + gint32 h); +void bus_panel_proxy_update_preedit_text + (BusPanelProxy *panel, + IBusText *text, + guint cursor_pos, + gboolean visible); +void bus_panel_proxy_show_preedit_text + (BusPanelProxy *panel); +void bus_panel_proxy_hide_preedit_text + (BusPanelProxy *panel); void bus_panel_proxy_update_auxiliary_text - (BusPanelProxy *panel, - IBusText *text, - gboolean visible); -void bus_panel_proxy_show_auxiliary_text(BusPanelProxy *panel); -void bus_panel_proxy_hide_auxiliary_text(BusPanelProxy *panel); -void bus_panel_proxy_update_lookup_table(BusPanelProxy *panel, - IBusLookupTable *table, - gboolean visible); -void bus_panel_proxy_show_lookup_table (BusPanelProxy *panel); -void bus_panel_proxy_hide_lookup_table (BusPanelProxy *panel); + (BusPanelProxy *panel, + IBusText *text, + gboolean visible); +void bus_panel_proxy_show_auxiliary_text + (BusPanelProxy *panel); +void bus_panel_proxy_hide_auxiliary_text + (BusPanelProxy *panel); +void bus_panel_proxy_update_lookup_table + (BusPanelProxy *panel, + IBusLookupTable *table, + gboolean visible); +void bus_panel_proxy_show_lookup_table + (BusPanelProxy *panel); +void bus_panel_proxy_hide_lookup_table + (BusPanelProxy *panel); void bus_panel_proxy_page_up_lookup_table - (BusPanelProxy *panel); + (BusPanelProxy *panel); void bus_panel_proxy_page_down_lookup_table - (BusPanelProxy *panel); + (BusPanelProxy *panel); void bus_panel_proxy_cursor_up_lookup_table - (BusPanelProxy *panel); + (BusPanelProxy *panel); void bus_panel_proxy_cursor_down_lookup_table - (BusPanelProxy *panel); -void bus_panel_proxy_register_properties(BusPanelProxy *panel, - IBusPropList *prop_list); -void bus_panel_proxy_update_property (BusPanelProxy *panel, - IBusProperty *prop); + (BusPanelProxy *panel); +void bus_panel_proxy_register_properties + (BusPanelProxy *panel, + IBusPropList *prop_list); +void bus_panel_proxy_update_property + (BusPanelProxy *panel, + IBusProperty *prop); +void bus_panel_proxy_set_content_type + (BusPanelProxy *panel, + guint purpose, + guint hints); +PanelType bus_panel_proxy_get_panel_type + (BusPanelProxy *panel); +void bus_panel_proxy_panel_extension_received + (BusPanelProxy *panel, + IBusExtensionEvent + *event); +void bus_panel_proxy_process_key_event + (BusPanelProxy *panel, + guint keyval, + guint keycode, + guint state, + GAsyncReadyCallback + callback, + gpointer user_data); +void bus_panel_proxy_commit_text_received + (BusPanelProxy *panel, + IBusText *text); +void bus_panel_proxy_candidate_clicked_lookup_table + (BusPanelProxy *panel, + guint index, + guint button, + guint state); + G_END_DECLS #endif diff --git a/bus/registry.c b/bus/registry.c deleted file mode 100644 index cece1f7f3..000000000 --- a/bus/registry.c +++ /dev/null @@ -1,662 +0,0 @@ -/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ -/* vim:set et sts=4: */ -/* bus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ -#include "registry.h" - -#include -#include -#include -#include - -#include "dbusimpl.h" -#include "global.h" -#include "marshalers.h" -#include "types.h" - -enum { - CHANGED, - LAST_SIGNAL, -}; - -static guint _signals[LAST_SIGNAL] = { 0 }; - -struct _BusRegistry { - IBusObject parent; - - /* instance members */ - - /* a list of IBusObservedPath objects. */ - GList *observed_paths; - /* a list of BusComponent objects that are created from component XML files (or from the cache of them). */ - GList *components; - /* a mapping from an engine name (e.g. 'pinyin') to the corresponding IBusEngineDesc object. */ - GHashTable *engine_table; - -#ifdef G_THREADS_ENABLED - GThread *thread; - gboolean thread_running; - GMutex *mutex; - GCond *cond; - gboolean changed; -#endif -}; - -struct _BusRegistryClass { - IBusObjectClass parent; - - /* class members */ -}; - -/* functions prototype */ -static void bus_registry_destroy (BusRegistry *registry); -static void bus_registry_load (BusRegistry *registry); -static void bus_registry_load_in_dir (BusRegistry *registry, - const gchar *dirname); -static gboolean bus_registry_save_cache (BusRegistry *registry); -static gboolean bus_registry_load_cache (BusRegistry *registry); -static gboolean bus_registry_check_modification(BusRegistry *registry); -static void bus_registry_remove_all (BusRegistry *registry); - -G_DEFINE_TYPE (BusRegistry, bus_registry, IBUS_TYPE_OBJECT) - -static void -bus_registry_class_init (BusRegistryClass *class) -{ - GObjectClass *gobject_class = G_OBJECT_CLASS (class); - IBusObjectClass *ibus_object_class = IBUS_OBJECT_CLASS (class); - - _signals[CHANGED] = - g_signal_new (I_("changed"), - G_TYPE_FROM_CLASS (gobject_class), - G_SIGNAL_RUN_LAST, - 0, /* does not associate a method in this class. the "changed" signal would be handled in other classes. */ - NULL, NULL, - bus_marshal_VOID__VOID, - G_TYPE_NONE, - 0); - - ibus_object_class->destroy = (IBusObjectDestroyFunc) bus_registry_destroy; -} - -static void -bus_registry_init (BusRegistry *registry) -{ - GList *p; - registry->observed_paths = NULL; - registry->components = NULL; - registry->engine_table = g_hash_table_new (g_str_hash, g_str_equal); - -#ifdef G_THREADS_ENABLED - /* If glib supports thread, we'll create a thread to monitor changes in IME - * XML files and related files, so users can use newly installed IMEs - * immediatlly. - * Note that we don't use GFileMonitor for watching as we need to monitor - * not only XML files but also other related files that can be scattered in - * many places. Monitoring these files with GFileMonitor would be make it - * complicated. hence we use a thread to poll the changes. - */ - registry->thread = NULL; - registry->thread_running = TRUE; - registry->mutex = g_mutex_new (); - registry->cond = g_cond_new (); - registry->changed = FALSE; -#endif - - if (g_strcmp0 (g_cache, "none") == 0) { - /* Only load registry, but not read and write cache. */ - bus_registry_load (registry); - } - else if (g_strcmp0 (g_cache, "refresh") == 0) { - /* Load registry and overwrite the cache. */ - bus_registry_load (registry); - bus_registry_save_cache (registry); - } - else { - /* Load registry from cache. If the cache does not exist or - * it is outdated, then generate it. - */ - if (bus_registry_load_cache (registry) == FALSE || - bus_registry_check_modification (registry)) { - bus_registry_remove_all (registry); - bus_registry_load (registry); - bus_registry_save_cache (registry); - } - } - - for (p = registry->components; p != NULL; p = p->next) { - BusComponent *comp = (BusComponent *) p->data; - GList *engines = bus_component_get_engines (comp); - GList *p1; - for (p1 = engines; p1 != NULL; p1 = p1->next) { - IBusEngineDesc *desc = (IBusEngineDesc *) p1->data; - g_hash_table_insert (registry->engine_table, - (gpointer) ibus_engine_desc_get_name (desc), - desc); - } - g_list_free (engines); - } -} - -static void -bus_registry_remove_all (BusRegistry *registry) -{ - g_list_free_full (registry->observed_paths, g_object_unref); - registry->observed_paths = NULL; - - g_list_free_full (registry->components, g_object_unref); - registry->components = NULL; - - g_hash_table_remove_all (registry->engine_table); -} - -static void -bus_registry_destroy (BusRegistry *registry) -{ -#ifdef G_THREADS_ENABLED - if (registry->thread) { - g_mutex_lock (registry->mutex); - registry->thread_running = FALSE; - g_mutex_unlock (registry->mutex); - - /* Raise a signal to cause the loop in _checks_changes() exits - * immediately, and then wait until the thread finishes, and release all - * resources of the thread. - */ - g_cond_signal (registry->cond); - g_thread_join (registry->thread); - - registry->thread = NULL; - } -#endif - - bus_registry_remove_all (registry); - - g_hash_table_destroy (registry->engine_table); - registry->engine_table = NULL; - -#ifdef G_THREADS_ENABLED - g_cond_free (registry->cond); - registry->cond = NULL; - - g_mutex_free (registry->mutex); - registry->mutex = NULL; -#endif - - IBUS_OBJECT_CLASS (bus_registry_parent_class)->destroy (IBUS_OBJECT (registry)); -} - -/** - * bus_registry_load: - * - * Read all XML files in the PKGDATADIR (typically /usr/share/ibus/components/ *.xml) and update the registry object. - */ -static void -bus_registry_load (BusRegistry *registry) -{ - g_assert (BUS_IS_REGISTRY (registry)); - - gchar *dirname; - IBusObservedPath *path; - - dirname = g_build_filename (PKGDATADIR, "component", NULL); - - path = ibus_observed_path_new (dirname, TRUE); - registry->observed_paths = g_list_append (registry->observed_paths, path); - - bus_registry_load_in_dir (registry, dirname); - - g_free (dirname); - -#if 0 - /* FIXME Should we support install some IME in user dir? */ - dirname = g_build_filename (g_get_user_data_dir (), "ibus", "component", NULL); - - path = ibus_observed_path_new (dirname, TRUE); - registry->observed_paths = g_list_append (registry->observed_paths, path); - - if (g_file_test (dirname, G_FILE_TEST_EXISTS)) { - bus_registry_load_in_dir (registry, dirname); - } - - g_free (dirname); -#endif -} - -#define g_string_append_indent(string, indent) \ - { \ - gint i; \ - for (i = 0; i < (indent); i++) { \ - g_string_append (string, " "); \ - } \ - } - -static gboolean -bus_registry_load_cache (BusRegistry *registry) -{ - g_assert (BUS_IS_REGISTRY (registry)); - - gchar *filename; - XMLNode *node; - GList *p; - - filename = g_build_filename (g_get_user_cache_dir (), "ibus", "bus", "registry.xml", NULL); - node = ibus_xml_parse_file (filename); - g_free (filename); - - if (node == NULL) { - return FALSE; - } - - if (g_strcmp0 (node->name, "ibus-registry") != 0) { - ibus_xml_free (node); - return FALSE; - } - - for (p = node->sub_nodes; p != NULL; p = p->next) { - XMLNode *sub_node = (XMLNode *) p->data; - - if (g_strcmp0 (sub_node->name, "observed-paths") == 0) { - GList *pp; - for (pp = sub_node->sub_nodes; pp != NULL; pp = pp->next) { - IBusObservedPath *path; - path = ibus_observed_path_new_from_xml_node (pp->data, FALSE); - if (path) { - g_object_ref_sink (path); - registry->observed_paths = g_list_append (registry->observed_paths, path); - } - } - continue; - } - if (g_strcmp0 (sub_node->name, "components") == 0) { - GList *pp; - for (pp = sub_node->sub_nodes; pp != NULL; pp = pp->next) { - IBusComponent *component; - component = ibus_component_new_from_xml_node (pp->data); - if (component) { - BusComponent *buscomp = bus_component_new (component, - NULL /* factory */); - g_object_ref_sink (buscomp); - registry->components = - g_list_append (registry->components, buscomp); - } - } - - continue; - } - g_warning ("Unknown element <%s>", sub_node->name); - } - - ibus_xml_free (node); - return TRUE; -} - -static gboolean -bus_registry_check_modification (BusRegistry *registry) -{ - GList *p; - - for (p = registry->observed_paths; p != NULL; p = p->next) { - if (ibus_observed_path_check_modification ((IBusObservedPath *) p->data)) - return TRUE; - } - - for (p = registry->components; p != NULL; p = p->next) { - if (ibus_component_check_modification (bus_component_get_component ((BusComponent *) p->data))) - return TRUE; - } - - return FALSE; -} - -static gboolean -bus_registry_save_cache (BusRegistry *registry) -{ - g_assert (BUS_IS_REGISTRY (registry)); - - gchar *cachedir; - gchar *filename; - GString *output; - GList *p; - FILE *pf; - size_t items = 0; - - cachedir = g_build_filename (g_get_user_cache_dir (), "ibus", "bus", NULL); - filename = g_build_filename (cachedir, "registry.xml", NULL); - g_mkdir_with_parents (cachedir, 0775); - pf = g_fopen (filename, "w"); - g_free (filename); - g_free (cachedir); - - if (pf == NULL) { - g_warning ("create registry.xml failed"); - return FALSE; - } - - output = g_string_new (""); - g_string_append (output, "\n"); - g_string_append (output, "\n"); - g_string_append (output, "\n"); - - if (registry->observed_paths) { - g_string_append_indent (output, 1); - g_string_append (output, "\n"); - for (p = registry->observed_paths; p != NULL; p = p->next) { - ibus_observed_path_output ((IBusObservedPath *) p->data, - output, 2); - } - g_string_append_indent (output, 1); - g_string_append (output, "\n"); - } - - if (registry->components) { - g_string_append_indent (output, 1); - g_string_append (output, "\n"); - for (p = registry->components; p != NULL; p = p->next) { - ibus_component_output (bus_component_get_component ((BusComponent *) p->data), - output, 2); - } - g_string_append_indent (output, 1); - g_string_append (output, "\n"); - } - - g_string_append (output, "\n"); - items = fwrite (output->str, output->len, 1, pf); - g_string_free (output, TRUE); - fclose (pf); - return (items == 1 ? TRUE : FALSE); -} - -/** - * bus_registry_load_in_dir: - * - * Read all XML files in dirname, create a BusComponent object for each file, and add the component objects to the registry. - */ -static void -bus_registry_load_in_dir (BusRegistry *registry, - const gchar *dirname) -{ - g_assert (BUS_IS_REGISTRY (registry)); - g_assert (dirname); - - GError *error = NULL; - GDir *dir; - const gchar *filename; - - dir = g_dir_open (dirname, 0, &error); - - if (dir == NULL) { - g_warning ("Unable open directory %s : %s", dirname, error->message); - g_error_free (error); - return; - } - - while ((filename = g_dir_read_name (dir)) != NULL) { - glong size; - gchar *path; - IBusComponent *component; - - size = g_utf8_strlen (filename, -1); - if (g_strcmp0 (MAX (filename, filename + size - 4), ".xml") != 0) - continue; - - path = g_build_filename (dirname, filename, NULL); - component = ibus_component_new_from_file (path); - if (component != NULL) { - BusComponent *buscomp = bus_component_new (component, - NULL /* factory */); - g_object_ref_sink (buscomp); - registry->components = - g_list_append (registry->components, buscomp); - } - - g_free (path); - } - - g_dir_close (dir); -} - - -BusRegistry * -bus_registry_new (void) -{ - BusRegistry *registry; - registry = (BusRegistry *) g_object_new (BUS_TYPE_REGISTRY, NULL); - return registry; -} - -static gint -bus_register_component_is_name_cb (BusComponent *component, - const gchar *name) -{ - g_assert (BUS_IS_COMPONENT (component)); - g_assert (name); - - return g_strcmp0 (bus_component_get_name (component), name); -} - -BusComponent * -bus_registry_lookup_component_by_name (BusRegistry *registry, - const gchar *name) -{ - g_assert (BUS_IS_REGISTRY (registry)); - g_assert (name); - - GList *p; - p = g_list_find_custom (registry->components, - name, - (GCompareFunc) bus_register_component_is_name_cb); - if (p) { - return (BusComponent *) p->data; - } - else { - return NULL; - } -} - -GList * -bus_registry_get_components (BusRegistry *registry) -{ - g_assert (BUS_IS_REGISTRY (registry)); - - return g_list_copy (registry->components); -} - -GList * -bus_registry_get_engines (BusRegistry *registry) -{ - g_assert (BUS_IS_REGISTRY (registry)); - - return g_hash_table_get_values (registry->engine_table); -} - -GList * -bus_registry_get_engines_by_language (BusRegistry *registry, - const gchar *language) -{ - g_assert (BUS_IS_REGISTRY (registry)); - g_assert (language); - - gint n; - GList *p1, *p2, *engines; - - n = strlen (language); - - p1 = bus_registry_get_engines (registry); - - engines = NULL; - - for (p2 = p1; p2 != NULL; p2 = p2->next) { - IBusEngineDesc *desc = (IBusEngineDesc *) p2->data; - if (strncmp (ibus_engine_desc_get_language (desc), language, n) == 0) { - engines = g_list_append (engines, desc); - } - } - - g_list_free (p1); - return engines; -} - -IBusEngineDesc * -bus_registry_find_engine_by_name (BusRegistry *registry, - const gchar *name) -{ - g_assert (BUS_IS_REGISTRY (registry)); - g_assert (name); - - return (IBusEngineDesc *) g_hash_table_lookup (registry->engine_table, name); -} - -void -bus_registry_stop_all_components (BusRegistry *registry) -{ - g_assert (BUS_IS_REGISTRY (registry)); - - g_list_foreach (registry->components, (GFunc) bus_component_stop, NULL); - -} - -#ifdef G_THREADS_ENABLED -static gboolean -_emit_changed_signal_cb (BusRegistry *registry) -{ - g_assert (BUS_IS_REGISTRY (registry)); - - g_signal_emit (registry, _signals[CHANGED], 0); - return FALSE; -} - -static gpointer -_check_changes (BusRegistry *registry) -{ - g_assert (BUS_IS_REGISTRY (registry)); - - g_mutex_lock (registry->mutex); - while (registry->thread_running == TRUE && registry->changed == FALSE) { - extern gint g_monitor_timeout; - GTimeVal tv; - g_get_current_time (&tv); - g_time_val_add (&tv, g_monitor_timeout * G_USEC_PER_SEC); - /* Wait for the condition change or timeout. It will also unlock - * the mutex, so that other thread could obay the lock and modify - * the condition value. - * Note that we use g_cond_timed_wait() here rather than sleep() so - * that the loop can terminate immediately when the registry object - * is destroyed. See also comments in bus_registry_destroy(). - */ - if (g_cond_timed_wait (registry->cond, registry->mutex, &tv) == FALSE) { - /* Timeout happens. We check the modification of all IMEs' xml files - * and related files specified in in xml files. - * If any file is changed, the changed signal will be emitted in - * main thread. It is for finding install/uninstall/upgrade of IMEs. - * On Linux desktop, ibus will popup UI to notificate users that - * some IMEs are changed and ibus need a restart. - */ - if (bus_registry_check_modification (registry)) { - /* Emit the changed signal in main thread, and terminate - * this thread. - */ - registry->changed = TRUE; - g_idle_add ((GSourceFunc) _emit_changed_signal_cb, registry); - break; - } - } - else - g_warn_if_fail (registry->thread_running == FALSE); - } - g_mutex_unlock (registry->mutex); - return NULL; -} - -/** - * bus_registry_start_monitor_changes: - * - * Start the monitor thread. - */ -void -bus_registry_start_monitor_changes (BusRegistry *registry) -{ - g_assert (BUS_IS_REGISTRY (registry)); - - g_return_if_fail (registry->thread == NULL); - g_return_if_fail (registry->changed == FALSE); - - registry->thread_running = TRUE; - registry->thread = g_thread_create ((GThreadFunc) _check_changes, - registry, - TRUE, - NULL); -} - -gboolean -bus_registry_is_changed (BusRegistry *registry) -{ - g_assert (BUS_IS_REGISTRY (registry)); - return (registry->changed != 0); -} -#endif - -void -bus_registry_name_owner_changed (BusRegistry *registry, - const gchar *name, - const gchar *old_name, - const gchar *new_name) -{ - g_assert (BUS_IS_REGISTRY (registry)); - g_assert (name); - g_assert (old_name); - g_assert (new_name); - - BusComponent *component; - BusFactoryProxy *factory; - - component = bus_registry_lookup_component_by_name (registry, name); - - if (component == NULL) { - /* name is a unique name, or a well-known name we don't know. */ - return; - } - - if (g_strcmp0 (old_name, "") != 0) { - /* the component is stopped. */ - factory = bus_component_get_factory (component); - - if (factory != NULL) { - ibus_proxy_destroy ((IBusProxy *) factory); - } - } - - if (g_strcmp0 (new_name, "") != 0) { - /* the component is started. */ - BusConnection *connection = - bus_dbus_impl_get_connection_by_name (BUS_DEFAULT_DBUS, - new_name); - if (connection == NULL) - return; - - factory = bus_factory_proxy_new (connection); - if (factory == NULL) - return; - bus_component_set_factory (component, factory); - g_object_unref (factory); - } -} diff --git a/bus/registry.h b/bus/registry.h deleted file mode 100644 index cdabec094..000000000 --- a/bus/registry.h +++ /dev/null @@ -1,124 +0,0 @@ -/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ -/* vim:set et sts=4: */ -/* bus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ -#ifndef __BUS_REGISTRY_H_ -#define __BUS_REGISTRY_H_ - -#include -#include "component.h" - -/* - * Type macros. - */ - -/* define GOBJECT macros */ -#define BUS_TYPE_REGISTRY \ - (bus_registry_get_type ()) -#define BUS_REGISTRY(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), BUS_TYPE_REGISTRY, BusRegistry)) -#define BUS_REGISTRY_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST ((klass), BUS_TYPE_REGISTRY, BusRegistryClass)) -#define BUS_IS_REGISTRY(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BUS_TYPE_REGISTRY)) -#define BUS_IS_REGISTRY_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_TYPE ((klass), BUS_TYPE_REGISTRY)) -#define BUS_REGISTRY_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), BUS_TYPE_REGISTRY, BusRegistryClass)) - -G_BEGIN_DECLS - -typedef struct _BusRegistry BusRegistry; -typedef struct _BusRegistryClass BusRegistryClass; - -GType bus_registry_get_type (void); -BusRegistry *bus_registry_new (void); - -/** - * bus_registry_get_components: - * @returns: a list of BusComponent objects. The caller has to call g_list_free for the returned list. - */ -GList *bus_registry_get_components (BusRegistry *registry); - -/** - * bus_registry_get_components: - * @returns: a list of all IBusEngineDesc objects available. The caller has to call g_list_free for the returned list. - */ -GList *bus_registry_get_engines (BusRegistry *registry); - -/** - * bus_registry_get_components: - * @language: a language name like 'ja' - * @returns: a list of IBusEngineDesc objects for the language. The caller has to call g_list_free for the returned list. - */ -GList *bus_registry_get_engines_by_language - (BusRegistry *registry, - const gchar *language); - -/** - * bus_registry_stop_all_components: - * - * Terminate all component processes. - */ -void bus_registry_stop_all_components - (BusRegistry *registry); - -/** - * bus_registry_lookup_component_by_name: - * @name: a component name such as 'org.freedesktop.IBus.Panel' and 'com.google.IBus.Mozc' - * @returns: a BusComponent object, or NULL if such component is not found. - */ -BusComponent *bus_registry_lookup_component_by_name - (BusRegistry *registry, - const gchar *name); - -/** - * bus_registry_find_engine_by_name: - * @name: an engine name like 'pinyin' - * @returns: an IBusEngineDesc object, or NULL if not found. - */ -IBusEngineDesc *bus_registry_find_engine_by_name - (BusRegistry *registry, - const gchar *name); - -/** - * bus_registry_name_owner_changed: - * @name: a unique or well-known name like ":1.1", "org.freedesktop.IBus.Config", "com.google.IBus.Mozc". - * @old_name: a unique name like ":1.1", or empty string "" when the client is started. - * @new_name: a unique name like ":1.1", or empty string "" when the client is stopped. - * - * Handle the "name-owner-changed" glib signal from dbusimpl. If a component is stopped, remove a BusFactoryProxy object from the - * bus for the component. If a component is started, create a new BusFactoryProxy object for the bus. - */ -void bus_registry_name_owner_changed - (BusRegistry *registry, - const gchar *name, - const gchar *old_name, - const gchar *new_name); - -#ifdef G_THREADS_ENABLED -void bus_registry_start_monitor_changes - (BusRegistry *registry); -gboolean bus_registry_is_changed (BusRegistry *registry); -#endif - -G_END_DECLS -#endif - diff --git a/bus/server.c b/bus/server.c index ed384602f..968d53461 100644 --- a/bus/server.c +++ b/bus/server.c @@ -2,26 +2,30 @@ /* vim:set et sts=4: */ /* bus - The Input Bus * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2011-2022 Takao Fujiwara + * Copyright (C) 2008-2021 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include "server.h" +#include #include +#include +#include #include #include @@ -34,25 +38,41 @@ static GDBusServer *server = NULL; static GMainLoop *mainloop = NULL; static BusDBusImpl *dbus = NULL; static BusIBusImpl *ibus = NULL; -static gchar *address = NULL; +static char *address = NULL; static gboolean _restart = FALSE; static void _restart_server (void) { - extern gchar **g_argv; - gchar *exe; - gint fd; + char *exe; + int fd; + ssize_t r; + int MAXSIZE = 0xFFF; + char proclnk[MAXSIZE]; + char filename[MAXSIZE]; - exe = g_strdup_printf ("/proc/%d/exe", getpid ()); - exe = g_file_read_link (exe, NULL); + exe = g_file_read_link ("/proc/self/exe", NULL); if (exe == NULL) - exe = BINDIR "/ibus-daemon"; + exe = g_strdup (BINDIR "/ibus-daemon"); /* close all fds except stdin, stdout, stderr */ for (fd = 3; fd <= sysconf (_SC_OPEN_MAX); fd ++) { - close (fd); + errno = 0; + /* only close valid fds */ + if (fcntl (fd, F_GETFD) != -1 || errno != EBADF) { + g_sprintf (proclnk, "/proc/self/fd/%d", fd); + r = readlink (proclnk, filename, MAXSIZE); + if (r < 0) { + continue; + } + filename[r] = '\0'; + + /* Do not close 'anon_inode:inotify' fds, that may crash in glib */ + if (g_strcmp0 (filename, "anon_inode:inotify") != 0) { + close (fd); + } + } } _restart = FALSE; @@ -67,20 +87,68 @@ _restart_server (void) execv (exe, g_argv); } g_warning ("execv %s failed!", g_argv[0]); + g_free (exe); exit (-1); } +/** + * bus_allow_mechanism_cb: + * @observer: A #GDBusAuthObserver. + * @mechanism: The name of the mechanism. + * @user_data: always %NULL. + * + * Check if @mechanism can be used to authenticate the other peer. + * Returns: %TRUE if the peer's mechanism is allowed. + */ +static gboolean +bus_allow_mechanism_cb (GDBusAuthObserver *observer, + const gchar *mechanism, + G_GNUC_UNUSED gpointer user_data) +{ + if (g_strcmp0 (mechanism, "EXTERNAL") == 0) + return TRUE; + return FALSE; +} + +/** + * bus_authorize_authenticated_peer_cb: + * @observer: A #GDBusAuthObserver. + * @stream: A #GIOStream. + * @credentials: A #GCredentials. + * @user_data: always %NULL. + * + * Check if a peer who has already authenticated should be authorized. + * Returns: %TRUE if the peer's credential is authorized. + */ +static gboolean +bus_authorize_authenticated_peer_cb (GDBusAuthObserver *observer, + GIOStream *stream, + GCredentials *credentials, + G_GNUC_UNUSED gpointer user_data) +{ + gboolean authorized = FALSE; + if (credentials) { + GCredentials *own_credentials = g_credentials_new (); + if (g_credentials_is_same_user (credentials, own_credentials, NULL)) + authorized = TRUE; + g_object_unref (own_credentials); + } + return authorized; +} + /** * bus_new_connection_cb: - * @user_data: always NULL. - * @returns: TRUE when the function can handle the connection. + * @observer: A #GDBusAuthObserver. + * @dbus_connection: A #GDBusconnection. + * @user_data: always %NULL. * * Handle incoming connections. + * Returns: %TRUE when the function can handle the connection. */ static gboolean -bus_new_connection_cb (GDBusServer *server, - GDBusConnection *dbus_connection, - gpointer user_data) +bus_new_connection_cb (GDBusServer *server, + GDBusConnection *dbus_connection, + G_GNUC_UNUSED gpointer user_data) { BusConnection *connection = bus_connection_new (dbus_connection); bus_dbus_impl_new_connection (dbus, connection); @@ -94,25 +162,166 @@ bus_new_connection_cb (GDBusServer *server, return TRUE; } +static void +_server_connect_start_portal_cb (GObject *source_object, + GAsyncResult *res, + G_GNUC_UNUSED gpointer user_data) +{ + GVariant *result; + GError *error = NULL; + + result = g_dbus_connection_call_finish (G_DBUS_CONNECTION (source_object), + res, + &error); + if (result != NULL) { + g_variant_unref (result); + } else { + g_print ("portal is not running: %s\n", error->message); + g_error_free (error); + } +} + +static void +bus_acquired_handler (GDBusConnection *connection, + const gchar *name, + G_GNUC_UNUSED gpointer user_data) +{ + g_dbus_connection_call (connection, + IBUS_SERVICE_PORTAL, + IBUS_PATH_IBUS, + "org.freedesktop.DBus.Peer", + "Ping", + g_variant_new ("()"), + G_VARIANT_TYPE ("()"), + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL /* cancellable */, + (GAsyncReadyCallback) + _server_connect_start_portal_cb, + NULL); +} + +static char * +_bus_extract_address (void) +{ + char *socket_address = g_strdup (g_address); + char *p; + +#define IF_REPLACE_VARIABLE_WITH_FUNC(variable, func, format) \ + if ((p = g_strstr_len (socket_address, -1, (variable)))) { \ + gchar *sub1 = g_strndup (socket_address, p - socket_address); \ + gchar *sub2 = g_strdup (p + strlen (variable)); \ + gchar *tmp = g_strdup_printf ("%s" format "%s", \ + sub1, (func) (), sub2); \ + g_free (sub1); \ + g_free (sub2); \ + g_free (socket_address); \ + socket_address = tmp; \ + } + + IF_REPLACE_VARIABLE_WITH_FUNC ("$XDG_RUNTIME_DIR", + g_get_user_runtime_dir, + "%s") + else + IF_REPLACE_VARIABLE_WITH_FUNC ("$XDG_CACHE_HOME", + g_get_user_cache_dir, + "%s") + else + IF_REPLACE_VARIABLE_WITH_FUNC ("$UID", getuid, "%d") + +#undef IF_REPLACE_VARIABLE_WITH_FUNC + + return socket_address; +} + void bus_server_init (void) { +#define IBUS_UNIX_TMPDIR "unix:tmpdir=" +#define IBUS_UNIX_PATH "unix:path=" +#define IBUS_UNIX_ABSTRACT "unix:abstract=" +#define IBUS_UNIX_DIR "unix:dir=" + + char *socket_address; + GDBusServerFlags flags = G_DBUS_SERVER_FLAGS_NONE; + char *guid; + GDBusAuthObserver *observer; + GError *error = NULL; + char *unix_dir = NULL; + dbus = bus_dbus_impl_get_default (); ibus = bus_ibus_impl_get_default (); bus_dbus_impl_register_object (dbus, (IBusService *)ibus); /* init server */ - GDBusServerFlags flags = G_DBUS_SERVER_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS; - gchar *guid = g_dbus_generate_guid (); + socket_address = _bus_extract_address (); + +#define IF_GET_UNIX_DIR_FROM_DIR(prefix) \ + if (g_str_has_prefix (socket_address, (prefix))) { \ + unix_dir = g_strdup (socket_address + strlen (prefix)); \ + } +#define IF_GET_UNIX_DIR_FROM_PATH(prefix) \ + if (g_str_has_prefix (socket_address, (prefix))) { \ + const char *unix_path = socket_address + strlen (prefix); \ + unix_dir = g_path_get_dirname (unix_path); \ + } +#define IF_GET_UNIX_DIR_FROM_ABSTRACT(prefix) \ + if (g_str_has_prefix (socket_address, (prefix))) {} + + + IF_GET_UNIX_DIR_FROM_DIR (IBUS_UNIX_TMPDIR) + else + IF_GET_UNIX_DIR_FROM_PATH (IBUS_UNIX_PATH) + else + IF_GET_UNIX_DIR_FROM_ABSTRACT (IBUS_UNIX_ABSTRACT) + else + IF_GET_UNIX_DIR_FROM_DIR (IBUS_UNIX_DIR) + else { + g_error ("Your socket address \"%s\" does not correspond with " + "one of the following formats; " + IBUS_UNIX_TMPDIR "DIR, " IBUS_UNIX_PATH "FILE, " + IBUS_UNIX_ABSTRACT "FILE, " IBUS_UNIX_DIR "DIR.", + socket_address); + } + if (unix_dir && + !g_file_test (unix_dir, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)) { + /* Require mkdir for BSD system. + * The mode 0700 can eliminate malicious users change the mode. + * `chmod` runs for the last directory only not to change the modes + * of the parent directories. E.g. "/tmp/ibus". + */ + errno = 0; + if (g_mkdir_with_parents (unix_dir, 0700) != 0) { + g_error ("mkdir is failed in: %s: %s", + unix_dir, g_strerror (errno)); + } + } + g_free (unix_dir); + guid = g_dbus_generate_guid (); + observer = g_dbus_auth_observer_new (); server = g_dbus_server_new_sync ( - g_address, /* the place where the socket file lives, e.g. /tmp, abstract namespace, etc. */ + /* the place where the socket file lives, e.g. /tmp, + * abstract namespace, etc. */ + socket_address, flags, guid, - NULL /* observer */, + observer, NULL /* cancellable */, - NULL /* error */); + &error); + if (server == NULL) { + g_error ("g_dbus_server_new_sync() is failed with address %s " + "and guid %s: %s", + socket_address, guid, error->message); + } + g_free (socket_address); g_free (guid); - g_signal_connect (server, "new-connection", G_CALLBACK (bus_new_connection_cb), NULL); + g_signal_connect (observer, "allow-mechanism", + G_CALLBACK (bus_allow_mechanism_cb), NULL); + g_signal_connect (observer, "authorize-authenticated-peer", + G_CALLBACK (bus_authorize_authenticated_peer_cb), NULL); + g_object_unref (observer); + g_signal_connect (server, "new-connection", + G_CALLBACK (bus_new_connection_cb), NULL); g_dbus_server_start (server); @@ -122,6 +331,20 @@ bus_server_init (void) /* write address to file */ ibus_write_address (address); + + /* own a session bus name so that third parties can easily track our life-cycle */ + g_bus_own_name (G_BUS_TYPE_SESSION, IBUS_SERVICE_IBUS, + G_BUS_NAME_OWNER_FLAGS_NONE, + bus_acquired_handler, + NULL, NULL, NULL, NULL); + +#undef IF_GET_UNIX_DIR_FROM_DIR +#undef IF_GET_UNIX_DIR_FROM_PATH +#undef IF_GET_UNIX_DIR_FROM_ABSTRACT +#undef IBUS_UNIX_TMPDIR +#undef IBUS_UNIX_PATH +#undef IBUS_UNIX_ABSTRACT +#undef IBUS_UNIX_DIR } const gchar * diff --git a/bus/server.h b/bus/server.h index e1cb3ecf6..346f6cdde 100644 --- a/bus/server.h +++ b/bus/server.h @@ -7,17 +7,17 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #ifndef __BUS_SERVER_H_ #define __BUS_SERVER_H_ diff --git a/bus/services/Makefile.am b/bus/services/Makefile.am new file mode 100644 index 000000000..9cc421532 --- /dev/null +++ b/bus/services/Makefile.am @@ -0,0 +1,68 @@ +# vim:set noet ts=4: +# +# ibus - The Input Bus +# +# Copyright (c) 2022 Takao Fujiwara +# Copyright (c) 2022 Red Hat, Inc. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA + +NULL = + +# Originally this D-Bus service file was added for GNOME but seems not to +# be used at present. +# +# TODO: Check if flatpack uses this file and we could delete +# org.freedesktop.IBus.service file in the future. +dbusservice_in_files = org.freedesktop.IBus.service.in +dbusservice_DATA = $(dbusservice_in_files:.service.in=.service) +dbusservicedir=${datadir}/dbus-1/services + +systemdservice_in_files = \ + org.freedesktop.IBus.session.generic.service.in \ + org.freedesktop.IBus.session.GNOME.service.in \ + $(NULL) + +%.service: %.service.in + $(AM_V_GEN) sed -e "s|\@bindir\@|$(bindir)|" \ + -e "s|\@xim_cli_arg\@|$(XIM_CLI_ARG)|" $< > $@.tmp && \ + mv $@.tmp $@ + +if ENABLE_SYSTEMD +systemdservice_DATA = $(systemdservice_in_files:.service.in=.service) +systemdservicedir = $(SYSTEMD_USER_UNIT_DIR) + +# in install-data-hook. +install-data-hook: + $(MKDIR_P) "$(DESTDIR)$(SYSTEMD_USER_UNIT_DIR)/gnome-session.target.wants/" + ( \ + cd "$(DESTDIR)$(SYSTEMD_USER_UNIT_DIR)/gnome-session.target.wants" ; \ + $(LN_S) -f "../org.freedesktop.IBus.session.GNOME.service" .; \ + ) + $(NULL) +endif + +EXTRA_DIST = \ + $(dbusservice_in_files) \ + $(systemdservice_in_files) \ + $(NULL) + +CLEANFILES = \ + $(dbusservice_DATA) \ + $(systemdservice_DATA) \ + $(NULL) + +-include $(top_srcdir)/git.mk diff --git a/bus/services/org.freedesktop.IBus.service.in b/bus/services/org.freedesktop.IBus.service.in new file mode 100644 index 000000000..9e322ce85 --- /dev/null +++ b/bus/services/org.freedesktop.IBus.service.in @@ -0,0 +1,3 @@ +[D-BUS Service] +Name=org.freedesktop.IBus +Exec=@bindir@/ibus-daemon --replace --panel disable @xim_cli_arg@ diff --git a/bus/services/org.freedesktop.IBus.session.GNOME.service.in b/bus/services/org.freedesktop.IBus.session.GNOME.service.in new file mode 100644 index 000000000..7f718e3c9 --- /dev/null +++ b/bus/services/org.freedesktop.IBus.session.GNOME.service.in @@ -0,0 +1,28 @@ +[Unit] +Description=IBus Daemon for GNOME +CollectMode=inactive-or-failed + +# Require GNOME session and specify startup ordering +Requisite=gnome-session-initialized.target +After=gnome-session-initialized.target +PartOf=gnome-session-initialized.target +Before=gnome-session.target + +# Needs to run when DISPLAY/WAYLAND_DISPLAY is set +After=gnome-session-initialized.target +PartOf=gnome-session-initialized.target + +# Never run in GDM +Conflicts=gnome-session@gnome-login.target + +[Service] +Type=dbus +# Only pull --xim in X11 session, it is done via Xwayland-session.d on Wayland +ExecStart=sh -c '@bindir@/ibus-daemon --panel disable $([ "$XDG_SESSION_TYPE" = "x11" ] && echo "--xim")' +Restart=on-abnormal +BusName=org.freedesktop.IBus +TimeoutStopSec=5 +Slice=session.slice + +[Install] +WantedBy=gnome-session.target diff --git a/bus/services/org.freedesktop.IBus.session.generic.service.in b/bus/services/org.freedesktop.IBus.session.generic.service.in new file mode 100644 index 000000000..9d4931598 --- /dev/null +++ b/bus/services/org.freedesktop.IBus.session.generic.service.in @@ -0,0 +1,15 @@ +[Unit] +Description=IBus Daemon for generic sessions +CollectMode=inactive-or-failed + +# Never run in GNOME +Conflicts=gnome-session-initialized.target + +[Service] +Type=dbus +# Only pull --xim in X11 session, it is done via Xwayland-session.d on Wayland +ExecStart=sh -c '@bindir@/ibus-daemon $IBUS_DAEMON_ARGS' +Restart=on-abnormal +BusName=org.freedesktop.IBus +TimeoutStopSec=5 +Slice=session.slice diff --git a/bus/test-client.c b/bus/test-client.c index be7c8256a..ec6ab6359 100644 --- a/bus/test-client.c +++ b/bus/test-client.c @@ -6,22 +6,22 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include -#include #include +#include #include "test-client.h" @@ -35,7 +35,6 @@ static void bus_test_client_class_init (BusTestClientClass *class) static void bus_test_client_destroy (IBusObject *object); /* static methods*/ -static gchar* _get_active_engine_name (void); static void _store_modifier_state (BusTestClient *client, guint modifier); static gboolean _is_shift_set (BusTestClient *client); @@ -67,7 +66,7 @@ bus_test_client_class_init (BusTestClientClass *class) /* init display object */ if (_xdisplay == NULL) { - _xdisplay = XOpenDisplay (gdk_display_get_name (gdk_display_get_default ())); + _xdisplay = XOpenDisplay (NULL); } /* init bus object */ @@ -83,7 +82,6 @@ static void bus_test_client_init (BusTestClient *client) { IDEBUG ("%s", __FUNCTION__); - gchar *active_engine_name; client->connected = FALSE; client->enabled = FALSE; @@ -104,13 +102,7 @@ bus_test_client_init (BusTestClient *client) client->caps = IBUS_CAP_FOCUS; ibus_input_context_set_capabilities (client->ibuscontext, client->caps); - active_engine_name = _get_active_engine_name (); - - g_return_if_fail (active_engine_name != NULL); - IDEBUG ("engine:%s", active_engine_name); - ibus_input_context_focus_in (client->ibuscontext); - ibus_input_context_set_engine (client->ibuscontext, active_engine_name); - g_free (active_engine_name); + ibus_bus_set_global_engine (_bus, "xkb:us::eng"); client->enabled = TRUE; } @@ -175,7 +167,19 @@ bus_test_client_send_key (BusTestClient *client, _store_modifier_state (client, keysym); } else { IDEBUG ("key: %d is not modifier.", keysym); - gboolean is_upper = !gdk_keyval_is_lower (keysym); + /* This is an example code. If you use the keysym >= 0x01000000, + * gdk_keyval_is_upper may be useful since + * XConvertCase supports implementation-independent conversions. + */ + KeySym xlower = 0; + KeySym xupper = 0; + gboolean is_upper = FALSE; + + if (keysym) { + XConvertCase (keysym, &xlower, &xupper); + is_upper = ((guint) xupper == keysym); + } + gboolean is_shift_set = _is_shift_set (client); if (is_upper && !is_shift_set) { @@ -207,32 +211,6 @@ void bus_test_client_clear_modifier (BusTestClient *client) } } -static gchar * -_get_active_engine_name (void) -{ - GList *engines; - gchar *result; - - engines = ibus_bus_list_active_engines (_bus); - if (engines == NULL) { - return NULL; - } - - IBusEngineDesc *engine_desc = IBUS_ENGINE_DESC (engines->data); - if (engine_desc != NULL) { - result = g_strdup (ibus_engine_desc_get_name(engine_desc)); - } else { - result = NULL; - } - - for (; engines != NULL; engines = g_list_next (engines)) { - g_object_unref (IBUS_ENGINE_DESC (engines->data)); - } - g_list_free (engines); - - return result; -} - static void _store_modifier_state (BusTestClient *client, guint modifier) diff --git a/bus/test-client.h b/bus/test-client.h index 6a059d17b..9887069f7 100644 --- a/bus/test-client.h +++ b/bus/test-client.h @@ -6,17 +6,17 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #ifndef __BUS_TEST_CLIENT_H_ diff --git a/bus/test-matchrule.c b/bus/test-matchrule.c index 07df607e6..d85fc90c8 100644 --- a/bus/test-matchrule.c +++ b/bus/test-matchrule.c @@ -20,7 +20,9 @@ int main(gint argc, gchar **argv) { BusMatchRule *rule, *rule1; +#if !GLIB_CHECK_VERSION(2,35,0) g_type_init (); +#endif rule = bus_match_rule_new (" type='signal' , interface = 'org.freedesktop.IBus' "); g_assert (rule->message_type == G_DBUS_MESSAGE_TYPE_SIGNAL); @@ -55,6 +57,10 @@ main(gint argc, gchar **argv) rule = bus_match_rule_new ("type='method_call',interface='org.freedesktop.IBus "); g_assert (rule == NULL); + + rule = bus_match_rule_new ("eavesdrop=true"); + g_assert (rule != NULL); + g_object_unref (rule); return 0; } diff --git a/bus/test-registry.c b/bus/test-registry.c deleted file mode 100644 index 97f05790c..000000000 --- a/bus/test-registry.c +++ /dev/null @@ -1,10 +0,0 @@ -/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ -#include "registry.h" - -int main() -{ - g_type_init (); - BusRegistry *registry = bus_registry_new (); - g_object_unref (registry); - return 0; -} diff --git a/bus/test-stress.c b/bus/test-stress.c index b05129554..6393af5f9 100644 --- a/bus/test-stress.c +++ b/bus/test-stress.c @@ -6,7 +6,7 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -14,16 +14,15 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include #include #include #include -#include #include #include "test-client.h" @@ -33,7 +32,7 @@ static gboolean _sleep_cb (gpointer user_data) { - gtk_main_quit (); + ibus_quit (); return FALSE; } @@ -41,7 +40,7 @@ static void _sleep (guint millisecond) { g_timeout_add (millisecond, (GSourceFunc) _sleep_cb, NULL); - gtk_main (); + ibus_main (); } /* ibus stress test @@ -61,8 +60,7 @@ main (gint argc, gchar **argv) int send_key_num = 0; setlocale (LC_ALL, ""); - gtk_set_locale (); - gtk_init (&argc, &argv); + ibus_init (); /* need to set active engine */ client = bus_test_client_new (); diff --git a/bus/types.h b/bus/types.h index efb914f70..27e6d1fe1 100644 --- a/bus/types.h +++ b/bus/types.h @@ -7,17 +7,17 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #ifndef __BUS_TYPES_H_ #define __BUS_TYPES_H_ diff --git a/client/Makefile.am b/client/Makefile.am index 535610245..1744518ca 100644 --- a/client/Makefile.am +++ b/client/Makefile.am @@ -3,22 +3,22 @@ # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang -# Copyright (c) 2007-2010 Red Hat, Inc. +# Copyright (c) 2007-2020 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA if ENABLE_GTK2 GTK2 = gtk2 @@ -28,14 +28,24 @@ if ENABLE_GTK3 GTK3 = gtk3 endif +if ENABLE_GTK4 +GTK4 = gtk4 +endif + if ENABLE_XIM X11 = x11 endif +if ENABLE_WAYLAND +WAYLAND = wayland +endif + SUBDIRS = \ $(GTK2) \ $(GTK3) \ + $(GTK4) \ $(X11) \ + $(WAYLAND) \ $(NULL) -include $(top_srcdir)/git.mk diff --git a/client/gtk2/Makefile.am b/client/gtk2/Makefile.am index 471a11c66..e10635f40 100644 --- a/client/gtk2/Makefile.am +++ b/client/gtk2/Makefile.am @@ -8,21 +8,21 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la -INCLUDES = \ +AM_CPPFLAGS = \ -I$(top_srcdir)/src \ -I$(top_builddir)/src \ $(NULL) diff --git a/client/gtk2/ibusim.c b/client/gtk2/ibusim.c index 13c738002..55609ce73 100644 --- a/client/gtk2/ibusim.c +++ b/client/gtk2/ibusim.c @@ -2,22 +2,22 @@ /* vim:set et ts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2020 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include @@ -41,9 +41,7 @@ static const GtkIMContextInfo *info_list[] = { G_MODULE_EXPORT const gchar* g_module_check_init (GModule *module) { - return glib_check_version (GLIB_MAJOR_VERSION, - GLIB_MINOR_VERSION, - 0); + return NULL; } G_MODULE_EXPORT void diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c index 1fcd2b2c2..c7f232936 100644 --- a/client/gtk2/ibusimcontext.c +++ b/client/gtk2/ibusimcontext.c @@ -1,23 +1,24 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2013 Peng Huang + * Copyright (C) 2015-2022 Takao Fujiwara + * Copyright (C) 2008-2022 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #ifdef HAVE_CONFIG_H @@ -30,6 +31,21 @@ #include #include "ibusimcontext.h" +#ifdef GDK_WINDOWING_WAYLAND +#if GTK_CHECK_VERSION (3, 98, 4) +#include +#else +#include +#endif +#endif + +#ifdef GDK_WINDOWING_X11 +#if GTK_CHECK_VERSION (3, 98, 4) +#include +#include +#endif +#endif + #if !GTK_CHECK_VERSION (2, 91, 0) # define DEPRECATED_GDK_KEYSYMS 1 #endif @@ -40,12 +56,18 @@ # define IDEBUG(a...) #endif +#define MAX_QUEUED_EVENTS 20 + struct _IBusIMContext { GtkIMContext parent; /* instance members */ GtkIMContext *slave; +#if GTK_CHECK_VERSION (3, 98, 4) + GtkWidget *client_window; +#else GdkWindow *client_window; +#endif IBusInputContext *ibuscontext; @@ -54,6 +76,7 @@ struct _IBusIMContext { PangoAttrList *preedit_attrs; gint preedit_cursor_pos; gboolean preedit_visible; + guint preedit_mode; GdkRectangle cursor_area; gboolean has_focus; @@ -63,6 +86,16 @@ struct _IBusIMContext { /* cancellable */ GCancellable *cancellable; + GQueue *events_queue; + +#if GTK_CHECK_VERSION (3, 98, 4) + GdkSurface *surface; + GdkDevice *device; + double x; + double y; +#else + gboolean use_button_press_event; +#endif }; struct _IBusIMContextClass { @@ -77,26 +110,41 @@ static guint _signal_preedit_end_id = 0; static guint _signal_delete_surrounding_id = 0; static guint _signal_retrieve_surrounding_id = 0; +#if GTK_CHECK_VERSION (3, 98, 4) +static gboolean _use_sync_mode = TRUE; +#else static const gchar *_no_snooper_apps = NO_SNOOPER_APPS; static gboolean _use_key_snooper = ENABLE_SNOOPER; static guint _key_snooper_id = 0; static gboolean _use_sync_mode = FALSE; +#endif + +static const gchar *_discard_password_apps = ""; +static gboolean _use_discard_password = FALSE; static GtkIMContext *_focus_im_context = NULL; static IBusInputContext *_fake_context = NULL; +#if !GTK_CHECK_VERSION (3, 98, 4) static GdkWindow *_input_window = NULL; static GtkWidget *_input_widget = NULL; +#endif /* functions prototype */ static void ibus_im_context_class_init (IBusIMContextClass *class); static void ibus_im_context_class_fini (IBusIMContextClass *class); static void ibus_im_context_init (GObject *obj); +static void ibus_im_context_notify (GObject *obj, + GParamSpec *pspec); static void ibus_im_context_finalize (GObject *obj); static void ibus_im_context_reset (GtkIMContext *context); static gboolean ibus_im_context_filter_keypress (GtkIMContext *context, +#if GTK_CHECK_VERSION (3, 98, 4) + GdkEvent *key); +#else GdkEventKey *key); +#endif static void ibus_im_context_focus_in (GtkIMContext *context); static void ibus_im_context_focus_out (GtkIMContext *context); static void ibus_im_context_get_preedit_string @@ -104,23 +152,43 @@ static void ibus_im_context_get_preedit_string gchar **str, PangoAttrList **attrs, gint *cursor_pos); +#if GTK_CHECK_VERSION (3, 98, 4) +static void ibus_im_context_set_client_widget + (GtkIMContext *context, + GtkWidget *client); +#else static void ibus_im_context_set_client_window (GtkIMContext *context, GdkWindow *client); +#endif static void ibus_im_context_set_cursor_location (GtkIMContext *context, GdkRectangle *area); static void ibus_im_context_set_use_preedit (GtkIMContext *context, gboolean use_preedit); +#if !GTK_CHECK_VERSION (4, 1, 2) static void ibus_im_context_set_surrounding (GtkIMContext *slave, const gchar *text, - gint len, - gint cursor_index); - + int len, + int cursor_index); +#endif +static void ibus_im_context_set_surrounding_with_selection + (GtkIMContext *slave, + const gchar *text, + int len, + int cursor_index, + int anchor_index); /* static methods*/ +static void _ibus_context_update_preedit_text_cb + (IBusInputContext *ibuscontext, + IBusText *text, + gint cursor_pos, + gboolean visible, + guint mode, + IBusIMContext *ibusimcontext); static void _create_input_context (IBusIMContext *context); static gboolean _set_cursor_location_internal (IBusIMContext *context); @@ -147,13 +215,15 @@ static gboolean _slave_delete_surrounding_cb IBusIMContext *context); static void _request_surrounding_text (IBusIMContext *context); static void _create_fake_input_context (void); - +static gboolean _set_content_type (IBusIMContext *context); static GType _ibus_type_im_context = 0; static GtkIMContextClass *parent_class = NULL; static IBusBus *_bus = NULL; +static guint _daemon_name_watch_id = 0; +static gboolean _daemon_is_running = FALSE; void ibus_im_context_register_type (GTypeModule *type_module) @@ -213,6 +283,7 @@ ibus_im_context_new (void) return IBUS_IM_CONTEXT (obj); } +#if !GTK_CHECK_VERSION (3, 98, 4) static gboolean _focus_in_cb (GtkWidget *widget, GdkEventFocus *event, @@ -234,6 +305,82 @@ _focus_out_cb (GtkWidget *widget, } return FALSE; } +#endif /* end of GTK_CHECK_VERSION (3, 98, 4) */ + +static gboolean +ibus_im_context_commit_event (IBusIMContext *ibusimcontext, +#if GTK_CHECK_VERSION (3, 98, 4) + GdkEvent *event) +#else + GdkEventKey *event) +#endif +{ + guint keyval = 0; + GdkModifierType state = 0; + int i; + GdkModifierType no_text_input_mask; + gunichar ch; + +#if GTK_CHECK_VERSION (3, 98, 4) + if (gdk_event_get_event_type (event) == GDK_KEY_RELEASE) + return FALSE; + keyval = gdk_key_event_get_keyval (event); + state = gdk_event_get_modifier_state (event); +#else + if (event->type == GDK_KEY_RELEASE) + return FALSE; + keyval = event->keyval; + state = event->state; +#endif + + /* Ignore modifier key presses */ + for (i = 0; i < G_N_ELEMENTS (IBUS_COMPOSE_IGNORE_KEYLIST); i++) + if (keyval == IBUS_COMPOSE_IGNORE_KEYLIST[i]) + return FALSE; +#if GTK_CHECK_VERSION (3, 98, 4) + no_text_input_mask = GDK_MODIFIER_MASK; +#elif GTK_CHECK_VERSION (3, 4, 0) + no_text_input_mask = gdk_keymap_get_modifier_mask ( + gdk_keymap_get_for_display (gdk_display_get_default ()), + GDK_MODIFIER_INTENT_NO_TEXT_INPUT); +#else +# ifndef GDK_WINDOWING_QUARTZ +# define _IBUS_NO_TEXT_INPUT_MOD_MASK (GDK_MOD1_MASK | GDK_CONTROL_MASK) +# else +# define _IBUS_NO_TEXT_INPUT_MOD_MASK (GDK_MOD2_MASK | GDK_CONTROL_MASK) +# endif + + no_text_input_mask = _IBUS_NO_TEXT_INPUT_MOD_MASK; + +# undef _IBUS_NO_TEXT_INPUT_MOD_MASK +#endif + if (state & no_text_input_mask || + keyval == GDK_KEY_Return || + keyval == GDK_KEY_ISO_Enter || + keyval == GDK_KEY_KP_Enter) { + return FALSE; + } + ch = ibus_keyval_to_unicode (keyval); + if (ch != 0 && !g_unichar_iscntrl (ch)) { + IBusText *text = ibus_text_new_from_unichar (ch); + g_signal_emit (ibusimcontext, _signal_commit_id, 0, text->text); + g_object_unref (text); + _request_surrounding_text (ibusimcontext); +#if !GTK_CHECK_VERSION (3, 98, 4) + /* Avoid a loop with _ibus_context_forward_key_event_cb() */ + event->state |= IBUS_HANDLED_MASK; +#endif + return TRUE; + } + return FALSE; +} + +struct _ProcessKeyEventData { + GdkEvent *event; + IBusIMContext *ibusimcontext; +}; + +typedef struct _ProcessKeyEventData ProcessKeyEventData; static void _process_key_event_done (GObject *object, @@ -241,9 +388,15 @@ _process_key_event_done (GObject *object, gpointer user_data) { IBusInputContext *context = (IBusInputContext *)object; - GdkEventKey *event = (GdkEventKey *) user_data; + ProcessKeyEventData *data = (ProcessKeyEventData *)user_data; + GdkEvent *event = data->event; +#if GTK_CHECK_VERSION (3, 98, 4) + IBusIMContext *ibusimcontext = data->ibusimcontext; +#endif GError *error = NULL; + + g_slice_free (ProcessKeyEventData, data); gboolean retval = ibus_input_context_process_key_event_async_finish ( context, res, @@ -255,10 +408,98 @@ _process_key_event_done (GObject *object, } if (retval == FALSE) { - event->state |= IBUS_IGNORED_MASK; - gdk_event_put ((GdkEvent *)event); +#if GTK_CHECK_VERSION (3, 98, 4) + g_return_if_fail (GTK_IS_IM_CONTEXT (ibusimcontext)); + gtk_im_context_filter_key ( + GTK_IM_CONTEXT (ibusimcontext), + gdk_event_get_event_type (event) == GDK_KEY_PRESS, + gdk_event_get_surface (event), + gdk_event_get_device (event), + gdk_event_get_time (event), + gdk_key_event_get_keycode (event), + gdk_event_get_modifier_state (event) | IBUS_IGNORED_MASK, + 0); +#else + ((GdkEventKey *)event)->state |= IBUS_IGNORED_MASK; + gdk_event_put (event); +#endif } - gdk_event_free ((GdkEvent *)event); +#if GTK_CHECK_VERSION (3, 98, 4) + gdk_event_unref (event); +#else + gdk_event_free (event); +#endif +} + +static gboolean +_process_key_event (IBusInputContext *context, +#if GTK_CHECK_VERSION (3, 98, 4) + GdkEvent *event, +#else + GdkEventKey *event, +#endif + IBusIMContext *ibusimcontext) +{ + guint state; + guint keyval = 0; + guint16 hardware_keycode = 0; + guint keycode = 0; + gboolean retval = FALSE; + +#if GTK_CHECK_VERSION (3, 98, 4) + GdkModifierType gdkstate = gdk_event_get_modifier_state (event); + state = (uint)gdkstate; + if (gdk_event_get_event_type (event) == GDK_KEY_RELEASE) + state |= IBUS_RELEASE_MASK; + keyval = gdk_key_event_get_keyval (event); + hardware_keycode = gdk_key_event_get_keycode (event); +#else + state = event->state; + if (event->type == GDK_KEY_RELEASE) + state |= IBUS_RELEASE_MASK; + keyval = event->keyval; + hardware_keycode = event->hardware_keycode; +#endif + keycode = hardware_keycode; + + if (_use_sync_mode) { + retval = ibus_input_context_process_key_event (context, + keyval, + keycode - 8, + state); + } + else { + ProcessKeyEventData *data = g_slice_new0 (ProcessKeyEventData); +#if GTK_CHECK_VERSION (3, 98, 4) + data->event = gdk_event_ref (event); +#else + data->event = gdk_event_copy ((GdkEvent *)event); +#endif + data->ibusimcontext = ibusimcontext; + ibus_input_context_process_key_event_async (context, + keyval, + keycode - 8, + state, + -1, + NULL, + _process_key_event_done, + data); + + retval = TRUE; + } + + /* GTK4 does not provide gtk_key_snooper_install() and also + * GtkIMContextClass->filter_keypress() cannot send the updated + * GdkEventKey so event->state is not updated here in GTK4. + */ +#if !GTK_CHECK_VERSION (3, 98, 4) + if (retval) + event->state |= IBUS_HANDLED_MASK; + else + event->state |= IBUS_IGNORED_MASK; +#endif + + return retval; } @@ -278,14 +519,45 @@ _request_surrounding_text (IBusIMContext *context) g_signal_emit (context, _signal_retrieve_surrounding_id, 0, &return_value); if (!return_value) { - context->caps &= ~IBUS_CAP_SURROUNDING_TEXT; - ibus_input_context_set_capabilities (context->ibuscontext, - context->caps); + /* #2054 firefox::IMContextWrapper::GetCurrentParagraph() could + * fail with the first typing on firefox but it succeeds with + * the second typing. + */ + g_warning ("%s has no capability of surrounding-text feature", + g_get_prgname ()); } } } +static gboolean +_set_content_type (IBusIMContext *context) +{ +#if GTK_CHECK_VERSION (3, 6, 0) + if (context->ibuscontext != NULL) { + GtkInputPurpose purpose; + GtkInputHints hints; + + g_object_get (G_OBJECT (context), + "input-purpose", &purpose, + "input-hints", &hints, + NULL); + if (_use_discard_password) { + if (purpose == GTK_INPUT_PURPOSE_PASSWORD || + purpose == GTK_INPUT_PURPOSE_PIN) { + return FALSE; + } + } + ibus_input_context_set_content_type (context->ibuscontext, + purpose, + hints); + } +#endif + return TRUE; +} + + +#if !GTK_CHECK_VERSION (3, 98, 4) static gint _key_snooper_cb (GtkWidget *widget, GdkEventKey *event, @@ -294,14 +566,17 @@ _key_snooper_cb (GtkWidget *widget, IDEBUG ("%s", __FUNCTION__); gboolean retval = FALSE; - IBusIMContext *ibusimcontext = (IBusIMContext *) _focus_im_context; + IBusIMContext *ibusimcontext = NULL; IBusInputContext *ibuscontext = NULL; - if (ibusimcontext != NULL && - ibusimcontext->has_focus == TRUE) { - /* has IC with focus and use_key_snooper is true */ - if (_use_key_snooper) - ibuscontext = ibusimcontext->ibuscontext; + if (!_use_key_snooper) + return FALSE; + + if (_focus_im_context != NULL && + ((IBusIMContext *) _focus_im_context)->has_focus == TRUE) { + ibusimcontext = (IBusIMContext *) _focus_im_context; + /* has IC with focus */ + ibuscontext = ibusimcontext->ibuscontext; } else { /* If no IC has focus, and fake IC has been created, then pass key events to fake IC. */ @@ -372,46 +647,33 @@ _key_snooper_cb (GtkWidget *widget, } while (0); - if (ibusimcontext != NULL) { + if (ibusimcontext != NULL && event->type == GDK_KEY_PRESS) { + /* "retrieve-surrounding" signal sometimes calls unref by + * gtk_im_multicontext_get_slave() because priv->context_id is not + * the latest than global_context_id in GtkIMMulticontext. + * Since _focus_im_context is gotten by the focus_in event, + * it would be good to call ref here. + * + * Most release key events would be redundant from + * _ibus_context_forward_key_event_cb (). + */ + g_object_ref (ibusimcontext); _request_surrounding_text (ibusimcontext); ibusimcontext->time = event->time; } - guint state = event->state; - if (event->type == GDK_KEY_RELEASE) { - state |= IBUS_RELEASE_MASK; - } - - if (_use_sync_mode) { - retval = ibus_input_context_process_key_event ( - ibuscontext, - event->keyval, - event->hardware_keycode - 8, - state); - } - else { - ibus_input_context_process_key_event_async ( - ibuscontext, - event->keyval, - event->hardware_keycode - 8, - state, - -1, - NULL, - _process_key_event_done, - gdk_event_copy ((GdkEvent *) event)); - retval = TRUE; + retval = _process_key_event (ibuscontext, event, ibusimcontext); - } - - if (retval) { - event->state |= IBUS_HANDLED_MASK; - } - else { - event->state |= IBUS_IGNORED_MASK; + if (ibusimcontext != NULL && event->type == GDK_KEY_PRESS) { + /* unref ibusimcontext could call ibus_im_context_finalize here + * because "retrieve-surrounding" signal could call unref. + */ + g_object_unref (ibusimcontext); } return retval; } +#endif static gboolean _get_boolean_env(const gchar *name, @@ -432,6 +694,33 @@ _get_boolean_env(const gchar *name, return TRUE; } +static void +daemon_name_appeared (GDBusConnection *connection, + const gchar *name, + const gchar *owner, + gpointer data) +{ + if (!g_strcmp0 (ibus_bus_get_service_name (_bus), IBUS_SERVICE_PORTAL)) { + _daemon_is_running = TRUE; + return; + } + /* If ibus-daemon is running and run ssh -X localhost, + * daemon_name_appeared() is called but ibus_get_address() == NULL + * because the hostname and display number are different between + * ibus-daemon and clients. So IBusBus would not be connected and + * ibusimcontext->ibuscontext == NULL and ibusimcontext->events_queue + * could go beyond MAX_QUEUED_EVENTS . */ + _daemon_is_running = (ibus_get_address () != NULL); +} + +static void +daemon_name_vanished (GDBusConnection *connection, + const gchar *name, + gpointer data) +{ + _daemon_is_running = FALSE; +} + static void ibus_im_context_class_init (IBusIMContextClass *class) { @@ -447,10 +736,20 @@ ibus_im_context_class_init (IBusIMContextClass *class) im_context_class->focus_out = ibus_im_context_focus_out; im_context_class->filter_keypress = ibus_im_context_filter_keypress; im_context_class->get_preedit_string = ibus_im_context_get_preedit_string; +#if GTK_CHECK_VERSION (3, 98, 4) + im_context_class->set_client_widget = ibus_im_context_set_client_widget; +#else im_context_class->set_client_window = ibus_im_context_set_client_window; +#endif im_context_class->set_cursor_location = ibus_im_context_set_cursor_location; im_context_class->set_use_preedit = ibus_im_context_set_use_preedit; +#if GTK_CHECK_VERSION (4, 1, 2) + im_context_class->set_surrounding_with_selection + = ibus_im_context_set_surrounding_with_selection; +#else im_context_class->set_surrounding = ibus_im_context_set_surrounding; +#endif + gobject_class->notify = ibus_im_context_notify; gobject_class->finalize = ibus_im_context_finalize; _signal_commit_id = @@ -477,32 +776,58 @@ ibus_im_context_class_init (IBusIMContextClass *class) g_signal_lookup ("retrieve-surrounding", G_TYPE_FROM_CLASS (class)); g_assert (_signal_retrieve_surrounding_id != 0); +#if GTK_CHECK_VERSION (3, 98, 4) + _use_sync_mode = _get_boolean_env ("IBUS_ENABLE_SYNC_MODE", TRUE); +#else _use_key_snooper = !_get_boolean_env ("IBUS_DISABLE_SNOOPER", !(ENABLE_SNOOPER)); _use_sync_mode = _get_boolean_env ("IBUS_ENABLE_SYNC_MODE", FALSE); +#endif + _use_discard_password = _get_boolean_env ("IBUS_DISCARD_PASSWORD", FALSE); + +#define CHECK_APP_IN_CSV_ENV_VARIABLES(retval, \ + env_apps, \ + fallback_apps, \ + value_if_found) \ +{ \ + const gchar * prgname = g_get_prgname (); \ + gchar **p; \ + gchar ** apps; \ + if (g_getenv ((#env_apps))) { \ + fallback_apps = g_getenv (#env_apps); \ + } \ + apps = g_strsplit ((fallback_apps), ",", 0); \ + for (p = apps; *p != NULL; p++) { \ + if (g_regex_match_simple (*p, prgname, 0, 0)) { \ + retval = (value_if_found); \ + break; \ + } \ + } \ + g_strfreev (apps); \ +} +#if !GTK_CHECK_VERSION (3, 98, 4) /* env IBUS_DISABLE_SNOOPER does not exist */ if (_use_key_snooper) { /* disable snooper if app is in _no_snooper_apps */ - const gchar * prgname = g_get_prgname (); - if (g_getenv ("IBUS_NO_SNOOPER_APPS")) { - _no_snooper_apps = g_getenv ("IBUS_NO_SNOOPER_APPS"); - } - gchar **p; - gchar ** apps = g_strsplit (_no_snooper_apps, ",", 0); - for (p = apps; *p != NULL; p++) { - if (g_regex_match_simple (*p, prgname, 0, 0)) { - _use_key_snooper = FALSE; - break; - } - } - g_strfreev (apps); + CHECK_APP_IN_CSV_ENV_VARIABLES (_use_key_snooper, + IBUS_NO_SNOOPER_APPS, + _no_snooper_apps, + FALSE); } +#endif + if (!_use_discard_password) { + CHECK_APP_IN_CSV_ENV_VARIABLES (_use_discard_password, + IBUS_DISCARD_PASSWORD_APPS, + _discard_password_apps, + TRUE); + } + +#undef CHECK_APP_IN_CSV_ENV_VARIABLES /* init bus object */ if (_bus == NULL) { - ibus_set_display (gdk_display_get_name (gdk_display_get_default ())); - _bus = ibus_bus_new (); + _bus = ibus_bus_new_async_client (); /* init the global fake context */ if (ibus_bus_is_connected (_bus)) { @@ -513,47 +838,41 @@ ibus_im_context_class_init (IBusIMContextClass *class) } +#if !GTK_CHECK_VERSION (3, 98, 4) /* always install snooper */ - if (_key_snooper_id == 0) + if (_key_snooper_id == 0) { +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" _key_snooper_id = gtk_key_snooper_install (_key_snooper_cb, NULL); +#pragma GCC diagnostic pop + } +#endif + + _daemon_name_watch_id = g_bus_watch_name (G_BUS_TYPE_SESSION, + ibus_bus_get_service_name (_bus), + G_BUS_NAME_WATCHER_FLAGS_NONE, + daemon_name_appeared, + daemon_name_vanished, + NULL, + NULL); } static void ibus_im_context_class_fini (IBusIMContextClass *class) { +#if !GTK_CHECK_VERSION (3, 98, 4) if (_key_snooper_id != 0) { IDEBUG ("snooper is terminated."); +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" gtk_key_snooper_remove (_key_snooper_id); +#pragma GCC diagnostic pop _key_snooper_id = 0; } -} - -/* Copied from gtk+2.0-2.20.1/modules/input/imcedilla.c to fix crosbug.com/11421. - * Overwrite the original Gtk+'s compose table in gtk+-2.x.y/gtk/gtkimcontextsimple.c. */ - -/* The difference between this and the default input method is the handling - * of C+acute - this method produces C WITH CEDILLA rather than C WITH ACUTE. - * For languages that use CCedilla and not acute, this is the preferred mapping, - * and is particularly important for pt_BR, where the us-intl keyboard is - * used extensively. - */ -static guint16 cedilla_compose_seqs[] = { -#ifdef DEPRECATED_GDK_KEYSYMS - GDK_dead_acute, GDK_C, 0, 0, 0, 0x00C7, /* LATIN_CAPITAL_LETTER_C_WITH_CEDILLA */ - GDK_dead_acute, GDK_c, 0, 0, 0, 0x00E7, /* LATIN_SMALL_LETTER_C_WITH_CEDILLA */ - GDK_Multi_key, GDK_apostrophe, GDK_C, 0, 0, 0x00C7, /* LATIN_CAPITAL_LETTER_C_WITH_CEDILLA */ - GDK_Multi_key, GDK_apostrophe, GDK_c, 0, 0, 0x00E7, /* LATIN_SMALL_LETTER_C_WITH_CEDILLA */ - GDK_Multi_key, GDK_C, GDK_apostrophe, 0, 0, 0x00C7, /* LATIN_CAPITAL_LETTER_C_WITH_CEDILLA */ - GDK_Multi_key, GDK_c, GDK_apostrophe, 0, 0, 0x00E7, /* LATIN_SMALL_LETTER_C_WITH_CEDILLA */ -#else - GDK_KEY_dead_acute, GDK_KEY_C, 0, 0, 0, 0x00C7, /* LATIN_CAPITAL_LETTER_C_WITH_CEDILLA */ - GDK_KEY_dead_acute, GDK_KEY_c, 0, 0, 0, 0x00E7, /* LATIN_SMALL_LETTER_C_WITH_CEDILLA */ - GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_C, 0, 0, 0x00C7, /* LATIN_CAPITAL_LETTER_C_WITH_CEDILLA */ - GDK_KEY_Multi_key, GDK_KEY_apostrophe, GDK_KEY_c, 0, 0, 0x00E7, /* LATIN_SMALL_LETTER_C_WITH_CEDILLA */ - GDK_KEY_Multi_key, GDK_KEY_C, GDK_KEY_apostrophe, 0, 0, 0x00C7, /* LATIN_CAPITAL_LETTER_C_WITH_CEDILLA */ - GDK_KEY_Multi_key, GDK_KEY_c, GDK_KEY_apostrophe, 0, 0, 0x00E7, /* LATIN_SMALL_LETTER_C_WITH_CEDILLA */ #endif -}; + + g_bus_unwatch_name (_daemon_name_watch_id); +} static void ibus_im_context_init (GObject *obj) @@ -569,6 +888,7 @@ ibus_im_context_init (GObject *obj) ibusimcontext->preedit_attrs = NULL; ibusimcontext->preedit_cursor_pos = 0; ibusimcontext->preedit_visible = FALSE; + ibusimcontext->preedit_mode = IBUS_ENGINE_PREEDIT_CLEAR; // Init cursor area ibusimcontext->cursor_area.x = -1; @@ -585,13 +905,10 @@ ibus_im_context_init (GObject *obj) ibusimcontext->caps = IBUS_CAP_PREEDIT_TEXT | IBUS_CAP_FOCUS; #endif + ibusimcontext->events_queue = g_queue_new (); // Create slave im context ibusimcontext->slave = gtk_im_context_simple_new (); - gtk_im_context_simple_add_table (GTK_IM_CONTEXT_SIMPLE (ibusimcontext->slave), - cedilla_compose_seqs, - 4, - G_N_ELEMENTS (cedilla_compose_seqs) / (4 + 2)); g_signal_connect (ibusimcontext->slave, "commit", @@ -625,6 +942,18 @@ ibus_im_context_init (GObject *obj) g_signal_connect (_bus, "connected", G_CALLBACK (_bus_connected_cb), obj); } +static void +ibus_im_context_notify (GObject *obj, + GParamSpec *pspec) +{ + IDEBUG ("%s", __FUNCTION__); + + if (g_strcmp0 (pspec->name, "input-purpose") == 0 || + g_strcmp0 (pspec->name, "input-hints") == 0) { + _set_content_type (IBUS_IM_CONTEXT (obj)); + } +} + static void ibus_im_context_finalize (GObject *obj) { @@ -634,11 +963,22 @@ ibus_im_context_finalize (GObject *obj) g_signal_handlers_disconnect_by_func (_bus, G_CALLBACK (_bus_connected_cb), obj); + if (ibusimcontext->cancellable != NULL) { + /* Cancel any ongoing create input context request */ + g_cancellable_cancel (ibusimcontext->cancellable); + g_object_unref (ibusimcontext->cancellable); + ibusimcontext->cancellable = NULL; + } + if (ibusimcontext->ibuscontext) { ibus_proxy_destroy ((IBusProxy *)ibusimcontext->ibuscontext); } +#if GTK_CHECK_VERSION (3, 98, 4) + ibus_im_context_set_client_widget ((GtkIMContext *)ibusimcontext, NULL); +#else ibus_im_context_set_client_window ((GtkIMContext *)ibusimcontext, NULL); +#endif if (ibusimcontext->slave) { g_object_unref (ibusimcontext->slave); @@ -653,107 +993,178 @@ ibus_im_context_finalize (GObject *obj) pango_attr_list_unref (ibusimcontext->preedit_attrs); } +#if GTK_CHECK_VERSION (3, 98, 4) + g_queue_free_full (ibusimcontext->events_queue, + (GDestroyNotify)gdk_event_unref); +#else + g_queue_free_full (ibusimcontext->events_queue, + (GDestroyNotify)gdk_event_free); +#endif + G_OBJECT_CLASS(parent_class)->finalize (obj); } +static void +ibus_im_context_clear_preedit_text (IBusIMContext *ibusimcontext) +{ + gchar *preedit_string = NULL; + g_assert (ibusimcontext->ibuscontext); + if (ibusimcontext->preedit_visible && + ibusimcontext->preedit_mode == IBUS_ENGINE_PREEDIT_COMMIT) { + preedit_string = g_strdup (ibusimcontext->preedit_string); + } + + /* Clear the preedit_string but keep the preedit_cursor_pos and + * preedit_visible because a time lag could happen, firefox commit + * the preedit text before the preedit text is cleared and it cause + * a double commits of the Hangul preedit in firefox if the preedit + * would be located on the URL bar and click on anywhere of firefox + * out of the URL bar. + */ + _ibus_context_update_preedit_text_cb (ibusimcontext->ibuscontext, + ibus_text_new_from_string (""), + ibusimcontext->preedit_cursor_pos, + ibusimcontext->preedit_visible, + IBUS_ENGINE_PREEDIT_CLEAR, + ibusimcontext); + if (preedit_string) { + g_signal_emit (ibusimcontext, _signal_commit_id, 0, preedit_string); + g_free (preedit_string); + _request_surrounding_text (ibusimcontext); + } +} + static gboolean ibus_im_context_filter_keypress (GtkIMContext *context, +#if GTK_CHECK_VERSION (3, 98, 4) + GdkEvent *event) +#else GdkEventKey *event) +#endif { IDEBUG ("%s", __FUNCTION__); IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (context); - if (G_LIKELY (ibusimcontext->ibuscontext && ibusimcontext->has_focus)) { - /* If context does not have focus, ibus will process key event in sync mode. - * It is a workaround for increase search in treeview. - */ - gboolean retval = FALSE; - - if (event->state & IBUS_HANDLED_MASK) - return TRUE; - - if (event->state & IBUS_IGNORED_MASK) - return gtk_im_context_filter_keypress (ibusimcontext->slave, event); + if (!_daemon_is_running) + return gtk_im_context_filter_keypress (ibusimcontext->slave, event); - /* XXX it is a workaround for some applications do not set client window. */ - if (ibusimcontext->client_window == NULL && event->window != NULL) - gtk_im_context_set_client_window ((GtkIMContext *)ibusimcontext, event->window); + /* If context does not have focus, ibus will process key event in + * sync mode. It is a workaround for increase search in treeview. + */ + if (!ibusimcontext->has_focus) + return gtk_im_context_filter_keypress (ibusimcontext->slave, event); - _request_surrounding_text (ibusimcontext); +#if GTK_CHECK_VERSION (3, 98, 4) + { + GdkModifierType state = gdk_event_get_modifier_state (event); + if (state & IBUS_HANDLED_MASK) + return TRUE; + if (state & IBUS_IGNORED_MASK) + return ibus_im_context_commit_event (ibusimcontext, event); + } +#else + if (event->state & IBUS_HANDLED_MASK) + return TRUE; - if (ibusimcontext != NULL) { - ibusimcontext->time = event->time; - } + /* Do not call gtk_im_context_filter_keypress() because + * gtk_im_context_simple_filter_keypress() binds Ctrl-Shift-u + */ + if (event->state & IBUS_IGNORED_MASK) + return ibus_im_context_commit_event (ibusimcontext, event); + + /* XXX it is a workaround for some applications do not set client + * window. */ + if (ibusimcontext->client_window == NULL && event->window != NULL) + gtk_im_context_set_client_window ((GtkIMContext *)ibusimcontext, + event->window); +#endif - guint state = event->state; - if (event->type == GDK_KEY_RELEASE) { - state |= IBUS_RELEASE_MASK; - } + _request_surrounding_text (ibusimcontext); - if (_use_sync_mode) { - retval = ibus_input_context_process_key_event ( - ibusimcontext->ibuscontext, - event->keyval, - event->hardware_keycode - 8, - state); - } - else { - ibus_input_context_process_key_event_async ( - ibusimcontext->ibuscontext, - event->keyval, - event->hardware_keycode - 8, - state, - -1, - NULL, - _process_key_event_done, - gdk_event_copy ((GdkEvent *) event)); - retval = TRUE; - } +#if GTK_CHECK_VERSION (3, 98, 4) + ibusimcontext->time = gdk_event_get_time (event); + ibusimcontext->surface= gdk_event_get_surface (event); + ibusimcontext->device = gdk_event_get_device (event); + gdk_event_get_position (event, &ibusimcontext->x, &ibusimcontext->y); +#else + ibusimcontext->time = event->time; +#endif - if (retval) { - event->state |= IBUS_HANDLED_MASK; + if (ibusimcontext->ibuscontext) { + if (_process_key_event (ibusimcontext->ibuscontext, + event, + ibusimcontext)) { return TRUE; - } - else { - event->state |= IBUS_IGNORED_MASK; - return gtk_im_context_filter_keypress (ibusimcontext->slave, event); + } else { + return gtk_im_context_filter_keypress (ibusimcontext->slave, + event); } } - else { - return gtk_im_context_filter_keypress (ibusimcontext->slave, event); + + /* At this point we _should_ be waiting for the IBus context to be + * created or the connection to IBus to be established. If that's + * the case we queue events to be processed when the IBus context + * is ready. */ + g_return_val_if_fail (ibusimcontext->cancellable != NULL || + ibus_bus_is_connected (_bus) == FALSE, + FALSE); + g_queue_push_tail (ibusimcontext->events_queue, +#if GTK_CHECK_VERSION (3, 98, 4) + gdk_event_ref (event)); +#else + gdk_event_copy ((GdkEvent *)event)); +#endif + + if (g_queue_get_length (ibusimcontext->events_queue) > MAX_QUEUED_EVENTS) { + g_warning ("Events queue growing too big, will start to drop."); +#if GTK_CHECK_VERSION (3, 98, 4) + gdk_event_unref ((GdkEvent *) + g_queue_pop_head (ibusimcontext->events_queue)); +#else + gdk_event_free ((GdkEvent *) + g_queue_pop_head (ibusimcontext->events_queue)); +#endif } + + return TRUE; } static void ibus_im_context_focus_in (GtkIMContext *context) { - IDEBUG ("%s", __FUNCTION__); - IBusIMContext *ibusimcontext = (IBusIMContext *) context; + GtkWidget *widget = NULL; + + IDEBUG ("%s", __FUNCTION__); if (ibusimcontext->has_focus) return; /* don't set focus on password entry */ +#if GTK_CHECK_VERSION (3, 98, 4) + widget = ibusimcontext->client_window; +#else if (ibusimcontext->client_window != NULL) { - GtkWidget *widget; - gdk_window_get_user_data (ibusimcontext->client_window, (gpointer *)&widget); - if (GTK_IS_ENTRY (widget) && - !gtk_entry_get_visibility (GTK_ENTRY (widget))) { - return; - } } +#endif - if (_focus_im_context != NULL) { - g_assert (_focus_im_context != context); - gtk_im_context_focus_out (_focus_im_context); - g_assert (_focus_im_context == NULL); + if (widget && GTK_IS_ENTRY (widget) && + !gtk_entry_get_visibility (GTK_ENTRY (widget))) { + return; } - else { + /* Do not call gtk_im_context_focus_out() here. + * google-chrome's notification popup window (Pushbullet) + * takes the focus and the popup window disappears. + * So other applications lose the focus because + * ibusimcontext->has_focus is FALSE if + * gtk_im_context_focus_out() is called here when + * _focus_im_context != context. + */ + if (_focus_im_context == NULL) { /* focus out fake context */ if (_fake_context != NULL) { ibus_input_context_focus_out (_fake_context); @@ -762,6 +1173,10 @@ ibus_im_context_focus_in (GtkIMContext *context) ibusimcontext->has_focus = TRUE; if (ibusimcontext->ibuscontext) { + if (!_set_content_type (ibusimcontext)) { + ibusimcontext->has_focus = FALSE; + return; + } ibus_input_context_focus_in (ibusimcontext->ibuscontext); } @@ -793,13 +1208,18 @@ ibus_im_context_focus_out (GtkIMContext *context) return; } - g_assert (context == _focus_im_context); - g_object_remove_weak_pointer ((GObject *) context, - (gpointer *) &_focus_im_context); - _focus_im_context = NULL; + /* If _use_discard_password is TRUE or GtkEntry has no visibility, + * _focus_im_context is NULL. + */ + if (_focus_im_context) { + g_object_remove_weak_pointer ((GObject *) context, + (gpointer *) &_focus_im_context); + _focus_im_context = NULL; + } ibusimcontext->has_focus = FALSE; if (ibusimcontext->ibuscontext) { + ibus_im_context_clear_preedit_text (ibusimcontext); ibus_input_context_focus_out (ibusimcontext->ibuscontext); } @@ -819,6 +1239,15 @@ ibus_im_context_reset (GtkIMContext *context) IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (context); if (ibusimcontext->ibuscontext) { + /* Commented out ibus_im_context_clear_preedit_text(). + * Hangul needs to receive the reset callback with button press + * but other IMEs should avoid to receive the reset callback + * by themselves. + * IBus uses button-press-event instead until GTK is fixed. + * https://gitlab.gnome.org/GNOME/gtk/issues/1534 + */ + if (_use_sync_mode) + ibus_im_context_clear_preedit_text (ibusimcontext); ibus_input_context_reset (ibusimcontext->ibuscontext); } gtk_im_context_reset (ibusimcontext->slave); @@ -865,29 +1294,131 @@ ibus_im_context_get_preedit_string (GtkIMContext *context, } +#if !GTK_CHECK_VERSION (3, 98, 4) +/* Use the button-press-event signal until GtkIMContext always emits the reset + * signal. + * https://gitlab.gnome.org/GNOME/gtk/merge_requests/460 + */ +static gboolean +ibus_im_context_button_press_event_cb (GtkWidget *widget, + GdkEventButton *event, + IBusIMContext *ibusimcontext) +{ + if (event->button != 1) + return FALSE; + + if (ibusimcontext->ibuscontext) { + ibus_im_context_clear_preedit_text (ibusimcontext); + ibus_input_context_reset (ibusimcontext->ibuscontext); + } + return FALSE; +} + static void -ibus_im_context_set_client_window (GtkIMContext *context, GdkWindow *client) +_connect_button_press_event (IBusIMContext *ibusimcontext, + gboolean do_connect) { + GtkWidget *widget = NULL; + + g_assert (ibusimcontext->client_window); + gdk_window_get_user_data (ibusimcontext->client_window, + (gpointer *)&widget); + /* firefox needs GtkWidget instead of GtkWindow */ + if (GTK_IS_WIDGET (widget)) { + if (do_connect) { + g_signal_connect ( + widget, + "button-press-event", + G_CALLBACK (ibus_im_context_button_press_event_cb), + ibusimcontext); + ibusimcontext->use_button_press_event = TRUE; + } else { + g_signal_handlers_disconnect_by_func ( + widget, + G_CALLBACK (ibus_im_context_button_press_event_cb), + ibusimcontext); + ibusimcontext->use_button_press_event = FALSE; + } + } +} +#endif + +#if GTK_CHECK_VERSION (3, 98, 4) +static void +ibus_im_context_set_client_widget (GtkIMContext *context, + GtkWidget *client) +#else +static void +ibus_im_context_set_client_window (GtkIMContext *context, + GdkWindow *client) +#endif +{ + IBusIMContext *ibusimcontext; + IDEBUG ("%s", __FUNCTION__); - IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (context); + ibusimcontext = IBUS_IM_CONTEXT (context); if (ibusimcontext->client_window) { +#if !GTK_CHECK_VERSION (3, 98, 4) + if (ibusimcontext->use_button_press_event && !_use_sync_mode) + _connect_button_press_event (ibusimcontext, FALSE); +#endif g_object_unref (ibusimcontext->client_window); ibusimcontext->client_window = NULL; } - if (client != NULL) + if (client != NULL) { ibusimcontext->client_window = g_object_ref (client); - +#if !GTK_CHECK_VERSION (3, 98, 4) + if (!ibusimcontext->use_button_press_event && !_use_sync_mode) + _connect_button_press_event (ibusimcontext, TRUE); +#endif + } +#if GTK_CHECK_VERSION (3, 98, 4) + if (ibusimcontext->slave) + gtk_im_context_set_client_widget (ibusimcontext->slave, client); +#else if (ibusimcontext->slave) gtk_im_context_set_client_window (ibusimcontext->slave, client); +#endif +} + +static void +_set_rect_scale_factor_with_window (GdkRectangle *area, +#if GTK_CHECK_VERSION (3, 98, 4) + GtkWidget *window) +#else + GdkWindow *window) +#endif +{ +#if GTK_CHECK_VERSION (3, 10, 0) + int scale_factor; + + g_assert (area); +#if GTK_CHECK_VERSION (3, 98, 4) + g_assert (GTK_IS_WIDGET (window)); + + scale_factor = gtk_widget_get_scale_factor (window); +#else + g_assert (GDK_IS_WINDOW (window)); + + scale_factor = gdk_window_get_scale_factor (window); +#endif + area->x *= scale_factor; + area->y *= scale_factor; + area->width *= scale_factor; + area->height *= scale_factor; +#endif } static gboolean _set_cursor_location_internal (IBusIMContext *ibusimcontext) { GdkRectangle area; +#if GTK_CHECK_VERSION (3, 98, 4) + GtkWidget *root; +#endif if(ibusimcontext->client_window == NULL || ibusimcontext->ibuscontext == NULL) { @@ -895,21 +1426,99 @@ _set_cursor_location_internal (IBusIMContext *ibusimcontext) } area = ibusimcontext->cursor_area; + +#ifdef GDK_WINDOWING_WAYLAND +#if GTK_CHECK_VERSION (3, 98, 4) + root = GTK_WIDGET (gtk_widget_get_root (ibusimcontext->client_window)); + /* FIXME: GTK_STYLE_CLASS_TITLEBAR is available in GTK3 but not GTK4. + * gtk_css_boxes_get_content_rect() is available in GTK4 but it's an + * internal API and calculate the window edge 32 in GTK3. + */ + area.y += 32; + area.width = 50; /* FIXME: Why 50 meets the cursor position? */ + area.height = gtk_widget_get_height (root); + area.height += 32; + if (GDK_IS_WAYLAND_DISPLAY (gdk_display_get_default ())) { + ibus_input_context_set_cursor_location_relative ( + ibusimcontext->ibuscontext, + area.x, + area.y, + area.width, + area.height); + return FALSE; + } +#else + if (GDK_IS_WAYLAND_DISPLAY (gdk_display_get_default ())) { + gdouble px, py; + GdkWindow *parent; + GdkWindow *window = ibusimcontext->client_window; + + while ((parent = gdk_window_get_effective_parent (window)) != NULL) { + gdk_window_coords_to_parent (window, area.x, area.y, &px, &py); + area.x = px; + area.y = py; + window = parent; + } + + _set_rect_scale_factor_with_window (&area, + ibusimcontext->client_window); + ibus_input_context_set_cursor_location_relative ( + ibusimcontext->ibuscontext, + area.x, + area.y, + area.width, + area.height); + return FALSE; + } +#endif +#endif + +#if GTK_CHECK_VERSION (3, 98, 4) +#elif GTK_CHECK_VERSION (2, 91, 0) if (area.x == -1 && area.y == -1 && area.width == 0 && area.height == 0) { -#if GTK_CHECK_VERSION (2, 91, 0) area.x = 0; area.y += gdk_window_get_height (ibusimcontext->client_window); + } #else + if (area.x == -1 && area.y == -1 && area.width == 0 && area.height == 0) { gint w, h; gdk_drawable_get_size (ibusimcontext->client_window, &w, &h); area.y += h; area.x = 0; -#endif } +#endif +#if GTK_CHECK_VERSION (3, 98, 4) +#if defined(GDK_WINDOWING_X11) + GdkDisplay *display = gtk_widget_get_display (ibusimcontext->client_window); + if (GDK_IS_X11_DISPLAY (display)) { + Display *xdisplay = gdk_x11_display_get_xdisplay (display); + Window root_window = gdk_x11_display_get_xrootwindow (display); + GtkNative *native = gtk_widget_get_native ( + ibusimcontext->client_window); + GdkSurface *surface = gtk_native_get_surface (native); + /* The window is the toplevel window but not the inner text widget. + * Unfortunatelly GTK4 cannot get the coordinate of the text widget. + */ + Window window = gdk_x11_surface_get_xid (surface); + Window child; + int x, y; + XTranslateCoordinates (xdisplay, window, root_window, + 0, 0, &x, &y, &child); + XWindowAttributes xwa; + XGetWindowAttributes (xdisplay, window, &xwa); + area.x = x - xwa.x + area.x; + area.y = y - xwa.y + area.y; + area.width = 50; /* FIXME: Why 50 meets the cursor position? */ + area.height = xwa.height; + } +#endif +#else gdk_window_get_root_coords (ibusimcontext->client_window, area.x, area.y, &area.x, &area.y); +#endif + _set_rect_scale_factor_with_window (&area, ibusimcontext->client_window); ibus_input_context_set_cursor_location (ibusimcontext->ibuscontext, area.x, area.y, @@ -925,12 +1534,17 @@ ibus_im_context_set_cursor_location (GtkIMContext *context, GdkRectangle *area) IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (context); +#if !GTK_CHECK_VERSION (3, 93, 0) + /* The area is the relative coordinates and this has to get the absolute + * ones in _set_cursor_location_internal() since GTK 4.0. + */ if (ibusimcontext->cursor_area.x == area->x && ibusimcontext->cursor_area.y == area->y && ibusimcontext->cursor_area.width == area->width && ibusimcontext->cursor_area.height == area->height) { return; } +#endif ibusimcontext->cursor_area = *area; _set_cursor_location_internal (ibusimcontext); gtk_im_context_set_cursor_location (ibusimcontext->slave, area); @@ -965,7 +1579,11 @@ get_selection_anchor_point (IBusIMContext *ibusimcontext, if (ibusimcontext->client_window == NULL) { return cursor_pos; } +#if GTK_CHECK_VERSION (3, 98, 4) + widget = ibusimcontext->client_window; +#else gdk_window_get_user_data (ibusimcontext->client_window, (gpointer *)&widget); +#endif if (!GTK_IS_TEXT_VIEW (widget)){ return cursor_pos; @@ -1016,11 +1634,27 @@ get_selection_anchor_point (IBusIMContext *ibusimcontext, return anchor; } +#if !GTK_CHECK_VERSION (4, 1, 2) static void ibus_im_context_set_surrounding (GtkIMContext *context, const gchar *text, - gint len, - gint cursor_index) + int len, + int cursor_index) +{ + ibus_im_context_set_surrounding_with_selection (context, + text, + len, + cursor_index, + cursor_index); +} +#endif + +static void +ibus_im_context_set_surrounding_with_selection (GtkIMContext *context, + const gchar *text, + int len, + int cursor_index, + int anchor_index) { g_return_if_fail (context != NULL); g_return_if_fail (IBUS_IS_IM_CONTEXT (context)); @@ -1042,18 +1676,26 @@ ibus_im_context_set_surrounding (GtkIMContext *context, ibustext = ibus_text_new_from_string (p); g_free (p); - guint anchor_pos = get_selection_anchor_point (ibusimcontext, - cursor_pos, - utf8_len); + gint anchor_pos = get_selection_anchor_point (ibusimcontext, + cursor_pos, + utf8_len); ibus_input_context_set_surrounding_text (ibusimcontext->ibuscontext, ibustext, cursor_pos, anchor_pos); } +#if GTK_CHECK_VERSION (4, 1, 2) + gtk_im_context_set_surrounding_with_selection (ibusimcontext->slave, + text, + len, + cursor_index, + anchor_index); +#else gtk_im_context_set_surrounding (ibusimcontext->slave, text, len, cursor_index); +#endif } static void @@ -1079,6 +1721,7 @@ _ibus_context_commit_text_cb (IBusInputContext *ibuscontext, _request_surrounding_text (ibusimcontext); } +#if !GTK_CHECK_VERSION (3, 98, 4) static gboolean _key_is_modifier (guint keyval) { @@ -1145,6 +1788,7 @@ _key_is_modifier (guint keyval) return FALSE; } } + /* Copy from gdk */ static GdkEventKey * _create_gdk_event (IBusIMContext *ibusimcontext, @@ -1209,7 +1853,11 @@ _create_gdk_event (IBusIMContext *ibusimcontext, if (event->state & GDK_CONTROL_MASK) { if ((c >= '@' && c < '\177') || c == ' ') c &= 0x1F; else if (c == '2') { +#if GLIB_CHECK_VERSION (2, 68, 0) + event->string = g_memdup2 ("\0\0", 2); +#else event->string = g_memdup ("\0\0", 2); +#endif event->length = 1; buf[0] = '\0'; goto out; @@ -1253,6 +1901,7 @@ _create_gdk_event (IBusIMContext *ibusimcontext, out: return event; } +#endif static void _ibus_context_forward_key_event_cb (IBusInputContext *ibuscontext, @@ -1262,9 +1911,52 @@ _ibus_context_forward_key_event_cb (IBusInputContext *ibuscontext, IBusIMContext *ibusimcontext) { IDEBUG ("%s", __FUNCTION__); +#if GTK_CHECK_VERSION (3, 98, 4) + int group = 0; + g_return_if_fail (GTK_IS_IM_CONTEXT (ibusimcontext)); + if (keycode != 0) { + keycode += 8; // to GTK keycode + } else if (ibusimcontext->client_window) { + GdkDisplay *display = + gtk_widget_get_display (ibusimcontext->client_window); + GdkKeymapKey *keys = NULL; + gint n_keys = 0; + if (gdk_display_map_keyval (display, keyval, &keys, &n_keys)) { + keycode = keys->keycode; + group = keys->group; + g_free (keys); + } else { + g_warning ("Failed to parse keycode from keyval %x", keyval); + } + } + gtk_im_context_filter_key ( + GTK_IM_CONTEXT (ibusimcontext), + (state & IBUS_RELEASE_MASK) ? FALSE : TRUE, + ibusimcontext->surface, + ibusimcontext->device, + ibusimcontext->time, + keycode, + (GdkModifierType)state, + group); +#else + if (keycode == 0 && ibusimcontext->client_window) { + GdkDisplay *display = + gdk_window_get_display (ibusimcontext->client_window); + GdkKeymap *keymap = gdk_keymap_get_for_display (display); + GdkKeymapKey *keys = NULL; + gint n_keys = 0; + if (gdk_keymap_get_entries_for_keyval (keymap, keyval, &keys, &n_keys)) + keycode = keys->keycode; + else + g_warning ("Failed to parse keycode from keyval %x", keyval); + /* _create_gdk_event() will add 8 to keycode. */ + if (keycode != 0) + keycode -= 8; + } GdkEventKey *event = _create_gdk_event (ibusimcontext, keyval, keycode, state); gdk_event_put ((GdkEvent *)event); gdk_event_free ((GdkEvent *)event); +#endif } static void @@ -1282,6 +1974,7 @@ _ibus_context_update_preedit_text_cb (IBusInputContext *ibuscontext, IBusText *text, gint cursor_pos, gboolean visible, + guint mode, IBusIMContext *ibusimcontext) { IDEBUG ("%s", __FUNCTION__); @@ -1297,6 +1990,16 @@ _ibus_context_update_preedit_text_cb (IBusInputContext *ibuscontext, ibusimcontext->preedit_attrs = NULL; } +#if !GTK_CHECK_VERSION (3, 98, 4) + if (!ibusimcontext->use_button_press_event && + mode == IBUS_ENGINE_PREEDIT_COMMIT && + !_use_sync_mode) { + if (ibusimcontext->client_window) { + _connect_button_press_event (ibusimcontext, TRUE); + } + } +#endif + str = text->text; ibusimcontext->preedit_string = g_strdup (str); if (text->attrs) { @@ -1338,6 +2041,7 @@ _ibus_context_update_preedit_text_cb (IBusInputContext *ibuscontext, flag = ibusimcontext->preedit_visible != visible; ibusimcontext->preedit_visible = visible; + ibusimcontext->preedit_mode = mode; if (ibusimcontext->preedit_visible) { if (flag) { @@ -1428,7 +2132,7 @@ _create_input_context_done (IBusBus *bus, g_error_free (error); } else { - + ibus_input_context_set_client_commit_preedit (context, TRUE); ibusimcontext->ibuscontext = context; g_signal_connect (ibusimcontext->ibuscontext, @@ -1444,7 +2148,7 @@ _create_input_context_done (IBusBus *bus, G_CALLBACK (_ibus_context_delete_surrounding_text_cb), ibusimcontext); g_signal_connect (ibusimcontext->ibuscontext, - "update-preedit-text", + "update-preedit-text-with-mode", G_CALLBACK (_ibus_context_update_preedit_text_cb), ibusimcontext); g_signal_connect (ibusimcontext->ibuscontext, @@ -1462,9 +2166,32 @@ _create_input_context_done (IBusBus *bus, ibus_input_context_set_capabilities (ibusimcontext->ibuscontext, ibusimcontext->caps); if (ibusimcontext->has_focus) { + /* The time order is _create_input_context() -> + * ibus_im_context_notify() -> ibus_im_context_focus_in() -> + * _create_input_context_done() + * so _set_content_type() is called at the beginning here + * because ibusimcontext->ibuscontext == NULL before. */ + _set_content_type (ibusimcontext); + ibus_input_context_focus_in (ibusimcontext->ibuscontext); _set_cursor_location_internal (ibusimcontext); } + + if (!g_queue_is_empty (ibusimcontext->events_queue)) { +#if GTK_CHECK_VERSION (3, 98, 4) + GdkEvent *event; +#else + GdkEventKey *event; +#endif + while ((event = g_queue_pop_head (ibusimcontext->events_queue))) { + _process_key_event (context, event, ibusimcontext); +#if GTK_CHECK_VERSION (3, 98, 4) + gdk_event_unref (event); +#else + gdk_event_free ((GdkEvent *)event); +#endif + } + } } g_object_unref (ibusimcontext); @@ -1477,12 +2204,7 @@ _create_input_context (IBusIMContext *ibusimcontext) g_assert (ibusimcontext->ibuscontext == NULL); - if (ibusimcontext->cancellable != NULL) { - /* Cancel previous create input context request */ - g_cancellable_cancel (ibusimcontext->cancellable); - g_object_unref (ibusimcontext->cancellable); - ibusimcontext->cancellable = NULL; - } + g_return_if_fail (ibusimcontext->cancellable == NULL); ibusimcontext->cancellable = g_cancellable_new (); diff --git a/client/gtk2/ibusimcontext.h b/client/gtk2/ibusimcontext.h index 56cece40f..c73b3d538 100644 --- a/client/gtk2/ibusimcontext.h +++ b/client/gtk2/ibusimcontext.h @@ -7,17 +7,17 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #ifndef __IBUS_IM_CONTEXT_H_ #define __IBUS_IM_CONTEXT_H_ diff --git a/client/gtk3/Makefile.am b/client/gtk3/Makefile.am index 450562241..aa4a06313 100644 --- a/client/gtk3/Makefile.am +++ b/client/gtk3/Makefile.am @@ -8,21 +8,21 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la -INCLUDES = \ +AM_CPPFLAGS = \ -I$(top_srcdir)/src \ -I$(top_builddir)/src \ $(NULL) diff --git a/client/gtk4/Makefile.am b/client/gtk4/Makefile.am new file mode 100644 index 000000000..8d8b31db8 --- /dev/null +++ b/client/gtk4/Makefile.am @@ -0,0 +1,66 @@ +# vim:set noet ts=4: +# +# ibus - The Input Bus +# +# Copyright (c) 2020 Takao Fujiwara +# Copyright (c) 2020 Red Hat, Inc. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA + +libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la + +AM_CPPFLAGS = \ + -I$(top_srcdir)/src \ + -I$(top_builddir)/src \ + $(NULL) + +immoduledir = @GTK4_IM_MODULEDIR@ +immodule_LTLIBRARIES = libim-ibus.la + +libim_ibus_la_SOURCES = \ + ibusim.c \ + ibusimcontext.c \ + ibusimcontext.h \ + $(NULL) + +libim_ibus_la_DEPENDENCIES = $(libibus) + +libim_ibus_la_CFLAGS = \ + @GTK4_CFLAGS@ \ + @DBUS_CFLAGS@ \ + -DG_LOG_DOMAIN=\"IBUS\" \ + $(NULL) + +libim_ibus_la_LIBADD = \ + @GTK4_LIBS@ \ + @DBUS_LIBS@ \ + $(libibus) \ + $(NULL) +libim_ibus_la_LDFLAGS = \ + -avoid-version \ + -module \ + $(NULL) + +$(libibus): + (cd $(top_builddir)/src; make ) + +EXTRA_DIST = \ + $(NULL) + +test: all + GTK_IM_MODULE=ibus gedit + +-include $(top_srcdir)/git.mk diff --git a/client/gtk4/ibusim.c b/client/gtk4/ibusim.c new file mode 100644 index 000000000..5ecf9778c --- /dev/null +++ b/client/gtk4/ibusim.c @@ -0,0 +1,52 @@ +/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ +/* vim:set et ts=4: */ +/* ibus - The Input Bus + * Copyright (C) 2008-2010 Peng Huang + * Copyright (C) 2020 Takao Fujiwara + * Copyright (C) 2008-2020 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#include +#include +#include +#include "ibusimcontext.h" + +G_MODULE_EXPORT void +g_io_im_ibus_load (GTypeModule *type_module) +{ + static gboolean inited = FALSE; + + if (!inited) { + ibus_init (); + ibus_im_context_register_type (type_module); + g_io_extension_point_implement ("gtk-im-module", + IBUS_TYPE_IM_CONTEXT, + "ibus", + 50); + inited = TRUE; + } + /* make module resident */ + g_type_module_use (type_module); +} + +G_MODULE_EXPORT void +g_io_im_ibus_unload (GTypeModule *type_module) +{ + g_type_module_unuse (type_module); +} + diff --git a/client/gtk4/ibusimcontext.c b/client/gtk4/ibusimcontext.c new file mode 120000 index 000000000..41896f052 --- /dev/null +++ b/client/gtk4/ibusimcontext.c @@ -0,0 +1 @@ +../gtk2/ibusimcontext.c \ No newline at end of file diff --git a/client/gtk4/ibusimcontext.h b/client/gtk4/ibusimcontext.h new file mode 120000 index 000000000..29759883e --- /dev/null +++ b/client/gtk4/ibusimcontext.h @@ -0,0 +1 @@ +../gtk2/ibusimcontext.h \ No newline at end of file diff --git a/client/wayland/Makefile.am b/client/wayland/Makefile.am new file mode 100644 index 000000000..ec983e803 --- /dev/null +++ b/client/wayland/Makefile.am @@ -0,0 +1,65 @@ +# vim:set noet ts=4: +# +# ibus - The Input Bus +# +# Copyright (c) 2007-2013 Peng Huang +# Copyright (c) 2019 Takao Fujiwara +# Copyright (c) 2007-2019 Red Hat, Inc. +# +# This library is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as +# published by the Free Software Foundation; either version 2.1 of the +# License, or (at your option) any later version. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301 USA. + +libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la + +libexec_PROGRAMS = ibus-wayland + +protocol_sources = \ + input-method-unstable-v1-client-protocol.h \ + input-method-unstable-v1-protocol.c \ + $(NULL) + +ibus_wayland_SOURCES = \ + $(protocol_sources) \ + main.c \ + $(NULL) + +ibus_wayland_DEPENDENCIES = \ + $(libibus) \ + $(NULL) + +ibus_wayland_LDADD = \ + $(libibus) \ + $(GIO2_LIBS) \ + $(WAYLAND_LIBS) \ + $(NULL) + +ibus_wayland_CFLAGS = \ + $(GIO2_CFLAGS) \ + $(WAYLAND_CFLAGS) \ + -I$(top_srcdir)/src \ + -I$(top_builddir)/src \ + $(NULL) + +$(libibus): + (cd $(top_builddir)/src; make) + +EXTRA_DIST = \ + README \ + $(protocol_sources) \ + $(NULL) + +-include @wayland_scanner_rules@ + +-include $(top_srcdir)/git.mk diff --git a/client/wayland/README b/client/wayland/README new file mode 100644 index 000000000..e5b42f6a3 --- /dev/null +++ b/client/wayland/README @@ -0,0 +1,17 @@ +The following two files are generated with wayland-scanner: + +input-method-protocol.c +input-method-client-protocol.h + +We include them in the distribution instead of generating them, since +the Wayland protocol structure will unlikely change. Do not modify +those files manually. + +To generate them, use the wayland-scanner command as follows. You can +find input-method.xml in the Weston source code (maybe it will be +moved to the Wayland source code later). + +$ wayland-scanner code < input-method.xml \ + > input-method-protocol.c +$ wayland-scanner client-header < input-method.xml \ + > input-method-client-protocol.h diff --git a/client/wayland/input-method-unstable-v1-client-protocol.h b/client/wayland/input-method-unstable-v1-client-protocol.h new file mode 100644 index 000000000..7a7d957fb --- /dev/null +++ b/client/wayland/input-method-unstable-v1-client-protocol.h @@ -0,0 +1,752 @@ +/* Generated by wayland-scanner 1.16.92 */ + +#ifndef INPUT_METHOD_UNSTABLE_V1_CLIENT_PROTOCOL_H +#define INPUT_METHOD_UNSTABLE_V1_CLIENT_PROTOCOL_H + +#include +#include +#include "wayland-client.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @page page_input_method_unstable_v1 The input_method_unstable_v1 protocol + * @section page_ifaces_input_method_unstable_v1 Interfaces + * - @subpage page_iface_zwp_input_method_context_v1 - input method context + * - @subpage page_iface_zwp_input_method_v1 - input method + * - @subpage page_iface_zwp_input_panel_v1 - interface for implementing keyboards + * - @subpage page_iface_zwp_input_panel_surface_v1 - + * @section page_copyright_input_method_unstable_v1 Copyright + *
+ *
+ * Copyright © 2012, 2013 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ * 
+ */ +struct wl_keyboard; +struct wl_output; +struct wl_surface; +struct zwp_input_method_context_v1; +struct zwp_input_method_v1; +struct zwp_input_panel_surface_v1; +struct zwp_input_panel_v1; + +/** + * @page page_iface_zwp_input_method_context_v1 zwp_input_method_context_v1 + * @section page_iface_zwp_input_method_context_v1_desc Description + * + * Corresponds to a text input on the input method side. An input method context + * is created on text input activation on the input method side. It allows + * receiving information about the text input from the application via events. + * Input method contexts do not keep state after deactivation and should be + * destroyed after deactivation is handled. + * + * Text is generally UTF-8 encoded, indices and lengths are in bytes. + * + * Serials are used to synchronize the state between the text input and + * an input method. New serials are sent by the text input in the + * commit_state request and are used by the input method to indicate + * the known text input state in events like preedit_string, commit_string, + * and keysym. The text input can then ignore events from the input method + * which are based on an outdated state (for example after a reset). + * + * Warning! The protocol described in this file is experimental and + * backward incompatible changes may be made. Backward compatible changes + * may be added together with the corresponding interface version bump. + * Backward incompatible changes are done by bumping the version number in + * the protocol and interface names and resetting the interface version. + * Once the protocol is to be declared stable, the 'z' prefix and the + * version number in the protocol and interface names are removed and the + * interface version number is reset. + * @section page_iface_zwp_input_method_context_v1_api API + * See @ref iface_zwp_input_method_context_v1. + */ +/** + * @defgroup iface_zwp_input_method_context_v1 The zwp_input_method_context_v1 interface + * + * Corresponds to a text input on the input method side. An input method context + * is created on text input activation on the input method side. It allows + * receiving information about the text input from the application via events. + * Input method contexts do not keep state after deactivation and should be + * destroyed after deactivation is handled. + * + * Text is generally UTF-8 encoded, indices and lengths are in bytes. + * + * Serials are used to synchronize the state between the text input and + * an input method. New serials are sent by the text input in the + * commit_state request and are used by the input method to indicate + * the known text input state in events like preedit_string, commit_string, + * and keysym. The text input can then ignore events from the input method + * which are based on an outdated state (for example after a reset). + * + * Warning! The protocol described in this file is experimental and + * backward incompatible changes may be made. Backward compatible changes + * may be added together with the corresponding interface version bump. + * Backward incompatible changes are done by bumping the version number in + * the protocol and interface names and resetting the interface version. + * Once the protocol is to be declared stable, the 'z' prefix and the + * version number in the protocol and interface names are removed and the + * interface version number is reset. + */ +extern const struct wl_interface zwp_input_method_context_v1_interface; +/** + * @page page_iface_zwp_input_method_v1 zwp_input_method_v1 + * @section page_iface_zwp_input_method_v1_desc Description + * + * An input method object is responsible for composing text in response to + * input from hardware or virtual keyboards. There is one input method + * object per seat. On activate there is a new input method context object + * created which allows the input method to communicate with the text input. + * @section page_iface_zwp_input_method_v1_api API + * See @ref iface_zwp_input_method_v1. + */ +/** + * @defgroup iface_zwp_input_method_v1 The zwp_input_method_v1 interface + * + * An input method object is responsible for composing text in response to + * input from hardware or virtual keyboards. There is one input method + * object per seat. On activate there is a new input method context object + * created which allows the input method to communicate with the text input. + */ +extern const struct wl_interface zwp_input_method_v1_interface; +/** + * @page page_iface_zwp_input_panel_v1 zwp_input_panel_v1 + * @section page_iface_zwp_input_panel_v1_desc Description + * + * Only one client can bind this interface at a time. + * @section page_iface_zwp_input_panel_v1_api API + * See @ref iface_zwp_input_panel_v1. + */ +/** + * @defgroup iface_zwp_input_panel_v1 The zwp_input_panel_v1 interface + * + * Only one client can bind this interface at a time. + */ +extern const struct wl_interface zwp_input_panel_v1_interface; +/** + * @page page_iface_zwp_input_panel_surface_v1 zwp_input_panel_surface_v1 + * @section page_iface_zwp_input_panel_surface_v1_api API + * See @ref iface_zwp_input_panel_surface_v1. + */ +/** + * @defgroup iface_zwp_input_panel_surface_v1 The zwp_input_panel_surface_v1 interface + */ +extern const struct wl_interface zwp_input_panel_surface_v1_interface; + +/** + * @ingroup iface_zwp_input_method_context_v1 + * @struct zwp_input_method_context_v1_listener + */ +struct zwp_input_method_context_v1_listener { + /** + * surrounding text event + * + * The plain surrounding text around the input position. Cursor + * is the position in bytes within the surrounding text relative to + * the beginning of the text. Anchor is the position in bytes of + * the selection anchor within the surrounding text relative to the + * beginning of the text. If there is no selected text then anchor + * is the same as cursor. + */ + void (*surrounding_text)(void *data, + struct zwp_input_method_context_v1 *zwp_input_method_context_v1, + const char *text, + uint32_t cursor, + uint32_t anchor); + /** + */ + void (*reset)(void *data, + struct zwp_input_method_context_v1 *zwp_input_method_context_v1); + /** + */ + void (*content_type)(void *data, + struct zwp_input_method_context_v1 *zwp_input_method_context_v1, + uint32_t hint, + uint32_t purpose); + /** + */ + void (*invoke_action)(void *data, + struct zwp_input_method_context_v1 *zwp_input_method_context_v1, + uint32_t button, + uint32_t index); + /** + * @param serial serial of text input state + */ + void (*commit_state)(void *data, + struct zwp_input_method_context_v1 *zwp_input_method_context_v1, + uint32_t serial); + /** + */ + void (*preferred_language)(void *data, + struct zwp_input_method_context_v1 *zwp_input_method_context_v1, + const char *language); +}; + +/** + * @ingroup iface_zwp_input_method_context_v1 + */ +static inline int +zwp_input_method_context_v1_add_listener(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, + const struct zwp_input_method_context_v1_listener *listener, void *data) +{ + return wl_proxy_add_listener((struct wl_proxy *) zwp_input_method_context_v1, + (void (**)(void)) listener, data); +} + +#define ZWP_INPUT_METHOD_CONTEXT_V1_DESTROY 0 +#define ZWP_INPUT_METHOD_CONTEXT_V1_COMMIT_STRING 1 +#define ZWP_INPUT_METHOD_CONTEXT_V1_PREEDIT_STRING 2 +#define ZWP_INPUT_METHOD_CONTEXT_V1_PREEDIT_STYLING 3 +#define ZWP_INPUT_METHOD_CONTEXT_V1_PREEDIT_CURSOR 4 +#define ZWP_INPUT_METHOD_CONTEXT_V1_DELETE_SURROUNDING_TEXT 5 +#define ZWP_INPUT_METHOD_CONTEXT_V1_CURSOR_POSITION 6 +#define ZWP_INPUT_METHOD_CONTEXT_V1_MODIFIERS_MAP 7 +#define ZWP_INPUT_METHOD_CONTEXT_V1_KEYSYM 8 +#define ZWP_INPUT_METHOD_CONTEXT_V1_GRAB_KEYBOARD 9 +#define ZWP_INPUT_METHOD_CONTEXT_V1_KEY 10 +#define ZWP_INPUT_METHOD_CONTEXT_V1_MODIFIERS 11 +#define ZWP_INPUT_METHOD_CONTEXT_V1_LANGUAGE 12 +#define ZWP_INPUT_METHOD_CONTEXT_V1_TEXT_DIRECTION 13 + +/** + * @ingroup iface_zwp_input_method_context_v1 + */ +#define ZWP_INPUT_METHOD_CONTEXT_V1_SURROUNDING_TEXT_SINCE_VERSION 1 +/** + * @ingroup iface_zwp_input_method_context_v1 + */ +#define ZWP_INPUT_METHOD_CONTEXT_V1_RESET_SINCE_VERSION 1 +/** + * @ingroup iface_zwp_input_method_context_v1 + */ +#define ZWP_INPUT_METHOD_CONTEXT_V1_CONTENT_TYPE_SINCE_VERSION 1 +/** + * @ingroup iface_zwp_input_method_context_v1 + */ +#define ZWP_INPUT_METHOD_CONTEXT_V1_INVOKE_ACTION_SINCE_VERSION 1 +/** + * @ingroup iface_zwp_input_method_context_v1 + */ +#define ZWP_INPUT_METHOD_CONTEXT_V1_COMMIT_STATE_SINCE_VERSION 1 +/** + * @ingroup iface_zwp_input_method_context_v1 + */ +#define ZWP_INPUT_METHOD_CONTEXT_V1_PREFERRED_LANGUAGE_SINCE_VERSION 1 + +/** + * @ingroup iface_zwp_input_method_context_v1 + */ +#define ZWP_INPUT_METHOD_CONTEXT_V1_DESTROY_SINCE_VERSION 1 +/** + * @ingroup iface_zwp_input_method_context_v1 + */ +#define ZWP_INPUT_METHOD_CONTEXT_V1_COMMIT_STRING_SINCE_VERSION 1 +/** + * @ingroup iface_zwp_input_method_context_v1 + */ +#define ZWP_INPUT_METHOD_CONTEXT_V1_PREEDIT_STRING_SINCE_VERSION 1 +/** + * @ingroup iface_zwp_input_method_context_v1 + */ +#define ZWP_INPUT_METHOD_CONTEXT_V1_PREEDIT_STYLING_SINCE_VERSION 1 +/** + * @ingroup iface_zwp_input_method_context_v1 + */ +#define ZWP_INPUT_METHOD_CONTEXT_V1_PREEDIT_CURSOR_SINCE_VERSION 1 +/** + * @ingroup iface_zwp_input_method_context_v1 + */ +#define ZWP_INPUT_METHOD_CONTEXT_V1_DELETE_SURROUNDING_TEXT_SINCE_VERSION 1 +/** + * @ingroup iface_zwp_input_method_context_v1 + */ +#define ZWP_INPUT_METHOD_CONTEXT_V1_CURSOR_POSITION_SINCE_VERSION 1 +/** + * @ingroup iface_zwp_input_method_context_v1 + */ +#define ZWP_INPUT_METHOD_CONTEXT_V1_MODIFIERS_MAP_SINCE_VERSION 1 +/** + * @ingroup iface_zwp_input_method_context_v1 + */ +#define ZWP_INPUT_METHOD_CONTEXT_V1_KEYSYM_SINCE_VERSION 1 +/** + * @ingroup iface_zwp_input_method_context_v1 + */ +#define ZWP_INPUT_METHOD_CONTEXT_V1_GRAB_KEYBOARD_SINCE_VERSION 1 +/** + * @ingroup iface_zwp_input_method_context_v1 + */ +#define ZWP_INPUT_METHOD_CONTEXT_V1_KEY_SINCE_VERSION 1 +/** + * @ingroup iface_zwp_input_method_context_v1 + */ +#define ZWP_INPUT_METHOD_CONTEXT_V1_MODIFIERS_SINCE_VERSION 1 +/** + * @ingroup iface_zwp_input_method_context_v1 + */ +#define ZWP_INPUT_METHOD_CONTEXT_V1_LANGUAGE_SINCE_VERSION 1 +/** + * @ingroup iface_zwp_input_method_context_v1 + */ +#define ZWP_INPUT_METHOD_CONTEXT_V1_TEXT_DIRECTION_SINCE_VERSION 1 + +/** @ingroup iface_zwp_input_method_context_v1 */ +static inline void +zwp_input_method_context_v1_set_user_data(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, void *user_data) +{ + wl_proxy_set_user_data((struct wl_proxy *) zwp_input_method_context_v1, user_data); +} + +/** @ingroup iface_zwp_input_method_context_v1 */ +static inline void * +zwp_input_method_context_v1_get_user_data(struct zwp_input_method_context_v1 *zwp_input_method_context_v1) +{ + return wl_proxy_get_user_data((struct wl_proxy *) zwp_input_method_context_v1); +} + +static inline uint32_t +zwp_input_method_context_v1_get_version(struct zwp_input_method_context_v1 *zwp_input_method_context_v1) +{ + return wl_proxy_get_version((struct wl_proxy *) zwp_input_method_context_v1); +} + +/** + * @ingroup iface_zwp_input_method_context_v1 + */ +static inline void +zwp_input_method_context_v1_destroy(struct zwp_input_method_context_v1 *zwp_input_method_context_v1) +{ + wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1, + ZWP_INPUT_METHOD_CONTEXT_V1_DESTROY); + + wl_proxy_destroy((struct wl_proxy *) zwp_input_method_context_v1); +} + +/** + * @ingroup iface_zwp_input_method_context_v1 + * + * Send the commit string text for insertion to the application. + * + * The text to commit could be either just a single character after a key + * press or the result of some composing (pre-edit). It could be also an + * empty text when some text should be removed (see + * delete_surrounding_text) or when the input cursor should be moved (see + * cursor_position). + * + * Any previously set composing text will be removed. + */ +static inline void +zwp_input_method_context_v1_commit_string(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, uint32_t serial, const char *text) +{ + wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1, + ZWP_INPUT_METHOD_CONTEXT_V1_COMMIT_STRING, serial, text); +} + +/** + * @ingroup iface_zwp_input_method_context_v1 + * + * Send the pre-edit string text to the application text input. + * + * The commit text can be used to replace the pre-edit text on reset (for + * example on unfocus). + * + * Previously sent preedit_style and preedit_cursor requests are also + * processed by the text_input. + */ +static inline void +zwp_input_method_context_v1_preedit_string(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, uint32_t serial, const char *text, const char *commit) +{ + wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1, + ZWP_INPUT_METHOD_CONTEXT_V1_PREEDIT_STRING, serial, text, commit); +} + +/** + * @ingroup iface_zwp_input_method_context_v1 + * + * Set the styling information on composing text. The style is applied for + * length in bytes from index relative to the beginning of + * the composing text (as byte offset). Multiple styles can + * be applied to a composing text. + * + * This request should be sent before sending a preedit_string request. + */ +static inline void +zwp_input_method_context_v1_preedit_styling(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, uint32_t index, uint32_t length, uint32_t style) +{ + wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1, + ZWP_INPUT_METHOD_CONTEXT_V1_PREEDIT_STYLING, index, length, style); +} + +/** + * @ingroup iface_zwp_input_method_context_v1 + * + * Set the cursor position inside the composing text (as byte offset) + * relative to the start of the composing text. + * + * When index is negative no cursor should be displayed. + * + * This request should be sent before sending a preedit_string request. + */ +static inline void +zwp_input_method_context_v1_preedit_cursor(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, int32_t index) +{ + wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1, + ZWP_INPUT_METHOD_CONTEXT_V1_PREEDIT_CURSOR, index); +} + +/** + * @ingroup iface_zwp_input_method_context_v1 + * + * Remove the surrounding text. + * + * This request will be handled on the text_input side directly following + * a commit_string request. + */ +static inline void +zwp_input_method_context_v1_delete_surrounding_text(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, int32_t index, uint32_t length) +{ + wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1, + ZWP_INPUT_METHOD_CONTEXT_V1_DELETE_SURROUNDING_TEXT, index, length); +} + +/** + * @ingroup iface_zwp_input_method_context_v1 + * + * Set the cursor and anchor to a new position. Index is the new cursor + * position in bytes (when >= 0 this is relative to the end of the inserted text, + * otherwise it is relative to the beginning of the inserted text). Anchor is + * the new anchor position in bytes (when >= 0 this is relative to the end of the + * inserted text, otherwise it is relative to the beginning of the inserted + * text). When there should be no selected text, anchor should be the same + * as index. + * + * This request will be handled on the text_input side directly following + * a commit_string request. + */ +static inline void +zwp_input_method_context_v1_cursor_position(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, int32_t index, int32_t anchor) +{ + wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1, + ZWP_INPUT_METHOD_CONTEXT_V1_CURSOR_POSITION, index, anchor); +} + +/** + * @ingroup iface_zwp_input_method_context_v1 + */ +static inline void +zwp_input_method_context_v1_modifiers_map(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, struct wl_array *map) +{ + wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1, + ZWP_INPUT_METHOD_CONTEXT_V1_MODIFIERS_MAP, map); +} + +/** + * @ingroup iface_zwp_input_method_context_v1 + * + * Notify when a key event was sent. Key events should not be used for + * normal text input operations, which should be done with commit_string, + * delete_surrounding_text, etc. The key event follows the wl_keyboard key + * event convention. Sym is an XKB keysym, state is a wl_keyboard key_state. + */ +static inline void +zwp_input_method_context_v1_keysym(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, uint32_t serial, uint32_t time, uint32_t sym, uint32_t state, uint32_t modifiers) +{ + wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1, + ZWP_INPUT_METHOD_CONTEXT_V1_KEYSYM, serial, time, sym, state, modifiers); +} + +/** + * @ingroup iface_zwp_input_method_context_v1 + * + * Allow an input method to receive hardware keyboard input and process + * key events to generate text events (with pre-edit) over the wire. This + * allows input methods which compose multiple key events for inputting + * text like it is done for CJK languages. + */ +static inline struct wl_keyboard * +zwp_input_method_context_v1_grab_keyboard(struct zwp_input_method_context_v1 *zwp_input_method_context_v1) +{ + struct wl_proxy *keyboard; + + keyboard = wl_proxy_marshal_constructor((struct wl_proxy *) zwp_input_method_context_v1, + ZWP_INPUT_METHOD_CONTEXT_V1_GRAB_KEYBOARD, &wl_keyboard_interface, NULL); + + return (struct wl_keyboard *) keyboard; +} + +/** + * @ingroup iface_zwp_input_method_context_v1 + * + * Forward a wl_keyboard::key event to the client that was not processed + * by the input method itself. Should be used when filtering key events + * with grab_keyboard. The arguments should be the ones from the + * wl_keyboard::key event. + * + * For generating custom key events use the keysym request instead. + */ +static inline void +zwp_input_method_context_v1_key(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, uint32_t serial, uint32_t time, uint32_t key, uint32_t state) +{ + wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1, + ZWP_INPUT_METHOD_CONTEXT_V1_KEY, serial, time, key, state); +} + +/** + * @ingroup iface_zwp_input_method_context_v1 + * + * Forward a wl_keyboard::modifiers event to the client that was not + * processed by the input method itself. Should be used when filtering + * key events with grab_keyboard. The arguments should be the ones + * from the wl_keyboard::modifiers event. + */ +static inline void +zwp_input_method_context_v1_modifiers(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, uint32_t serial, uint32_t mods_depressed, uint32_t mods_latched, uint32_t mods_locked, uint32_t group) +{ + wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1, + ZWP_INPUT_METHOD_CONTEXT_V1_MODIFIERS, serial, mods_depressed, mods_latched, mods_locked, group); +} + +/** + * @ingroup iface_zwp_input_method_context_v1 + */ +static inline void +zwp_input_method_context_v1_language(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, uint32_t serial, const char *language) +{ + wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1, + ZWP_INPUT_METHOD_CONTEXT_V1_LANGUAGE, serial, language); +} + +/** + * @ingroup iface_zwp_input_method_context_v1 + */ +static inline void +zwp_input_method_context_v1_text_direction(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, uint32_t serial, uint32_t direction) +{ + wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1, + ZWP_INPUT_METHOD_CONTEXT_V1_TEXT_DIRECTION, serial, direction); +} + +/** + * @ingroup iface_zwp_input_method_v1 + * @struct zwp_input_method_v1_listener + */ +struct zwp_input_method_v1_listener { + /** + * activate event + * + * A text input was activated. Creates an input method context + * object which allows communication with the text input. + */ + void (*activate)(void *data, + struct zwp_input_method_v1 *zwp_input_method_v1, + struct zwp_input_method_context_v1 *id); + /** + * deactivate event + * + * The text input corresponding to the context argument was + * deactivated. The input method context should be destroyed after + * deactivation is handled. + */ + void (*deactivate)(void *data, + struct zwp_input_method_v1 *zwp_input_method_v1, + struct zwp_input_method_context_v1 *context); +}; + +/** + * @ingroup iface_zwp_input_method_v1 + */ +static inline int +zwp_input_method_v1_add_listener(struct zwp_input_method_v1 *zwp_input_method_v1, + const struct zwp_input_method_v1_listener *listener, void *data) +{ + return wl_proxy_add_listener((struct wl_proxy *) zwp_input_method_v1, + (void (**)(void)) listener, data); +} + +/** + * @ingroup iface_zwp_input_method_v1 + */ +#define ZWP_INPUT_METHOD_V1_ACTIVATE_SINCE_VERSION 1 +/** + * @ingroup iface_zwp_input_method_v1 + */ +#define ZWP_INPUT_METHOD_V1_DEACTIVATE_SINCE_VERSION 1 + + +/** @ingroup iface_zwp_input_method_v1 */ +static inline void +zwp_input_method_v1_set_user_data(struct zwp_input_method_v1 *zwp_input_method_v1, void *user_data) +{ + wl_proxy_set_user_data((struct wl_proxy *) zwp_input_method_v1, user_data); +} + +/** @ingroup iface_zwp_input_method_v1 */ +static inline void * +zwp_input_method_v1_get_user_data(struct zwp_input_method_v1 *zwp_input_method_v1) +{ + return wl_proxy_get_user_data((struct wl_proxy *) zwp_input_method_v1); +} + +static inline uint32_t +zwp_input_method_v1_get_version(struct zwp_input_method_v1 *zwp_input_method_v1) +{ + return wl_proxy_get_version((struct wl_proxy *) zwp_input_method_v1); +} + +/** @ingroup iface_zwp_input_method_v1 */ +static inline void +zwp_input_method_v1_destroy(struct zwp_input_method_v1 *zwp_input_method_v1) +{ + wl_proxy_destroy((struct wl_proxy *) zwp_input_method_v1); +} + +#define ZWP_INPUT_PANEL_V1_GET_INPUT_PANEL_SURFACE 0 + + +/** + * @ingroup iface_zwp_input_panel_v1 + */ +#define ZWP_INPUT_PANEL_V1_GET_INPUT_PANEL_SURFACE_SINCE_VERSION 1 + +/** @ingroup iface_zwp_input_panel_v1 */ +static inline void +zwp_input_panel_v1_set_user_data(struct zwp_input_panel_v1 *zwp_input_panel_v1, void *user_data) +{ + wl_proxy_set_user_data((struct wl_proxy *) zwp_input_panel_v1, user_data); +} + +/** @ingroup iface_zwp_input_panel_v1 */ +static inline void * +zwp_input_panel_v1_get_user_data(struct zwp_input_panel_v1 *zwp_input_panel_v1) +{ + return wl_proxy_get_user_data((struct wl_proxy *) zwp_input_panel_v1); +} + +static inline uint32_t +zwp_input_panel_v1_get_version(struct zwp_input_panel_v1 *zwp_input_panel_v1) +{ + return wl_proxy_get_version((struct wl_proxy *) zwp_input_panel_v1); +} + +/** @ingroup iface_zwp_input_panel_v1 */ +static inline void +zwp_input_panel_v1_destroy(struct zwp_input_panel_v1 *zwp_input_panel_v1) +{ + wl_proxy_destroy((struct wl_proxy *) zwp_input_panel_v1); +} + +/** + * @ingroup iface_zwp_input_panel_v1 + */ +static inline struct zwp_input_panel_surface_v1 * +zwp_input_panel_v1_get_input_panel_surface(struct zwp_input_panel_v1 *zwp_input_panel_v1, struct wl_surface *surface) +{ + struct wl_proxy *id; + + id = wl_proxy_marshal_constructor((struct wl_proxy *) zwp_input_panel_v1, + ZWP_INPUT_PANEL_V1_GET_INPUT_PANEL_SURFACE, &zwp_input_panel_surface_v1_interface, NULL, surface); + + return (struct zwp_input_panel_surface_v1 *) id; +} + +#ifndef ZWP_INPUT_PANEL_SURFACE_V1_POSITION_ENUM +#define ZWP_INPUT_PANEL_SURFACE_V1_POSITION_ENUM +enum zwp_input_panel_surface_v1_position { + ZWP_INPUT_PANEL_SURFACE_V1_POSITION_CENTER_BOTTOM = 0, +}; +#endif /* ZWP_INPUT_PANEL_SURFACE_V1_POSITION_ENUM */ + +#define ZWP_INPUT_PANEL_SURFACE_V1_SET_TOPLEVEL 0 +#define ZWP_INPUT_PANEL_SURFACE_V1_SET_OVERLAY_PANEL 1 + + +/** + * @ingroup iface_zwp_input_panel_surface_v1 + */ +#define ZWP_INPUT_PANEL_SURFACE_V1_SET_TOPLEVEL_SINCE_VERSION 1 +/** + * @ingroup iface_zwp_input_panel_surface_v1 + */ +#define ZWP_INPUT_PANEL_SURFACE_V1_SET_OVERLAY_PANEL_SINCE_VERSION 1 + +/** @ingroup iface_zwp_input_panel_surface_v1 */ +static inline void +zwp_input_panel_surface_v1_set_user_data(struct zwp_input_panel_surface_v1 *zwp_input_panel_surface_v1, void *user_data) +{ + wl_proxy_set_user_data((struct wl_proxy *) zwp_input_panel_surface_v1, user_data); +} + +/** @ingroup iface_zwp_input_panel_surface_v1 */ +static inline void * +zwp_input_panel_surface_v1_get_user_data(struct zwp_input_panel_surface_v1 *zwp_input_panel_surface_v1) +{ + return wl_proxy_get_user_data((struct wl_proxy *) zwp_input_panel_surface_v1); +} + +static inline uint32_t +zwp_input_panel_surface_v1_get_version(struct zwp_input_panel_surface_v1 *zwp_input_panel_surface_v1) +{ + return wl_proxy_get_version((struct wl_proxy *) zwp_input_panel_surface_v1); +} + +/** @ingroup iface_zwp_input_panel_surface_v1 */ +static inline void +zwp_input_panel_surface_v1_destroy(struct zwp_input_panel_surface_v1 *zwp_input_panel_surface_v1) +{ + wl_proxy_destroy((struct wl_proxy *) zwp_input_panel_surface_v1); +} + +/** + * @ingroup iface_zwp_input_panel_surface_v1 + * + * Set the input_panel_surface type to keyboard. + * + * A keyboard surface is only shown when a text input is active. + */ +static inline void +zwp_input_panel_surface_v1_set_toplevel(struct zwp_input_panel_surface_v1 *zwp_input_panel_surface_v1, struct wl_output *output, uint32_t position) +{ + wl_proxy_marshal((struct wl_proxy *) zwp_input_panel_surface_v1, + ZWP_INPUT_PANEL_SURFACE_V1_SET_TOPLEVEL, output, position); +} + +/** + * @ingroup iface_zwp_input_panel_surface_v1 + * + * Set the input_panel_surface to be an overlay panel. + * + * This is shown near the input cursor above the application window when + * a text input is active. + */ +static inline void +zwp_input_panel_surface_v1_set_overlay_panel(struct zwp_input_panel_surface_v1 *zwp_input_panel_surface_v1) +{ + wl_proxy_marshal((struct wl_proxy *) zwp_input_panel_surface_v1, + ZWP_INPUT_PANEL_SURFACE_V1_SET_OVERLAY_PANEL); +} + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/client/wayland/input-method-unstable-v1-protocol.c b/client/wayland/input-method-unstable-v1-protocol.c new file mode 100644 index 000000000..3dad3bc74 --- /dev/null +++ b/client/wayland/input-method-unstable-v1-protocol.c @@ -0,0 +1,114 @@ +/* Generated by wayland-scanner 1.16.92 */ + +/* + * Copyright © 2012, 2013 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include +#include +#include "wayland-util.h" + +extern const struct wl_interface wl_keyboard_interface; +extern const struct wl_interface wl_output_interface; +extern const struct wl_interface wl_surface_interface; +extern const struct wl_interface zwp_input_method_context_v1_interface; +extern const struct wl_interface zwp_input_panel_surface_v1_interface; + +static const struct wl_interface *types[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + &wl_keyboard_interface, + &zwp_input_method_context_v1_interface, + &zwp_input_method_context_v1_interface, + &zwp_input_panel_surface_v1_interface, + &wl_surface_interface, + &wl_output_interface, + NULL, +}; + +static const struct wl_message zwp_input_method_context_v1_requests[] = { + { "destroy", "", types + 0 }, + { "commit_string", "us", types + 0 }, + { "preedit_string", "uss", types + 0 }, + { "preedit_styling", "uuu", types + 0 }, + { "preedit_cursor", "i", types + 0 }, + { "delete_surrounding_text", "iu", types + 0 }, + { "cursor_position", "ii", types + 0 }, + { "modifiers_map", "a", types + 0 }, + { "keysym", "uuuuu", types + 0 }, + { "grab_keyboard", "n", types + 5 }, + { "key", "uuuu", types + 0 }, + { "modifiers", "uuuuu", types + 0 }, + { "language", "us", types + 0 }, + { "text_direction", "uu", types + 0 }, +}; + +static const struct wl_message zwp_input_method_context_v1_events[] = { + { "surrounding_text", "suu", types + 0 }, + { "reset", "", types + 0 }, + { "content_type", "uu", types + 0 }, + { "invoke_action", "uu", types + 0 }, + { "commit_state", "u", types + 0 }, + { "preferred_language", "s", types + 0 }, +}; + +WL_EXPORT const struct wl_interface zwp_input_method_context_v1_interface = { + "zwp_input_method_context_v1", 1, + 14, zwp_input_method_context_v1_requests, + 6, zwp_input_method_context_v1_events, +}; + +static const struct wl_message zwp_input_method_v1_events[] = { + { "activate", "n", types + 6 }, + { "deactivate", "o", types + 7 }, +}; + +WL_EXPORT const struct wl_interface zwp_input_method_v1_interface = { + "zwp_input_method_v1", 1, + 0, NULL, + 2, zwp_input_method_v1_events, +}; + +static const struct wl_message zwp_input_panel_v1_requests[] = { + { "get_input_panel_surface", "no", types + 8 }, +}; + +WL_EXPORT const struct wl_interface zwp_input_panel_v1_interface = { + "zwp_input_panel_v1", 1, + 1, zwp_input_panel_v1_requests, + 0, NULL, +}; + +static const struct wl_message zwp_input_panel_surface_v1_requests[] = { + { "set_toplevel", "ou", types + 10 }, + { "set_overlay_panel", "", types + 0 }, +}; + +WL_EXPORT const struct wl_interface zwp_input_panel_surface_v1_interface = { + "zwp_input_panel_surface_v1", 1, + 2, zwp_input_panel_surface_v1_requests, + 0, NULL, +}; + diff --git a/client/wayland/main.c b/client/wayland/main.c new file mode 100644 index 000000000..1f99c8042 --- /dev/null +++ b/client/wayland/main.c @@ -0,0 +1,771 @@ +/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ +/* vim:set et sts=4: */ +/* ibus - The Input Bus + * Copyright (C) 2019-2021 Takao Fujiwara + * Copyright (C) 2013 Intel Corporation + * Copyright (C) 2013-2019 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301 USA. + */ + +#include "config.h" + +#include +#include +#include +#include +#include +#include + +#include "input-method-unstable-v1-client-protocol.h" + +struct _IBusWaylandIM +{ + struct zwp_input_method_v1 *input_method; + struct zwp_input_method_context_v1 *context; + struct wl_keyboard *keyboard; + + IBusInputContext *ibuscontext; + IBusText *preedit_text; + guint preedit_cursor_pos; + IBusModifierType modifiers; + + struct xkb_context *xkb_context; + + struct xkb_keymap *keymap; + struct xkb_state *state; + + xkb_mod_mask_t shift_mask; + xkb_mod_mask_t lock_mask; + xkb_mod_mask_t control_mask; + xkb_mod_mask_t mod1_mask; + xkb_mod_mask_t mod2_mask; + xkb_mod_mask_t mod3_mask; + xkb_mod_mask_t mod4_mask; + xkb_mod_mask_t mod5_mask; + xkb_mod_mask_t super_mask; + xkb_mod_mask_t hyper_mask; + xkb_mod_mask_t meta_mask; + + uint32_t serial; + + GCancellable *cancellable; +}; +typedef struct _IBusWaylandIM IBusWaylandIM; + +struct _IBusWaylandKeyEvent +{ + struct zwp_input_method_context_v1 *context; + uint32_t serial; + uint32_t time; + uint32_t key; + enum wl_keyboard_key_state state; +}; +typedef struct _IBusWaylandKeyEvent IBusWaylandKeyEvent; + +struct _IBusWaylandSource +{ + GSource source; + GPollFD pfd; + uint32_t mask; + struct wl_display *display; +}; +typedef struct _IBusWaylandSource IBusWaylandSource; + +struct wl_display *_display = NULL; +struct wl_registry *_registry = NULL; +static IBusBus *_bus = NULL; + +static gboolean _use_sync_mode = FALSE; + +static gboolean +_get_boolean_env (const gchar *name, + gboolean defval) +{ + const gchar *value = g_getenv (name); + + if (value == NULL) + return defval; + + if (g_strcmp0 (value, "") == 0 || + g_strcmp0 (value, "0") == 0 || + g_strcmp0 (value, "false") == 0 || + g_strcmp0 (value, "False") == 0 || + g_strcmp0 (value, "FALSE") == 0) + return FALSE; + + return TRUE; +} + +static gboolean +ibus_wayland_source_prepare (GSource *base, + gint *timeout) +{ + IBusWaylandSource *source = (IBusWaylandSource *) base; + + *timeout = -1; + + wl_display_flush (source->display); + + return FALSE; +} + +static gboolean +ibus_wayland_source_check (GSource *base) +{ + IBusWaylandSource *source = (IBusWaylandSource *) base; + + if (source->pfd.revents & (G_IO_ERR | G_IO_HUP)) + g_error ("Lost connection to wayland compositor"); + + return source->pfd.revents; +} + +static gboolean +ibus_wayland_source_dispatch (GSource *base, + GSourceFunc callback, + gpointer data) +{ + IBusWaylandSource *source = (IBusWaylandSource *) base; + + if (source->pfd.revents) { + wl_display_dispatch (source->display); + source->pfd.revents = 0; + } + + return TRUE; +} + +static void +ibus_wayland_source_finalize (GSource *source) +{ +} + +static GSourceFuncs ibus_wayland_source_funcs = { + ibus_wayland_source_prepare, + ibus_wayland_source_check, + ibus_wayland_source_dispatch, + ibus_wayland_source_finalize +}; + +GSource * +ibus_wayland_source_new (struct wl_display *display) +{ + GSource *source; + IBusWaylandSource *wlsource; + + source = g_source_new (&ibus_wayland_source_funcs, + sizeof (IBusWaylandSource)); + wlsource = (IBusWaylandSource *) source; + + wlsource->display = display; + wlsource->pfd.fd = wl_display_get_fd (display); + wlsource->pfd.events = G_IO_IN | G_IO_ERR | G_IO_HUP; + g_source_add_poll (source, &wlsource->pfd); + + return source; +} + +static void +_context_commit_text_cb (IBusInputContext *context, + IBusText *text, + IBusWaylandIM *wlim) +{ + zwp_input_method_context_v1_commit_string (wlim->context, + wlim->serial, + text->text); +} + +static void +_context_forward_key_event_cb (IBusInputContext *context, + guint keyval, + guint keycode, + guint modifiers, + IBusWaylandIM *wlim) +{ + uint32_t state; + + if (modifiers & IBUS_RELEASE_MASK) + state = WL_KEYBOARD_KEY_STATE_RELEASED; + else + state = WL_KEYBOARD_KEY_STATE_PRESSED; + + zwp_input_method_context_v1_keysym (wlim->context, + wlim->serial, + 0, + keyval, + state, + modifiers); +} + +static void +_context_show_preedit_text_cb (IBusInputContext *context, + IBusWaylandIM *wlim) +{ + /* CURSOR is byte offset. */ + uint32_t cursor = + g_utf8_offset_to_pointer (wlim->preedit_text->text, + wlim->preedit_cursor_pos) - + wlim->preedit_text->text; + + zwp_input_method_context_v1_preedit_cursor (wlim->context, + cursor); + zwp_input_method_context_v1_preedit_string (wlim->context, + wlim->serial, + wlim->preedit_text->text, + wlim->preedit_text->text); +} + +static void +_context_hide_preedit_text_cb (IBusInputContext *context, + IBusWaylandIM *wlim) +{ + zwp_input_method_context_v1_preedit_string (wlim->context, + wlim->serial, + "", + ""); +} + +static void +_context_update_preedit_text_cb (IBusInputContext *context, + IBusText *text, + gint cursor_pos, + gboolean visible, + IBusWaylandIM *wlim) +{ + if (wlim->preedit_text) + g_object_unref (wlim->preedit_text); + wlim->preedit_text = g_object_ref_sink (text); + wlim->preedit_cursor_pos = cursor_pos; + + if (visible) + _context_show_preedit_text_cb (context, wlim); + else + _context_hide_preedit_text_cb (context, wlim); +} + +static void +handle_surrounding_text (void *data, + struct zwp_input_method_context_v1 *context, + const char *text, + uint32_t cursor, + uint32_t anchor) +{ +#if ENABLE_SURROUNDING + IBusWaylandIM *wlim = data; + + if (wlim->ibuscontext != NULL && + ibus_input_context_needs_surrounding_text (wlim->ibuscontext)) { + /* CURSOR_POS and ANCHOR_POS are character offset. */ + guint cursor_pos = g_utf8_pointer_to_offset (text, text + cursor); + guint anchor_pos = g_utf8_pointer_to_offset (text, text + anchor); + IBusText *ibustext = ibus_text_new_from_string (text); + + ibus_input_context_set_surrounding_text (wlim->ibuscontext, + ibustext, + cursor_pos, + anchor_pos); + } +#endif +} + +static void +handle_reset (void *data, + struct zwp_input_method_context_v1 *context) +{ +} + +static void +handle_content_type (void *data, + struct zwp_input_method_context_v1 *context, + uint32_t hint, + uint32_t purpose) +{ +} + +static void +handle_invoke_action (void *data, + struct zwp_input_method_context_v1 *context, + uint32_t button, + uint32_t index) +{ +} + +static void +handle_commit_state (void *data, + struct zwp_input_method_context_v1 *context, + uint32_t serial) +{ + IBusWaylandIM *wlim = data; + + wlim->serial = serial; +} + +static void +handle_preferred_language (void *data, + struct zwp_input_method_context_v1 *context, + const char *language) +{ +} + +static const struct zwp_input_method_context_v1_listener context_listener = { + handle_surrounding_text, + handle_reset, + handle_content_type, + handle_invoke_action, + handle_commit_state, + handle_preferred_language +}; + +static void +input_method_keyboard_keymap (void *data, + struct wl_keyboard *wl_keyboard, + uint32_t format, + int32_t fd, + uint32_t size) +{ + IBusWaylandIM *wlim = data; + GMappedFile *map; + GError *error = NULL; + + if (format != WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1) { + close(fd); + return; + } + + map = g_mapped_file_new_from_fd (fd, FALSE, &error); + if (map == NULL) { + if (error) { + g_warning ("Failed to map file fd %s", error->message); + g_error_free (error); + } + close (fd); + return; + } + + wlim->keymap = + xkb_map_new_from_string (wlim->xkb_context, + g_mapped_file_get_contents (map), + XKB_KEYMAP_FORMAT_TEXT_V1, + 0); + + g_mapped_file_unref (map); + close(fd); + + if (!wlim->keymap) { + return; + } + + wlim->state = xkb_state_new (wlim->keymap); + if (!wlim->state) { + xkb_map_unref (wlim->keymap); + return; + } + + wlim->shift_mask = + 1 << xkb_map_mod_get_index (wlim->keymap, "Shift"); + wlim->lock_mask = + 1 << xkb_map_mod_get_index (wlim->keymap, "Lock"); + wlim->control_mask = + 1 << xkb_map_mod_get_index (wlim->keymap, "Control"); + wlim->mod1_mask = + 1 << xkb_map_mod_get_index (wlim->keymap, "Mod1"); + wlim->mod2_mask = + 1 << xkb_map_mod_get_index (wlim->keymap, "Mod2"); + wlim->mod3_mask = + 1 << xkb_map_mod_get_index (wlim->keymap, "Mod3"); + wlim->mod4_mask = + 1 << xkb_map_mod_get_index (wlim->keymap, "Mod4"); + wlim->mod5_mask = + 1 << xkb_map_mod_get_index (wlim->keymap, "Mod5"); + wlim->super_mask = + 1 << xkb_map_mod_get_index (wlim->keymap, "Super"); + wlim->hyper_mask = + 1 << xkb_map_mod_get_index (wlim->keymap, "Hyper"); + wlim->meta_mask = + 1 << xkb_map_mod_get_index (wlim->keymap, "Meta"); +} + +static void +_process_key_event_done (GObject *object, + GAsyncResult *res, + gpointer user_data) +{ + IBusInputContext *context = (IBusInputContext *)object; + IBusWaylandKeyEvent *event = (IBusWaylandKeyEvent *) user_data; + + GError *error = NULL; + gboolean retval = ibus_input_context_process_key_event_async_finish ( + context, + res, + &error); + + if (error != NULL) { + g_warning ("Process Key Event failed: %s.", error->message); + g_error_free (error); + } + + if (!retval) { + zwp_input_method_context_v1_key (event->context, + event->serial, + event->time, + event->key, + event->state); + } + + g_free (event); +} + +static void +input_method_keyboard_key (void *data, + struct wl_keyboard *wl_keyboard, + uint32_t serial, + uint32_t time, + uint32_t key, + uint32_t state) +{ + IBusWaylandIM *wlim = data; + uint32_t code; + uint32_t num_syms; + const xkb_keysym_t *syms; + xkb_keysym_t sym; + guint32 modifiers; + + if (!wlim->state) + return; + + if (!wlim->ibuscontext) { + zwp_input_method_context_v1_key (wlim->context, + serial, + time, + key, + state); + return; + } + + code = key + 8; + num_syms = xkb_key_get_syms (wlim->state, code, &syms); + + sym = XKB_KEY_NoSymbol; + if (num_syms == 1) + sym = syms[0]; + + modifiers = wlim->modifiers; + if (state == WL_KEYBOARD_KEY_STATE_RELEASED) + modifiers |= IBUS_RELEASE_MASK; + + if (_use_sync_mode) { + gboolean retval = + ibus_input_context_process_key_event (wlim->ibuscontext, + sym, + code, + modifiers); + if (!retval) { + zwp_input_method_context_v1_key (wlim->context, + serial, + time, + key, + state); + } + } else { + IBusWaylandKeyEvent *event = g_new (IBusWaylandKeyEvent, 1); + event->context = wlim->context; + event->serial = serial; + event->time = time; + event->key = key; + event->state = state; + ibus_input_context_process_key_event_async (wlim->ibuscontext, + sym, + code, + modifiers, + -1, + NULL, + _process_key_event_done, + event); + } +} + +static void +input_method_keyboard_modifiers (void *data, + struct wl_keyboard *wl_keyboard, + uint32_t serial, + uint32_t mods_depressed, + uint32_t mods_latched, + uint32_t mods_locked, + uint32_t group) +{ + IBusWaylandIM *wlim = data; + struct zwp_input_method_context_v1 *context = wlim->context; + xkb_mod_mask_t mask; + + xkb_state_update_mask (wlim->state, mods_depressed, + mods_latched, mods_locked, 0, 0, group); + mask = xkb_state_serialize_mods (wlim->state, + XKB_STATE_DEPRESSED | + XKB_STATE_LATCHED); + + wlim->modifiers = 0; + if (mask & wlim->shift_mask) + wlim->modifiers |= IBUS_SHIFT_MASK; + if (mask & wlim->lock_mask) + wlim->modifiers |= IBUS_LOCK_MASK; + if (mask & wlim->control_mask) + wlim->modifiers |= IBUS_CONTROL_MASK; + if (mask & wlim->mod1_mask) + wlim->modifiers |= IBUS_MOD1_MASK; + if (mask & wlim->mod2_mask) + wlim->modifiers |= IBUS_MOD2_MASK; + if (mask & wlim->mod3_mask) + wlim->modifiers |= IBUS_MOD3_MASK; + if (mask & wlim->mod4_mask) + wlim->modifiers |= IBUS_MOD4_MASK; + if (mask & wlim->mod5_mask) + wlim->modifiers |= IBUS_MOD5_MASK; + if (mask & wlim->super_mask) + wlim->modifiers |= IBUS_SUPER_MASK; + if (mask & wlim->hyper_mask) + wlim->modifiers |= IBUS_HYPER_MASK; + if (mask & wlim->meta_mask) + wlim->modifiers |= IBUS_META_MASK; + + zwp_input_method_context_v1_modifiers (context, serial, + mods_depressed, mods_latched, + mods_locked, group); +} + +static const struct wl_keyboard_listener keyboard_listener = { + input_method_keyboard_keymap, + NULL, /* enter */ + NULL, /* leave */ + input_method_keyboard_key, + input_method_keyboard_modifiers +}; + +static void +_create_input_context_done (GObject *object, + GAsyncResult *res, + gpointer user_data) +{ + IBusWaylandIM *wlim = (IBusWaylandIM *) user_data; + + GError *error = NULL; + IBusInputContext *context = ibus_bus_create_input_context_async_finish ( + _bus, res, &error); + + if (wlim->cancellable != NULL) { + g_object_unref (wlim->cancellable); + wlim->cancellable = NULL; + } + + if (context == NULL) { + g_warning ("Create input context failed: %s.", error->message); + g_error_free (error); + } + else { + wlim->ibuscontext = context; + + g_signal_connect (wlim->ibuscontext, "commit-text", + G_CALLBACK (_context_commit_text_cb), + wlim); + g_signal_connect (wlim->ibuscontext, "forward-key-event", + G_CALLBACK (_context_forward_key_event_cb), + wlim); + + g_signal_connect (wlim->ibuscontext, "update-preedit-text", + G_CALLBACK (_context_update_preedit_text_cb), + wlim); + g_signal_connect (wlim->ibuscontext, "show-preedit-text", + G_CALLBACK (_context_show_preedit_text_cb), + wlim); + g_signal_connect (wlim->ibuscontext, "hide-preedit-text", + G_CALLBACK (_context_hide_preedit_text_cb), + wlim); + +#ifdef ENABLE_SURROUNDING + ibus_input_context_set_capabilities (wlim->ibuscontext, + IBUS_CAP_FOCUS | + IBUS_CAP_PREEDIT_TEXT | + IBUS_CAP_SURROUNDING_TEXT); +#else + ibus_input_context_set_capabilities (wlim->ibuscontext, + IBUS_CAP_FOCUS | + IBUS_CAP_PREEDIT_TEXT); +#endif + + ibus_input_context_focus_in (wlim->ibuscontext); + } +} + +static void +input_method_activate (void *data, + struct zwp_input_method_v1 *input_method, + struct zwp_input_method_context_v1 *context) +{ + IBusWaylandIM *wlim = data; + + if (wlim->context) { + zwp_input_method_context_v1_destroy (wlim->context); + wlim->context = NULL; + } + + wlim->serial = 0; + wlim->context = context; + + zwp_input_method_context_v1_add_listener (context, &context_listener, wlim); + wlim->keyboard = zwp_input_method_context_v1_grab_keyboard (context); + wl_keyboard_add_listener (wlim->keyboard, + &keyboard_listener, + wlim); + + if (wlim->ibuscontext) { + g_object_unref (wlim->ibuscontext); + wlim->ibuscontext = NULL; + } + + wlim->cancellable = g_cancellable_new (); + ibus_bus_create_input_context_async (_bus, + "wayland", + -1, + wlim->cancellable, + _create_input_context_done, + wlim); +} + +static void +input_method_deactivate (void *data, + struct zwp_input_method_v1 *input_method, + struct zwp_input_method_context_v1 *context) +{ + IBusWaylandIM *wlim = data; + + if (wlim->cancellable) { + /* Cancel any ongoing create input context request. */ + g_cancellable_cancel (wlim->cancellable); + g_object_unref (wlim->cancellable); + wlim->cancellable = NULL; + } + + if (wlim->ibuscontext) { + ibus_input_context_focus_out (wlim->ibuscontext); + g_object_unref (wlim->ibuscontext); + wlim->ibuscontext = NULL; + } + + if (wlim->preedit_text) { + g_object_unref (wlim->preedit_text); + wlim->preedit_text = NULL; + } + + if (wlim->context) { + zwp_input_method_context_v1_destroy (wlim->context); + wlim->context = NULL; + } +} + +static const struct zwp_input_method_v1_listener input_method_listener = { + input_method_activate, + input_method_deactivate +}; + +static void +registry_handle_global (void *data, + struct wl_registry *registry, + uint32_t name, + const char *interface, + uint32_t version) +{ + IBusWaylandIM *wlim = data; + + if (!g_strcmp0 (interface, "zwp_input_method_v1")) { + wlim->input_method = + wl_registry_bind (registry, name, + &zwp_input_method_v1_interface, 1); + zwp_input_method_v1_add_listener (wlim->input_method, + &input_method_listener, wlim); + } +} + +static void +registry_handle_global_remove (void *data, + struct wl_registry *registry, + uint32_t name) +{ +} + +static const struct wl_registry_listener registry_listener = { + registry_handle_global, + registry_handle_global_remove +}; + +static void +_bus_disconnected_cb (IBusBus *bus, + gpointer user_data) +{ + g_debug ("Connection closed by ibus-daemon\n"); + g_clear_object (&_bus); + ibus_quit (); +} + +gint +main (gint argc, + gchar **argv) +{ + IBusWaylandIM wlim; + GSource *source; + + ibus_init (); + + _bus = ibus_bus_new (); + if (!ibus_bus_is_connected (_bus)) { + g_printerr ("Cannot connect to ibus-daemon\n"); + return EXIT_FAILURE; + } + + _display = wl_display_connect (NULL); + if (_display == NULL) { + g_printerr ("Failed to connect to Wayland server: %s\n", + g_strerror (errno)); + return EXIT_FAILURE; + } + + _registry = wl_display_get_registry (_display); + memset (&wlim, 0, sizeof (wlim)); + wl_registry_add_listener (_registry, ®istry_listener, &wlim); + wl_display_roundtrip (_display); + if (wlim.input_method == NULL) { + g_printerr ("No input_method global\n"); + return EXIT_FAILURE; + } + + wlim.xkb_context = xkb_context_new (0); + if (wlim.xkb_context == NULL) { + g_printerr ("Failed to create XKB context\n"); + return EXIT_FAILURE; + } + + _use_sync_mode = _get_boolean_env ("IBUS_ENABLE_SYNC_MODE", FALSE); + + source = ibus_wayland_source_new (_display); + g_source_set_priority (source, G_PRIORITY_DEFAULT); + g_source_set_can_recurse (source, TRUE); + g_source_attach (source, NULL); + + g_signal_connect (_bus, "disconnected", + G_CALLBACK (_bus_disconnected_cb), NULL); + ibus_main (); + + return EXIT_SUCCESS; +} diff --git a/client/x11/10-ibus-x11.in b/client/x11/10-ibus-x11.in new file mode 100755 index 000000000..973cbb6f1 --- /dev/null +++ b/client/x11/10-ibus-x11.in @@ -0,0 +1,2 @@ +#!/bin/sh +@libexecdir@/ibus-x11 & diff --git a/client/x11/Makefile.am b/client/x11/Makefile.am index 91d97ddc5..90454bcfa 100644 --- a/client/x11/Makefile.am +++ b/client/x11/Makefile.am @@ -2,23 +2,23 @@ # # ibus - The Input Bus # -# Copyright (c) 2007-2010 Peng Huang -# Copyright (c) 2007-2010 Red Hat, Inc. +# Copyright (c) 2007-2015 Peng Huang +# Copyright (c) 2007-2015 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA libIMdkit = $(top_builddir)/util/IMdkit/libIMdkit.la @@ -26,6 +26,14 @@ libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la libexec_PROGRAMS = ibus-x11 +if ENABLE_GTK3 +GTK_CFLAGS = @GTK3_CFLAGS@ +GTK_LIBS = @GTK3_LIBS@ +else +GTK_CFLAGS = @GTK2_CFLAGS@ +GTK_LIBS = @GTK2_LIBS@ +endif + ibus_x11_SOURCES = \ main.c \ gdk-private.c \ @@ -40,12 +48,14 @@ ibus_x11_LDADD = \ $(libIMdkit) \ $(libibus) \ @X11_LIBS@ \ - @GTK2_LIBS@ \ + $(GTK_LIBS) \ + $(XFIXES_LIBS) \ $(NULL) ibus_x11_CFLAGS = \ @X11_CFLAGS@ \ - @GTK2_CFLAGS@ \ + $(GTK_CFLAGS) \ + $(XFIXES_CFLAGS) \ @DBUS_CFLAGS@ \ -I$(top_srcdir)/util/IMdkit \ -I$(top_srcdir)/src \ @@ -57,7 +67,17 @@ noinst_HEADERS = \ locales.h \ $(NULL) -$(IMdkit): +xwaylandsessiond_in_files = 10-ibus-x11.in +xwaylandsessiond_DATA = $(xwaylandsessiond_in_files:.in=) +xwaylandsessionddir=$(sysconfdir)/xdg/Xwayland-session.d + +10-ibus-x11: 10-ibus-x11.in + $(AM_V_GEN) sed -e "s|\@libexecdir\@|$(libexecdir)|" $< > $@.tmp && mv $@.tmp $@ + +install-data-hook: + chmod 755 $(DESTDIR)$(xwaylandsessionddir)/10-ibus-x11 + +$(libIMdkit): (cd $(top_builddir)/util/IMdkit; make) $(libibus): @@ -71,4 +91,12 @@ locales.h: xargs python -c 'import sys;print "#define LOCALES_STRING \"%s\"" % ",".join(sys.argv[1:])' \ ) > $@ +CLEANFILES = \ + $(xwaylandsessiond_DATA) \ + $(NULL) + +EXTRA_DIST = \ + 10-ibus-x11.in \ + $(NULL) + -include $(top_srcdir)/git.mk diff --git a/client/x11/gdk-private.c b/client/x11/gdk-private.c index 9e42a3ae2..5f23fe609 100644 --- a/client/x11/gdk-private.c +++ b/client/x11/gdk-private.c @@ -1,24 +1,24 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* ibus - * Copyright (C) 2008 Peng Huang - * Copyright (C) 2008 Red Hat, Inc. + * Copyright (C) 2008-2015 Peng Huang + * Copyright (C) 2008-2015 Red Hat, Inc. * * gdk-private.c: Copied some code from gtk2 * - * This tool is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 - * Library General Public License for more details. + * Lesser General Public License for more details. * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include "config.h" @@ -38,10 +38,6 @@ translate_key_event (GdkDisplay *display, XEvent *xevent) { GdkKeymap *keymap = gdk_keymap_get_for_display (display); -#if 0 - gunichar c = 0; - gchar buf[7]; -#endif event->key.type = xevent->xany.type == KeyPress ? GDK_KEY_PRESS : GDK_KEY_RELEASE; event->key.time = xevent->xkey.time; @@ -56,7 +52,11 @@ translate_key_event (GdkDisplay *display, event->key.hardware_keycode = xevent->xkey.keycode; +#if GTK_CHECK_VERSION(3, 0, 0) + event->key.keyval = GDK_KEY_VoidSymbol; +#else event->key.keyval = GDK_VoidSymbol; +#endif gdk_keymap_translate_keyboard_state (keymap, event->key.hardware_keycode, @@ -64,10 +64,6 @@ translate_key_event (GdkDisplay *display, event->key.group, &event->key.keyval, NULL, NULL, NULL); -#if 0 - _gdk_keymap_add_virtual_modifiers (keymap, &event->key.state); - event->key.is_modifier = _gdk_keymap_key_is_modifier (keymap, event->key.hardware_keycode); -#endif event->key.is_modifier = 0; /* Fill in event->string crudely, since various programs @@ -76,62 +72,6 @@ translate_key_event (GdkDisplay *display, event->key.string = NULL; event->key.length = 0; - /* Don't need event->string. - */ -#if 0 - if (event->key.keyval != GDK_VoidSymbol) - c = gdk_keyval_to_unicode (event->key.keyval); - - if (c) - { - gsize bytes_written; - gint len; - - /* Apply the control key - Taken from Xlib - */ - if (event->key.state & GDK_CONTROL_MASK) - { - if ((c >= '@' && c < '\177') || c == ' ') c &= 0x1F; - else if (c == '2') - { - event->key.string = g_memdup ("\0\0", 2); - event->key.length = 1; - buf[0] = '\0'; - goto out; - } - else if (c >= '3' && c <= '7') c -= ('3' - '\033'); - else if (c == '8') c = '\177'; - else if (c == '/') c = '_' & 0x1F; - } - - len = g_unichar_to_utf8 (c, buf); - buf[len] = '\0'; - - event->key.string = g_locale_from_utf8 (buf, len, - NULL, &bytes_written, - NULL); - if (event->key.string) - event->key.length = bytes_written; - } - else if (event->key.keyval == GDK_Escape) - { - event->key.length = 1; - event->key.string = g_strdup ("\033"); - } - else if (event->key.keyval == GDK_Return || - event->key.keyval == GDK_KP_Enter) - { - event->key.length = 1; - event->key.string = g_strdup ("\r"); - } - - if (!event->key.string) - { - event->key.length = 0; - event->key.string = g_strdup (""); - } - out: -#endif return; } diff --git a/client/x11/gdk-private.h b/client/x11/gdk-private.h index e79e45c54..035df35f1 100644 --- a/client/x11/gdk-private.h +++ b/client/x11/gdk-private.h @@ -5,20 +5,20 @@ * * gdk-private.h: * - * This tool is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 - * Library General Public License for more details. + * Lesser General Public License for more details. * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #ifndef __GTK_PRIVATE_H_ #define __GTK_PRIVATE_H_ diff --git a/client/x11/locales.h b/client/x11/locales.h index 0155e22ad..61af74fbd 100644 --- a/client/x11/locales.h +++ b/client/x11/locales.h @@ -1,2 +1,2 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ -#define LOCALES_STRING "aa,af,am,an,ar,as,ast,az,be,ber,bg,bn,bo,br,bs,byn,C,ca,crh,cs,csb,cy,da,de,dz,el,en,es,et,eu,fa,fi,fil,fo,fr,fur,fy,ga,gd,gez,gl,gu,gv,ha,he,hi,hne,hr,hsb,ht,hu,hy,id,ig,ik,is,it,iu,iw,ja,ka,kk,kl,km,kn,ko,ks,ku,kw,ky,lg,li,lo,lt,lv,mai,mg,mi,mk,ml,mn,mr,ms,mt,nan,nb,nds,ne,nl,nn,no,nr,nso,oc,om,or,pa,pa,pap,pl,pt,ro,ru,rw,sa,sc,sd,se,shs,si,sid,sk,sl,so,sq,sr,ss,st,sv,ta,te,tg,th,ti,tig,tk,tl,tn,tr,ts,tt,ug,uk,ur,uz,ve,vi,wa,wo,xh,yi,yo,zh,zu" +#define LOCALES_STRING "aa,af,agr,ak,am,an,anp,ar,ayc,az,as,ast,be,bem,ber,bg,bhb,bho,bi,bn,bo,br,brx,bs,byn,C,ca,ce,chr,cmn,crh,cs,csb,cv,cy,da,de,doi,dsb,dv,dz,el,en,eo,es,et,eu,fa,ff,fi,fil,fo,fr,fur,fy,ga,gd,gez,gl,gu,gv,ha,hak,he,hi,hif,hne,hr,hsb,ht,hu,hy,ia,id,ig,ik,is,it,iu,ja,ka,kab,kk,kl,km,kn,ko,kok,ks,ku,kw,ky,lb,lg,li,lij,ln,lo,lt,lv,lzh,mag,mai,mfe,mg,mhr,mi,miq,mjw,mk,ml,mn,mni,mr,ms,mt,my,nan,nb,nds,ne,nhn,niu,nl,nn,no,nr,nso,oc,om,or,os,pa,pap,pl,ps,pt,quz,raj,ro,ru,rw,sa,sah,sat,sc,sd,se,sgs,shn,shs,si,sid,sk,sl,sm,so,sq,sr,ss,st,sv,sw,szl,ta,tcy,te,tg,th,the,ti,tig,tk,tl,tn,to,tpi,tr,ts,tt,ug,uk,unm,ur,uz,ve,vi,wa,wae,wal,wo,xh,yi,yo,yue,yuw,zh,zu" diff --git a/client/x11/main.c b/client/x11/main.c index 65451abaf..fe30c1d6c 100644 --- a/client/x11/main.c +++ b/client/x11/main.c @@ -1,32 +1,38 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - * Copyright (C) 2007-2010 Peng Huang - * Copyright (C) 2007-2010 Red Hat, Inc. + * Copyright (C) 2007-2015 Peng Huang + * Copyright (C) 2015-2021 Takao Fujiwara + * Copyright (C) 2007-2015 Red Hat, Inc. * * main.c: * - * This tool is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 - * Library General Public License for more details. + * Lesser General Public License for more details. * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #define _GNU_SOURCE +#include "config.h" + #include #include #include #include +#ifdef HAVE_XFIXES +#include +#endif #include #include #include @@ -116,7 +122,7 @@ static gint g_debug_level = 0; static IBusBus *_bus = NULL; -static gboolean _use_sync_mode = FALSE; +static gboolean _use_sync_mode = TRUE; static void _xim_preedit_start (XIMS xims, const X11IC *x11ic) @@ -195,7 +201,7 @@ _xim_preedit_callback_draw (XIMS xims, X11IC *x11ic, const gchar *preedit_string } } - for (i = 0; i < len; i++) { + for (i = 0; feedback && i < len; i++) { feedback[i] = 0; } @@ -228,12 +234,13 @@ _xim_preedit_callback_draw (XIMS xims, X11IC *x11ic, const gchar *preedit_string } } - for (i = 0; i < len; i++) { + for (i = 0; feedback && i < len; i++) { if (feedback[i] == 0) { feedback[i] = XIMUnderline; } } - feedback[len] = 0; + if (feedback) + feedback[len] = 0; pcb.major_code = XIM_PREEDIT_DRAW; pcb.connect_id = x11ic->connect_id; @@ -273,7 +280,6 @@ _xim_store_ic_values (X11IC *x11ic, IMChangeICStruct *call_data) XICAttribute *sts_attr = call_data->status_attr; gint i; - guint32 attrs = 1; g_return_val_if_fail (x11ic != NULL, 0); for (i = 0; i < (int)call_data->ic_attr_num; ++i, ++ic_attr) { @@ -306,7 +312,7 @@ _xim_store_ic_values (X11IC *x11ic, IMChangeICStruct *call_data) LOG (1, "Unknown status attribute: %s", sts_attr->name); } - return attrs; + return 1; } @@ -464,6 +470,13 @@ _process_key_event_done (GObject *object, g_error_free (error); } + if (g_hash_table_lookup (_connections, + GINT_TO_POINTER ((gint) pfe->connect_id)) + == NULL) { + g_slice_free (IMForwardEventStruct, pfe); + return; + } + if (retval == FALSE) { IMForwardEvent (_xims, (XPointer) pfe); } @@ -600,29 +613,52 @@ _free_ic (gpointer data, gpointer user_data) } static int -xim_close (XIMS ims, IMCloseStruct *call_data) +_free_x11_iconn_from_id (CARD16 connect_id) { X11ICONN *conn; - LOG (1, "XIM_CLOSE connect_id=%d", - call_data->connect_id); - conn = (X11ICONN *) g_hash_table_lookup (_connections, - GINT_TO_POINTER ((gint) call_data->connect_id)); - g_return_val_if_fail (conn != NULL, 0); + GINT_TO_POINTER ((gint) connect_id)); - g_list_foreach (conn->clients, _free_ic, NULL); + if (conn == NULL) { + return 0; + } - g_list_free (conn->clients); + g_list_free_full (conn->clients, (GDestroyNotify) _free_ic); g_hash_table_remove (_connections, - GINT_TO_POINTER ((gint) call_data->connect_id)); + GINT_TO_POINTER ((gint) connect_id)); g_slice_free (X11ICONN, conn); return 1; } +static int +xim_close (XIMS xims, IMCloseStruct *call_data) +{ + CARD16 connect_id = call_data->connect_id; + + LOG (1, "XIM_CLOSE connect_id=%d", connect_id); + + return _free_x11_iconn_from_id (connect_id); +} + +static int +xim_disconnect_ic (XIMS xims, IMDisConnectStruct *call_data) +{ + CARD16 connect_id = call_data->connect_id; + + LOG (1, "XIM_DISCONNECT connect_id=%d", connect_id); + + _free_x11_iconn_from_id (connect_id); + + /* I am not sure if this can return 1 because I have not experienced + * that xim_disconnect_ic() is called. But I wish connect_id is + * released from _connections to avoid SEGV. */ + return 0; +} + static void _xim_set_cursor_location (X11IC *x11ic) @@ -706,9 +742,20 @@ xim_get_ic_values (XIMS xims, IMChangeICStruct *call_data) for (i = 0; i < (int) call_data->ic_attr_num; ++i, ++ic_attr) { if (g_strcmp0 (XNFilterEvents, ic_attr->name) == 0) { + /* ic_attr->value will be freed in server side and ignore + * leak of malloc with -Wanalyzer-malloc-leak flags in gcc 11.0.1 + */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wanalyzer-malloc-leak" ic_attr->value = (void *) malloc (sizeof (CARD32)); - *(CARD32 *) ic_attr->value = KeyPressMask | KeyReleaseMask; - ic_attr->value_length = sizeof (CARD32); + if (ic_attr->value) { + *(CARD32 *) ic_attr->value = KeyPressMask | KeyReleaseMask; + ic_attr->value_length = sizeof (CARD32); + } else { + g_warning ("Failed to malloc"); + ic_attr->value_length = 0; + } +#pragma GCC diagnostic pop } } @@ -745,6 +792,8 @@ ims_protocol_handler (XIMS xims, IMProtocol *call_data) return xim_open (xims, (IMOpenStruct *)call_data); case XIM_CLOSE: return xim_close (xims, (IMCloseStruct *)call_data); + case XIM_DISCONNECT: + return xim_disconnect_ic (xims, (IMDisConnectStruct *)call_data); case XIM_CREATE_IC: return xim_create_ic (xims, (IMChangeICStruct *)call_data); case XIM_DESTROY_IC: @@ -818,10 +867,9 @@ static void _bus_disconnected_cb (IBusBus *bus, gpointer user_data) { - g_warning ("Connection closed by ibus-daemon"); - g_object_unref (_bus); - _bus = NULL; - exit(EXIT_SUCCESS); + g_debug ("Connection closed by ibus-daemon\n"); + g_clear_object (&_bus); + ibus_quit (); } static void @@ -983,7 +1031,8 @@ _init_ibus (void) g_signal_connect (_bus, "disconnected", G_CALLBACK (_bus_disconnected_cb), NULL); - _use_sync_mode = _get_boolean_env ("IBUS_ENABLE_SYNC_MODE", FALSE); + /* https://github.com/ibus/ibus/issues/1713 */ + _use_sync_mode = _get_boolean_env ("IBUS_ENABLE_SYNC_MODE", TRUE); } static void @@ -1037,9 +1086,13 @@ _xim_init_IMdkit () sizeof (ims_encodings)/sizeof (XIMEncoding) - 1; encodings.supported_encodings = ims_encodings; - _xims = IMOpenIM(GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), + _xims = IMOpenIM (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), IMModifiers, "Xi18n", - IMServerWindow, GDK_WINDOW_XWINDOW(win), +#if GTK_CHECK_VERSION (3, 0, 0) + IMServerWindow, GDK_WINDOW_XID (win), +#else + IMServerWindow, GDK_WINDOW_XWINDOW (win), +#endif IMServerName, _server_name != NULL ? _server_name : "ibus", IMLocale, _locale != NULL ? _locale : LOCALES_STRING, IMServerTransport, "X/", @@ -1077,7 +1130,7 @@ _print_usage (FILE *fp, gchar *name) fprintf (fp, "Usage:\n" " %s --help Show this message\n" - " --server-name= -n Setup xim sevrer name\n" + " --server-name= -n Setup xim server name\n" " --locale= -l Setup support locales\n" " --locale-append= -a Append locales into the default support locales\n" " --kill-daemon -k Kill ibus daemon when exit\n" @@ -1095,14 +1148,41 @@ _xerror_handler (Display *dpy, XErrorEvent *e) return 1; } +/* When log into GNOME3 desktop immediately after the system is booted, + * ibus-daemon is sometimes alive but ibus-x11 is dead after log out + * the session. Because gdk_x_io_error() is called as the callback of + * XSetIOErrorHandler() in gtk/gdk/x11/gdkmain-x11.c in ibus-x11. + * Now I assume the callback is called in logout. + */ +static int +_xerror_io_handler (Display *dpy) +{ + if (_kill_daemon) + _atexit_cb (); + return 0; +} + int main (int argc, char **argv) { gint option_index = 0; gint c; + /* GDK_DISPLAY_XDISPLAY() and GDK_WINDOW_XID() does not work + * with GdkWaylandDisplay. + */ +#if GTK_CHECK_VERSION (3, 10, 0) + gdk_set_allowed_backends ("x11"); +#endif + gtk_init (&argc, &argv); XSetErrorHandler (_xerror_handler); + XSetIOErrorHandler (_xerror_io_handler); + +#ifdef HAVE_XFIXES + XFixesSetClientDisconnectMode(GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), + XFixesClientDisconnectFlagTerminate); +#endif while (1) { static struct option long_options [] = { @@ -1182,10 +1262,10 @@ main (int argc, char **argv) signal (SIGTERM, _sighandler); if (_kill_daemon) - g_atexit (_atexit_cb); + atexit (_atexit_cb); _xim_init_IMdkit (); - gtk_main(); + ibus_main(); exit (EXIT_SUCCESS); } diff --git a/conf/Makefile.am b/conf/Makefile.am index 86127b2f8..26f6e2aba 100644 --- a/conf/Makefile.am +++ b/conf/Makefile.am @@ -3,34 +3,26 @@ # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang -# Copyright (c) 2007-2010 Red Hat, Inc. +# Copyright (c) 2007-2018 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA -if ENABLE_GCONF -GCONF_DIR = \ - gconf \ - $(NULL) -endif - -if ENABLE_MEMCONF MEMCONF_DIR = \ memconf \ $(NULL) -endif if ENABLE_DCONF DCONF_DIR = \ @@ -40,7 +32,6 @@ endif SUBDIRS = \ $(DCONF_DIR) \ - $(GCONF_DIR) \ $(MEMCONF_DIR) \ $(NULL) diff --git a/conf/dconf/Makefile.am b/conf/dconf/Makefile.am index 148ba621f..f95165d5a 100644 --- a/conf/dconf/Makefile.am +++ b/conf/dconf/Makefile.am @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la @@ -29,7 +29,7 @@ libexec_PROGRAMS = \ ibus_dconf_SOURCES = \ main.c \ config.c \ - config.h \ + config-private.h \ $(NULL) ibus_dconf_CFLAGS = \ @GLIB2_CFLAGS@ \ @@ -66,16 +66,14 @@ DISTCLEANFILES = \ $(NULL) EXTRA_DIST = \ - dconf.xml.in.in \ + dconf.xml.in \ $(NULL) dconf.xml: dconf.xml.in - $(AM_V_GEN) \ - ( \ - libexecdir=${libexecdir}; \ - s=`cat $<`; \ - eval "echo \"$${s}\""; \ - ) > $@ + $(AM_V_GEN) sed \ + -e 's|@VERSION[@]|$(VERSION)|g' \ + -e 's|@libexecdir[@]|$(libexecdir)|g' $< > $@.tmp && \ + mv $@.tmp $@ $(libibus): $(MAKE) -C $(top_builddir)/src diff --git a/conf/dconf/config.h b/conf/dconf/config-private.h similarity index 81% rename from conf/dconf/config.h rename to conf/dconf/config-private.h index 9f602d6ad..a7318f40a 100644 --- a/conf/dconf/config.h +++ b/conf/dconf/config-private.h @@ -7,7 +7,7 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -15,15 +15,24 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #ifndef __CONFIG_DCONF_H__ #define __CONFIG_DCONF_H__ +#ifdef HAVE_CONFIG_H +# include +#endif + #include -#include +#ifdef DCONF_0_13_4 +# include +# include +#else +# include +#endif #define IBUS_TYPE_CONFIG_DCONF \ (ibus_config_dconf_get_type ()) diff --git a/conf/dconf/config.c b/conf/dconf/config.c index 02506fbad..30ac137d4 100644 --- a/conf/dconf/config.c +++ b/conf/dconf/config.c @@ -8,7 +8,7 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -16,14 +16,14 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include #include -#include "config.h" +#include "config-private.h" #define DCONF_PREFIX "/desktop/ibus" #define DCONF_PRESERVE_NAME_PREFIXES_KEY \ @@ -159,12 +159,19 @@ static void _watch_func (DConfClient *client, const gchar *gpath, const gchar * const *items, +#ifndef DCONF_0_13_4 gint n_items, +#endif const gchar *tag, IBusConfigDConf *config) { gchar **gkeys = NULL; gint i; +#ifdef DCONF_0_13_4 + gint n_items; + + n_items = g_strv_length ((gchar **)items); +#endif g_return_if_fail (gpath != NULL); g_return_if_fail (n_items >= 0); @@ -198,6 +205,7 @@ _watch_func (DConfClient *client, if (variant == NULL) { /* Use a empty tuple for a unset value */ variant = g_variant_new_tuple (NULL, 0); + g_variant_ref_sink (variant); } gname = strrchr (gkeys[i], '/'); @@ -231,6 +239,14 @@ static void ibus_config_dconf_init (IBusConfigDConf *config) { GVariant *variant; +#ifdef DCONF_0_13_4 + config->client = dconf_client_new (); + + g_signal_connect (config->client, "changed", + G_CALLBACK (_watch_func), config); + + dconf_client_watch_fast (config->client, DCONF_PREFIX"/"); +#else GError *error; config->client = dconf_client_new ("ibus", @@ -239,8 +255,12 @@ ibus_config_dconf_init (IBusConfigDConf *config) NULL); error = NULL; - if (!dconf_client_watch (config->client, DCONF_PREFIX"/", NULL, &error)) - g_warning ("Can not watch dconf path %s", DCONF_PREFIX"/"); + if (!dconf_client_watch (config->client, DCONF_PREFIX"/", NULL, &error)) { + g_warning ("Can not watch dconf path %s: %s", + DCONF_PREFIX"/", error->message); + g_error_free (error); + } +#endif config->preserve_name_prefixes = NULL; variant = dconf_client_read (config->client, @@ -265,9 +285,16 @@ static void ibus_config_dconf_destroy (IBusConfigDConf *config) { if (config->client) { +#ifdef DCONF_0_13_4 + dconf_client_unwatch_fast (config->client, DCONF_PREFIX"/"); +#else GError *error = NULL; - if (!dconf_client_unwatch (config->client, DCONF_PREFIX"/", NULL, &error)) - g_warning ("Can not unwatch dconf path %s", DCONF_PREFIX"/"); + if (!dconf_client_unwatch (config->client, DCONF_PREFIX"/", NULL, &error)) { + g_warning ("Can not unwatch dconf path %s: %s", + DCONF_PREFIX"/", error->message); + g_error_free (error); + } +#endif g_object_unref (config->client); config->client = NULL; @@ -307,23 +334,30 @@ ibus_config_dconf_set_value (IBusConfigService *config, g_free (gname); } +#ifdef DCONF_0_13_4 + /* Use dconf_client_write_sync() instead of dconf_client_write_fast() + * because dconf_client_write_fast() does not sync the data when + * ibus_config_get_values() is called immediately after + * ibus_config_set_value() is called. + * We won't add a new API for the sync only since IBusConfig is + * now deprecated and GSettings is recommended. + */ + retval = dconf_client_write_sync (client, + gkey, + value, + NULL, + NULL, + error); +#else retval = dconf_client_write (client, gkey, value, NULL, /* tag */ NULL, /* cancellable */ error); +#endif g_free (gkey); - /* notify the caller that the value has changed, as dconf does not - call watch_func when the caller is the process itself */ - if (retval) { - if (value == NULL) { - /* Use a empty tuple for a unset value */ - value = g_variant_new_tuple (NULL, 0); - } - ibus_config_service_value_changed (config, section, name, value); - } return retval; } @@ -357,8 +391,11 @@ ibus_config_dconf_get_value (IBusConfigService *config, g_free (gkey); if (variant == NULL) { - *error = g_error_new (G_DBUS_ERROR, G_DBUS_ERROR_FAILED, - "Config value [%s:%s] does not exist.", section, name); + g_set_error (error, + G_DBUS_ERROR, + G_DBUS_ERROR_FAILED, + "Config value [%s:%s] does not exist.", + section, name); return NULL; } @@ -375,7 +412,7 @@ ibus_config_dconf_get_values (IBusConfigService *config, gchar *dir, *gdir; gint len; gchar **entries, **p; - GVariantBuilder *builder; + GVariantBuilder builder; gboolean preserve_name; dir = g_strdup_printf (DCONF_PREFIX"/%s/", section); @@ -385,7 +422,7 @@ ibus_config_dconf_get_values (IBusConfigService *config, preserve_name = _has_prefixes (gdir, dconf->preserve_name_prefixes); entries = dconf_client_list (client, gdir, &len); - builder = g_variant_builder_new (G_VARIANT_TYPE ("a{sv}")); + g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); for (p = entries; *p != NULL; p++) { gchar *gkey = g_strconcat (gdir, *p, NULL); GVariant *value = dconf_client_read (client, gkey); @@ -395,7 +432,7 @@ ibus_config_dconf_get_values (IBusConfigService *config, if (!preserve_name) { name = _from_gsettings_name (*p); } - g_variant_builder_add (builder, "{sv}", name, value); + g_variant_builder_add (&builder, "{sv}", name, value); if (name != *p) { g_free (name); } @@ -405,7 +442,7 @@ ibus_config_dconf_get_values (IBusConfigService *config, g_strfreev (entries); g_free (gdir); - return g_variant_builder_end (builder); + return g_variant_builder_end (&builder); } static gboolean diff --git a/conf/dconf/dconf.xml.in.in b/conf/dconf/dconf.xml.in similarity index 77% rename from conf/dconf/dconf.xml.in.in rename to conf/dconf/dconf.xml.in index 0367008e5..4205cb00b 100644 --- a/conf/dconf/dconf.xml.in.in +++ b/conf/dconf/dconf.xml.in @@ -3,10 +3,10 @@ org.freedesktop.IBus.Config Dconf Config Component - ${libexecdir}/ibus-dconf + @libexecdir@/ibus-dconf @VERSION@ Daiki Ueno <ueno@unixuser.org> GPL - http://code.google.com/p/ibus + https://github.com/ibus/ibus/wiki ibus diff --git a/conf/dconf/main.c b/conf/dconf/main.c index 1b69baa3b..c8250f686 100644 --- a/conf/dconf/main.c +++ b/conf/dconf/main.c @@ -2,12 +2,13 @@ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2012-2021 Takao Fujiwara + * Copyright (C) 2008-2021 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -15,15 +16,15 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include #include #include -#include "config.h" +#include "config-private.h" static IBusBus *bus = NULL; static IBusConfigDConf *config = NULL; @@ -70,6 +71,9 @@ main (gint argc, gchar **argv) GOptionContext *context; setlocale (LC_ALL, ""); + errno = 0; + if (!g_setenv ("DCONF_PROFILE", "ibus", FALSE)) + g_warning ("Failed setenv %s", strerror (errno)); context = g_option_context_new ("- ibus dconf component"); diff --git a/conf/gconf/Makefile.am b/conf/gconf/Makefile.am index cf74a4aba..017b35411 100644 --- a/conf/gconf/Makefile.am +++ b/conf/gconf/Makefile.am @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la @@ -62,16 +62,14 @@ CLEANFILES = \ $(NULL) EXTRA_DIST = \ - gconf.xml.in.in \ + gconf.xml.in \ $(NULL) gconf.xml: gconf.xml.in - $(AM_V_GEN) \ - ( \ - libexecdir=${libexecdir}; \ - s=`cat $<`; \ - eval "echo \"$${s}\""; \ - ) > $@ + $(AM_V_GEN) sed \ + -e 's|@VERSION[@]|$(VERSION)|g' \ + -e 's|@libexecdir[@]|$(libexecdir)|g' $< > $@.tmp && \ + mv $@.tmp $@ $(libibus): $(MAKE) -C $(top_builddir)/src diff --git a/conf/gconf/config.c b/conf/gconf/config.c index 64f1c47db..902742dbe 100644 --- a/conf/gconf/config.c +++ b/conf/gconf/config.c @@ -202,7 +202,6 @@ _from_gconf_value (const GConfValue *gv) g_variant_builder_init (&builder, G_VARIANT_TYPE("ad")); break; case GCONF_VALUE_BOOL: g_variant_builder_init (&builder, G_VARIANT_TYPE("ab")); break; - break; default: g_assert_not_reached (); } @@ -249,9 +248,10 @@ ibus_config_gconf_set_value (IBusConfigService *config, gv = _to_gconf_value (value); if (gv == NULL) { gchar *str = g_variant_print (value, TRUE); - *error = g_error_new (G_DBUS_ERROR, G_DBUS_ERROR_FAILED, - "Can not set config value [%s:%s] to %s.", - section, name, str); + g_set_error (error, + G_DBUS_ERROR, G_DBUS_ERROR_FAILED, + "Can not set config value [%s:%s] to %s.", + section, name, str); g_free (str); return FALSE; } @@ -280,15 +280,16 @@ ibus_config_gconf_get_value (IBusConfigService *config, g_free (key); if (gv == NULL) { - *error = g_error_new (G_DBUS_ERROR, G_DBUS_ERROR_FAILED, - "Config value [%s:%s] does not exist.", section, name); + g_set_error (error, + G_DBUS_ERROR, G_DBUS_ERROR_FAILED, + "Config value [%s:%s] does not exist.", section, name); return NULL; } GVariant *variant = _from_gconf_value (gv); gconf_value_free (gv); - return variant; + return g_variant_ref_sink (variant); } static GVariant * @@ -302,19 +303,21 @@ ibus_config_gconf_get_values (IBusConfigService *config, g_free (dir); GSList *p; - GVariantBuilder *builder = g_variant_builder_new (G_VARIANT_TYPE ("a{sv}")); + GVariantBuilder builder; + + g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); for (p = entries; p != NULL; p = p->next) { GConfEntry *entry = (GConfEntry *)p->data; if (entry->key != NULL && entry->value != NULL) { const gchar *name = entry->key + len; GVariant *value = _from_gconf_value (entry->value); - g_variant_builder_add (builder, "{sv}", name, value); + g_variant_builder_add (&builder, "{sv}", name, value); } gconf_entry_free (entry); } g_slist_free (entries); - return g_variant_builder_end (builder); + return g_variant_builder_end (&builder); } static gboolean @@ -325,13 +328,10 @@ ibus_config_gconf_unset_value (IBusConfigService *config, { gchar *key = g_strdup_printf (GCONF_PREFIX"/%s/%s", section, name); - gconf_client_unset (((IBusConfigGConf *)config)->client, key, error); + gboolean retval = gconf_client_unset (((IBusConfigGConf *)config)->client, key, error); g_free (key); - if (*error != NULL) { - return FALSE; - } - return TRUE; + return retval; } IBusConfigGConf * diff --git a/conf/gconf/gconf.xml.in.in b/conf/gconf/gconf.xml.in similarity index 77% rename from conf/gconf/gconf.xml.in.in rename to conf/gconf/gconf.xml.in index 0644d7e95..6438d7597 100644 --- a/conf/gconf/gconf.xml.in.in +++ b/conf/gconf/gconf.xml.in @@ -3,10 +3,10 @@ org.freedesktop.IBus.Config GConf Config Component - ${libexecdir}/ibus-gconf + @libexecdir@/ibus-gconf @VERSION@ Peng Huang <shawn.p.huang@gmail.com> GPL - http://code.google.com/p/ibus + https://github.com/ibus/ibus/wiki ibus diff --git a/conf/gconf/main.c b/conf/gconf/main.c index b1100aa0a..8dc86b54f 100644 --- a/conf/gconf/main.c +++ b/conf/gconf/main.c @@ -56,6 +56,7 @@ main (gint argc, gchar **argv) if (!g_option_context_parse (context, &argc, &argv, &error)) { g_print ("Option parsing failed: %s\n", error->message); + g_error_free (error); exit (-1); } diff --git a/conf/memconf/Makefile.am b/conf/memconf/Makefile.am index f5f5c082a..b152a98de 100644 --- a/conf/memconf/Makefile.am +++ b/conf/memconf/Makefile.am @@ -8,24 +8,30 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la -libexec_PROGRAMS = \ +memconf_programs = \ ibus-memconf \ $(NULL) +if ENABLE_MEMCONF +libexec_PROGRAMS = $(memconf_programs) +else +noinst_PROGRAMS = $(memconf_programs) +endif + ibus_memconf_SOURCES = \ main.c \ config.c \ @@ -48,27 +54,31 @@ ibus_memconf_DEPENDENCIES = \ $(libibus) \ $(NULL) +if ENABLE_MEMCONF component_DATA = \ memconf.xml \ $(NULL) componentdir = $(pkgdatadir)/component +else +noinst_DATA = \ + memconf.xml \ + $(NULL) +endif CLEANFILES = \ memconf.xml \ $(NULL) EXTRA_DIST = \ - memconf.xml.in.in \ + memconf.xml.in \ $(NULL) memconf.xml: memconf.xml.in - $(AM_V_GEN) \ - ( \ - libexecdir=${libexecdir}; \ - s=`cat $<`; \ - eval "echo \"$${s}\""; \ - ) > $@ + $(AM_V_GEN) sed \ + -e 's|@VERSION[@]|$(VERSION)|g' \ + -e 's|@libexecdir[@]|$(libexecdir)|g' $< > $@.tmp && \ + mv $@.tmp $@ $(libibus): $(MAKE) -C $(top_builddir)/src diff --git a/conf/memconf/config.c b/conf/memconf/config.c index dd18f2e70..cb1ef7916 100644 --- a/conf/memconf/config.c +++ b/conf/memconf/config.c @@ -7,17 +7,17 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include #include @@ -182,10 +182,10 @@ ibus_config_memconf_unset_value (IBusConfigService *config, g_variant_new_tuple (NULL, 0)); } else { - if (error && *error) { - *error = g_error_new (G_DBUS_ERROR, G_DBUS_ERROR_FAILED, - "Config value [%s:%s] does not exist.", section, name); - } + g_set_error (error, + G_DBUS_ERROR, G_DBUS_ERROR_FAILED, + "Config value [%s:%s] does not exist.", + section, name); } return retval; } diff --git a/conf/memconf/config.h b/conf/memconf/config.h index 2b745d4f4..00ca196bc 100644 --- a/conf/memconf/config.h +++ b/conf/memconf/config.h @@ -7,17 +7,17 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #ifndef __CONFIG_MEMCONF_H__ #define __CONFIG_MEMCONF_H__ diff --git a/conf/memconf/main.c b/conf/memconf/main.c index 51dfd7f1d..0eec41d49 100644 --- a/conf/memconf/main.c +++ b/conf/memconf/main.c @@ -7,17 +7,17 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include #include diff --git a/conf/memconf/memconf.xml.in.in b/conf/memconf/memconf.xml.in similarity index 78% rename from conf/memconf/memconf.xml.in.in rename to conf/memconf/memconf.xml.in index b60dbf2e8..d6ea6906d 100644 --- a/conf/memconf/memconf.xml.in.in +++ b/conf/memconf/memconf.xml.in @@ -2,10 +2,10 @@ org.freedesktop.IBus.Config On-memory Config Component - ${libexecdir}/ibus-memconf + @libexecdir@/ibus-memconf @VERSION@ Peng Huang <shawn.p.huang@gmail.com>, modified by the Chromium OS Authors GPL - http://code.google.com/p/ibus + https://github.com/ibus/ibus/wiki ibus diff --git a/configure.ac b/configure.ac index 8dbba3a58..764eba685 100644 --- a/configure.ac +++ b/configure.ac @@ -2,56 +2,67 @@ # # ibus - The Input Bus # -# Copyright (c) 2007-2010 Peng Huang -# Copyright (c) 2007-2010 Red Hat, Inc. +# Copyright (c) 2007-2016 Peng Huang +# Copyright (c) 2015-2022 Takao Fujiwara +# Copyright (c) 2007-2022 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA # If ibus_released is 0, append datestamp to the version number. -m4_define([ibus_released], [0]) +m4_define([ibus_released], [1]) m4_define([ibus_major_version], [1]) -m4_define([ibus_minor_version], [4]) -m4_define([ibus_micro_version], [99]) -m4_define([ibus_interface_age], [0]) -m4_define([ibus_binary_age], +m4_define([ibus_minor_version], [5]) +m4_define([ibus_micro_version], [26]) +m4_define([ibus_abi_current], [5]) +m4_define([ibus_abi_revision], [m4_eval(100 * ibus_minor_version + ibus_micro_version)]) +m4_define([ibus_abi_age], [0]) m4_define([ibus_maybe_datestamp], m4_esyscmd([test x]ibus_released[ != x1 && date +.%Y%m%d | tr -d '\n\r'])) m4_define([ibus_version], ibus_major_version.ibus_minor_version.ibus_micro_version[]ibus_maybe_datestamp) -m4_define([ibus_api_version], [1.0]) +m4_define([ibus_api_version], [ibus_major_version.0]) AC_PREFEQ([2.62]) AC_INIT([ibus], [ibus_version], - [http://code.google.com/p/ibus/issues/entry], + [https://github.com/ibus/ibus/issues], [ibus]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_MACRO_DIR([m4]) -m4_define([ibus_binary_version], [1.0.0]) +m4_define([ibus_abi_current_minus_age], + [m4_eval(ibus_abi_current - ibus_abi_age)]) +m4_define([ibus_binary_version], + [ibus_major_version.ibus_abi_current_minus_age.ibus_abi_age.ibus_abi_revision]) # Required versions of other packages. -m4_define([glib_required_version], [2.26.0]) +m4_define([glib_required_version], [2.46.0]) +m4_define([gtk3_required_version], [3.12.0]) +# VALA_TARGET_GLIB_VERSION is used by valac --ccode --target-glib . +# VALA_TARGET_GLIB_VERSION and glib_required_version will be different +# in the future. +VALA_TARGET_GLIB_VERSION=2.46 +AC_SUBST(VALA_TARGET_GLIB_VERSION) # Init automake. -AM_INIT_AUTOMAKE([1.10]) +AM_INIT_AUTOMAKE([1.11.1 parallel-tests]) AM_MAINTAINER_MODE([enable]) AC_GNU_SOURCE @@ -64,25 +75,33 @@ AM_SILENT_RULES([yes]) IBUS_MAJOR_VERSION=ibus_major_version IBUS_MINOR_VERSION=ibus_minor_version IBUS_MICRO_VERSION=ibus_micro_version -IBUS_INTERFACE_AGE=ibus_interface_age -IBUS_BINARY_AGE=ibus_binary_age +IBUS_ABI_CURRENT=ibus_abi_current +IBUS_ABI_REVISION=ibus_abi_revision +IBUS_ABI_AGE=ibus_abi_age IBUS_VERSION=ibus_version IBUS_API_VERSION=ibus_api_version IBUS_BINARY_VERSION=ibus_binary_version AC_SUBST(IBUS_MAJOR_VERSION) AC_SUBST(IBUS_MINOR_VERSION) AC_SUBST(IBUS_MICRO_VERSION) -AC_SUBST(IBUS_INTERFACE_AGE) -AC_SUBST(IBUS_BINARY_AGE) +AC_SUBST(IBUS_ABI_CURRENT) +AC_SUBST(IBUS_ABI_REVISION) +AC_SUBST(IBUS_ABI_AGE) AC_SUBST(IBUS_API_VERSION) AC_SUBST(IBUS_VERSION) AC_SUBST(IBUS_BINARY_VERSION) # libtool versioning -m4_define([lt_current], - [m4_eval(100 * ibus_minor_version + ibus_micro_version - ibus_interface_age)]) -m4_define([lt_revision], [ibus_interface_age]) -m4_define([lt_age], [m4_eval(ibus_binary_age - ibus_interface_age)]) +# +# If LT_VERSION_INFO="lt_current:lt_revision:lt_age", libibus is +# libibus-ibus_api_version.so.(lt_current - lt_age).lt_age.lt_revision +# If the abi is changed, but it is compatible with last version, +# ibus_abi_current++, ibus_abi_age++; +# If the abi is not compatible with last version, +# ibus_abi_current++, ibus_abi_age = 0; +m4_define([lt_current], [ibus_abi_current]) +m4_define([lt_revision], [ibus_abi_revision]) +m4_define([lt_age], [ibus_abi_age]) LT_VERSION_INFO="lt_current:lt_revision:lt_age" LT_CURRENT_MINUS_AGE=m4_eval(lt_current - lt_age) AC_SUBST(LT_VERSION_INFO) @@ -93,6 +112,9 @@ GETTEXT_PACKAGE=ibus10 AC_SUBST(GETTEXT_PACKAGE) AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [The prefix for out gettext translation domains.]) +DEFINE_IBUS_LOCALEDIR +AC_DEFINE_UNQUOTED(LOCALEDIR, "$ibus_localedir", + [Define the location where the catalogs will be installed]) # For dislpay date. m4_define(ibus_datedisplay, @@ -105,19 +127,22 @@ AC_SUBST(DATE_DISPLAY) AC_PROG_CC AM_PROG_CC_C_O AC_PROG_CC_STDC -AM_PROG_VALAC([0.14]) +AM_PROG_VALAC([0.20]) AC_PROG_INSTALL AC_PROG_MAKE_SET # i18n stuff -AM_GLIB_GNU_GETTEXT +AM_GNU_GETTEXT_VERSION([0.19.8]) +AM_GNU_GETTEXT([external]) # Define PACKAGE_VERSION_* variables. AM_DISABLE_STATIC AC_ISC_POSIX AC_HEADER_STDC -AM_PROG_LIBTOOL -IT_PROG_INTLTOOL([0.35.0]) +LT_INIT + +# Check header filess. +AC_CHECK_HEADERS([sys/prctl.h]) # Check functions. AC_CHECK_FUNCS(daemon) @@ -132,11 +157,32 @@ PKG_CHECK_MODULES(GOBJECT2, [ gobject-2.0 >= glib_required_version ]) PKG_CHECK_MODULES(GIO2, [ - gio-2.0 >= glib_required_version + gio-2.0 gio-unix-2.0 >= glib_required_version ]) PKG_CHECK_MODULES(GTHREAD2, [ gthread-2.0 >= glib_required_version ]) +PKG_CHECK_EXISTS( + [glib-2.0 >= 2.65.0], + [AC_DEFINE(GLIB2_EMBED_ERRNO_H, TRUE, [glib2 include errno.h])] +) +AH_BOTTOM([ +#ifndef GLIB2_EMBED_ERRNO_H +# include +#endif +]) + +# --disable-tests option. +AC_ARG_ENABLE(tests, + AS_HELP_STRING([--disable-tests], + [Do not run tests]), + [enable_tests=$enableval], + [enable_tests=yes] +) +AM_CONDITIONAL([ENABLE_TESTS], [test x"$enable_tests" = x"yes"]) +if test x"$enable_tests" != x"yes"; then + enable_tests="no (disabled, use --enable-tests to enable)" +fi # --disable-gtk2 option. AC_ARG_ENABLE(gtk2, @@ -156,6 +202,15 @@ AC_ARG_ENABLE(gtk3, ) AM_CONDITIONAL([ENABLE_GTK3], [test x"$enable_gtk3" = x"yes"]) +# --enable-gtk4 option. +AC_ARG_ENABLE(gtk4, + AS_HELP_STRING([--enable-gtk4], + [Build gtk4 im module]), + [enable_gtk4=$enableval], + [enable_gtk4=no] +) +AM_CONDITIONAL([ENABLE_GTK4], [test x"$enable_gtk4" = x"yes"]) + # --disable-xim option. AC_ARG_ENABLE(xim, AS_HELP_STRING([--disable-xim], @@ -165,54 +220,71 @@ AC_ARG_ENABLE(xim, ) AM_CONDITIONAL([ENABLE_XIM], [test x"$enable_xim" = x"yes"]) -# --disable-vala option. -AC_ARG_ENABLE(vala, - AS_HELP_STRING([--disable-vala], - [Do not build ibus vala binding]), - [enable_vala=$enableval], - [enable_vala=yes] -) -if test x"$enable_vala" = x"yes"; then - AC_PATH_PROG([VAPIGEN], [vapigen], [false]) -fi -AM_CONDITIONAL([ENABLE_VALA], [test x"$enable_vala" = x"yes"]) -if test x"$enable_vala" != x"yes"; then - enable_vala="no (disabled, use --enable-vala to enable)" +if test x"$enable_xim" = x"yes"; then + AC_SUBST([XIM_CLI_ARG], [--xim]) fi -if test x"$enable_gtk2" = x"yes" -o x"$enable_xim" = x"yes" ; then +# --enable-wayland option. +AC_ARG_ENABLE(wayland, + AS_HELP_STRING([--enable-wayland], + [Build wayland support]), + [enable_wayland=$enableval], + [enable_wayland=no] +) +AM_CONDITIONAL([ENABLE_WAYLAND], [test x"$enable_wayland" = x"yes"]) + +# --enable-appindicator option. +AC_ARG_ENABLE(appindicator, + AS_HELP_STRING([--enable-appindicator], + [Build appindicator support]), + [enable_appindicator=$enableval], + [enable_appindicator=yes] +) +AM_CONDITIONAL([ENABLE_APPINDICATOR], [test x"$enable_appindicator" = x"yes"]) + +if test x"$enable_gtk2" = x"yes"; then # check for gtk2 PKG_CHECK_MODULES(GTK2, [ gtk+-2.0 ]) -fi -if test x"$enable_gtk2" = x"yes"; then - # check for gdk2 gtk2_binary_version=`$PKG_CONFIG --variable=gtk_binary_version gtk+-2.0` GTK2_IM_MODULEDIR="$libdir"/gtk-2.0/$gtk2_binary_version/immodules - - PKG_CHECK_MODULES(GDK2, [ - gdk-2.0 - ]) else enable_gtk2="no (disabled, use --enable-gtk2 to enable)" fi if test x"$enable_gtk3" = x"yes"; then - # check for gtk3, gdk3 + # check for gtk3 PKG_CHECK_MODULES(GTK3, [ - gtk+-3.0 + gtk+-3.0 >= gtk3_required_version ]) + PKG_CHECK_EXISTS([gdk-wayland-3.0], + [enable_gdk3_wayland=yes], + [enable_gdk3_wayland=no] + ) gtk3_binary_version=`$PKG_CONFIG --variable=gtk_binary_version gtk+-3.0` GTK3_IM_MODULEDIR="$libdir"/gtk-3.0/$gtk3_binary_version/immodules +else + enable_gtk3="no (disabled, use --enable-gtk3 to enable)" + enable_gdk3_wayland=no +fi +if test x"$enable_gdk3_wayland" != x"yes"; then + enable_gdk3_wayland="no (disabled, need to install gdk-wayland-3.0.pc)" +fi +AM_CONDITIONAL([ENABLE_GDK3_WAYLAND], [test x"$enable_gdk3_wayland" = x"yes"]) - PKG_CHECK_MODULES(GDK3, [ - gdk-3.0 +if test x"$enable_gtk4" = x"yes"; then + # check for gtk4 + PKG_CHECK_MODULES(GTK4, [ + gtk4 ]) + + gtk4_binary_version=`$PKG_CONFIG --variable=gtk_binary_version gtk4` + GTK4_IM_MODULEDIR="$libdir"/gtk-4.0/$gtk4_binary_version/immodules else - enable_gtk3="no (disabled, use --enable-gtk3 to enable)" + enable_gtk4="no (disabled, use --enable-gtk4 to enable)" fi if test x"$enable_xim" = x"yes"; then @@ -221,16 +293,53 @@ if test x"$enable_xim" = x"yes"; then x11 ]) AC_CHECK_HEADERS([X11/XKBlib.h]) + + # if we don't have gtk3 yet, check for gtk2 + if test x"$enable_gtk3" != x"yes"; then + # check for gtk2 + PKG_CHECK_MODULES(GTK2, [ + gtk+-2.0 + ]) + fi else enable_xim="no (disabled, use --enable-xim to enable)" fi +if $PKG_CONFIG --exists x11; then + X11_PREFIX="`$PKG_CONFIG --variable=prefix x11`" +elif test x"$prefix" != xNONE; then + X11_PREFIX="$prefix" +else + X11_PREFIX="$ac_default_prefix" +fi +AC_SUBST(X11_PREFIX) + +if test x"$enable_wayland" = x"yes"; then + # Check for wayland + PKG_CHECK_MODULES(WAYLAND, [ + wayland-client >= 1.2.0 + xkbcommon + ]) + m4_ifdef([WAYLAND_SCANNER_RULES], + [WAYLAND_PRTCLS_SUBDIR='wayland-protocols/unstable/input-method' + AC_SUBST(WAYLAND_PRTCLS_SUBDIR) + WAYLAND_SCANNER_RULES(['$(datadir)/$(WAYLAND_PRTCLS_SUBDIR)'])], + [AC_SUBST(wayland_scanner_rules)]) +else + enable_wayland="no (disabled, use --enable-wayland to enable)" + AC_SUBST(wayland_scanner_rules) +fi + +if test x"$enable_appindicator" = x"yes"; then + enable_appindicator="yes (enabled, use --disable-appindicator to disable)" +fi + # GObject introspection GOBJECT_INTROSPECTION_CHECK([0.6.8]) IBUS_GIR_SCANNERFLAGS= if test x"$found_introspection" = x"yes" ; then - IBUS_GIR_SCANNERFLAGS="--identifier-prefix=IBus --symbol-prefix=ibus" + IBUS_GIR_SCANNERFLAGS="--warn-all --identifier-prefix=IBus --symbol-prefix=ibus --c-include=ibus.h" PKG_CHECK_EXISTS([gobject-introspection-1.0 >= 0.9.6], [gir_symbol_prefix=yes], [gir_symbol_prefix=no]) @@ -240,6 +349,9 @@ if test x"$found_introspection" = x"yes" ; then fi AC_SUBST(IBUS_GIR_SCANNERFLAGS) +# Check vapigen. +VAPIGEN_CHECK([0.16]) + # Check for gtk-doc. GTK_DOC_CHECK(1.9) if test x"$enable_gtk_doc" = x"no"; then @@ -251,33 +363,6 @@ PKG_CHECK_MODULES(DBUS, [ dbus-1 ]) -# --disable-gconf option. -AC_ARG_ENABLE(gconf, - AS_HELP_STRING([--disable-gconf], - [Do not use GConf code]), - [enable_gconf=$enableval], - [enable_gconf=yes] -) -AM_CONDITIONAL([ENABLE_GCONF], [test x"$enable_gconf" = x"yes"]) - -if test x"$enable_gconf" = x"yes"; then - # check gconf - PKG_CHECK_MODULES(GCONF, - [gconf-2.0 >= 2.12], - ) - - AC_PATH_PROG(GCONFTOOL, gconftool-2, no) - if test x"$GCONFTOOL" = xno; then - AC_MSG_ERROR([gconftool-2 executable not found in your path - should be installed with GConf]) - fi - - AM_GCONF_SOURCE_2 - # GCONF_SCHEMAS_INSTALL should be set in macro AM_GCONF_SOURCE_2 -else - AM_CONDITIONAL([GCONF_SCHEMAS_INSTALL], [false]) - enable_gconf="no (disabled, use --enable-gconf to enable)" -fi - # --enable-memconf option. AC_ARG_ENABLE(memconf, AS_HELP_STRING([--enable-memconf], @@ -288,27 +373,54 @@ AC_ARG_ENABLE(memconf, AM_CONDITIONAL([ENABLE_MEMCONF], [test "x$enable_memconf" = "xyes"]) AC_ARG_ENABLE(dconf, - AS_HELP_STRING([--enable-dconf], - [Enable configure base on dconf]), + AS_HELP_STRING([--disable-dconf], + [Disable configure base on dconf]), [enable_dconf=$enableval], - [enable_dconf=no] + [enable_dconf=yes] ) +AM_CONDITIONAL([ENABLE_DCONF], [test x"$enable_dconf" = x"yes"]) if test x"$enable_dconf" = x"yes"; then # check dconf PKG_CHECK_MODULES(DCONF, - [dconf >= 0.7.5], , - enable_dconf=no + [dconf >= 0.7.5], ) + PKG_CHECK_EXISTS([dconf >= 0.13.4], + [AC_DEFINE(DCONF_0_13_4, TRUE, [dconf is 0.13.4 or later])], + []) # check glib-compile-schemas GLIB_GSETTINGS + enable_dconf="yes (enabled, use --disable-dconf to disable)" +fi + +AC_ARG_ENABLE(systemd-services, + AS_HELP_STRING([--disable-systemd-services], + [Disable systemd services installation]), + [enable_systemd=$enableval], + [enable_systemd=yes] +) +AM_CONDITIONAL([ENABLE_SYSTEMD], [test x"$enable_systemd" = x"yes"]) + +if test x"$enable_systemd" = x"yes"; then + PKG_CHECK_MODULES(SYSTEMD, [ + systemd >= 0.7.5 + ]) + AC_SUBST([SYSTEMD_USER_UNIT_DIR], [`$PKG_CONFIG --define-variable prefix='${prefix}' --variable systemduserunitdir systemd`]) + enable_systemd="yes (enabled, use --disable-systemd-services to disable)" fi -AM_CONDITIONAL([ENABLE_DCONF], [test x"$enable_dconf" = x"yes"]) # Check env. AC_PATH_PROG(ENV_IBUS_TEST, env) AC_SUBST(ENV_IBUS_TEST) +AC_ARG_ENABLE(python2, + AS_HELP_STRING([--disable-python2], + [Do not install bindings/pygobject/gi and ibus for python2. + '--disable-python2' bring '--disable-python-library'.]), + [enable_python2=$enableval], + [enable_python2=yes] +) + AC_ARG_ENABLE(python-library, AS_HELP_STRING([--enable-python-library], [Use ibus python library]), @@ -323,11 +435,50 @@ AC_ARG_ENABLE(setup, [enable_setup=yes] ) +# Define python version +AC_ARG_WITH(python, + AS_HELP_STRING([--with-python[=PATH]], + [Select python2 or python3]), + [PYTHON=$with_python], [] +) + +AM_PATH_PYTHON([2.5]) + +if test x"$enable_python2" != x"yes"; then + enable_python_library=no + PYTHON2= + enable_python2="no (disabled, use --enable-python2 to enable)" +else + AC_PATH_PROG(PYTHON2, python2) + + if test x"$PYTHON2" = x""; then + PYTHON2=$PYTHON + fi +fi + +AM_CONDITIONAL([ENABLE_PYTHON2], [test x"$enable_python2" = x"yes"]) AM_CONDITIONAL([ENABLE_PYTHON_LIBRARY], [test x"$enable_python_library" = x"yes"]) AM_CONDITIONAL([ENABLE_SETUP], [test x"$enable_setup" = x"yes"]) AM_CONDITIONAL([ENABLE_DAEMON], [true]) -AM_PATH_PYTHON([2.5]) +PYGOBJECT_REQUIRED=3.0.0 + +PKG_CHECK_EXISTS([pygobject-3.0 >= $PYGOBJECT_REQUIRED], + [enable_pygobject=yes], [enable_pygobject=no]) + +if test "x$enable_pygobject" = "xyes"; then + PKG_CHECK_MODULES(PYTHON, [pygobject-3.0 >= $PYGOBJECT_REQUIRED]) + + pyoverridesdir=`$PYTHON -c "import gi; print(gi._overridesdir)"` + AC_SUBST(pyoverridesdir) + + if test x"$enable_python2" = x"yes"; then + py2overridesdir=`$PYTHON2 -c "import gi; print(gi._overridesdir)"` + AC_SUBST(py2overridesdir) + fi +fi + +AM_CONDITIONAL(ENABLE_PYGOBJECT, test x"$enable_pygobject" = "xyes") if test x"$enable_python_library" = x"yes"; then # Check python. @@ -346,6 +497,13 @@ if test x"$enable_python_library" = x"yes"; then AC_SUBST(PYTHON_CFLAGS) AC_SUBST(PYTHON_INCLUDES) AC_SUBST(PYTHON_LIBS) + + PYTHON2_PREFIX=`$PYTHON2 -c "import sys; sys.stdout.write(sys.prefix)"` + PYTHON2_VERSION=`$PYTHON2 -c "import sys; sys.stdout.write(sys.version[[:3]])"` + PYTHON2_LIBDIR="$PYTHON2_PREFIX/lib/python$PYTHON2_VERSION" + python2dir="$PYTHON2_LIBDIR/site-packages" + pkgpython2dir="$python2dir/ibus" + AC_SUBST(pkgpython2dir) else enable_python_library="no (disabled, use --enable-python-library to enable)" fi @@ -366,6 +524,14 @@ AC_ARG_WITH(gtk3-im-module-dir, ) AC_SUBST(GTK3_IM_MODULEDIR) +# Define gtk4 immodule dir. +AC_ARG_WITH(gtk4-im-module-dir, + AS_HELP_STRING([--with-gtk4-im-module-dir[=DIR]], + [Select gtk4 immodule dir]), + GTK4_IM_MODULEDIR=$with_gtk4_im_module_dir +) +AC_SUBST(GTK4_IM_MODULEDIR) + if test x"$enable_python" = x"yes"; then # Check for dbus-python. AC_ARG_ENABLE(dbus-python-check, @@ -407,7 +573,7 @@ AC_ARG_WITH(no-snooper-apps, AS_HELP_STRING([--with-no-snooper-apps[=regex1,regex2]], [Does not enable keyboard snooper in those applications (like: .*chrome.*,firefox.*)]), NO_SNOOPER_APPS=$with_no_snooper_apps, - NO_SNOOPER_APPS=[.*chrome.*,.*chromium.*,firefox.*,Do.*] + NO_SNOOPER_APPS=[firefox.*,.*chrome.*,.*chromium.*,terminator] ) AC_DEFINE_UNQUOTED(NO_SNOOPER_APPS, "$NO_SNOOPER_APPS", [Does not enbale keyboard snooper in those applications]) @@ -415,7 +581,7 @@ AC_DEFINE_UNQUOTED(NO_SNOOPER_APPS, "$NO_SNOOPER_APPS", # GNOME 3 uses the theme's icon. AC_ARG_WITH(panel-icon-keyboard, AS_HELP_STRING([--with-panel-icon-keyboard[=icon_name]], - [Set the default panel icon (default: "input-keyboard-symbolic")]), + [Set the default panel icon (default: "ibus-keyboard")]), [if test x"$with_panel_icon_keyboard" = x"yes" -o \ x"$with_panel_icon_keyboard" = x; then with_panel_icon_keyboard="input-keyboard-symbolic" @@ -425,7 +591,7 @@ AC_ARG_WITH(panel-icon-keyboard, fi IBUS_ICON_KEYBOARD=$with_panel_icon_keyboard ], - IBUS_ICON_KEYBOARD="input-keyboard-symbolic" + IBUS_ICON_KEYBOARD="ibus-keyboard" ) AC_SUBST(IBUS_ICON_KEYBOARD) @@ -442,83 +608,294 @@ else enable_surrounding_text="no (disabled, use --enable-surrounding-text to enable)" fi +# --disable-ui +AC_ARG_ENABLE(ui, + AS_HELP_STRING([--disable-ui], + [Disable ibus default user interface]), + [enable_ui=$enableval], + [enable_ui=yes] +) +AM_CONDITIONAL([ENABLE_UI], [test x"$enable_ui" = x"yes"]) +if test x"$enable_ui" = x"yes"; then + # Check for x11 + PKG_CHECK_MODULES(X11, [ + x11 + ]) + enable_ui="yes (enabled, use --disable-ui to disable)" +fi + +# --disable-engine +AC_ARG_ENABLE(engine, + AS_HELP_STRING([--disable-engine], + [Disable ibus simple engine]), + [enable_engine=$enableval], + [enable_engine=yes] +) +AM_CONDITIONAL([ENABLE_ENGINE], [test x"$enable_engine" = x"yes"]) +if test x"$enable_engine" = x"yes"; then + enable_engine="yes (enabled, use --disable-engine to disable)" +fi + +# --disable-libnotify +AC_ARG_ENABLE(libnotify, + AS_HELP_STRING([--disable-libnotify], + [Disable to link libnotify]), + [enable_libnotify=$enableval], + [enable_libnotify=yes] +) +AM_CONDITIONAL([ENABLE_LIBNOTIFY], [test x"$enable_libnotify" = x"yes"]) +if test x"$enable_libnotify" = x"yes"; then + PKG_CHECK_MODULES(LIBNOTIFY, [ + libnotify >= 0.7 + ]) + enable_libnotify="yes (enabled, use --disable-libnotify to disable)" +fi + +PKG_CHECK_MODULES(XTEST, + [x11 xtst], + [enable_xtest=yes], + [enable_xtest=no] +) +AM_CONDITIONAL([ENABLE_XTEST], [test x"$enable_xtest" = x"yes"]) + +PKG_CHECK_MODULES(XFIXES, + [x11 xfixes >= 6], + [AC_DEFINE([HAVE_XFIXES], [1], [Define to enable XFixes]) + have_xfixes=yes], + [have_xfixes="no (libXfixes version is lower than 6)"] +) + +# --enable-install-tests +AC_ARG_ENABLE(install-tests, + AS_HELP_STRING([--enable-install-tests], + [Enable to install tests]), + [enable_install_tests=$enableval], + [enable_install_tests=no] +) +AM_CONDITIONAL([ENABLE_INSTALL_TESTS], [test x"$enable_install_tests" = x"yes"]) +if test x"$enable_install_tests" = x"no"; then + enable_install_tests="no (disabled, use --enable-install-tests to enable)" +fi + + +# --disable-emoji-dict option. +AC_ARG_ENABLE(emoji-dict, + AS_HELP_STRING([--disable-emoji-dict], + [Do not build Emoji dict files]), + [enable_emoji_dict=$enableval], + [enable_emoji_dict=yes] +) +AM_CONDITIONAL([ENABLE_EMOJI_DICT], [test x"$enable_emoji_dict" = x"yes"]) + +AC_ARG_WITH(unicode-emoji-dir, + AS_HELP_STRING([--with-unicode-emoji-dir[=DIR]], + [Set the directory of Unicode Emoji. + (default: "/usr/share/unicode/emoji")]), + UNICODE_EMOJI_DIR=$with_unicode_emoji_dir, + UNICODE_EMOJI_DIR="/usr/share/unicode/emoji" +) +AC_SUBST(UNICODE_EMOJI_DIR) + +AC_ARG_WITH(emoji-annotation-dir, + AS_HELP_STRING([--with-emoji-annotation-dir[=DIR]], + [Set the directory of CLDR annotation files. + (default: "/usr/share/unicode/cldr/common/annotations")]), + EMOJI_ANNOTATION_DIR=$with_emoji_annotation_dir, + EMOJI_ANNOTATION_DIR="/usr/share/unicode/cldr/common/annotations" +) +AC_SUBST(EMOJI_ANNOTATION_DIR) + +if test x"$enable_emoji_dict" = x"yes"; then + if test ! -f $UNICODE_EMOJI_DIR/emoji-test.txt ; then + AC_MSG_ERROR(Not found $UNICODE_EMOJI_DIR/emoji-test.txt. You can get \ +the emoji files from http://www.unicode.org/Public/emoji/4.0/) + else + # POSIX SHELL has no ${FOO:0:1} + head=`echo "$UNICODE_EMOJI_DIR" | cut -c1`; + if test $head != "/" ; then + UNICODE_EMOJI_DIR=`realpath "$UNICODE_EMOJI_DIR"` + fi + fi + if test ! -f $EMOJI_ANNOTATION_DIR/en.xml ; then + AC_MSG_ERROR(Not found $EMOJI_ANNOTATION_DIR/en.xml. You can get \ +https://github.com/fujiwarat/cldr-emoji-annotation) + else + head=`echo "$EMOJI_ANNOTATION_DIR" | cut -c1`; + if test $head != "/" ; then + EMOJI_ANNOTATION_DIR=`realpath "$EMOJI_ANNOTATION_DIR"` + fi + fi + enable_emoji_dict="yes (enabled, use --disable-emoji-dict to disable)" +fi + +# --disable-unicode-dict option. +AC_ARG_ENABLE(unicode-dict, + AS_HELP_STRING([--disable-unicode-dict], + [Do not build Unicode dict files]), + [enable_unicode_dict=$enableval], + [enable_unicode_dict=yes] +) +AM_CONDITIONAL([ENABLE_UNICODE_DICT], [test x"$enable_unicode_dict" = x"yes"]) + +AC_ARG_WITH(ucd-dir, + AS_HELP_STRING([--with-ucd-dir[=DIR]], + [Set the directory of UCD (Unicode Character Database) files. + (default: "/usr/share/unicode/ucd")]), + UCD_DIR=$with_ucd_dir, + UCD_DIR="/usr/share/unicode/ucd" +) +AC_SUBST(UCD_DIR) + +if test x"$enable_unicode_dict" = x"yes"; then + if test ! -f $UCD_DIR/NamesList.txt ; then + AC_MSG_ERROR(Not found $UCD_DIR/NamesList.txt. You can get \ +the UCD files from https://www.unicode.org/Public/UNIDATA/) + elif test ! -f $UCD_DIR/Blocks.txt ; then + AC_MSG_ERROR(Not found $UCD_DIR/Blocks.txt. You can get \ +the UCD files from https://www.unicode.org/Public/UNIDATA/) + else + # POSIX SHELL has no ${FOO:0:1} + head=`echo "$UCD_DIR" | cut -c1`; + if test $head != "/" ; then + UCD_DIR=`realpath "$UCD_DIR"` + fi + fi + enable_unicode_dict="yes (enabled, use --disable-unicode-dict to disable)" +fi + +AC_ARG_WITH(socket-dir, + AS_HELP_STRING([--with-socket-dir[=DIR]], + [Set the default socket directory to connect ibus-daemon with D-Bus + connections (default: "$XDG_CACHE_HOME/ibus"). + The best practice of the socket directory would be unique per user + not to modify by malicious users but XDG_RUNTIME_DIR is not integrated + in BSD systems and the BSD's default is "/tmp". + XDG_RUMTIME_DIR is not useful now because XDG_RUMTIME_DIR is available + by login but not `su` command but ibus-daemon can be run with su. + "$XDG_RUMTIME_DIR", "$XDG_CACHE_HOME", "$UID" are extracted by + ibus-daemon. + ibus-daemon also runs mkdir for the socket directory since BSD + systems do not support abstract socket paths. + The socket path on a NFS mount would not be a good idea likes + "/home/$USER" because the directory is not sometimes accessible + with the network condition.]), + [IBUS_SOCKET_DIR=$with_socket_dir], + [case $host in + *linux*) IBUS_SOCKET_DIR='unix:tmpdir=$XDG_CACHE_HOME/ibus';; + *) IBUS_SOCKET_DIR='unix:tmpdir=/tmp';; + esac] + +) +AC_DEFINE_UNQUOTED(IBUS_SOCKET_DIR, "$IBUS_SOCKET_DIR", + [The default socket directory to connect ibus-daemon.]) + # Check iso-codes. PKG_CHECK_MODULES(ISOCODES, [ iso-codes ]) -ISOCODES_PREFIX=`pkg-config iso-codes --variable=prefix` +ISOCODES_PREFIX=`$PKG_CONFIG iso-codes --variable=prefix` AC_SUBST(ISOCODES_PREFIX) +PKG_CHECK_MODULES(XKBCONFIG, + [xkeyboard-config], + [XKBCONFIG_BASE=`$PKG_CONFIG xkeyboard-config --variable=xkb_base`], + [XKBCONFIG_BASE='$(datarootdir)/X11/xkb'] +) +AC_SUBST(XKBCONFIG_BASE) + +AC_SUBST([GDBUS_CODEGEN], [`$PKG_CONFIG --variable gdbus_codegen gio-2.0`]) + # OUTPUT files -AC_CONFIG_FILES([ po/Makefile.in -Makefile -ibus-1.0.pc -ibus.spec +AC_CONFIG_FILES([ +po/Makefile.in +bindings/Makefile +bindings/pygobject/Makefile +bindings/vala/Makefile +bus/Makefile +bus/services/Makefile client/Makefile client/gtk2/Makefile client/gtk3/Makefile +client/gtk4/Makefile client/x11/Makefile -src/Makefile -src/ibusversion.h -src/tests/Makefile -bus/Makefile -engine/Makefile -engine/simple.xml.in -util/Makefile -util/IMdkit/Makefile +client/wayland/Makefile +conf/Makefile +conf/dconf/Makefile +conf/memconf/Makefile data/Makefile +data/annotations/Makefile data/icons/Makefile +data/its/Makefile data/keymaps/Makefile data/dconf/Makefile docs/Makefile docs/reference/Makefile docs/reference/ibus/ibus-docs.sgml docs/reference/ibus/Makefile -m4/Makefile +engine/Makefile ibus/_config.py ibus/Makefile ibus/interface/Makefile -ui/Makefile -ui/gtk3/Makefile -ui/gtk3/gtkpanel.xml.in +m4/Makefile +portal/Makefile setup/Makefile -setup/ibus-setup -bindings/Makefile -bindings/vala/Makefile -conf/Makefile -conf/gconf/Makefile -conf/gconf/gconf.xml.in -conf/dconf/Makefile -conf/dconf/dconf.xml.in -conf/memconf/Makefile -conf/memconf/memconf.xml.in +src/Makefile +src/ibusversion.h +src/tests/Makefile tools/Makefile +ui/Makefile +ui/gtk3/Makefile +util/Makefile +util/IMdkit/Makefile +Makefile +ibus-1.0.pc +ibus.spec ]) AC_OUTPUT AC_MSG_RESULT([ Build options: - Version $IBUS_VERSION - Install prefix $prefix - Build shared libs $enable_shared - Build static libs $enable_static - CFLAGS $CFLAGS - Gtk2 immodule dir $GTK2_IM_MODULEDIR - Gtk3 immodule dir $GTK3_IM_MODULEDIR - Build gtk2 immodule $enable_gtk2 - Build gtk3 immodule $enable_gtk3 - Build XIM agent server $enable_xim - Build python library $enable_python_library - Build gconf modules $enable_gconf - Build memconf modules $enable_memconf - Build dconf modules $enable_dconf - Build introspection $found_introspection - IBus-1.0.gir scannerflags "$IBUS_GIR_SCANNERFLAGS" - Build vala binding $enable_vala - Build document $enable_gtk_doc - Enable key snooper $enable_key_snooper - No snooper regexes "$NO_SNOOPER_APPS" - Panel icon "$IBUS_ICON_KEYBOARD" - Enable surrounding-text $enable_surrounding_text + Version $IBUS_VERSION + Install prefix $prefix + Build shared libs $enable_shared + Build static libs $enable_static + CFLAGS $CFLAGS + PYTHON $PYTHON + PYTHON2 $PYTHON2 + Enable python2 $enable_python2 + Gtk2 immodule dir $GTK2_IM_MODULEDIR + Gtk3 immodule dir $GTK3_IM_MODULEDIR + Gtk4 immodule dir $GTK4_IM_MODULEDIR + Build gtk2 immodule $enable_gtk2 + Build gtk3 immodule $enable_gtk3 + Build gtk4 immodule $enable_gtk4 + Build XIM agent server $enable_xim + Build wayland support $enable_wayland + Build gdk3 wayland support $enable_gdk3_wayland + Build appindicator support $enable_appindicator + Build python library $enable_python_library + Build memconf modules $enable_memconf + Build dconf modules $enable_dconf + Build introspection $found_introspection + IBus-1.0.gir scannerflags "$IBUS_GIR_SCANNERFLAGS" + Build vala binding $enable_vala + Build document $enable_gtk_doc + Build UI $enable_ui + Build engine $enable_engine + Enable key snooper $enable_key_snooper + No snooper regexes "$NO_SNOOPER_APPS" + Panel icon "$IBUS_ICON_KEYBOARD" + Enable surrounding-text $enable_surrounding_text + Enable libnotify $enable_libnotify + Enable Emoji dict $enable_emoji_dict + Unicode Emoji directory $UNICODE_EMOJI_DIR + CLDR annotation directory $EMOJI_ANNOTATION_DIR + Enable Unicode dict $enable_unicode_dict + UCD directory $UCD_DIR + Socket directory "$IBUS_SOCKET_DIR" + XFixes client disconnect $have_xfixes + Install systemd service $enable_systemd + Run test cases $enable_tests + Install tests $enable_install_tests ]) diff --git a/data/Makefile.am b/data/Makefile.am index 99be41c95..aa3ee4665 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -2,26 +2,28 @@ # # ibus - The Input Bus # -# Copyright (c) 2007-2010 Peng Huang -# Copyright (c) 2007-2010 Red Hat, Inc. +# Copyright (c) 2007-2016 Peng Huang +# Copyright (c) 2007-2019 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA SUBDIRS = \ + annotations \ icons \ + its \ keymaps \ $(NULL) @@ -29,27 +31,4 @@ if ENABLE_DCONF SUBDIRS += dconf endif -schemasdir = $(GCONF_SCHEMA_FILE_DIR) -schemas_in_files = ibus.schemas.in -schemas_DATA = $(schemas_in_files:.schemas.in=.schemas) -@INTLTOOL_SCHEMAS_RULE@ - -install-data-local: -if GCONF_SCHEMAS_INSTALL - if test -z "$(DESTDIR)" ; then \ - for p in $(schemas_DATA) ; do \ - GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) \ - --makefile-install-rule $(top_builddir)/data/$$p >&1 > /dev/null; \ - done \ - fi -endif - -EXTRA_DIST = \ - $(schemas_in_files) \ - $(NULL) - -DISTCLEANFILES = \ - $(schemas_DATA) \ - $(NULL) - -include $(top_srcdir)/git.mk diff --git a/data/annotations/Makefile.am b/data/annotations/Makefile.am new file mode 100644 index 000000000..0b7779b43 --- /dev/null +++ b/data/annotations/Makefile.am @@ -0,0 +1,28 @@ +# vim:set noet ts=4: +# +# ibus - The Input Bus +# +# Copyright (c) 2016-2017 Takao Fujiwara +# Copyright (c) 2016 Red Hat, Inc. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA + +EXTRA_DIST = \ + en.xml \ + en_ascii.xml \ + $(NULL) + +-include $(top_srcdir)/git.mk diff --git a/data/annotations/en.xml b/data/annotations/en.xml new file mode 100644 index 000000000..ff7aa8906 --- /dev/null +++ b/data/annotations/en.xml @@ -0,0 +1,1042 @@ + + + + + + + + + + face; grin + eye; face; grin; smile + face; joy; laugh; tear + face; mouth; open; smile + eye; face; mouth; open; smile + cold; face; open; smile; sweat + face; laugh; mouth; open; satisfied; smile + face; wink + blush; eye; face; smile + delicious; face; savouring; smile; um; yum + bright; cool; eye; eyewear; face; glasses; smile; sun; sunglasses; weather + eye; face; heart; love; smile + face; heart; kiss + face; kiss + eye; face; kiss; smile + closed; eye; face; kiss + face; outlined; relaxed; smile + face; smile + face; hug; hugging + angel; face; fairy tale; fantasy; halo; innocent; smile + face; thinking + deadpan; face; neutral + expressionless; face; inexpressive; unexpressive + face; mouth; quiet; silent + eyes; face; rolling + face; smirk + face; persevere + disappointed; face; relieved; whew + face; mouth; open; sympathy + face; mouth; zipper + face; hushed; stunned; surprised + face; sleep + face; tired + face; sleep; zzz + face; relieved + face; geek; nerd + face; tongue + eye; face; joke; tongue; wink + eye; face; horrible; taste; tongue + face; frown + face; frown + face; unamused; unhappy + cold; face; sweat + dejected; face; pensive + confused; face + confounded; face + face; upside-down + cold; doctor; face; mask; medicine; sick + face; ill; sick; thermometer + bandage; face; hurt; injury + face; money; mouth + astonished; face; shocked; totally + disappointed; face + face; worried + face; triumph; won + cry; face; sad; tear + cry; face; sad; sob; tear + face; frown; mouth; open + anguished; face + face; fear; fearful; scared + face; tired; weary + face; grimace + blue; cold; face; mouth; open; rushed; sweat + face; fear; fearful; munch; scared; scream + dazed; face; flushed + dizzy; face + angry; face; mad; pouting; rage; red + angry; face; mad + face; fairy tale; fantasy; horns; smile + demon; devil; face; fairy tale; fantasy + creature; face; fairy tale; fantasy; japanese; monster + creature; face; fairy tale; fantasy; japanese; monster + body; death; face; fairy tale; monster + body; crossbones; death; face; monster; skull + creature; face; fairy tale; fantasy; monster + creature; extraterrestrial; face; fairy tale; fantasy; monster; space; ufo + alien; creature; extraterrestrial; face; fairy tale; fantasy; monster; space; ufo + face; monster; robot + comic; dung; face; monster; poo; poop + cat; face; mouth; open; smile + cat; eye; face; grin; smile + cat; face; joy; tear + cat; eye; face; heart; love; smile + cat; face; ironic; smile; wry + cat; eye; face; kiss + cat; face; oh; surprised; weary + cat; cry; face; sad; tear + cat; face; pouting + evil; face; forbidden; gesture; monkey; no; not; prohibited; see + evil; face; forbidden; gesture; hear; monkey; no; not; prohibited + evil; face; forbidden; gesture; monkey; no; not; prohibited; speak + boy + maiden; virgin; virgo; zodiac + man + woman + man; old + old; woman + baby + blond + cop; officer; police + gua pi mao; hat; man + man; turban + construction; hat; worker + aid; cross; face; hat; helmet + fairy tale; fantasy + guard + sleuth; spy + celebration; christmas; fairy tale; fantasy; father; santa + angel; baby; face; fairy tale; fantasy + massage; salon + barber; beauty; parlor + bride; veil; wedding + frown; gesture + gesture; pouting + forbidden; gesture; hand; no; not; prohibited + gesture; hand; ok + hand; help; information; sassy + gesture; hand; happy; raised + apology; bow; gesture; sorry + body; celebration; gesture; hand; hooray; raised + ask; body; bow; folded; gesture; hand; please; pray; thanks + face; head; silhouette; speak; speaking + bust; silhouette + bust; silhouette + hike; walk; walking + marathon; running + bunny; dancer; ear; girl; woman + dancer + business; man; suit + couple; romance + couple; heart; love; romance + child; father; mother + couple; hand; hold; man; woman + couple; gemini; hand; hold; man; twins; zodiac + couple; hand; hold; woman + emoji modifier; fitzpatrick; skin; tone + emoji modifier; fitzpatrick; skin; tone + emoji modifier; fitzpatrick; skin; tone + emoji modifier; fitzpatrick; skin; tone + emoji modifier; fitzpatrick; skin; tone + biceps; body; comic; flex; muscle + backhand; body; finger; hand; index; point + backhand; body; finger; hand; index; point + body; finger; hand; index; point; up + backhand; body; finger; hand; index; point; up + body; finger; hand + backhand; body; down; finger; hand; index; point + body; hand; v; victory + body; finger; hand; spock; vulcan + body; finger; hand; horns; rock-on + body; finger; hand; splayed + body; hand + body; hand; ok + +1; body; hand; thumb; up + -1; body; down; hand; thumb + body; clenched; fist; hand; punch + body; clenched; fist; hand; punch + body; hand; wave; waving + body; clap; hand + body; hand; open + body; hand; write + body; care; cosmetics; manicure; nail; polish + body + body + body; clothing; footprint; print + body; eye; face + body + body + body; lips + heart; kiss; lips; mark; romance + arrow; cupid; heart; romance + heart + beating; heart; heartbeat; pulsating + break; broken; heart + heart; love + excited; heart; sparkle + excited; growing; heart; heartpulse; nervous + blue; heart + green; heart + heart; yellow + heart; purple + heart; ribbon; valentine + heart; revolving + heart + exclamation; heart; mark; punctuation + heart; letter; love; mail; romance + comic; sleep + angry; comic; mad + comic + boom; comic + comic; splashing; sweat + comic; dash; running + comic; star + balloon; bubble; comic; dialog; speech + dialog; speech + angry; balloon; bubble; mad + balloon; bubble; comic; thought + hole + clothing; eye; eyeglasses; eyewear + dark; eye; eyewear; glasses + clothing + clothing; shirt; tshirt + clothing; pants; trousers + clothing + clothing + clothing; swim + clothing; woman + clothing; coin + bag; clothing + bag; clothing + bag; hotel; shopping + bag; satchel; school + clothing; man; shoe + athletic; clothing; shoe; sneaker + clothing; heel; shoe; woman + clothing; sandal; shoe; woman + boot; clothing; shoe; woman + clothing; king; queen + clothing; hat; woman + clothing; hat; top; tophat + cap; celebration; clothing; graduation; hat + beads; clothing; necklace; prayer; religion + cosmetics; makeup + diamond; romance + diamond; gem; jewel; romance + face; monkey + monkey + dog; face; pet + pet + dog + face; wolf + cat; face; pet + pet + face; leo; lion; zodiac + face; tiger + tiger + leopard + face; horse + racehorse; racing + face; unicorn + cow; face + bull; taurus; zodiac + buffalo; water + cow + face; pig + sow + pig + face; nose; pig + aries; sheep; zodiac + ewe + capricorn; zodiac + dromedary; hump + bactrian; camel; hump + elephant + face; mouse + mouse + rat + face; hamster; pet + bunny; face; pet; rabbit + bunny; pet + chipmunk + bear; face + bear + face; panda + feet; paw; print + turkey + chicken + rooster + baby; chick; hatching + baby; chick + baby; chick + bird + penguin + bird; fly; peace + face; frog + crocodile + turtle + bearer; ophiuchus; serpent; zodiac + dragon; face; fairy tale + fairy tale + face; spouting; whale + whale + flipper + pisces; zodiac + fish; tropical + fish + octopus + shell; spiral + cancer; zodiac + snail + insect + insect + bee; insect + beetle; insect; ladybird; ladybug + insect + spider; web + scorpio; scorpius; zodiac + flower; plant; romance + blossom; cherry; flower; plant + flower + plant + flower; plant + flower; plant + flower; plant; sun + flower; plant + flower; plant + plant; young + plant; tree + deciduous; plant; shedding; tree + palm; plant; tree + plant + ear; plant; rice + leaf; plant + plant + 4; clover; four; leaf; plant + falling; leaf; maple; plant + falling; leaf; plant + blow; flutter; leaf; plant; wind + fruit; grape; plant + fruit; plant + fruit; plant + fruit; orange; plant + citrus; fruit; plant + fruit; plant + fruit; plant + apple; fruit; plant; red + apple; fruit; green; plant + fruit; plant + fruit; plant + cherry; fruit; plant + berry; fruit; plant + plant; vegetable + aubergine; plant; vegetable + corn; ear; maize; maze; plant + hot; pepper; plant + plant + plant + loaf + cheese + bone; meat + bone; chicken; leg; poultry + burger + french; fries + cheese; slice + frankfurter; hotdog; sausage + mexican + mexican + popcorn + pot; stew + bento; box + cracker; rice + ball; japanese; rice + cooked; rice + curry; rice + bowl; noodle; ramen; steaming + pasta + potato; roasted; sweet + kebab; seafood; skewer; stick + sushi + fried; prawn; shrimp; tempura + cake; fish; pastry; swirl + dessert; japanese; skewer; stick; sweet + cream; dessert; ice; icecream; soft; sweet + dessert; ice; shaved; sweet + cream; dessert; ice; sweet + dessert; donut; sweet + dessert; sweet + birthday; cake; celebration; dessert; pastry; sweet + cake; dessert; pastry; slice; sweet + bar; chocolate; dessert; sweet + dessert; sweet + candy; dessert; sweet + dessert; pudding; sweet + honey; honeypot; pot; sweet + baby; bottle; drink; milk + beverage; coffee; drink; hot; steaming; tea + beverage; cup; drink; tea; teacup + bar; beverage; bottle; cup; drink + bar; bottle; cork; drink; popping + bar; beverage; drink; glass; wine + bar; cocktail; drink; glass + bar; drink; tropical + bar; beer; drink; mug + bar; beer; clink; drink; mug + cooking; fork; knife; plate + cooking; fork; knife + egg; frying; pan + aquarius; cooking; drink; jug; tool; weapon; zodiac + africa; earth; europe; globe; world + americas; earth; globe; world + asia; australia; earth; globe; world + earth; globe; meridians; world + map; world + cold; mountain; snow + mountain + eruption; mountain; weather + fuji; mountain + camping + beach; umbrella + desert + desert; island + park + stadium + building; classical + building; construction + building; house + building; city + building; derelict; house + building; home; house + building; garden; home; house + building; christian; cross; religion + islam; muslim; religion + islam; muslim; religion + jew; jewish; religion; temple + religion; shinto; shrine + building + building; japanese; post + building; european; post + building; doctor; medicine + building + building + building; hotel; love + building; convenience; store + building + building; department; store + building + building; castle; japanese + building; european + chapel; romance + tokyo; tower + liberty; statue + japan; map + fountain + camping + fog; weather + night; star; weather + morning; mountain; sun; sunrise; weather + morning; sun; weather + building; city; dusk; evening; landscape; sun; sunset; weather + building; dusk; sun; weather + bridge; night; weather + hot; hotsprings; springs; steaming + space; weather + carousel; horse + amusement park; ferris; wheel + amusement park; coaster; roller + barber; haircut; pole + circus; tent + art; mask; performing; theater; theatre + art; frame; museum; painting; picture + art; museum; painting; palette + game; slot + engine; railway; steam; train; vehicle + car; electric; railway; train; tram; trolleybus; vehicle + railway; shinkansen; speed; train; vehicle + bullet; railway; shinkansen; speed; train; vehicle + railway; vehicle + subway; vehicle + railway; vehicle + railway; train; vehicle + trolleybus; vehicle + vehicle + car; mountain; railway; vehicle + car; tram; trolleybus; vehicle + vehicle + bus; oncoming; vehicle + bus; tram; trolley; vehicle + bus; busstop; stop + bus; vehicle + vehicle + engine; fire; truck; vehicle + car; patrol; police; vehicle + car; oncoming; police; vehicle + vehicle + oncoming; taxi; vehicle + car; vehicle + automobile; car; oncoming; vehicle + recreational; rv; vehicle + delivery; truck; vehicle + lorry; semi; truck; vehicle + vehicle + bike; vehicle + fuel; fuelpump; gas; pump; station + highway; road + railway; train + beacon; car; light; police; revolving; vehicle + light; signal; traffic + light; signal; traffic + barrier + ship; tool + boat; resort; sea; vehicle; yacht + boat; vehicle + boat; vehicle + passenger; ship; vehicle + boat + boat; motorboat; vehicle + vehicle + vehicle + airplane; vehicle + airplane; check-in; departure; departures; vehicle + airplane; arrivals; arriving; landing; vehicle + chair + vehicle + railway; suspension; vehicle + cable; gondola; mountain; vehicle + aerial; cable; car; gondola; ropeway; tramway; vehicle + space; vehicle + space; vehicle + bell; bellhop; hotel + door + hotel; sleep + hotel; sleep + couch; hotel; lamp + toilet + water + bathtub; bath + bath + sand; timer + hourglass; sand; timer + clock + alarm; clock + clock + clock; timer + clock + 00; 12; 12:00; clock; o’clock; twelve + 12; 12:30; 30; clock; thirty; twelve + 00; 1; 1:00; clock; o’clock; one + 1; 1:30; 30; clock; one; thirty + 00; 2; 2:00; clock; o’clock; two + 2; 2:30; 30; clock; thirty; two + 00; 3; 3:00; clock; o’clock; three + 3; 3:30; 30; clock; thirty; three + 00; 4; 4:00; clock; four; o’clock + 30; 4; 4:30; clock; four; thirty + 00; 5; 5:00; clock; five; o’clock + 30; 5; 5:30; clock; five; thirty + 00; 6; 6:00; clock; o’clock; six + 30; 6; 6:30; clock; six; thirty + 00; 7; 7:00; clock; o’clock; seven + 30; 7; 7:30; clock; seven; thirty + 00; 8; 8:00; clock; eight; o’clock + 30; 8; 8:30; clock; eight; thirty + 00; 9; 9:00; clock; nine; o’clock + 30; 9; 9:30; clock; nine; thirty + 00; 10; 10:00; clock; o’clock; ten + 10; 10:30; 30; clock; ten; thirty + 00; 11; 11:00; clock; eleven; o’clock + 11; 11:30; 30; clock; eleven; thirty + dark; moon; space; weather + crescent; moon; space; waxing; weather + moon; quarter; space; weather + gibbous; moon; space; waxing; weather + full; moon; space; weather + gibbous; moon; space; waning; weather + moon; quarter; space; weather + crescent; moon; space; waning; weather + crescent; moon; space; weather + face; moon; space; weather + face; moon; quarter; space; weather + face; moon; quarter; space; weather + weather + bright; rays; space; sunny; weather + bright; face; full; moon; space; weather + bright; face; space; sun; weather + star + glittery; glow; shining; sparkle; star + falling; shooting; space; star + weather + cloud; sun; weather + cloud; rain; thunder; weather + cloud; sun; weather + cloud; sun; weather + cloud; rain; sun; weather + cloud; rain; weather + cloud; cold; snow; weather + cloud; lightning; weather + cloud; weather; whirlwind + cloud; weather + blow; cloud; face; weather; wind + dizzy; twister; typhoon; weather + rain; weather + clothing; rain; umbrella; weather + clothing; rain; weather + clothing; drop; rain; umbrella; weather + rain; sun; umbrella; weather + danger; electric; electricity; lightning; voltage; zap + cold; snow; weather + cold; snow; weather + cold; snow; snowman; weather + space + flame; tool + cold; comic; drop; sweat; weather + ocean; water; wave; weather + celebration; halloween; jack; lantern + celebration; christmas; tree + celebration + celebration; fireworks; sparkle + sparkle; star + celebration + celebration; party; popper; tada + ball; celebration; confetti + banner; celebration; japanese; tree + celebration; cross; crossed; japanese + bamboo; celebration; japanese; pine; plant + celebration; doll; festival; japanese + carp; celebration; streamer + bell; celebration; chime; wind + celebration; ceremony; moon + celebration + box; celebration; gift; present; wrapped + celebration; medal; military + celebration; reminder; ribbon + cinema; film; frames; movie + admission; ticket + admission + label + ball; soccer + ball + ball; hoop + american; ball; football + ball; football; rugby + ball; racquet + 8; 8 ball; ball; billiard; eight; game + ball; game + golf; hole + ball; golf + ice; skate + fish; pole + running; sash; shirt + ski; snow + ski; snow + ski; snow; snowboard + surfing + horse; jockey; racehorse; racing + swim + ball + lifter; weight + bicycle; bike; cyclist + bicycle; bicyclist; bike; cyclist; mountain + car; racing + racing + medal + prize + ball; bat; game + ball; game + ball; field; game; hockey; stick + game; hockey; ice; puck; stick + ball; bat; game; paddle; table tennis + birdie; game; racquet; shuttlecock + bull; bullseye; dart; eye; game; hit; target + controller; game + game; video game + dice; die; game + card; game; spade; suit + card; game; heart; hearts; suit + card; diamond; diamonds; game; suit + card; club; clubs; game; suit + card; game; playing + game; mahjong; red + card; flower; game; japanese; playing + mute; quiet; silent; speaker; volume + volume + low; speaker; volume; wave + 3; high; loud; speaker; three; volume + loud; public address + cheering + horn; post; postal + bell + bell; forbidden; mute; no; not; prohibited; quiet; silent + music; score + music; note + music; note; notes + mic; microphone; music; studio + level; music; slider + control; knobs; music + karaoke; mic + earbud + instrument; music; sax + instrument; music + instrument; keyboard; music; piano + instrument; music + instrument; music + video + cell; mobile; phone; telephone + arrow; call; cell; mobile; phone; receive; telephone + phone + phone; receiver; telephone + pager + fax + battery + electric; electricity; plug + computer; pc; personal + computer; desktop + computer + computer + 3; button; computer; mouse; three + computer + computer; disk; minidisk; optical + computer; disk; floppy + dvd; blu-ray; cd; computer; disk; optical + blu-ray; cd; computer; disk; optical + camera; cinema; movie + clapper; movie + cinema; film; movie; projector; video + tv; video + video + camera; flash; video + camera; video + tape; vhs; video + glass; magnifying; search; tool + glass; magnifying; search; tool + tool + tool + antenna; dish; satellite + light + bulb; comic; electric; idea; light + electric; light; tool; torch + bar; japanese; lantern; light; red + book; cover; decorated; notebook + book; closed + book; open + book; green + blue; book + book; orange + book + notebook + notebook + curl; document; page + paper + document; page + news; paper + news; newspaper; paper; rolled + bookmark; mark; marker; tabs + mark + bag; dollar; money; moneybag + bank; banknote; bill; currency; money; note; yen + bank; banknote; bill; currency; dollar; money; note + bank; banknote; bill; currency; euro; money; note + bank; banknote; bill; currency; money; note; pound + bank; banknote; bill; dollar; fly; money; note; wings + bank; card; credit; money + bank; chart; currency; graph; growth; market; money; rise; trend; upward; yen + e-mail; email + email; letter; mail + e-mail; email; envelope; incoming; letter; mail; receive + arrow; down; e-mail; email; envelope; letter; mail; outgoing; sent + box; letter; mail; outbox; sent; tray + box; inbox; letter; mail; receive; tray + box; parcel + closed; mail; mailbox; postbox + closed; lowered; mail; mailbox; postbox + mail; mailbox; open; postbox + lowered; mail; mailbox; open; postbox + mail; mailbox + ballot; box + pencil + nib; pen + fountain; pen + ballpoint + painting + crayon + pencil + briefcase + file; folder + file; folder; open + card; dividers; index + date + calendar + note; pad; spiral + calendar; pad; spiral + card; index; rolodex + chart; graph; growth; trend; upward + chart; down; graph; trend + bar; chart; graph + clipboard + pin + pin; pushpin + paperclip + link; paperclip + ruler; straight edge + ruler; set; triangle + tool + box; card; file + cabinet; file + wastebasket + closed + lock; open; unlock + ink; lock; nib; pen; privacy + closed; key; lock; secure + lock; password + clue; key; lock; old + tool + mining; tool + hammer; pick; tool + hammer; tool; wrench + tool + bolt; nut; tool + tool + tool; vice + chemistry; tool + balance; justice; libra; scales; tool; weight; zodiac + link + chain + doctor; medicine; needle; shot; sick; tool + doctor; medicine; sick + knife; weapon + cooking; hocho; knife; tool; weapon + crossed; swords; weapon + gun; handgun; revolver; tool; weapon + weapon + archer; arrow; bow; sagittarius; tool; weapon; zodiac + checkered; chequered; racing + waving + waving + post + smoking + death + death; funeral; urn + face; moyai; statue + drum; oil + ball; crystal; fairy tale; fantasy; fortune; tool + atm; automated; bank; teller + litter; litterbox + drink; potable; water + access + lavatory; man; restroom; wc + lavatory; restroom; wc; woman + lavatory; wc + baby; changing + closet; lavatory; restroom; water; wc + control; passport + customs + baggage; claim + baggage; locker; luggage + warning + child; crossing; pedestrian; traffic + entry; forbidden; no; not; prohibited; traffic + entry; forbidden; no; not + bicycle; bike; forbidden; no; not; prohibited; vehicle + forbidden; no; not; prohibited; smoking + forbidden; litter; no; not; prohibited + drink; forbidden; no; not; potable; prohibited; water + forbidden; no; not; pedestrian; prohibited + radioactive + biohazard + arrow; cardinal; direction; north + arrow; direction; intercardinal; northeast + arrow; cardinal; direction; east + arrow; direction; intercardinal; southeast + arrow; cardinal; direction; down; south + arrow; direction; intercardinal; southwest + arrow; cardinal; direction; west + arrow; direction; intercardinal; northwest + arrow + arrow + arrow + arrow + arrow + arrow; down + arrow; clockwise; reload + anticlockwise; arrow; counterclockwise; withershins + arrow; back + arrow; end + arrow; mark; on + arrow; soon + arrow; top; up + religion; worship + atheist; atom + hindu; religion + david; jew; jewish; religion; star + buddhist; dharma; religion; wheel + religion; tao; taoist; yang; yin + christian; cross; religion + christian; cross; religion + islam; muslim; religion + peace + candelabrum; candlestick; religion + fortune; star + recycle + badge; name + fleur-de-lis + beginner; chevron; green; japanese; leaf; tool; yellow + anchor; emblem; ship; tool; trident + circle; o + check; mark + ballot; box; check + check; mark + cancel; multiplication; multiply; x + cancel; mark; multiplication; multiply; x + mark; square + math; plus + math; minus + division; math + curl; loop + curl; double; loop + mark; part + asterisk + star + sparkle + bank; currency; exchange; money + currency; dollar; money + bangbang; exclamation; mark; punctuation + exclamation; interrobang; mark; punctuation; question + mark; punctuation; question + mark; outlined; punctuation; question + exclamation; mark; outlined; punctuation + exclamation; mark; punctuation + dash; punctuation; wavy + copyright + registered + mark; tm; trademark + ram; zodiac + bull; ox; zodiac + twins; zodiac + crab; zodiac + lion; zodiac + maiden; virgin; zodiac + balance; justice; scales; zodiac + scorpio; scorpion; zodiac + archer; zodiac + goat; zodiac + bearer; water; zodiac + fish; zodiac + bearer; serpent; snake; zodiac + arrow; crossed + arrow; clockwise; repeat + arrow; clockwise; once + arrow; play; right; triangle + arrow; double; fast; forward + arrow; next scene; next track; triangle + arrow; pause; play; right; triangle + arrow; left; reverse; triangle + arrow; double; rewind + arrow; previous scene; previous track; triangle + arrow; button; red + arrow; double + arrow; button; down; red + arrow; double; down + bar; double; pause; vertical + square; stop + circle; record + eject + camera; film; movie + brightness; dim; low + bright; brightness + antenna; bar; cell; mobile; phone; signal; telephone + cell; forbidden; mobile; no; not; phone; prohibited; telephone + cell; mobile; mode; phone; telephone; vibration + cell; mobile; off; phone; telephone + hash; keycap; pound + asterisk; keycap; star + 0; keycap; zero + 1; keycap; one + 2; keycap; two + 3; keycap; three + 4; four; keycap + 5; five; keycap + 6; keycap; six + 7; keycap; seven + 8; eight; keycap + 9; keycap; nine + 10; keycap; ten + 100; full; hundred; score + 18; age restriction; eighteen; forbidden; no; not; prohibited; underage + input; latin; letters; uppercase + abcd; input; latin; letters; lowercase + 1234; input; numbers + input + abc; alphabet; input; latin; letters + a; blood + ab; blood + b; blood + cl + cool + free + i; information + id; identity + circle; m + new + ng + blood; o + ok + parking + help; sos + mark; up + versus; vs + japanese + japanese + japanese + japanese + japanese + japanese + japanese + japanese + japanese + chinese + chinese + chinese + chinese + chinese; congratulation; congratulations; ideograph + chinese; ideograph; secret + chinese + chinese + geometric; square + geometric; square + geometric; square + geometric; square + geometric; square + geometric; square + geometric; square + geometric; square + diamond; geometric; orange + blue; diamond; geometric + diamond; geometric; orange + blue; diamond; geometric + geometric; red + down; geometric; red + comic; diamond; geometric; inside + button; geometric; radio + button; geometric; square + button; geometric; outlined; square + circle; geometric + circle; geometric + circle; geometric; red + blue; circle; geometric + + \ No newline at end of file diff --git a/data/annotations/en_ascii.xml b/data/annotations/en_ascii.xml new file mode 100644 index 000000000..f1bdcbb2b --- /dev/null +++ b/data/annotations/en_ascii.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + :') | :'-) + :D | :-D | =D + ':) | ':-) | '=) | ':D | ':-D | '=D + >:) | >;) | >:-) | >=) + ;) | ;-) | *-) | *) | ;-] | ;] | ;D | ;^) + B-) | B) | 8) | 8-) | B-D | 8-D + :* | :-* | =* | :^* + :) | :-) | =] | =) | :] + -_- | -__- | -___- + :-X | :X | :-# | :# | =X | =x | :x | :-x | =# + >.< + :-O | :O | :-o | :o | O_O | >:O + :P | :-P | =P | :-p | :p | =p | :-Þ | :Þ | :þ | :-þ | :-b | :b | d: + >:P | X-P | x-p + ':( | ':-( | '=( + >:\ | >:/ | :-/ | :-. | :/ | :\ | =/ | =\ | :L | =L + >:[ | :-( | :( | :-[ | :[ | =( + :'( | :'-( | ;( | ;-( + D: + :$ | =$ + #-) | #) | %-) | %) | X) | X-) + >:( | >:-( | :@ + O:-) | 0:-3 | 0:3 | 0:-) | 0:) | 0;^) | O:) | O;-) | O=) | 0;-) | O:-3 | O:3 + *\0/* | \0/ | *\O/* | \O/ + <3 + </3 + + diff --git a/data/dconf/00-upstream-settings.5.in b/data/dconf/00-upstream-settings.5.in new file mode 100644 index 000000000..b7a56fda6 --- /dev/null +++ b/data/dconf/00-upstream-settings.5.in @@ -0,0 +1,40 @@ +.\" This file is distributed under the same license as the ibus +.\" package. +.\" Copyright (C) Takao Fujiwara , 2018. +.\" +.TH 00\-UPSTREAM\-SETTINGS "5" "August 2018" "@VERSION@" "User Commands" +.SH NAME +.B 00\-upstream\-settings +\- dconf configuration file + +.SH SYNOPSIS +.B /etc/dconf/db/ibus.d/00\-upstream\-settings + +.SH DESCRIPTION + +.PP +IBus is an Intelligent Input Bus. It is a new input framework for Linux +OS. It provides full featured and user friendly input method user +interface. It also may help developers to develop input method easily. + +.PP +.B 00\-upstream\-settings +is a text configuration file of dconf and can be converted to +/etc/dconf/db/ibus by +.B dconf update +command with a write privilege in /etc/dconf/db. /etc/dconf/db/ibus is a +database file of dconf and saves the IBus default settings. The saved keys +and values can be readed by dconf command. + +.PP +.RS 4 +.nf +env DCONF_PROFILE=ibus dconf list /desktop/ibus/ +.RE + +.SH BUGS +If you find a bug, please report it at https://github.com/ibus/ibus/issues + +.SH "SEE ALSO" +.BR dconf (1) +.BR ibus (5) diff --git a/data/dconf/Makefile.am b/data/dconf/Makefile.am index daea8968a..5360f033a 100644 --- a/data/dconf/Makefile.am +++ b/data/dconf/Makefile.am @@ -4,59 +4,70 @@ # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2011 Daiki Ueno -# Copyright (c) 2007-2011 Red Hat, Inc. +# Copyright (c) 2007-2018 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA -gsettings_schemas_in_files = org.freedesktop.ibus.gschema.xml.in -gsettings_SCHEMAS = $(gsettings_schemas_in_files:.gschema.xml.in=.gschema.xml) +gsettings_SCHEMAS = org.freedesktop.ibus.gschema.xml gsettingsconvertdir = $(datadir)/GConf/gsettings dist_gsettingsconvert_DATA = ibus.convert @GSETTINGS_RULES@ -@INTLTOOL_XML_NOMERGE_RULE@ -EXTRA_DIST = \ - $(gsettings_schemas_in_files) \ - make-dconf-override-db.sh \ - profile/ibus \ - $(NULL) +dconfprofiledir = $(sysconfdir)/dconf/profile +dconfprofile_DATA = profile/ibus -DISTCLEANFILES = \ - $(gsettings_SCHEMAS) \ - $(NULL) +dconfdbdir = $(sysconfdir)/dconf/db/ibus.d +dconfdb_DATA = 00-upstream-settings -MAINTAINERCLEANFILES = \ - $(gsettings_schemas_in_files) \ - $(NULL) +00-upstream-settings: $(srcdir)/make-dconf-override-db.sh | $(gsettings_SCHEMAS) + @$(MKDIR_P) db + $(AM_V_GEN) $(srcdir)/make-dconf-override-db.sh > $@ || \ + { rc=$$?; $(RM) -rf $@; exit $$rc; } -CLEANFILES = \ - db/ibus \ - $(NULL) +man_5_in_files = 00-upstream-settings.5.in ibus.5.in +man_5_files = $(man_5_in_files:.5.in=.5) +man_5_DATA =$(man_5_files:.5=.5.gz) +man_5dir = $(mandir)/man5 +%.5: %.5.in + $(AM_V_GEN) sed \ + -e 's|@VERSION[@]|$(VERSION)|g' $< > $@.tmp && \ + mv $@.tmp $@ +%.5.gz: %.5 + $(AM_V_GEN) gzip -c $< > $@.tmp && mv $@.tmp $@ -dconfprofiledir = $(sysconfdir)/dconf -nobase_dconfprofile_DATA = db/ibus profile/ibus +install-data-hook: + if test -z "$(DESTDIR)"; then \ + dconf update; \ + fi -org.freedesktop.ibus.gschema.xml.in: $(top_srcdir)/data/ibus.schemas.in - $(AM_V_GEN) gsettings-schema-convert --force --gconf --xml \ - --schema-id "org.freedesktop.ibus" \ - --output $@ $< +EXTRA_DIST = \ + $(gsettings_SCHEMAS) \ + $(man_5_in_files) \ + make-dconf-override-db.sh \ + profile/ibus \ + 00-upstream-settings \ + $(NULL) -db/ibus: $(srcdir)/make-dconf-override-db.sh $(gsettings_SCHEMAS) - @$(MKDIR_P) db - $(AM_V_GEN) $(srcdir)/make-dconf-override-db.sh $@ || \ - { rc=$$?; $(RM) -rf $@; exit $$rc; } +CLEANFILES = \ + $(man_5_DATA) \ + $(man_5_files) \ + $(NULL) + +MAINTAINERCLEANFILES = \ + 00-upstream-settings \ + $(NULL) -include $(top_srcdir)/git.mk diff --git a/data/dconf/ibus.5.in b/data/dconf/ibus.5.in new file mode 100644 index 000000000..d959c7e35 --- /dev/null +++ b/data/dconf/ibus.5.in @@ -0,0 +1,39 @@ +.\" This file is distributed under the same license as the ibus +.\" package. +.\" Copyright (C) Takao Fujiwara , 2018. +.\" +.TH IBUS "5" "August 2018" "@VERSION@" "User Commands" +.SH NAME +.B IBUS +\- dconf database file for IBus + +.SH SYNOPSIS +.B /etc/dconf/db/ibus + +.SH DESCRIPTION + +.PP +IBus is an Intelligent Input Bus. It is a new input framework for Linux +OS. It provides full featured and user friendly input method user +interface. It also may help developers to develop input method easily. + +.PP +.B /etc/dconf/db/ibus +is a database file dconf and saves the IBus default settings. It can be +generated from /etc/dconf/db/ibus.d/00\-upstream\-settings by +.B dconf update +command with a write privilege in /etc/dconf/db. The saved keys +and values can be readed by dconf command. + +.PP +.RS 4 +.nf +env DCONF_PROFILE=ibus dconf list /desktop/ibus/ +.RE + +.SH BUGS +If you find a bug, please report it at https://github.com/ibus/ibus/issues + +.SH "SEE ALSO" +.BR dconf (1) +.BR 00\-upstream\-settings (5) diff --git a/data/dconf/make-dconf-override-db.sh b/data/dconf/make-dconf-override-db.sh index 0d8456b06..601c1c3fa 100755 --- a/data/dconf/make-dconf-override-db.sh +++ b/data/dconf/make-dconf-override-db.sh @@ -2,6 +2,10 @@ set -e +# gnome-continuous doesn't have a machine-id set, which +# breaks dbus-launch. There's dbus-run-session which is +# better, but not everyone has it yet. +export DBUS_FATAL_WARNINGS=0 export TMPDIR=$(mktemp -d --tmpdir="$PWD") export XDG_CONFIG_HOME="$TMPDIR/config" export XDG_CACHE_HOME="$TMPDIR/cache" @@ -15,17 +19,38 @@ trap 'rm -rf $TMPDIR; kill $DBUS_SESSION_BUS_PID' ERR # in case that schema is not installed on the system glib-compile-schemas --targetdir "$GSETTINGS_SCHEMA_DIR" "$PWD" -gsettings list-recursively org.freedesktop.ibus.general | \ -while read schema key val; do - gsettings set "$schema" "$key" "$val" +cat < + + + + + + + + [] + + Preload engines + + Preload engines during ibus starts up + + + [] + Engines order + Saved engines order in input method list + + + 400 + Popup delay milliseconds for IME switcher window + Set popup delay milliseconds to show IME switcher window. The default is 400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not show the window and switch prev/next engines. + + + '' + Saved version number + The saved version number will be used to check the difference between the version of the previous installed ibus and one of the current ibus. + + + + [ 'af', 'af(fa-olpc)', 'af(ps-olpc)', 'af(ps)', 'af(uz)', + 'af(uz-olpc)', 'am', 'am(eastern)', 'am(eastern-alt)', + 'am(phonetic)', 'am(phonetic-alt)', 'am(western)', 'ara', + 'ara(azerty)', 'ara(azerty_digits)', 'ara(buckwalter)', + 'ara(digits)', 'ara(qwerty)', 'ara(qwerty_digits)', + 'az(cyrillic)', 'bd', 'bd(probhat)', 'bg', 'bg(bas_phonetic)', + 'bg(phonetic)', 'brai', 'brai(left_hand)', 'brai(right_hand)', + 'bt', 'by', 'by(legacy)', 'ca(ike)', 'ca(multi-2gr)', + 'cn(tib)', 'cn(tib_asciinum)', 'cn(ug)', 'cz', 'cz(ucw)', + 'de(ru)', 'dev', 'et', 'fr(geo)', 'ge', 'ge(os)', 'gr', + 'gr(extended)', 'gr(nodeadkeys)', 'gr(polytonic)', + 'gr(simple)', 'gur', 'il', 'il(biblical)', 'il(lyx)', + 'il(phonetic)', 'in', 'in(ben)', 'in(ben_baishakhi)', + 'in(ben_bornona)', 'in(ben_gitanjali)', 'in(ben_inscript)', + 'in(ben_probhat)', 'in(bolnagri)', 'in(deva)', 'in(guj)', + 'in(guru)', 'in(hin-kagapa)', 'in(hin-wx)', 'in(jhelum)', + 'in(kan)', 'in(kan-kagapa)', 'in(mal)', 'in(mal_enhanced)', + 'in(mal_lalitha)', 'in(mar-kagapa)', 'in(ori)', + 'in(san-kagapa)', 'in(tam)', 'in(tam_tamilnet)', + 'in(tam_tamilnet_TAB)', 'in(tam_tamilnet_TSCII)', + 'in(tam_tamilnet_with_tam_nums)', 'in(tel)', 'in(tel-kagapa)', + 'in(urd-phonetic)', 'in(urd-phonetic3)', 'in(urd-winkeys)', + 'iq', 'ir', 'ir(pes_keypad)', 'jp(kana)', 'jp(mac)', 'kg', + 'kg(phonetic)', 'kh', 'kz', 'kz(kazrus)', 'kz(ruskaz)', 'la', + 'la(stea)', 'lk', 'lk(tam_TAB)', 'lk(tam_unicode)', 'ma', + 'ma(tifinagh)', 'ma(tifinagh-alt)', + 'ma(tifinagh-alt-phonetic)', 'ma(tifinagh-extended)', + 'ma(tifinagh-extended-phonetic)', 'ma(tifinagh-phonetic)', + 'me(cyrillic)', 'me(cyrillicalternatequotes)', + 'me(cyrillicyz)', 'mk', 'mk(nodeadkeys)', 'mm', 'mn', 'mv', + 'np', 'ph(capewell-dvorak-bay)', 'ph(capewell-qwerf2k6-bay)', + 'ph(colemak-bay)', 'ph(dvorak-bay)', 'ph(qwerty-bay)', 'pk', + 'pk(ara)', 'pk(snd)', 'pk(urd-crulp)', 'pk(urd-nla)', + 'pl(ru_phonetic_dvorak)', 'rs', 'rs(alternatequotes)', + 'rs(rue)', 'rs(yz)', 'ru', 'ru(bak)', 'ru(chm)', 'ru(cv)', + 'ru(dos)', 'ru(kom)', 'ru(legacy)', 'ru(mac)', + 'ru(os_legacy)', 'ru(os_winkeys)', 'ru(phonetic)', + 'ru(phonetic_winkeys)', 'ru(sah)', 'ru(srp)', 'ru(tt)', + 'ru(typewriter)', 'ru(typewriter-legacy)', 'ru(udm)', + 'ru(xal)', 'se(rus)', 'se(rus_nodeadkeys)', 'se(swl)', 'sy', + 'sy(syc)', 'sy(syc_phonetic)', 'th', 'th(pat)', 'th(tis)', + 'tj', 'tj(legacy)', 'tz', 'ua', 'ua(homophonic)', + 'ua(legacy)', 'ua(phonetic)', 'ua(rstu)', 'ua(rstu_ru)', + 'ua(typewriter)', 'ua(winkeys)', 'us(chr)', 'us(rus)', 'uz' ] + + Latin layouts which have no ASCII + US layout is appended to the Latin layouts. variant can be omitted. + + + true + Use xmodmap + Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched. + + + false + Use system keyboard layout + Use system keyboard (XKB) layout + + + true + Embed Preedit Text + Embed Preedit Text in Application Window + + + true + Use global input method + Share the same input method among all applications + + + false + Enable input method by default + Enable input method by default when the application gets input focus + + + [ '/desktop/ibus/engine/pinyin', '/desktop/ibus/engine/bopomofo', '/desktop/ibus/engine/hangul' ] + DConf preserve name prefixes + Prefixes of DConf keys to stop name conversion + + + + + + [ 'Control+space', 'Zenkaku_Hankaku', 'Alt+Kanji', 'Alt+grave', 'Hangul', 'Alt+Release+Alt_R' ] + Trigger shortcut keys + The shortcut keys for turning input method on or off + + + [ '<Super>space' ] + Trigger shortcut keys for gtk_accelerator_parse + The shortcut keys for turning input method on or off + + + [] + Enable shortcut keys + The shortcut keys for turning input method on + + + [] + Disable shortcut keys + The shortcut keys for turning input method off + + + [ 'Alt+Shift_L' ] + Next engine shortcut keys + The shortcut keys for switching to the next input method in the list + + + [ 'Alt+Shift_L' ] + Next engine shortcut keys + The shortcut keys for switching to the next input method in the list + + + [] + Prev engine shortcut keys + The shortcut keys for switching to the previous input method + + + [] + Prev engine shortcut keys + The shortcut keys for switching to the previous input method + + + + + 0 + Auto hide + The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always show + + + -1 + Language panel position + + + -1 + Language panel position + + + false + Follow the input cursor in case the panel is always shown + If true, the panel follows the input cursor in case the panel is always shown. If false, the panel is shown at a fixed location. + + + 10000 + The milliseconds to show property panel + The milliseconds to show property panel after focus-in or properties are changed. + + + 1 + Orientation of lookup table + Orientation of lookup table. 0 = Horizontal, 1 = Vertical + + + true + Show icon on system tray + Show icon on system tray + + + false + Show input method name + Show input method name on language bar + + + '#51a2da' + RGBA value of XKB icon + XKB icon shows the layout string and the string is rendered with the RGBA value. The RGBA value can be 1. a color name from X11, 2. a hex value in form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form 'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 to 255 or percentage values in the range 0% to 100%, and 'a' is a floating point value in the range 0 to 1 of the alpha. + + + 500 + The milliseconds to show the panel icon for a property + The milliseconds to show the panel icon from the engine icon to a property icon whenever engines are switched if the property is specified by the value of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the property icon is shown immediately. + + + false + Use custom font + Use custom font name for language panel + + + 'Sans 10' + Custom font + Custom font name for language panel + + + false + Use custom theme + Use custom theme name for language panel + + + 'Adwaita' + Custom theme + Custom theme name for language panel + + + false + Use custom icon + Use custom icon name for arrow buttons on candidate window + + + 'Adwaita' + Custom icon + Custom icon name for arrow buttons on candidate window + + + true + Choose glyphs with input method's language on candidate window + Some code points have the different glyphs and Pango + determines the glyphs from the language attribute. + Pango chooses glyphs from the IBus engine's language + if the value is true and choose them from the desktop + locale if the value is false. + + + + + + [ '<Control><Shift>u' ] + Unicode shortcut keys for gtk_accelerator_parse + The shortcut keys for turning Unicode typing on or off + + + [ '<Control>period', '<Control>semicolon' ] + Emoji shortcut keys for gtk_accelerator_parse + The shortcut keys for turning emoji typing on or off + + + 'Monospace 16' + Custom font + Custom font name for emoji characters on emoji dialog + + + 'en' + Default language for emoji dictionary + Choose a default language of emoji dictionaries on the emoji dialog. The value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict . + + + [] + favorite emoji list on emoji dialog + You can show the favorite emojis on emoji list if this list has any characters. + + + [] + favorite emoji annotation list on emoji dialog + You can assign an annotation for a favorite emoji in this list. + + + false + Whether emoji annotations can be match partially or not + Whether emoji annotations can be matched with a partial string instead of the exact match or not. + + + 3 + Match emoji annotations with the specified length + Match emoji annotations partially with more than the specified number of characters instead of the exact match. + + + 0 + Choose a condition to match emoji annotations partially + Choose one of the following conditions to match emoji annotations partially: 0 == Prefix match, 1 == Suffix match, 2 == Containing match + + + true + Load the emoji data at the time of startup + Load the emoji data at the time of startup if true. About 10MB memory is needed to load the data. Load the emoji data when open the emoji dialog at the beginning if false. + + + false + Load the Unicode data at the time of startup + Load the Unicode data at the time of startup if true. About 15MB memory is needed to load the data. Load the Unicode data when open the emoji dialog at the beginning if false. The Unicode data is always loaded after the emoji data is loaded even if true. + + + diff --git a/data/dconf/profile/ibus b/data/dconf/profile/ibus index c4ac80e9e..aa8fe5f0d 100644 --- a/data/dconf/profile/ibus +++ b/data/dconf/profile/ibus @@ -1,2 +1,2 @@ -user -ibus +user-db:user +system-db:ibus diff --git a/data/ibus.schemas.in b/data/ibus.schemas.in index 68def4068..f4a019d0d 100644 --- a/data/ibus.schemas.in +++ b/data/ibus.schemas.in @@ -9,8 +9,76 @@ [] string - Preload engines - Preload engines during ibus starts up + Preload engines + Preload engines during ibus starts up + + + + /schemas/desktop/ibus/general/engines_order + /desktop/ibus/general/engines_order + ibus + list + [] + string + + Engines order + Saved engines order in input method list + + + + /schemas/desktop/ibus/general/switcher-delay-time + /desktop/ibus/general/switcher-delay-time + ibus + int + 400 + + Popup delay milliseconds for IME switcher window + Set popup delay milliseconds to show IME switcher window. + The default is 400. + 0 = Show the window immediately. + 0 < Delay milliseconds. + 0 > Do not show the window and switch prev/next engines. + + + + + /schemas/desktop/ibus/general/version + /desktop/ibus/general/version + ibus + string + + + Saved version number + The saved version number will be used to check the + difference between the version of the previous installed + ibus and one of the current ibus. + + + + + /schemas/desktop/ibus/general/xkb-latin-layouts + /desktop/ibus/general/xkb-latin-layouts + ibus + list + string + [ara,bg,cz,dev,gr,gur,in,jp(kana),mal,mkd,ru,ua] + + Latin layouts which have no ASCII + US layout is appended to the Latin layouts. variant can be + omitted. + + + + + /schemas/desktop/ibus/general/use-xmodmap + /desktop/ibus/general/use-xmodmap + ibus + bool + true + + Use xmodmap + Run xmodmap if .xmodmap or .Xmodmap exists when + ibus engines are switched. @@ -22,7 +90,19 @@ [Control+space,Zenkaku_Hankaku,Alt+Kanji,Alt+grave,Hangul,Alt+Release+Alt_R] Trigger shortcut keys - The shortcut keys for turning input method on or off + The shortcut keys for turning input method on or off + + + + /schemas/desktop/ibus/general/hotkey/triggers + /desktop/ibus/general/hotkey/triggers + ibus + list + string + [<Super>space] + + Trigger shortcut keys for gtk_accelerator_parse + The shortcut keys for turning input method on or off @@ -110,7 +190,7 @@ 0 Auto hide - The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = Always show + The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always show @@ -146,6 +226,31 @@ --> + + /schemas/desktop/ibus/panel/follow-input-cursor-when-always-shown + /desktop/ibus/panel/follow-input-cursor-when-always-shown + ibus + bool + false + + Follow the input cursor in case the panel is always shown + If true, the panel follows the input cursor in case the + panel is always shown. If false, the panel is shown at + a fixed location. + + + + /schemas/desktop/ibus/panel/auto-hide-timeout + /desktop/ibus/panel/auto-hide-timeout + ibus + int + 10000 + + The milliseconds to show property panel + The milliseconds to show property panel after focus-in or + properties are changed. + + /schemas/desktop/ibus/panel/lookup_table_orientation /desktop/ibus/panel/lookup_table_orientation @@ -179,12 +284,48 @@ Show input method name on language bar + + /schemas/desktop/ibus/panel/xkb-icon-rgba + /desktop/ibus/panel/xkb-icon-rgba + ibus + string + #415099 + + RGBA value of XKB icon + XKB icon shows the layout string and the string is + rendered with the RGBA value. The RGBA value can be + 1. a color name from X11, 2. a hex value in form '#rrggbb' + where 'r', 'g' and 'b' are hex digits of the red, green, + and blue, 3. a RGB color in form 'rgb(r,g,b)' or + 4. a RGBA color in form 'rgba(r,g,b,a)' where 'r', + 'g', and 'b' are either integers in the range 0 to 255 + or percentage values in the range 0% to 100%, and + 'a' is a floating point value in the range 0 to 1 + of the alpha. + + + + /schemas/desktop/ibus/panel/property-icon-delay-time + /desktop/ibus/panel/property-icon-delay-time + ibus + int + 500 + + The milliseconds to show the panel icon for a property + The milliseconds to show the panel icon from the + engine icon to a property icon whenever engines are + switched if the property is specified by the value of + icon-prop-key in IBusEngineDesc. + If the value is 0, no delay time and the property icon + is shown immediately. + + /schemas/desktop/ibus/general/use_system_keyboard_layout /desktop/ibus/general/use_system_keyboard_layout ibus bool - true + false Use system keyboard layout Use system keyboard (XKB) layout @@ -212,6 +353,152 @@ Custom font name for language panel + + /schemas/desktop/ibus/panel/emoji/unicode-hotkey + /desktop/ibus/panel/emoji/unicode-hotkey + ibus + list + string + [<Control><Shift>u] + + Unicode shortcut keys for gtk_accelerator_parse + The shortcut keys for turning Unicode typing on or off + + + + /schemas/desktop/ibus/panel/emoji/hotkey + /desktop/ibus/panel/emoji/hotkey + ibus + list + string + [<Control><Shift>e] + + Emoji shortcut keys for gtk_accelerator_parse + The shortcut keys for turning emoji typing on or off + + + + /schemas/desktop/ibus/panel/emoji/font + /desktop/ibus/panel/emoji/font + ibus + string + Monospace 16 + + Custom font + Custom font name for emoji characters on emoji dialog + + + + /schemas/desktop/ibus/panel/emoji/lang + /desktop/ibus/panel/emoji/lang + ibus + string + en + + Default language for emoji dictionary + Choose a default language of emoji dictionaries on + the emoji dialog. The value $lang is applied to + /usr/share/ibus/dicts/emoji-$lang.dict + + + + + /schemas/desktop/ibus/panel/emoji/favorites + /desktop/ibus/panel/emoji/favorites + ibus + list + [] + string + + favorite emoji list on emoji dialog + You can show the favorite emojis on emoji list + if this list has any characters. + + + + /schemas/desktop/ibus/panel/emoji/favorite-annotations + /desktop/ibus/panel/emoji/favorite-annotations + ibus + list + [] + string + + favorite emoji annotation list on emoji dialog + You can assign an annotation for a favorite emoji + in this list. + + + + /schemas/desktop/ibus/panel/emoji/has-partial-match + /desktop/ibus/panel/emoji/has-partial-match + ibus + bool + false + + Whether emoji annotations can be match partially or not + Whether emoji annotations can be matched with a partial + string instead of the exact match or not. + + + + /schemas/desktop/ibus/panel/emoji/partial-match-length + /desktop/ibus/panel/emoji/partial-match-length + ibus + int + 3 + + Match emoji annotations with the specified length + Match emoji annotations partially with more than + the specified number of characters instead of + the exact match. + + + + /schemas/desktop/ibus/panel/emoji/partial-match-condition + /desktop/ibus/panel/emoji/partial-match-condition + ibus + int + 0 + + Choose a condition to match emoji annotations partially + Choose one of the following conditions to match emoji + annotations partially: + 0 == Prefix match, 1 == Suffix match, 2 == Containing match + + + + + /schemas/desktop/ibus/panel/emoji/load-emoji-at-startup + /desktop/ibus/panel/emoji/load-emoji-at-startup + ibus + bool + true + + Load the emoji data at the time of startup + Load the emoji data at the time of startup if true. + About 10MB memory is needed to load the data. + Load the emoji data when open the emoji dialog at the + beginning if false. + + + + + /schemas/desktop/ibus/panel/emoji/load-unicode-at-startup + /desktop/ibus/panel/emoji/load-unicode-at-startup + ibus + bool + false + + Load the Unicode data at the time of startup + Load the Unicode data at the time of startup if true. + About 15MB memory is needed to load the data. + Load the Unicode data when open the emoji dialog at the + beginning if false. + The Unicode data is always loaded after the emoji data + is loaded even if true. + + + /schemas/desktop/ibus/general/embed_preedit_text /desktop/ibus/general/embed_preedit_text @@ -228,7 +515,7 @@ /desktop/ibus/general/use_global_engine ibus bool - false + true Use global input method Share the same input method among all applications diff --git a/data/icons/Makefile.am b/data/icons/Makefile.am index c1862a191..0411fdca2 100644 --- a/data/icons/Makefile.am +++ b/data/icons/Makefile.am @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA icons_DATA = \ $(NULL) diff --git a/data/its/Makefile.am b/data/its/Makefile.am new file mode 100644 index 000000000..e051daa44 --- /dev/null +++ b/data/its/Makefile.am @@ -0,0 +1,33 @@ +# vim:set noet ts=4: +# +# ibus - The Input Bus +# +# Copyright (c) 2019 Takao Fujiwara +# Copyright (c) 2019 Red Hat, Inc. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA + +itsdir = $(datadir)/gettext/its +its_DATA = \ + ibus.its \ + ibus.loc \ + $(NULL) + +EXTRA_DIST = \ + $(its_DATA) \ + $(NULL) + +-include $(top_srcdir)/git.mk diff --git a/data/its/ibus.its b/data/its/ibus.its new file mode 100644 index 000000000..30d8d4e27 --- /dev/null +++ b/data/its/ibus.its @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/data/its/ibus.loc b/data/its/ibus.loc new file mode 100644 index 000000000..5a73798b6 --- /dev/null +++ b/data/its/ibus.loc @@ -0,0 +1,7 @@ + + + + + + + diff --git a/data/keymaps/Makefile.am b/data/keymaps/Makefile.am index 61d864458..81219d50f 100644 --- a/data/keymaps/Makefile.am +++ b/data/keymaps/Makefile.am @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA # keymaps = \ # ar \ diff --git a/data/keymaps/jp b/data/keymaps/jp index 2c78347e6..e5546facc 100644 --- a/data/keymaps/jp +++ b/data/keymaps/jp @@ -31,11 +31,14 @@ keycode 52 = period keycode 53 = slash shift keycode 53 = question shift keycode 58 = Eisu_toggle - shift keycode 84 = Execute -keycode 112 = Katakana -keycode 115 = backslash - shift keycode 115 = underscore -keycode 121 = Henkan_Mode -keycode 123 = Muhenkan +keycode 89 = backslash + shift keycode 89 = underscore +keycode 92 = Henkan_Mode +keycode 93 = Hiragana_Katakana +keycode 94 = Muhenkan keycode 124 = yen shift keycode 124 = bar +keycode 122 = Hangul +keycode 123 = Hangul_Hanja + shift keycode 84 = Execute +keycode 112 = Katakana diff --git a/debian/README.source b/debian/README.source deleted file mode 100644 index b59f07855..000000000 --- a/debian/README.source +++ /dev/null @@ -1,26 +0,0 @@ -This package uses dpatch to manage all modifications to the upstream -source. Changes are stored in the source package as diffs in -debian/patches and applied during the build. - -To get the fully patched source after unpacking the source package, cd -to the root level of the source package and run: - - debian/rules patch - -Removing a patch is as simple as removing its entry from the -debian/patches/00list file, and please also remove the patch file -itself. - -Creating a new patch is done with "dpatch-edit-patch patch XX_patchname" -where you should replace XX with a new number and patchname with a -descriptive shortname of the patch. You can then simply edit all the -files your patch wants to edit, and then simply "exit 0" from the shell -to actually create the patch file. - -To tweak an already existing patch, call "dpatch-edit-patch XX_patchname" -and replace XX_patchname with the actual filename from debian/patches -you want to use. - -To clean up afterwards again, "debian/rules unpatch" will do the -work for you - or you can of course choose to call -"fakeroot debian/rules clean" all together. diff --git a/debian/changelog.in b/debian/changelog.in deleted file mode 100644 index f40cd0684..000000000 --- a/debian/changelog.in +++ /dev/null @@ -1,5 +0,0 @@ -ibus (${version}-1phuang${release}~${serie}1) ${serie}; urgency=low - - * Upstream release. - - -- Peng Huang ${date} diff --git a/debian/clean b/debian/clean deleted file mode 100644 index 7d90c680c..000000000 --- a/debian/clean +++ /dev/null @@ -1,4 +0,0 @@ -config.guess -config.sub -po/ibus10.pot -install-stamp diff --git a/debian/compat b/debian/compat deleted file mode 100644 index 7f8f011eb..000000000 --- a/debian/compat +++ /dev/null @@ -1 +0,0 @@ -7 diff --git a/debian/control b/debian/control deleted file mode 100644 index 0d5a89dcc..000000000 --- a/debian/control +++ /dev/null @@ -1,100 +0,0 @@ -Source: ibus -Section: utils -Priority: optional -Maintainer: LI Daobing -Uploaders: Zhengpeng Hou -Build-Depends: debhelper (>= 7), - autotools-dev, - autoconf, - automake, - dpatch, - gtk-doc-tools, - gobject-introspection (>= 0.6.8), - libgirepository1.0-dev (>= 0.6.8), - intltool (>= 0.40.0), - iso-codes, - libgconf2-dev, - libgtk2.0-dev, - libgtk-3-dev, - libtool, - python-support (>= 0.6), - python-dev, - python-gobject-dev, - python-dbus (>= 0.83.0) -Standards-Version: 3.8.4 -Homepage: http://code.google.com/p/ibus/ -Vcs-Bzr: lp:~lidaobing/ibus/ibus -Vcs-Browser: https://code.launchpad.net/~lidaobing/ibus/ibus - -Package: ibus -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, ${python:Depends}, python-glade2, - python-ibus (= ${source:Version}), python-xdg, librsvg2-common -Recommends: im-switch, ibus-gtk2, ibus-gtk3, ibus-qt4 -Conflicts: ibus-anthy (<< 1.2), - ibus-table (<< 1.2), - ibus-pinyin (<< 1.2.99), - ibus-m17n (<< 1.2.99), - ibus-hangul (<< 1.2.99), - ibus-chewing (<< 1.2.99) -Description: New input method framework using dbus - IBus is an Intelligent Input Bus. It is a new input framework for Linux - OS. It provides full featured and user friendly input method user interface. - It also may help developers to develop input method easily. - -Package: libibus-1.0-0 -Section: libs -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends} -Description: New input method framework using dbus - IBus is an Intelligent Input Bus. It is a new input framework for Linux - OS. It provides full featured and user friendly input method user interface. - It also may help developers to develop input method easily. - . - libibus-1.0-0 is the library of ibus. - -Package: libibus-dev -Section: libdevel -Architecture: any -Depends: ${misc:Depends}, - ${shlibs:Depends}, - libibus-1.0-0 (= ${binary:Version}), - libglib2.0-dev -Description: New input method framework using dbus - IBus is an Intelligent Input Bus. It is a new input framework for Linux - OS. It provides full featured and user friendly input method user interface. - It also may help developers to develop input method easily. - . - This package contains the header files and static libraries which is - needed for developing the IBus applications. - -Package: ibus-gtk2 -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends} -Description: New input method framework using dbus - IBus is an Intelligent Input Bus. It is a new input framework for Linux - OS. It provides full featured and user friendly input method user interface. - It also may help developers to develop input method easily. - . - ibus-gtk2 is the GTK+-2.0 client of ibus, it provide a gtk-immodule for ibus. - -Package: ibus-gtk3 -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends} -Description: New input method framework using dbus - IBus is an Intelligent Input Bus. It is a new input framework for Linux - OS. It provides full featured and user friendly input method user interface. - It also may help developers to develop input method easily. - . - ibus-gtk3 is the GTK+-3.0 client of ibus, it provide a gtk-immodule for ibus. - -Package: python-ibus -Section: python -Architecture: all -Depends: ${python:Depends}, ${misc:Depends}, python-gtk2, python-dbus (>= 0.83.0), iso-codes -Description: New input method framework using dbus - IBus is an Intelligent Input Bus. It is a new input framework for Linux - OS. It provides full featured and user friendly input method user interface. - It also may help developers to develop input method easily. - . - python-ibus is the Python binding of ibus. diff --git a/debian/copyright b/debian/copyright deleted file mode 100644 index 39bdda912..000000000 --- a/debian/copyright +++ /dev/null @@ -1,260 +0,0 @@ -This package was debianized by LI Daobing on -Sat, 04 Oct 2008 15:30:08 +0800. - -It was downloaded from http://code.google.com/p/ibus/ - -Upstream Author: - - Huang Peng - -Copyright: - - Copyright (C) 2007,2008 Huang Peng - -License: - - This package is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this package; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -On Debian systems, the complete text of the GNU Lesser General -Public License can be found in `/usr/share/common-licenses/LGPL'. - -The Debian packaging is (C) 2008, LI Daobing and -is licensed under the GPL, see `/usr/share/common-licenses/GPL'. - -some files belong to different copyright holder or in a different -license, following is the list of the files and licenses. - -------------------------------------------------------------------------------- - -ibus/keysyms.py: LGPL (v2.1 or later) - Copyright: 1998-2003 James Henstridge - -------------------------------------------------------------------------------- - -util/gconf/gconf-fixes.c: LGPL (v2 or later) - Copyright: 2002 Johan Dahlin - -------------------------------------------------------------------------------- - -util/gconf/gconf-types.c, util/gconf/gconf-types.h: LGPL (v2.1 or later) - [Copyright: 2005 Red Hat, Inc] - -------------------------------------------------------------------------------- - -util/IMdkit/FrameMgr.c, util/IMdkit/FrameMgr.h: - -/****************************************************************** -Copyright 1993, 1994 by Digital Equipment Corporation, Maynard, Massachusetts, - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the names of Digital or MIT not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. - - Author: Hiroyuki Miyamoto Digital Equipment Corporation - miyamoto@jrd.dec.com - - This version tidied and debugged by Steve Underwood May 1999 - -******************************************************************/ - ----------------------------------------------------------------------------- - -util/IMdkit/i18nAttr.c, -util/IMdkit/i18nClbk.c, -util/IMdkit/i18nIc.c, -util/IMdkit/i18nMethod.c, -util/IMdkit/i18nPtHdr.c, -util/IMdkit/i18nUtil.c, -util/IMdkit/i18nX.c, -util/IMdkit/IMConn.c, -util/IMdkit/IMdkit.h, -util/IMdkit/IMMethod.c, -util/IMdkit/IMValues.c, -util/IMdkit/Xi18n.h, -util/IMdkit/Xi18nX.h, -util/IMdkit/XimFunc.h: - -/****************************************************************** - - Copyright 1994, 1995 by Sun Microsystems, Inc. - Copyright 1993, 1994 by Hewlett-Packard Company - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without fee, -provided that the above copyright notice appear in all copies and -that both that copyright notice and this permission notice appear -in supporting documentation, and that the name of Sun Microsystems, Inc. -and Hewlett-Packard not be used in advertising or publicity pertaining to -distribution of the software without specific, written prior permission. -Sun Microsystems, Inc. and Hewlett-Packard make no representations about -the suitability of this software for any purpose. It is provided "as is" -without express or implied warranty. - -SUN MICROSYSTEMS INC. AND HEWLETT-PACKARD COMPANY DISCLAIMS ALL -WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -SUN MICROSYSTEMS, INC. AND HEWLETT-PACKARD COMPANY BE LIABLE FOR ANY -SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER -RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF -CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - Author: Hidetoshi Tajima(tajima@Eng.Sun.COM) Sun Microsystems, Inc. - - This version tidied and debugged by Steve Underwood May 1999 - -******************************************************************/ - --------------------------------------------------------------------------- - -util/IMdkit/i18nIMProro.c: - -/****************************************************************** -Copyright 1993, 1994 by Digital Equipment Corporation, Maynard, Massachusetts, -Copyright 1993, 1994 by Hewlett-Packard Company - -Copyright 1994, 1995 by Sun Microsystems, Inc. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the names of Digital or MIT not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -DIGITAL AND HEWLETT-PACKARD COMPANY DISCLAIMS ALL WARRANTIES WITH REGARD -TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS, IN NO EVENT SHALL DIGITAL AND HEWLETT-PACKARD COMPANY BE LIABLE -FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER -RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF -CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN -CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - Author: Hiroyuki Miyamoto Digital Equipment Corporation - miyamoto@jrd.dec.com - Hidetoshi Tajima(tajima@Eng.Sun.COM) Sun Microsystems, Inc. - - This version tidied and debugged by Steve Underwood May 1999 - -******************************************************************/ - --------------------------------------------------------------------- - -util/IMdkit/XimProto.h: - -/****************************************************************** - - Copyright 1992, 1993, 1994 by FUJITSU LIMITED - -Permission to use, copy, modify, distribute, and sell this software -and its documentation for any purpose is hereby granted without fee, -provided that the above copyright notice appear in all copies and -that both that copyright notice and this permission notice appear -in supporting documentation, and that the name of FUJITSU LIMITED -not be used in advertising or publicity pertaining to distribution -of the software without specific, written prior permission. -FUJITSU LIMITED makes no representations about the suitability of -this software for any purpose. -It is provided "as is" without express or implied warranty. - -FUJITSU LIMITED DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO -EVENT SHALL FUJITSU LIMITED BE LIABLE FOR ANY SPECIAL, INDIRECT OR -CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF -USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - - Author: Takashi Fujiwara FUJITSU LIMITED - fujiwara@a80.tech.yk.fujitsu.co.jp - - This version tidied and debugged by Steve Underwood May 1999 - -******************************************************************/ - ------------------------------------------------------------------------- - -util/IMdkit/Xtrans.h - -/* - -Copyright (c) 1993, 1994 X Consortium - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of the X Consortium shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from the X Consortium. - -*/ - -/* Copyright (c) 1993, 1994 NCR Corporation - Dayton, Ohio, USA - * - * All Rights Reserved - * - * Permission to use, copy, modify, and distribute this software and its - * documentation for any purpose and without fee is hereby granted, provided - * that the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name NCR not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. NCR makes no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - * NCR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN - * NO EVENT SHALL NCR BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS - * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, - * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - diff --git a/debian/docs b/debian/docs deleted file mode 100644 index 6f12db508..000000000 --- a/debian/docs +++ /dev/null @@ -1,2 +0,0 @@ -AUTHORS -README diff --git a/debian/ibus-daemon.1 b/debian/ibus-daemon.1 deleted file mode 100644 index 9ddd9f926..000000000 --- a/debian/ibus-daemon.1 +++ /dev/null @@ -1 +0,0 @@ -.so man1/ibus.1 diff --git a/debian/ibus-gconf.1 b/debian/ibus-gconf.1 deleted file mode 100644 index 9ddd9f926..000000000 --- a/debian/ibus-gconf.1 +++ /dev/null @@ -1 +0,0 @@ -.so man1/ibus.1 diff --git a/debian/ibus-gtk2.install b/debian/ibus-gtk2.install deleted file mode 100644 index 3cdfe6a9c..000000000 --- a/debian/ibus-gtk2.install +++ /dev/null @@ -1 +0,0 @@ -usr/lib/gtk-2.0/2.10.0/immodules/im-ibus.so diff --git a/debian/ibus-gtk3.install b/debian/ibus-gtk3.install deleted file mode 100644 index 6906adcaa..000000000 --- a/debian/ibus-gtk3.install +++ /dev/null @@ -1 +0,0 @@ -usr/lib/gtk-3.0/3.0.0/immodules/im-ibus.so diff --git a/debian/ibus-setup.1 b/debian/ibus-setup.1 deleted file mode 100644 index 1c01b39fb..000000000 --- a/debian/ibus-setup.1 +++ /dev/null @@ -1,26 +0,0 @@ -.\" This file is distributed under the same license as the ibus -.\" package. -.\" Copyright (C) LI Daobing , 2008. -.\" -.TH "IBUS-SETUP" 1 "2008-11-08" "" "" -.SH NAME -ibus-setup \- configuration program for ibus - -.SH "SYNOPSIS" -.B ibus-setup - -.SH "DESCRIPTION" - -.PP -IBus is an Intelligent Input Bus. It is a new input framework for Linux -OS. It provides full featured and user friendly input method user -interface. It also may help developers to develop input method easily. - -.PP -ibus-setup is the configuration program for IBus. - -.PP -Homepage: http://code.google.com/p/ibus/ - -.SH "SEE ALSO" -.BR ibus (1) diff --git a/debian/ibus-ui-gtk.1 b/debian/ibus-ui-gtk.1 deleted file mode 100644 index 9ddd9f926..000000000 --- a/debian/ibus-ui-gtk.1 +++ /dev/null @@ -1 +0,0 @@ -.so man1/ibus.1 diff --git a/debian/ibus-x11.1 b/debian/ibus-x11.1 deleted file mode 100644 index 9ddd9f926..000000000 --- a/debian/ibus-x11.1 +++ /dev/null @@ -1 +0,0 @@ -.so man1/ibus.1 diff --git a/debian/ibus.1 b/debian/ibus.1 deleted file mode 100644 index c0c05b518..000000000 --- a/debian/ibus.1 +++ /dev/null @@ -1,27 +0,0 @@ -.\" This file is distributed under the same license as the ibus -.\" package. -.\" Copyright (C) LI Daobing , 2008. -.\" -.TH "IBUS" 1 "2008-11-08" "" "" -.SH NAME -ibus \- Intelligent Input Bus for Linux / Unix OS - -.SH "SYNOPSIS" -.B ibus - -.SH "DESCRIPTION" - -.PP -IBus is an Intelligent Input Bus. It is a new input framework for Linux -OS. It provides full featured and user friendly input method user -interface. It also may help developers to develop input method easily. - -.PP -ibus will launch ibus-daemon, ibus-gconf, ibus-ui-gtk and ibus-x11. - -.PP -Homepage: http://code.google.com/p/ibus/ - -.SH "SEE ALSO" -.BR scim (1), -.BR fcitx (1) diff --git a/debian/ibus.install b/debian/ibus.install deleted file mode 100644 index a1c511792..000000000 --- a/debian/ibus.install +++ /dev/null @@ -1,9 +0,0 @@ -debian/tmp/etc/gconf/schemas/* -debian/tmp/usr/bin/* -debian/tmp/usr/share/locale/* -debian/tmp/usr/share/applications/* -debian/tmp/usr/share/ibus/* -debian/tmp/usr/share/icons/* -debian/tmp/usr/share/gtk-doc/* -debian/tmp/usr/lib/ibus/* -debian/xinput/* etc/X11/xinit/xinput.d diff --git a/debian/ibus.manpages b/debian/ibus.manpages deleted file mode 100644 index b255c4155..000000000 --- a/debian/ibus.manpages +++ /dev/null @@ -1,6 +0,0 @@ -debian/ibus-x11.1 -debian/ibus-setup.1 -debian/ibus-gconf.1 -debian/ibus-daemon.1 -debian/ibus.1 -debian/ibus-ui-gtk.1 diff --git a/debian/ibus.postinst b/debian/ibus.postinst deleted file mode 100644 index 853fd82fb..000000000 --- a/debian/ibus.postinst +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/sh -set -e - -ua_inst () { - update-alternatives \ - --install /etc/X11/xinit/xinput.d/$1 xinput-$1 \ - /etc/X11/xinit/xinput.d/$2 $3 ; -} - -case "$1" in - configure) - #ua_inst all_ALL ibus 0 - ua_inst ja_JP ibus 60 - ua_inst ko_KR ibus 60 - ua_inst zh_CN ibus 60 - ua_inst zh_TW ibus 60 - ua_inst zh_HK ibus 60 - ua_inst zh_SG ibus 60 - rm -f /etc/xdg/autostart/ibus.desktop - ;; - - abort-upgrade|abort-remove|abort-deconfigure) - - ;; - - *) - echo "postinst called with unknown argument \`$1'" >&2 - exit 1 - ;; -esac - -#DEBHELPER# - - diff --git a/debian/ibus.prerm b/debian/ibus.prerm deleted file mode 100644 index f32ef339b..000000000 --- a/debian/ibus.prerm +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/sh -set -e - -ua_remove () { - update-alternatives \ - --remove xinput-$1 \ - /etc/X11/xinit/xinput.d/$2 ; -} - -case "$1" in - remove|upgrade|deconfigure) - ua_remove all_ALL ibus - ua_remove ja_JP ibus - ua_remove ko_KR ibus - ua_remove zh_CN ibus - ua_remove zh_TW ibus - ua_remove zh_HK ibus - ua_remove zh_SG ibus - ;; - failed-upgrade) - ;; - *) - echo "prerm called with unknown argument \`$1'" >&2 - exit 1 - ;; -esac - -#DEBHELPER# - -exit 0 diff --git a/debian/libibus-1.0-0.install b/debian/libibus-1.0-0.install deleted file mode 100644 index b6fcee942..000000000 --- a/debian/libibus-1.0-0.install +++ /dev/null @@ -1,2 +0,0 @@ -debian/tmp/usr/lib/libibus-*.so.* -debian/tmp/usr/lib/girepository-1.0/* diff --git a/debian/libibus-1.0-0.symbols b/debian/libibus-1.0-0.symbols deleted file mode 100644 index 778b4ead1..000000000 --- a/debian/libibus-1.0-0.symbols +++ /dev/null @@ -1,328 +0,0 @@ -libibus-1.0.so.0 libibus-1.0-0 #MINVER# - ibus_attr_background_new@Base 1.3.99.20101019 - ibus_attr_foreground_new@Base 1.3.99.20101019 - ibus_attr_list_append@Base 1.3.99.20101019 - ibus_attr_list_get@Base 1.3.99.20101019 - ibus_attr_list_get_type@Base 1.3.99.20101019 - ibus_attr_list_new@Base 1.3.99.20101019 - ibus_attr_type_get_type@Base 1.3.99.20101019 - ibus_attr_underline_get_type@Base 1.3.99.20101019 - ibus_attr_underline_new@Base 1.3.99.20101019 - ibus_attribute_get_type@Base 1.3.99.20101019 - ibus_attribute_new@Base 1.3.99.20101019 - ibus_bus_add_match@Base 1.3.99.20101019 - ibus_bus_add_match_async@Base 1.3.99.20110309 - ibus_bus_add_match_async_finish@Base 1.3.99.20110309 - ibus_bus_create_input_context@Base 1.3.99.20101019 - ibus_bus_create_input_context_async@Base 1.3.99.20110309 - ibus_bus_create_input_context_async_finish@Base 1.3.99.20110309 - ibus_bus_current_input_context@Base 1.3.99.20101019 - ibus_bus_current_input_context_async@Base 1.3.99.20110309 - ibus_bus_current_input_context_async_finish@Base 1.3.99.20110309 - ibus_bus_exit@Base 1.3.99.20101019 - ibus_bus_exit_async@Base 1.3.99.20110309 - ibus_bus_exit_async_finish@Base 1.3.99.20110309 - ibus_bus_get_config@Base 1.3.99.20101019 - ibus_bus_get_connection@Base 1.3.99.20101019 - ibus_bus_get_global_engine@Base 1.3.99.20101019 - ibus_bus_get_global_engine_async@Base 1.3.99.20110309 - ibus_bus_get_global_engine_async_finish@Base 1.3.99.20110309 - ibus_bus_get_name_owner@Base 1.3.99.20101019 - ibus_bus_get_name_owner_async@Base 1.3.99.20110309 - ibus_bus_get_name_owner_async_finish@Base 1.3.99.20110309 - ibus_bus_get_type@Base 1.3.99.20101019 - ibus_bus_get_use_global_engine@Base 1.3.99.20101019 - ibus_bus_get_use_global_engine_async@Base 1.3.99.20110309 - ibus_bus_get_use_global_engine_async_finish@Base 1.3.99.20110309 - ibus_bus_get_use_sys_layout@Base 1.3.99.20101019 - ibus_bus_get_use_sys_layout_async@Base 1.3.99.20110309 - ibus_bus_get_use_sys_layout_async_finish@Base 1.3.99.20110309 - ibus_bus_hello@Base 1.3.99.20101019 - ibus_bus_is_connected@Base 1.3.99.20101019 - ibus_bus_is_global_engine_enabled@Base 1.3.99.20101019 - ibus_bus_is_global_engine_enabled_async@Base 1.3.99.20110309 - ibus_bus_is_global_engine_enabled_async_finish@Base 1.3.99.20110309 - ibus_bus_list_active_engines@Base 1.3.99.20101019 - ibus_bus_list_active_engines_async@Base 1.3.99.20110309 - ibus_bus_list_active_engines_async_finish@Base 1.3.99.20110309 - ibus_bus_list_engines@Base 1.3.99.20101019 - ibus_bus_list_engines_async@Base 1.3.99.20110309 - ibus_bus_list_engines_async_finish@Base 1.3.99.20110309 - ibus_bus_list_names@Base 1.3.99.20101019 - ibus_bus_list_queued_owners@Base 1.3.99.20110405 - ibus_bus_name_flag_get_type@Base 1.3.99.20110405 - ibus_bus_name_has_owner@Base 1.3.99.20101019 - ibus_bus_name_has_owner_async@Base 1.3.99.20110309 - ibus_bus_name_has_owner_async_finish@Base 1.3.99.20110309 - ibus_bus_new@Base 1.3.99.20101019 - ibus_bus_register_component@Base 1.3.99.20101019 - ibus_bus_register_component_async@Base 1.3.99.20110309 - ibus_bus_register_component_async_finish@Base 1.3.99.20110309 - ibus_bus_release_name@Base 1.3.99.20101019 - ibus_bus_release_name_async@Base 1.3.99.20110309 - ibus_bus_release_name_async_finish@Base 1.3.99.20110309 - ibus_bus_remove_match@Base 1.3.99.20101019 - ibus_bus_remove_match_async@Base 1.3.99.20110309 - ibus_bus_remove_match_async_finish@Base 1.3.99.20110309 - ibus_bus_request_name@Base 1.3.99.20101019 - ibus_bus_request_name_async@Base 1.3.99.20110309 - ibus_bus_request_name_async_finish@Base 1.3.99.20110309 - ibus_bus_request_name_reply_get_type@Base 1.3.99.20110405 - ibus_bus_set_global_engine@Base 1.3.99.20101019 - ibus_bus_set_global_engine_async@Base 1.3.99.20110217 - ibus_bus_set_global_engine_async_finish@Base 1.3.99.20110217 - ibus_bus_set_watch_dbus_signal@Base 1.3.99.20101019 - ibus_bus_set_watch_ibus_signal@Base 1.3.99.20110117 - ibus_capabilite_get_type@Base 1.3.99.20101019 - ibus_component_add_engine@Base 1.3.99.20101019 - ibus_component_add_observed_path@Base 1.3.99.20101019 - ibus_component_check_modification@Base 1.3.99.20101019 - ibus_component_get_author@Base 1.3.99.20101019 - ibus_component_get_description@Base 1.3.99.20101019 - ibus_component_get_engines@Base 1.3.99.20101019 - ibus_component_get_exec@Base 1.3.99.20101019 - ibus_component_get_homepage@Base 1.3.99.20101019 - ibus_component_get_license@Base 1.3.99.20101019 - ibus_component_get_name@Base 1.3.99.20101019 - ibus_component_get_textdomain@Base 1.3.99.20101019 - ibus_component_get_type@Base 1.3.99.20101019 - ibus_component_get_version@Base 1.3.99.20101019 - ibus_component_new@Base 1.3.99.20101019 - ibus_component_new_from_file@Base 1.3.99.20101019 - ibus_component_new_from_xml_node@Base 1.3.99.20101019 - ibus_component_new_varargs@Base 1.3.99.20101101 - ibus_component_output@Base 1.3.99.20101019 - ibus_component_output_engines@Base 1.3.99.20101019 - ibus_config_get_type@Base 1.3.99.20101019 - ibus_config_get_value@Base 1.3.99.20101019 - ibus_config_get_value_async@Base 1.3.99.20101115 - ibus_config_get_value_async_finish@Base 1.3.99.20101115 - ibus_config_get_values@Base 1.3.99.20110616 - ibus_config_get_values_async@Base 1.3.99.20110616 - ibus_config_get_values_async_finish@Base 1.3.99.20110616 - ibus_config_new@Base 1.3.99.20101019 - ibus_config_new_async@Base 1.3.99.20110606 - ibus_config_new_async_finish@Base 1.3.99.20110606 - ibus_config_service_get_type@Base 1.3.99.20101019 - ibus_config_service_new@Base 1.3.99.20101019 - ibus_config_service_value_changed@Base 1.3.99.20101019 - ibus_config_set_value@Base 1.3.99.20101019 - ibus_config_set_value_async@Base 1.3.99.20110217 - ibus_config_set_value_async_finish@Base 1.3.99.20110217 - ibus_config_unset@Base 1.3.99.20101019 - ibus_engine_commit_text@Base 1.3.99.20101019 - ibus_engine_delete_surrounding_text@Base 1.3.99.20101019 - ibus_engine_desc_get_author@Base 1.3.99.20101019 - ibus_engine_desc_get_description@Base 1.3.99.20101019 - ibus_engine_desc_get_hotkeys@Base 1.3.99.20101019 - ibus_engine_desc_get_icon@Base 1.3.99.20101019 - ibus_engine_desc_get_language@Base 1.3.99.20101019 - ibus_engine_desc_get_layout@Base 1.3.99.20101019 - ibus_engine_desc_get_license@Base 1.3.99.20101019 - ibus_engine_desc_get_longname@Base 1.3.99.20101019 - ibus_engine_desc_get_name@Base 1.3.99.20101019 - ibus_engine_desc_get_rank@Base 1.3.99.20101019 - ibus_engine_desc_get_symbol@Base 1.3.99.20110616 - ibus_engine_desc_get_type@Base 1.3.99.20101019 - ibus_engine_desc_new@Base 1.3.99.20101019 - ibus_engine_desc_new_from_xml_node@Base 1.3.99.20101019 - ibus_engine_desc_new_varargs@Base 1.3.99.20101101 - ibus_engine_desc_output@Base 1.3.99.20101019 - ibus_engine_forward_key_event@Base 1.3.99.20101019 - ibus_engine_get_name@Base 1.3.99.20101019 - ibus_engine_get_surrounding_text@Base 1.3.99.20110405 - ibus_engine_get_type@Base 1.3.99.20101019 - ibus_engine_hide_auxiliary_text@Base 1.3.99.20101019 - ibus_engine_hide_lookup_table@Base 1.3.99.20101019 - ibus_engine_hide_preedit_text@Base 1.3.99.20101019 - ibus_engine_new@Base 1.3.99.20101019 - ibus_engine_new_type@Base 1.3.99.20101019 - ibus_engine_register_properties@Base 1.3.99.20101019 - ibus_engine_show_auxiliary_text@Base 1.3.99.20101019 - ibus_engine_show_lookup_table@Base 1.3.99.20101019 - ibus_engine_show_preedit_text@Base 1.3.99.20101019 - ibus_engine_update_auxiliary_text@Base 1.3.99.20101019 - ibus_engine_update_lookup_table@Base 1.3.99.20101019 - ibus_engine_update_lookup_table_fast@Base 1.3.99.20101019 - ibus_engine_update_preedit_text@Base 1.3.99.20101019 - ibus_engine_update_preedit_text_with_mode@Base 1.3.99.20101019 - ibus_engine_update_property@Base 1.3.99.20101019 - ibus_error_get_type@Base 1.3.99.20110606 - ibus_error_quark@Base 1.3.99.20110606 - ibus_factory_add_engine@Base 1.3.99.20101019 - ibus_factory_get_type@Base 1.3.99.20101019 - ibus_factory_new@Base 1.3.99.20101019 - ibus_free_strv@Base 1.3.99.20101019 - ibus_get_address@Base 1.3.99.20101019 - ibus_get_daemon_uid@Base 1.3.99.20101019 - ibus_get_language_name@Base 1.3.99.20110405 - ibus_get_local_machine_id@Base 1.3.99.20101019 - ibus_get_session_id@Base 1.3.99.20101019 - ibus_get_socket_path@Base 1.3.99.20101019 - ibus_get_timeout@Base 1.3.99.20110117 - ibus_get_user_name@Base 1.3.99.20101019 - ibus_hotkey_get_type@Base 1.3.99.20101019 - ibus_hotkey_profile_add_hotkey@Base 1.3.99.20101019 - ibus_hotkey_profile_add_hotkey_from_string@Base 1.3.99.20101019 - ibus_hotkey_profile_filter_key_event@Base 1.3.99.20101019 - ibus_hotkey_profile_get_type@Base 1.3.99.20101019 - ibus_hotkey_profile_lookup_hotkey@Base 1.3.99.20101019 - ibus_hotkey_profile_new@Base 1.3.99.20101019 - ibus_hotkey_profile_remove_hotkey@Base 1.3.99.20101019 - ibus_hotkey_profile_remove_hotkey_by_event@Base 1.3.99.20101019 - ibus_init@Base 1.3.99.20101019 - ibus_input_context_cancel_hand_writing@Base 1.3.99.20110430 - ibus_input_context_cursor_down@Base 1.3.99.20101019 - ibus_input_context_cursor_up@Base 1.3.99.20101019 - ibus_input_context_disable@Base 1.3.99.20101019 - ibus_input_context_enable@Base 1.3.99.20101019 - ibus_input_context_focus_in@Base 1.3.99.20101019 - ibus_input_context_focus_out@Base 1.3.99.20101019 - ibus_input_context_get_engine@Base 1.3.99.20101019 - ibus_input_context_get_engine_async@Base 1.3.99.20110322 - ibus_input_context_get_engine_async_finish@Base 1.3.99.20110322 - ibus_input_context_get_input_context@Base 1.3.99.20101019 - ibus_input_context_get_input_context_async@Base 1.3.99.20110316 - ibus_input_context_get_input_context_async_finish@Base 1.3.99.20110316 - ibus_input_context_get_type@Base 1.3.99.20101019 - ibus_input_context_is_enabled@Base 1.3.99.20101019 - ibus_input_context_is_enabled_async@Base 1.3.99.20110322 - ibus_input_context_is_enabled_async_finish@Base 1.3.99.20110322 - ibus_input_context_needs_surrounding_text@Base 1.3.99.20110405 - ibus_input_context_new@Base 1.3.99.20101019 - ibus_input_context_new_async@Base 1.3.99.20110316 - ibus_input_context_new_async_finish@Base 1.3.99.20110316 - ibus_input_context_page_down@Base 1.3.99.20101019 - ibus_input_context_page_up@Base 1.3.99.20101019 - ibus_input_context_process_hand_writing_event@Base 1.3.99.20110430 - ibus_input_context_process_key_event@Base 1.3.99.20101019 - ibus_input_context_process_key_event_async@Base 1.3.99.20110124 - ibus_input_context_process_key_event_async_finish@Base 1.3.99.20110124 - ibus_input_context_property_activate@Base 1.3.99.20101019 - ibus_input_context_property_hide@Base 1.3.99.20101019 - ibus_input_context_property_show@Base 1.3.99.20101019 - ibus_input_context_reset@Base 1.3.99.20101019 - ibus_input_context_set_capabilities@Base 1.3.99.20101019 - ibus_input_context_set_cursor_location@Base 1.3.99.20101019 - ibus_input_context_set_engine@Base 1.3.99.20101019 - ibus_input_context_set_surrounding_text@Base 1.3.99.20110405 - ibus_key_event_from_string@Base 1.3.99.20101019 - ibus_key_event_to_string@Base 1.3.99.20101019 - ibus_keymap_fill@Base 1.3.99.20101019 - ibus_keymap_get@Base 1.3.99.20101019 - ibus_keymap_get_type@Base 1.3.99.20101019 - ibus_keymap_lookup_keysym@Base 1.3.99.20101019 - ibus_keymap_new@Base 1.3.99.20101019 - ibus_keyval_from_name@Base 1.3.99.20101019 - ibus_keyval_name@Base 1.3.99.20101019 - ibus_lookup_table_append_candidate@Base 1.3.99.20101019 - ibus_lookup_table_append_label@Base 1.3.99.20101019 - ibus_lookup_table_clear@Base 1.3.99.20101019 - ibus_lookup_table_cursor_down@Base 1.3.99.20101019 - ibus_lookup_table_cursor_up@Base 1.3.99.20101019 - ibus_lookup_table_get_candidate@Base 1.3.99.20101019 - ibus_lookup_table_get_cursor_in_page@Base 1.3.99.20101019 - ibus_lookup_table_get_cursor_pos@Base 1.3.99.20101019 - ibus_lookup_table_get_label@Base 1.3.99.20101019 - ibus_lookup_table_get_number_of_candidates@Base 1.3.99.20101019 - ibus_lookup_table_get_orientation@Base 1.3.99.20101019 - ibus_lookup_table_get_page_size@Base 1.3.99.20101019 - ibus_lookup_table_get_type@Base 1.3.99.20101019 - ibus_lookup_table_is_cursor_visible@Base 1.3.99.20101019 - ibus_lookup_table_is_round@Base 1.3.99.20101019 - ibus_lookup_table_new@Base 1.3.99.20101019 - ibus_lookup_table_page_down@Base 1.3.99.20101019 - ibus_lookup_table_page_up@Base 1.3.99.20101019 - ibus_lookup_table_set_cursor_pos@Base 1.3.99.20101019 - ibus_lookup_table_set_cursor_visible@Base 1.3.99.20101019 - ibus_lookup_table_set_label@Base 1.3.99.20101019 - ibus_lookup_table_set_orientation@Base 1.3.99.20101019 - ibus_lookup_table_set_page_size@Base 1.3.99.20101019 - ibus_lookup_table_set_round@Base 1.3.99.20101019 - ibus_main@Base 1.3.99.20101019 - ibus_modifier_type_get_type@Base 1.3.99.20101019 - ibus_object_destroy@Base 1.3.99.20101019 - ibus_object_flags_get_type@Base 1.3.99.20101019 - ibus_object_get_type@Base 1.3.99.20101019 - ibus_object_new@Base 1.3.99.20101019 - ibus_observed_path_check_modification@Base 1.3.99.20101019 - ibus_observed_path_get_type@Base 1.3.99.20101019 - ibus_observed_path_new@Base 1.3.99.20101019 - ibus_observed_path_new_from_xml_node@Base 1.3.99.20101019 - ibus_observed_path_output@Base 1.3.99.20101019 - ibus_observed_path_traverse@Base 1.3.99.20101019 - ibus_orientation_get_type@Base 1.3.99.20101019 - ibus_panel_service_candidate_clicked@Base 1.3.99.20101019 - ibus_panel_service_cursor_down@Base 1.3.99.20101019 - ibus_panel_service_cursor_up@Base 1.3.99.20101019 - ibus_panel_service_get_type@Base 1.3.99.20101019 - ibus_panel_service_new@Base 1.3.99.20101019 - ibus_panel_service_page_down@Base 1.3.99.20101019 - ibus_panel_service_page_up@Base 1.3.99.20101019 - ibus_panel_service_property_activate@Base 1.3.99.20101019 - ibus_panel_service_property_hide@Base 1.3.99.20101019 - ibus_panel_service_property_show@Base 1.3.99.20101019 - ibus_preedit_focus_mode_get_type@Base 1.3.99.20101019 - ibus_prop_list_append@Base 1.3.99.20101019 - ibus_prop_list_get@Base 1.3.99.20101019 - ibus_prop_list_get_type@Base 1.3.99.20101019 - ibus_prop_list_new@Base 1.3.99.20101019 - ibus_prop_list_update_property@Base 1.3.99.20101019 - ibus_prop_state_get_type@Base 1.3.99.20101019 - ibus_prop_type_get_type@Base 1.3.99.20101019 - ibus_property_get_icon@Base 1.3.99.20110405 - ibus_property_get_key@Base 1.3.99.20110405 - ibus_property_get_label@Base 1.3.99.20110405 - ibus_property_get_prop_type@Base 1.3.99.20110405 - ibus_property_get_sensitive@Base 1.3.99.20110405 - ibus_property_get_state@Base 1.3.99.20110405 - ibus_property_get_sub_props@Base 1.3.99.20110405 - ibus_property_get_tooltip@Base 1.3.99.20110405 - ibus_property_get_type@Base 1.3.99.20101019 - ibus_property_get_visible@Base 1.3.99.20110405 - ibus_property_new@Base 1.3.99.20101019 - ibus_property_set_icon@Base 1.3.99.20101019 - ibus_property_set_label@Base 1.3.99.20101019 - ibus_property_set_sensitive@Base 1.3.99.20101019 - ibus_property_set_state@Base 1.3.99.20101019 - ibus_property_set_sub_props@Base 1.3.99.20101019 - ibus_property_set_tooltip@Base 1.3.99.20101019 - ibus_property_set_visible@Base 1.3.99.20101019 - ibus_property_update@Base 1.3.99.20101019 - ibus_proxy_destroy@Base 1.3.99.20101019 - ibus_proxy_get_type@Base 1.3.99.20101019 - ibus_quit@Base 1.3.99.20101019 - ibus_serializable_copy@Base 1.3.99.20101019 - ibus_serializable_deserialize@Base 1.3.99.20101019 - ibus_serializable_get_qattachment@Base 1.3.99.20101019 - ibus_serializable_get_type@Base 1.3.99.20101019 - ibus_serializable_new@Base 1.3.99.20101019 - ibus_serializable_remove_qattachment@Base 1.3.99.20101019 - ibus_serializable_serialize@Base 1.3.99.20101019 - ibus_serializable_set_qattachment@Base 1.3.99.20101019 - ibus_service_class_add_interfaces@Base 1.3.99.20101019 - ibus_service_emit_signal@Base 1.3.99.20101019 - ibus_service_get_connection@Base 1.3.99.20101019 - ibus_service_get_object_path@Base 1.3.99.20101019 - ibus_service_get_type@Base 1.3.99.20101019 - ibus_service_new@Base 1.3.99.20101019 - ibus_service_register@Base 1.3.99.20101019 - ibus_service_unregister@Base 1.3.99.20101019 - ibus_set_display@Base 1.3.99.20101019 - ibus_set_log_handler@Base 1.3.99.20101019 - ibus_text_append_attribute@Base 1.3.99.20101019 - ibus_text_get_attributes@Base 1.3.99.20110405 - ibus_text_get_is_static@Base 1.3.99.20110405 - ibus_text_get_length@Base 1.3.99.20101019 - ibus_text_get_text@Base 1.3.99.20110405 - ibus_text_get_type@Base 1.3.99.20101019 - ibus_text_new_from_printf@Base 1.3.99.20101019 - ibus_text_new_from_static_string@Base 1.3.99.20101019 - ibus_text_new_from_string@Base 1.3.99.20101019 - ibus_text_new_from_ucs4@Base 1.3.99.20101019 - ibus_text_new_from_unichar@Base 1.3.99.20101019 - ibus_write_address@Base 1.3.99.20101019 - ibus_xml_free@Base 1.3.99.20101019 - ibus_xml_output@Base 1.3.99.20101019 - ibus_xml_parse_buffer@Base 1.3.99.20101019 - ibus_xml_parse_file@Base 1.3.99.20101019 diff --git a/debian/libibus-dev.install b/debian/libibus-dev.install deleted file mode 100644 index 34eb19e8f..000000000 --- a/debian/libibus-dev.install +++ /dev/null @@ -1,6 +0,0 @@ -debian/tmp/usr/include/* -debian/tmp/usr/lib/libibus-*.so -debian/tmp/usr/lib/libibus-*.a -debian/tmp/usr/lib/pkgconfig/* -debian/tmp/usr/share/gir-1.0/* -debian/tmp/usr/share/vala/vapi/* diff --git a/debian/patches/00list b/debian/patches/00list deleted file mode 100644 index e69de29bb..000000000 diff --git a/debian/python-ibus.install b/debian/python-ibus.install deleted file mode 100644 index 5996c8a02..000000000 --- a/debian/python-ibus.install +++ /dev/null @@ -1 +0,0 @@ -debian/tmp/usr/lib/python*/* diff --git a/debian/pyversions b/debian/pyversions deleted file mode 100644 index b3dc41ebc..000000000 --- a/debian/pyversions +++ /dev/null @@ -1 +0,0 @@ -2.5- diff --git a/debian/rules b/debian/rules deleted file mode 100755 index a3bc5f107..000000000 --- a/debian/rules +++ /dev/null @@ -1,61 +0,0 @@ -#!/usr/bin/make -f - -include /usr/share/dpatch/dpatch.make - -build: patch - ln -sf /usr/share/misc/config.sub config.sub - ln -sf /usr/share/misc/config.guess config.guess - dh $@ --before auto_configure - dh_auto_configure -- \ - --enable-gtk3 \ - --enable-static \ - --enable-surrounding-text \ - --enable-gtk-doc \ - --with-panel-icon-keyboard=ibus-keyboard \ - LDFLAGS="-Wl,--as-needed" - dh $@ --before auto_test - cd po; make ibus10.pot # https://bugs.launchpad.net/ubuntu/+source/ibus/+bug/188690 - dh $@ --after auto_test - -install: - dh $@ --until auto_install - rm -rf $(CURDIR)/debian/tmp/usr/lib/libibus*.la \ - $(CURDIR)/debian/tmp/usr/lib/gtk-2.0/2.10.0/immodules/im-ibus.a \ - $(CURDIR)/debian/tmp/usr/lib/gtk-2.0/2.10.0/immodules/im-ibus.la \ - $(CURDIR)/debian/tmp/usr/lib/gtk-3.0/3.0.0/immodules/im-ibus.a \ - $(CURDIR)/debian/tmp/usr/lib/gtk-3.0/3.0.0/immodules/im-ibus.la \ - $(CURDIR)/debian/tmp/etc/xdg \ - $(CURDIR)/debian/tmp/usr/share/applications/ibus.desktop - dh_install --list-missing --fail-missing - dh_installdocs # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=552293 - dh $@ --after installdocs - LD_LIBRARY_PATH=debian/libibus-1.0-0/usr/lib:$(LD_LIBRARY_PATH) \ - dh_gtkmodules -p ibus-gtk2 -s - LD_LIBRARY_PATH=debian/libibus-1.0-0/usr/lib:$(LD_LIBRARY_PATH) \ - dh_gtkmodules -p ibus-gtk3 -s - -install-stamp: install - touch $@ - -binary: binary-indep binary-arch - -binary-indep: install-stamp - dh_installdeb -i - dh_gencontrol -i - dh_md5sums -i - dh_builddeb -i - -binary-arch: install-stamp - dh_strip -s - dh_makeshlibs -Nibus-gtk2 -s - dh_makeshlibs -Nibus-gtk3 -s - dh_shlibdeps -s - dh_installdeb -s - dh_gencontrol -s - dh_md5sums -s - dh_builddeb -s - -clean: clean0 unpatch - -clean0: - dh clean diff --git a/debian/source/format b/debian/source/format deleted file mode 100644 index d3827e75a..000000000 --- a/debian/source/format +++ /dev/null @@ -1 +0,0 @@ -1.0 diff --git a/debian/watch b/debian/watch deleted file mode 100644 index 9b8c3653f..000000000 --- a/debian/watch +++ /dev/null @@ -1,3 +0,0 @@ -version=3 -http://code.google.com/p/ibus/downloads/list \ -http://ibus.googlecode.com/files/ibus-([0-9].*)\.tar\.gz diff --git a/debian/xinput/ibus b/debian/xinput/ibus deleted file mode 100644 index 12069462a..000000000 --- a/debian/xinput/ibus +++ /dev/null @@ -1,16 +0,0 @@ -XIM=ibus -XIM_PROGRAM=/usr/bin/ibus-daemon -XIM_ARGS="--xim" -if [ -e /usr/lib/gtk-2.0/*/immodules/im-ibus.so ]; then - GTK_IM_MODULE=ibus -else - GTK_IM_MODULE=xim -fi - -if [ -e /usr/lib/qt4/plugins/inputmethods/libqtim-ibus.so ]; then - QT_IM_MODULE=ibus -else - QT_IM_MODULE=xim -fi -DEPENDS="ibus, ibus-gtk2, ibus-gtk3|ibus-qt4" -# vim:ft=sh: diff --git a/docs/Makefile.am b/docs/Makefile.am index 962d37dd8..ec6bbc2ac 100644 --- a/docs/Makefile.am +++ b/docs/Makefile.am @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA SUBDIRS = \ reference \ diff --git a/docs/reference/Makefile.am b/docs/reference/Makefile.am index 050c78d2f..1006511a3 100644 --- a/docs/reference/Makefile.am +++ b/docs/reference/Makefile.am @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA SUBDIRS = \ ibus \ diff --git a/docs/reference/ibus/Makefile.am b/docs/reference/ibus/Makefile.am index 75e3815ec..0f307bbdc 100644 --- a/docs/reference/ibus/Makefile.am +++ b/docs/reference/ibus/Makefile.am @@ -1,4 +1,25 @@ -## Process this file with automake to produce Makefile.in +# vim:set noet ts=4: +# +# ibus - The Input Bus +# +# Copyright (c) 2007-2015 Peng Huang +# Copyright (c) 2007-2020 Red Hat, Inc. +# Copyright (c) 2015-2020 Takao Fujiwara +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA # We require automake 1.6 at least. AUTOMAKE_OPTIONS = 1.6 @@ -17,8 +38,8 @@ DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml # The directory containing the source code. Relative to $(srcdir). # gtk-doc will search all .c & .h files beneath here for inline comments # documenting the functions and macros. -# e.g. DOC_SOURCE_DIR=../../../gtk -DOC_SOURCE_DIR=../../../src +# e.g. DOC_SOURCE_DIR=$(top_srcdir)/gtk +DOC_SOURCE_DIR=$(top_srcdir)/src $(top_builddir)/src # Extra options to pass to gtkdoc-scangobj. Not normally needed. SCANGOBJ_OPTIONS= @@ -48,6 +69,7 @@ CFILE_GLOB=$(top_srcdir)/src/*.c # Header files to ignore when scanning. Use base file/dir names # e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h IGNORE_HFILES= \ + ibuscomposetable.h \ ibusconfigprivate.h \ ibusinternal.h \ keyname-table.h \ @@ -125,6 +147,6 @@ tmpl-build.stamp: trim-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DO # clean-local: # rm -rf tmpl ${DOC_MODULE) -CLEANFILES+= *.stamp +CLEANFILES+= *actions *.stamp -include $(top_srcdir)/git.mk diff --git a/docs/reference/ibus/ibus-docs.sgml.in b/docs/reference/ibus/ibus-docs.sgml.in index ab99ded75..5eea0a749 100644 --- a/docs/reference/ibus/ibus-docs.sgml.in +++ b/docs/reference/ibus/ibus-docs.sgml.in @@ -7,7 +7,7 @@ Intelligent Input Bus (IBus) @VERSION@ reference manual. The latest version of this documentation can be found on-line at - http://code.google.com/p/ibus. + https://github.com/ibus/ibus/wiki. @@ -72,10 +72,14 @@ + + + + Configuration @@ -85,6 +89,7 @@ + @@ -92,9 +97,6 @@ Communication Here lists the service communication functions. - - - @@ -104,11 +106,18 @@ Definition and functions for IBus internal use. - - + + Index + + + + Index of deprecated symbols + + + diff --git a/docs/reference/ibus/ibus.types b/docs/reference/ibus/ibus.types index 016e9ceac..632e9990d 100644 --- a/docs/reference/ibus/ibus.types +++ b/docs/reference/ibus/ibus.types @@ -27,3 +27,5 @@ ibus_property_get_type ibus_prop_list_get_type ibus_input_context_get_type ibus_observed_path_get_type +ibus_registry_get_type +ibus_engine_simple_get_type diff --git a/engine/Makefile.am b/engine/Makefile.am index b3b46bef5..03867f52f 100644 --- a/engine/Makefile.am +++ b/engine/Makefile.am @@ -2,27 +2,28 @@ # # ibus - The Input Bus # -# Copyright (c) 2010, Google Inc. All rights reserved. -# Copyright (c) 2007-2010 Peng Huang +# Copyright (c) 2010-2016, Google Inc. All rights reserved. +# Copyright (c) 2007-2016 Peng Huang +# Copyright (c) 2013-2020 Takao Fujiwara # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la -INCLUDES = \ +AM_CPPFLAGS = \ -I$(top_srcdir)/src \ -I$(top_builddir)/src \ $(NULL) @@ -31,7 +32,6 @@ AM_CFLAGS = \ @GLIB2_CFLAGS@ \ @GIO2_CFLAGS@ \ @GTHREAD2_CFLAGS@ \ - $(INCLUDES) \ -DG_LOG_DOMAIN=\"IBUS\" \ -DPKGDATADIR=\"$(pkgdatadir)\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ @@ -53,6 +53,7 @@ AM_LDADD = \ AM_VALAFLAGS = \ --vapidir=$(top_builddir)/bindings/vala \ --pkg=ibus-1.0 \ + --target-glib="$(VALA_TARGET_GLIB_VERSION)" \ $(NULL) libexec_PROGRAMS = \ @@ -78,21 +79,34 @@ component_DATA = \ componentdir = $(pkgdatadir)/component +MAINTAINERCLEANFILES = \ + simple.xml.in \ + $(NULL) + CLEANFILES = \ simple.xml \ $(NULL) EXTRA_DIST = \ - simple.xml.in.in \ + gensimple.py \ + iso639converter.py \ + simple.xml.in \ $(NULL) simple.xml: simple.xml.in - $(AM_V_GEN) \ - ( \ - libexecdir=${libexecdir}; \ - s=`cat $<`; \ - eval "echo \"$${s}\""; \ - ) > $@ + $(AM_V_GEN) sed \ + -e 's|@libexecdir[@]|$(libexecdir)|g' $< > $@.tmp && \ + mv $@.tmp $@ + +simple.xml.in: + $(PYTHON) $(srcdir)/gensimple.py \ + --input=$(XKBCONFIG_BASE)/rules/evdev.xml \ + --output=$@ \ + --version=$(VERSION).`date '+%Y%m%d'` \ + --exec-path=@libexecdir\@/ibus-engine-simple \ + --iso-path=$(ISOCODES_PREFIX)/share/xml/iso-codes/iso_639.xml \ + --first-language \ + $(NULL) $(libibus): $(MAKE) -C $(top_builddir)/src diff --git a/engine/denylist.txt b/engine/denylist.txt new file mode 100644 index 000000000..9cbc7fc38 --- /dev/null +++ b/engine/denylist.txt @@ -0,0 +1,28 @@ +# vim:set fileencoding=utf-8 et sts=4 sw=4: +# +# ibus - Intelligent Input Bus for Linux / Unix OS +# +# Copyright © 2020 Takao Fujiwara +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library. If not, see . + +# This file is a deny list (black list) and used by gensimple.py. +# gensimple.py generates the engine list with evdev.xml and if an engine name +# is matched with any entries in this file, the engine is excluded from the +# engine list. +# Asterisk(*) character can be used to match any engines. +# E.g. xkb:cn:*:* excludes xkb:cn::zho and xkb:cn:mon_trad:mvf +xkb:cn:*:* +xkb:latam:*:* +xkb:nec_vndr/jp:*:* diff --git a/engine/gensimple.py b/engine/gensimple.py old mode 100644 new mode 100755 index 9dd06ead5..de6d7ff5e --- a/engine/gensimple.py +++ b/engine/gensimple.py @@ -1,118 +1,387 @@ -# vim:set et sts=4 sw=4: +#!/usr/bin/python +# vim:set fileencoding=utf-8 et sts=4 sw=4: # -# ibus - The Input Bus +# ibus - Intelligent Input Bus for Linux / Unix OS # -# Copyright (c) 2007-2010 Peng Huang -# Copyright (c) 2007-2010 Red Hat, Inc. +# Copyright © 2020 Takao Fujiwara # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library. If not, see . + + +# This script generates simple.xml with /usr/share/X11/xkb/rules/evdev.xml, +# /usr/share/xml/iso-codes/iso_639.xml and denylist.txt + -import cgi -import urllib2 from xml.dom import minidom +from xml.sax import make_parser as sax_make_parser +from xml.sax.handler import feature_namespaces as sax_feature_namespaces +from xml.sax.saxutils import XMLFilterBase, XMLGenerator, escape +from xml.sax.xmlreader import AttributesImpl +from xml.sax._exceptions import SAXParseException -def simplfy_dom(node): - name = node.nodeName - children = {} - if len(node.childNodes) == 1 and node.childNodes[0].nodeType == node.TEXT_NODE: - return name, node.childNodes[0].nodeValue - for child in node.childNodes: - if child.nodeType != node.ELEMENT_NODE: - continue - child_name, child_value = simplfy_dom(child) - if child_name not in children: - children[child_name] = [] - children[child_name].append(child_value) - return name, children - -def parse_xml(): - filename = "/usr/share/X11/xkb/rules/evdev.xml" - dom = minidom.parse(file(filename)) - name, root = simplfy_dom(dom) - - layouts = root['xkbConfigRegistry'][0]['layoutList'][0]['layout'] - for layout in layouts: - config = layout['configItem'][0] - name = config['name'][0] - short_desc = config.get('shortDescription', [''])[0] - desc = config.get('description', [''])[0] - languages = config.get('languageList', [{}])[0].get('iso639Id', []) - variants = layout.get('variantList', [{}])[0].get('variant', []) - yield name, '', short_desc, desc, languages - for variant in variants: - variant_config = variant['configItem'][0] - variant_name = variant_config['name'][0] - variant_short_desc = variant_config.get('shortDescription', [''])[0] - variant_desc = variant_config.get('description', [''])[0] - variant_languages = variant_config.get('languageList', [{}])[0].get('iso639Id', []) - if not isinstance(variant_languages, list): - variant_languages = [variant_languages] - yield name, variant_name, variant_short_desc, variant_desc, languages + variant_languages - -def gen_xml(): - header = u""" - org.freedesktop.IBus.Simple - A table based simple engine - ${libexecdir}/ibus-engine-simple - @VERSION@ - Peng Huang <shawn.p.huang@gmail.com> - GPL - http://code.google.com/p/ibus - ibus - """ - engine = u"""\t\t - %s - %s - GPL - Peng Huang <shawn.p.huang@gmail.com> - %s - %s - %s - ibus-keyboard - %d - """ - footer = u"""\t -""" - - print header - - whitelist = parse_whitelist() - for name, vname, sdesc, desc, languages in parse_xml(): - layout = "%s(%s)" % (name, vname) if vname else name - for lang in languages: - ibus_name = "xkb:%s:%s:%s" % (name, vname, lang) - if ibus_name not in whitelist: +import codecs +import getopt +import io +import os +import sys + +VERSION='0.1' +EVDEV_XML = '/usr/share/X11/xkb/rules/evdev.xml' +EXEC_PATH='/usr/lib/ibus-engine-simple' +ISO_PATH='/usr/share/xml/iso-codes/iso_639.xml' +PY3K = sys.version_info >= (3, 0) + +if PY3K: + from io import StringIO +else: + # io.StringIO does not work with XMLGenerator + from cStringIO import StringIO + # iso_639.xml includes UTF-8 + reload(sys) + sys.setdefaultencoding('utf-8') + +def usage(prgname): + print('''\ +%s Version %s +Usage: + %s [OPTION...] + +Options: + -h, --help Show this message + -i, --input=EVDEV_XML Load EVDEV_XML file (default is: + %s) + -o, --output=FILE Output FILE (default is stdout) + -V, --version=VERSION Set IBus VERSION (default is %s) + -e, --exec-path=EXEC_PATH Set EXEC_PATH file (default is: + %s) + -I, --iso-path=ISO_PATH Load ISO_PATH file (default is: + %s) + -1, --first-language Pull first language only in language list +''' % (prgname, VERSION, prgname, EVDEV_XML, VERSION, EXEC_PATH, ISO_PATH)) + + +class EvdevXML(XMLFilterBase): + def __init__(self, parser=None, downstream=None, iso639=None, + denylist=None, author=None, first=False): + XMLFilterBase.__init__(self, parser) + self.__downstream = downstream + self.__iso639 = iso639 + self.__denylist = denylist + self.__author = author + self.__first = first + self.__is_layout = False + self.__is_description = False + self.__is_config_item = False + self.__is_variant = False + self.__is_iso639 = False + self.__is_name = False + self.__layout = '' + self.__description = '' + self.__variant = '' + self.__list_iso639 = [] + self.__list_iso639_for_variant = [] + def startDocument(self): + if self.__downstream: + self.__downstream.startDocument() + self.__downstream.startElement('engines', AttributesImpl({})) + def endDocument(self): + if self.__downstream: + self.__downstream.endElement('engines') + self.__downstream.endDocument() + def startElement(self, name, attrs): + if name == 'layout': + self.__is_layout = True + elif name == 'description': + self.__is_description = True + elif name == 'configItem': + self.__is_config_item = True + elif name == 'languageList': + if self.__is_variant and self.__is_config_item: + self.__list_iso639_for_variant = [] + elif self.__is_layout and self.__is_config_item: + self.__list_iso639 = [] + elif name == 'iso639Id': + self.__is_iso639 = True + elif name == 'variant': + self.__is_variant = True + elif name == 'name': + self.__is_name = True + def endElement(self, name): + if name == 'layout': + self.__is_layout = False + self.__layout = '' + self.__description = '' + self.__variant = '' + self.__list_iso639 = [] + elif name == 'description': + self.__is_description = False + elif name == 'configItem': + self.save() + self.__is_config_item = False + elif name == 'iso639Id': + self.__is_iso639 = False + elif name == 'variant': + self.__is_variant = False + self.__list_iso639_for_variant = [] + elif name == 'name': + self.__is_name = False + def characters(self, text): + if self.__is_description: + self.__description = text + elif self.__is_name: + if self.__is_variant and self.__is_config_item: + self.__variant = text + elif self.__is_layout and self.__is_config_item: + self.__layout = text + elif self.__is_iso639: + if self.__is_variant and self.__is_config_item: + self.__list_iso639_for_variant.append(text) + elif self.__is_layout and self.__is_config_item: + self.__list_iso639.append(text) + def save(self): + if not self.__downstream: + return + list_iso639 = [] + if self.__is_variant and self.__is_config_item: + list_iso639 = self.__list_iso639_for_variant + if len(list_iso639) == 0: + list_iso639 = self.__list_iso639 + elif self.__is_layout and self.__is_config_item: + list_iso639 = self.__list_iso639 + for iso in list_iso639: + do_deny = False + for [xkb, layout, variant, lang] in self.__denylist: + if xkb == 'xkb' \ + and ( layout == self.__layout or layout == '*' ) \ + and ( variant == self.__variant or variant == '*' ) \ + and ( lang == iso or variant == '*' ): + do_deny = True + break + if do_deny: continue - desc = cgi.escape(desc) - out = engine % (ibus_name, lang, layout, desc, desc, 99) - print out.encode("utf8") - - print footer - -def parse_whitelist(): - url = "http://git.chromium.org/gitweb/?p=chromium/chromium.git;a=blob_plain;f=chrome/browser/chromeos/input_method/ibus_input_methods.txt;hb=HEAD" - whitelist = [] - for line in urllib2.urlopen(url): - line = line.strip() - if not line: + self.__downstream.startElement('engine', AttributesImpl({})) + self.__downstream.startElement('name', AttributesImpl({})) + name = 'xkb:%s:%s:%s' % ( + self.__layout, + self.__variant, + iso + ) + self.__downstream.characters(name) + self.__downstream.endElement('name') + self.__downstream.startElement('language', AttributesImpl({})) + iso639_1 = self.__iso639.code2to1(iso) + if iso639_1 != None: + iso = iso639_1 + self.__downstream.characters(iso) + self.__downstream.endElement('language') + self.__downstream.startElement('license', AttributesImpl({})) + self.__downstream.characters('GPL') + self.__downstream.endElement('license') + if self.__author != None: + self.__downstream.startElement('author', AttributesImpl({})) + self.__downstream.characters(self.__author) + self.__downstream.endElement('author') + self.__downstream.startElement('layout', AttributesImpl({})) + self.__downstream.characters(self.__layout) + self.__downstream.endElement('layout') + if self.__variant != '': + self.__downstream.startElement('layout_variant', + AttributesImpl({})) + self.__downstream.characters(self.__variant) + self.__downstream.endElement('layout_variant') + self.__downstream.startElement('longname', AttributesImpl({})) + self.__downstream.characters(self.__description) + self.__downstream.endElement('longname') + self.__downstream.startElement('description', AttributesImpl({})) + self.__downstream.characters(self.__description) + self.__downstream.endElement('description') + self.__downstream.startElement('icon', AttributesImpl({})) + self.__downstream.characters('ibus-keyboard') + self.__downstream.endElement('icon') + self.__downstream.startElement('rank', AttributesImpl({})) + if self.__variant == '': + self.__downstream.characters('50') + else: + self.__downstream.characters('1') + self.__downstream.endElement('rank') + self.__downstream.endElement('engine') + if self.__first: + break + + +class GenerateEngineXML(): + _NAME = 'org.freedesktop.IBus.Simple' + _DESCRIPTION = 'A table based simple engine' + _AUTHOR = 'Peng Huang ' + _HOMEPAGE = 'https://github.com/ibus/ibus/wiki' + _DOMAIN = 'ibus' + def __init__(self, path, iso639=None, denylist='', version='', exec='', + first=False): + self.__path = path + self.__iso639 = iso639 + self.__denylist = denylist + self.__version = version + self.__exec = exec + self.__first = first + self.__result = StringIO() + downstream = XMLGenerator(self.__result, 'utf-8') + self.__load(downstream) + + def __load(self, downstream=None): + parser = sax_make_parser() + parser.setFeature(sax_feature_namespaces, 0) + self.__handler = EvdevXML(parser, + downstream, + self.__iso639, + self.__denylist, + self._AUTHOR, + self.__first) + parser.setContentHandler(self.__handler) + f = codecs.open(self.__path, 'r', encoding='utf-8') + try: + parser.parse(f) + except SAXParseException: + print('Error: Invalid file format: %s' % path) + finally: + f.close() + def write(self, output=None): + if output != None: + od = codecs.open(output, 'w', encoding='utf-8') + else: + if PY3K: + od = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') + else: + od = codecs.getwriter('utf-8')(sys.stdout) + contents = self.__result.getvalue() + index = contents.find('') + if index >= 0: + author = escape(self._AUTHOR) + contents = '%s%s\ +%s%s%s\ +%s%s%s\ +%s%s' % ( + contents[:index], + self._NAME, self._DESCRIPTION, + self.__exec, self.__version, author, 'GPL', + self._HOMEPAGE, self._DOMAIN, contents[index:] ) + parsed = minidom.parseString(contents) + # format with indent and encoding attribute in header + xml = parsed.toprettyxml(indent=' ', encoding='utf-8') + # convert byte to str + od.write(str(xml, 'utf-8')) + #od.write(contents) + + +class ISO639XML(XMLFilterBase): + def __init__(self, parser=None): + self.__code2to1 = {} + self.__codetoname = {} + XMLFilterBase.__init__(self, parser) + def startElement(self, name, attrs): + if name != 'iso_639_entry': + return + n = attrs.get('name') + iso639_1 = attrs.get('iso_639_1_code') + iso639_2b = attrs.get('iso_639_2B_code') + iso639_2t = attrs.get('iso_639_2T_code') + if iso639_1 != None: + self.__codetoname[iso639_1] = n + if iso639_2b != None: + self.__code2to1[iso639_2b] = iso639_1 + self.__codetoname[iso639_2b] = n + if iso639_2t != None and iso639_2b != iso639_2t: + self.__code2to1[iso639_2t] = iso639_1 + self.__codetoname[iso639_2t] = n + def code2to1(self, iso639_2): + try: + return self.__code2to1[iso639_2] + except KeyError: + return None + + +def parse_iso639(path): + f = codecs.open(path, 'r', encoding='utf-8') + parser = sax_make_parser() + parser.setFeature(sax_feature_namespaces, 0) + handler = ISO639XML(parser) + parser.setContentHandler(handler) + try: + parser.parse(f) + except SAXParseException: + print('Error: Invalid file format: %s' % path) + finally: + f.close() + return handler + + +def parse_denylist(denyfile): + denylist = [] + f = codecs.open(denyfile, 'r', encoding='utf-8') + for line in f.readlines(): + if line == '\n' or line[0] == '#': continue - if line.startswith("#"): + line = line.rstrip() + entry = line.split(':') + if len(entry) != 4: + print('WARNING: format error: \'%s\' against \'%s\'' \ + % (line, 'xkb:layout:variant:lang')) continue - whitelist.append(line.split()[0]) - return set(whitelist) + denylist.append(entry) + f.close() + return denylist + + +if __name__ == '__main__': + prgname = os.path.basename(sys.argv[0]) + mydir = os.path.dirname(sys.argv[0]) + try: + opts, args = getopt.getopt(sys.argv[1:], + 'hi:o:V:e:I:1', + ['help', 'input=', 'output=', 'version=', + 'exec-path=', 'iso-path=', + 'first-language']) + except getopt.GetoptError as err: + print(err) + usage(prgname) + sys.exit(2) + if len(args) > 0: + usage(prgname) + sys.exit(2) + input = EVDEV_XML + output = None + version=VERSION + exec_path=EXEC_PATH + iso_path=ISO_PATH + first=False + for opt, arg in opts: + if opt in ('-h', '--help'): + usage(prgname) + sys.exit() + elif opt in ('-i', '--input'): + input = arg + elif opt in ('-o', '--output'): + output = arg + elif opt in ('-V', '--version'): + version = arg + elif opt in ('-e', '--exec-path'): + exec_path = arg + elif opt in ('-I', '--iso-path'): + iso_path = arg + elif opt in ('-1', '--first-langauge'): + first=True -if __name__ == "__main__": - gen_xml() + iso639 = parse_iso639(iso_path) + denylist = parse_denylist('%s/%s' % ( mydir, 'denylist.txt')) + xml = GenerateEngineXML(input, iso639, denylist, version, exec_path, first) + xml.write(output) diff --git a/engine/iso639converter.py b/engine/iso639converter.py new file mode 100755 index 000000000..e1e1a917e --- /dev/null +++ b/engine/iso639converter.py @@ -0,0 +1,197 @@ +#!/usr/bin/python +# vim:set fileencoding=utf-8 et sts=4 sw=4: +# +# ibus - Intelligent Input Bus for Linux / Unix OS +# +# Copyright © 2016 Takao Fujiwara +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library. If not, see . + + +# This script converts ISO 639-2 of three characters to ISO 639-1 of two +# characters in simple.xml. +# E.g. "eng" to "en" + + +from xml.sax import make_parser as sax_make_parser +from xml.sax.handler import feature_namespaces as sax_feature_namespaces +from xml.sax.saxutils import XMLFilterBase, XMLGenerator +from xml.sax._exceptions import SAXParseException + +import codecs +import getopt +import io +import os +import sys + +INSTALLED_SIMPLE_XML = '/usr/share/ibus/component/simple.xml' +PY3K = sys.version_info >= (3, 0) + +if PY3K: + from io import StringIO +else: + # io.StringIO does not work with XMLGenerator + from cStringIO import StringIO + # iso_639.xml includes UTF-8 + reload(sys) + sys.setdefaultencoding('utf-8') + + +def usage(prgname): + print('''\ +Usage: + %s [OPTION...] + +Options: + -h, --help Show this message + -i, --input=SIMPLE_XML Load SIMPLE_XML file (default is: + %s) + -o, --output=FILE Output FILE (default is stdout) +''' % (prgname, INSTALLED_SIMPLE_XML)) + + +class ISO639XML(XMLFilterBase): + def __init__(self, parser=None): + self.__code2to1 = {} + self.__codetoname = {} + XMLFilterBase.__init__(self, parser) + def startElement(self, name, attrs): + if name != 'iso_639_entry': + return + n = attrs.get('name') + iso639_1 = attrs.get('iso_639_1_code') + iso639_2b = attrs.get('iso_639_2B_code') + iso639_2t = attrs.get('iso_639_2T_code') + if iso639_1 != None: + self.__codetoname[iso639_1] = n + if iso639_2b != None: + self.__code2to1[iso639_2b] = iso639_1 + self.__codetoname[iso639_2b] = n + if iso639_2t != None and iso639_2b != iso639_2t: + self.__code2to1[iso639_2t] = iso639_1 + self.__codetoname[iso639_2t] = n + def code2to1(self, iso639_2): + try: + return self.__code2to1[iso639_2] + except KeyError: + return None + + +class IBusComponentXML(XMLFilterBase): + def __init__(self, parser=None, downstream=None, iso639=None): + XMLFilterBase.__init__(self, parser) + self.__downstream = downstream + self.__iso639 = iso639 + self.__is_language = False + def startDocument(self): + if self.__downstream: + self.__downstream.startDocument() + def endDocument(self): + if self.__downstream: + self.__downstream.endDocument() + def startElement(self, name, attrs): + if name == 'language': + self.__is_language = True + if self.__downstream: + self.__downstream.startElement(name, attrs) + def endElement(self, name): + if name == 'language': + self.__is_language = False + if self.__downstream: + self.__downstream.endElement(name) + def characters(self, text): + if self.__is_language: + if self.__iso639: + iso639_1 = self.__iso639.code2to1(text) + if iso639_1 != None: + text = iso639_1 + if self.__downstream: + self.__downstream.characters(text) + + +class ConvertEngineXML(): + def __init__(self, path, iso639=None): + self.__path = path + self.__iso639 = iso639 + + self.__result = StringIO() + downstream = XMLGenerator(self.__result, 'utf-8') + self.__load(downstream) + + def __load(self, downstream=None): + parser = sax_make_parser() + parser.setFeature(sax_feature_namespaces, 0) + self.__handler = IBusComponentXML(parser, downstream, self.__iso639) + parser.setContentHandler(self.__handler) + f = codecs.open(self.__path, 'r', encoding='utf-8') + try: + parser.parse(f) + except SAXParseException: + print('Error: Invalid file format: %s' % path) + finally: + f.close() + def write(self, output=None): + if output != None: + od = codecs.open(output, 'w', encoding='utf-8') + else: + if PY3K: + od = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') + else: + od = codecs.getwriter('utf-8')(sys.stdout) + contents = self.__result.getvalue() + od.write(contents) + + +def parse_iso639(path): + f = codecs.open(path, 'r', encoding='utf-8') + parser = sax_make_parser() + parser.setFeature(sax_feature_namespaces, 0) + handler = ISO639XML(parser) + parser.setContentHandler(handler) + try: + parser.parse(f) + except SAXParseException: + print('Error: Invalid file format: %s' % path) + finally: + f.close() + return handler + + +if __name__ == '__main__': + prgname = os.path.basename(sys.argv[0]) + try: + opts, args = getopt.getopt(sys.argv[1:], + 'hi:o:', + ['help', 'input=', 'output=']) + except getopt.GetoptError as err: + print(err) + usage(prgname) + sys.exit(2) + if len(args) > 0: + usage(prgname) + sys.exit(2) + input = INSTALLED_SIMPLE_XML + output = None + for opt, arg in opts: + if opt in ('-h', '--help'): + usage(prgname) + sys.exit() + elif opt in ('-i', '--input'): + input = arg + elif opt in ('-o', '--output'): + output = arg + + iso639 = parse_iso639('/usr/share/xml/iso-codes/iso_639.xml') + xml = ConvertEngineXML(input, iso639) + xml.write(output) diff --git a/engine/main.vala b/engine/main.vala index e1fd1294b..4a915b757 100644 --- a/engine/main.vala +++ b/engine/main.vala @@ -2,22 +2,23 @@ * * ibus - The Input Bus * - * Copyright(c) 2011 Peng Huang + * Copyright (c) 2011-2013 Peng Huang + * Copyright (c) 2015 Takao Fujiwara * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or(at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 Lesser General Public License for more details. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ using IBus; @@ -26,6 +27,7 @@ class DummyEngine : IBus.EngineSimple { } public int main(string[] args) { + Intl.setlocale(LocaleCategory.ALL, ""); IBus.init(); IBus.Bus bus = new IBus.Bus(); @@ -34,16 +36,6 @@ public int main(string[] args) { return 1; } - uint flags = - IBus.BusNameFlag.REPLACE_EXISTING | - IBus.BusNameFlag.ALLOW_REPLACEMENT; - uint retval = bus.request_name("org.freedesktop.IBus.Simple", flags); - - if (retval == 0) { - warning("Registry bus name org.freedesktop.IBus.Simple failed!"); - return 1; - } - bus.disconnected.connect((bus) => { debug("bus disconnected"); IBus.quit(); @@ -54,13 +46,61 @@ public int main(string[] args) { int id = 0; factory.create_engine.connect((factory, name) => { + if (!name.has_prefix("xkb:")) + return null; + const string path = "/org/freedesktop/IBus/engine/simple/%d"; + IBus.Engine engine = new IBus.Engine.with_type( typeof(IBus.EngineSimple), name, path.printf(++id), bus.get_connection()); + + /* Use Idle.add() to reduce the lag caused by file io */ + GLib.Idle.add(() => { + /* I think "c" + "'" is c with acute U+0107 and + * "c" + "," is c with cedilla U+00E7 and they are + * visually comprehensible. But pt-br people need + * "c" + "'" is c with cedilla and I think the + * cedilla_compose_seqs is needed for the specific keyboards + * or regions. + * X11 uses compose by locale: + * In /usr/share/X11/locale/en_US.UTF-8/Compose , + * : U0107 + */ + IBus.EngineSimple? simple = (IBus.EngineSimple ?) engine; + simple.add_table_by_locale(null); + + string user_file = null; + + var home = GLib.Environment.get_home_dir(); + if (home != null) { + user_file = home + "/.XCompose"; + if (GLib.FileUtils.test(user_file, GLib.FileTest.EXISTS)) + simple.add_compose_file(user_file); + } + + user_file = GLib.Environment.get_variable("XCOMPOSEFILE"); + if (user_file != null) { + if (GLib.FileUtils.test(user_file, GLib.FileTest.EXISTS)) + simple.add_compose_file(user_file); + } + + return false; + }); + return engine; }); + uint flags = + IBus.BusNameFlag.REPLACE_EXISTING | + IBus.BusNameFlag.ALLOW_REPLACEMENT; + uint retval = bus.request_name("org.freedesktop.IBus.Simple", flags); + + if (retval == 0) { + warning("Registry bus name org.freedesktop.IBus.Simple failed!"); + return 1; + } + IBus.main(); return 0; diff --git a/engine/simple.xml.in b/engine/simple.xml.in new file mode 100644 index 000000000..1152b5934 --- /dev/null +++ b/engine/simple.xml.in @@ -0,0 +1,10438 @@ + + + org.freedesktop.IBus.Simple + A table based simple engine + @libexecdir@/ibus-engine-simple + 1.5.26.20220314 + Peng Huang <shawn.p.huang@gmail.com> + GPL + https://github.com/ibus/ibus/wiki + ibus + + + xkb:us::eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + us + English (US) + English (US) + ibus-keyboard + 50 + + + xkb:us:chr:chr + chr + GPL + Peng Huang <shawn.p.huang@gmail.com> + us + chr + Cherokee + Cherokee + ibus-keyboard + 1 + + + xkb:us:haw:haw + haw + GPL + Peng Huang <shawn.p.huang@gmail.com> + us + haw + Hawaiian + Hawaiian + ibus-keyboard + 1 + + + xkb:us:euro:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + us + euro + English (US, euro on 5) + English (US, euro on 5) + ibus-keyboard + 1 + + + xkb:us:intl:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + us + intl + English (US, intl., with dead keys) + English (US, intl., with dead keys) + ibus-keyboard + 1 + + + xkb:us:alt-intl:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + us + alt-intl + English (US, alt. intl.) + English (US, alt. intl.) + ibus-keyboard + 1 + + + xkb:us:colemak:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + us + colemak + English (Colemak) + English (Colemak) + ibus-keyboard + 1 + + + xkb:us:colemak_dh:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + us + colemak_dh + English (Colemak-DH) + English (Colemak-DH) + ibus-keyboard + 1 + + + xkb:us:colemak_dh_iso:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + us + colemak_dh_iso + English (Colemak-DH ISO) + English (Colemak-DH ISO) + ibus-keyboard + 1 + + + xkb:us:dvorak:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + us + dvorak + English (Dvorak) + English (Dvorak) + ibus-keyboard + 1 + + + xkb:us:dvorak-intl:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + us + dvorak-intl + English (Dvorak, intl., with dead keys) + English (Dvorak, intl., with dead keys) + ibus-keyboard + 1 + + + xkb:us:dvorak-alt-intl:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + us + dvorak-alt-intl + English (Dvorak, alt. intl.) + English (Dvorak, alt. intl.) + ibus-keyboard + 1 + + + xkb:us:dvorak-l:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + us + dvorak-l + English (Dvorak, left-handed) + English (Dvorak, left-handed) + ibus-keyboard + 1 + + + xkb:us:dvorak-r:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + us + dvorak-r + English (Dvorak, right-handed) + English (Dvorak, right-handed) + ibus-keyboard + 1 + + + xkb:us:dvorak-classic:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + us + dvorak-classic + English (classic Dvorak) + English (classic Dvorak) + ibus-keyboard + 1 + + + xkb:us:dvp:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + us + dvp + English (programmer Dvorak) + English (programmer Dvorak) + ibus-keyboard + 1 + + + xkb:us:dvorak-mac:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + us + dvorak-mac + English (Dvorak, Macintosh) + English (Dvorak, Macintosh) + ibus-keyboard + 1 + + + xkb:us:symbolic:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + us + symbolic + English (US, Symbolic) + English (US, Symbolic) + ibus-keyboard + 1 + + + xkb:us:rus:rus + ru + GPL + Peng Huang <shawn.p.huang@gmail.com> + us + rus + Russian (US, phonetic) + Russian (US, phonetic) + ibus-keyboard + 1 + + + xkb:us:mac:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + us + mac + English (Macintosh) + English (Macintosh) + ibus-keyboard + 1 + + + xkb:us:altgr-intl:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + us + altgr-intl + English (intl., with AltGr dead keys) + English (intl., with AltGr dead keys) + ibus-keyboard + 1 + + + xkb:us:altgr-intl:fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + us + altgr-intl + English (intl., with AltGr dead keys) + English (intl., with AltGr dead keys) + ibus-keyboard + 1 + + + xkb:us:altgr-intl:deu + de + GPL + Peng Huang <shawn.p.huang@gmail.com> + us + altgr-intl + English (intl., with AltGr dead keys) + English (intl., with AltGr dead keys) + ibus-keyboard + 1 + + + xkb:us:olpc2:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + us + olpc2 + English (the divide/multiply toggle the layout) + English (the divide/multiply toggle the layout) + ibus-keyboard + 1 + + + xkb:us:hbs:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + us + hbs + Serbo-Croatian (US) + Serbo-Croatian (US) + ibus-keyboard + 1 + + + xkb:us:hbs:bos + bs + GPL + Peng Huang <shawn.p.huang@gmail.com> + us + hbs + Serbo-Croatian (US) + Serbo-Croatian (US) + ibus-keyboard + 1 + + + xkb:us:hbs:hbs + hbs + GPL + Peng Huang <shawn.p.huang@gmail.com> + us + hbs + Serbo-Croatian (US) + Serbo-Croatian (US) + ibus-keyboard + 1 + + + xkb:us:hbs:hrv + hr + GPL + Peng Huang <shawn.p.huang@gmail.com> + us + hbs + Serbo-Croatian (US) + Serbo-Croatian (US) + ibus-keyboard + 1 + + + xkb:us:hbs:srp + sr + GPL + Peng Huang <shawn.p.huang@gmail.com> + us + hbs + Serbo-Croatian (US) + Serbo-Croatian (US) + ibus-keyboard + 1 + + + xkb:us:norman:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + us + norman + English (Norman) + English (Norman) + ibus-keyboard + 1 + + + xkb:us:workman:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + us + workman + English (Workman) + English (Workman) + ibus-keyboard + 1 + + + xkb:us:workman-intl:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + us + workman-intl + English (Workman, intl., with dead keys) + English (Workman, intl., with dead keys) + ibus-keyboard + 1 + + + xkb:af::drs + drs + GPL + Peng Huang <shawn.p.huang@gmail.com> + af + Dari + Dari + ibus-keyboard + 50 + + + xkb:af:ps:pus + ps + GPL + Peng Huang <shawn.p.huang@gmail.com> + af + ps + Pashto + Pashto + ibus-keyboard + 1 + + + xkb:af:uz:uzb + uz + GPL + Peng Huang <shawn.p.huang@gmail.com> + af + uz + Uzbek (Afghanistan) + Uzbek (Afghanistan) + ibus-keyboard + 1 + + + xkb:af:ps-olpc:pus + ps + GPL + Peng Huang <shawn.p.huang@gmail.com> + af + ps-olpc + Pashto (Afghanistan, OLPC) + Pashto (Afghanistan, OLPC) + ibus-keyboard + 1 + + + xkb:af:fa-olpc:drs + drs + GPL + Peng Huang <shawn.p.huang@gmail.com> + af + fa-olpc + Dari (Afghanistan, OLPC) + Dari (Afghanistan, OLPC) + ibus-keyboard + 1 + + + xkb:af:uz-olpc:uzb + uz + GPL + Peng Huang <shawn.p.huang@gmail.com> + af + uz-olpc + Uzbek (Afghanistan, OLPC) + Uzbek (Afghanistan, OLPC) + ibus-keyboard + 1 + + + xkb:ara::ara + ar + GPL + Peng Huang <shawn.p.huang@gmail.com> + ara + Arabic + Arabic + ibus-keyboard + 50 + + + xkb:ara:azerty:ara + ar + GPL + Peng Huang <shawn.p.huang@gmail.com> + ara + azerty + Arabic (AZERTY) + Arabic (AZERTY) + ibus-keyboard + 1 + + + xkb:ara:azerty_digits:ara + ar + GPL + Peng Huang <shawn.p.huang@gmail.com> + ara + azerty_digits + Arabic (AZERTY, Eastern Arabic numerals) + Arabic (AZERTY, Eastern Arabic numerals) + ibus-keyboard + 1 + + + xkb:ara:digits:ara + ar + GPL + Peng Huang <shawn.p.huang@gmail.com> + ara + digits + Arabic (Eastern Arabic numerals) + Arabic (Eastern Arabic numerals) + ibus-keyboard + 1 + + + xkb:ara:qwerty:ara + ar + GPL + Peng Huang <shawn.p.huang@gmail.com> + ara + qwerty + Arabic (QWERTY) + Arabic (QWERTY) + ibus-keyboard + 1 + + + xkb:ara:qwerty_digits:ara + ar + GPL + Peng Huang <shawn.p.huang@gmail.com> + ara + qwerty_digits + Arabic (QWERTY, Eastern Arabic numerals) + Arabic (QWERTY, Eastern Arabic numerals) + ibus-keyboard + 1 + + + xkb:ara:buckwalter:ara + ar + GPL + Peng Huang <shawn.p.huang@gmail.com> + ara + buckwalter + Arabic (Buckwalter) + Arabic (Buckwalter) + ibus-keyboard + 1 + + + xkb:ara:olpc:ara + ar + GPL + Peng Huang <shawn.p.huang@gmail.com> + ara + olpc + Arabic (OLPC) + Arabic (OLPC) + ibus-keyboard + 1 + + + xkb:ara:mac:ara + ar + GPL + Peng Huang <shawn.p.huang@gmail.com> + ara + mac + Arabic (Macintosh) + Arabic (Macintosh) + ibus-keyboard + 1 + + + xkb:al::sqi + sq + GPL + Peng Huang <shawn.p.huang@gmail.com> + al + Albanian + Albanian + ibus-keyboard + 50 + + + xkb:al:plisi:sqi + sq + GPL + Peng Huang <shawn.p.huang@gmail.com> + al + plisi + Albanian (Plisi) + Albanian (Plisi) + ibus-keyboard + 1 + + + xkb:al:veqilharxhi:sqi + sq + GPL + Peng Huang <shawn.p.huang@gmail.com> + al + veqilharxhi + Albanian (Veqilharxhi) + Albanian (Veqilharxhi) + ibus-keyboard + 1 + + + xkb:am::hye + hy + GPL + Peng Huang <shawn.p.huang@gmail.com> + am + Armenian + Armenian + ibus-keyboard + 50 + + + xkb:am:phonetic:hye + hy + GPL + Peng Huang <shawn.p.huang@gmail.com> + am + phonetic + Armenian (phonetic) + Armenian (phonetic) + ibus-keyboard + 1 + + + xkb:am:phonetic-alt:hye + hy + GPL + Peng Huang <shawn.p.huang@gmail.com> + am + phonetic-alt + Armenian (alt. phonetic) + Armenian (alt. phonetic) + ibus-keyboard + 1 + + + xkb:am:eastern:hye + hy + GPL + Peng Huang <shawn.p.huang@gmail.com> + am + eastern + Armenian (eastern) + Armenian (eastern) + ibus-keyboard + 1 + + + xkb:am:western:hye + hy + GPL + Peng Huang <shawn.p.huang@gmail.com> + am + western + Armenian (western) + Armenian (western) + ibus-keyboard + 1 + + + xkb:am:eastern-alt:hye + hy + GPL + Peng Huang <shawn.p.huang@gmail.com> + am + eastern-alt + Armenian (alt. eastern) + Armenian (alt. eastern) + ibus-keyboard + 1 + + + xkb:at::deu + de + GPL + Peng Huang <shawn.p.huang@gmail.com> + at + German (Austria) + German (Austria) + ibus-keyboard + 50 + + + xkb:at:nodeadkeys:deu + de + GPL + Peng Huang <shawn.p.huang@gmail.com> + at + nodeadkeys + German (Austria, no dead keys) + German (Austria, no dead keys) + ibus-keyboard + 1 + + + xkb:at:mac:deu + de + GPL + Peng Huang <shawn.p.huang@gmail.com> + at + mac + German (Austria, Macintosh) + German (Austria, Macintosh) + ibus-keyboard + 1 + + + xkb:au::eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + au + English (Australian) + English (Australian) + ibus-keyboard + 50 + + + xkb:az::aze + az + GPL + Peng Huang <shawn.p.huang@gmail.com> + az + Azerbaijani + Azerbaijani + ibus-keyboard + 50 + + + xkb:az:cyrillic:aze + az + GPL + Peng Huang <shawn.p.huang@gmail.com> + az + cyrillic + Azerbaijani (Cyrillic) + Azerbaijani (Cyrillic) + ibus-keyboard + 1 + + + xkb:by::bel + be + GPL + Peng Huang <shawn.p.huang@gmail.com> + by + Belarusian + Belarusian + ibus-keyboard + 50 + + + xkb:by:legacy:bel + be + GPL + Peng Huang <shawn.p.huang@gmail.com> + by + legacy + Belarusian (legacy) + Belarusian (legacy) + ibus-keyboard + 1 + + + xkb:by:latin:bel + be + GPL + Peng Huang <shawn.p.huang@gmail.com> + by + latin + Belarusian (Latin) + Belarusian (Latin) + ibus-keyboard + 1 + + + xkb:by:ru:bel + be + GPL + Peng Huang <shawn.p.huang@gmail.com> + by + ru + Russian (Belarus) + Russian (Belarus) + ibus-keyboard + 1 + + + xkb:by:intl:bel + be + GPL + Peng Huang <shawn.p.huang@gmail.com> + by + intl + Belarusian (intl.) + Belarusian (intl.) + ibus-keyboard + 1 + + + xkb:be::deu + de + GPL + Peng Huang <shawn.p.huang@gmail.com> + be + Belgian + Belgian + ibus-keyboard + 50 + + + xkb:be::nld + nl + GPL + Peng Huang <shawn.p.huang@gmail.com> + be + Belgian + Belgian + ibus-keyboard + 50 + + + xkb:be::fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + be + Belgian + Belgian + ibus-keyboard + 50 + + + xkb:be:oss:deu + de + GPL + Peng Huang <shawn.p.huang@gmail.com> + be + oss + Belgian (alt.) + Belgian (alt.) + ibus-keyboard + 1 + + + xkb:be:oss:nld + nl + GPL + Peng Huang <shawn.p.huang@gmail.com> + be + oss + Belgian (alt.) + Belgian (alt.) + ibus-keyboard + 1 + + + xkb:be:oss:fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + be + oss + Belgian (alt.) + Belgian (alt.) + ibus-keyboard + 1 + + + xkb:be:oss_latin9:deu + de + GPL + Peng Huang <shawn.p.huang@gmail.com> + be + oss_latin9 + Belgian (Latin-9 only, alt.) + Belgian (Latin-9 only, alt.) + ibus-keyboard + 1 + + + xkb:be:oss_latin9:nld + nl + GPL + Peng Huang <shawn.p.huang@gmail.com> + be + oss_latin9 + Belgian (Latin-9 only, alt.) + Belgian (Latin-9 only, alt.) + ibus-keyboard + 1 + + + xkb:be:oss_latin9:fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + be + oss_latin9 + Belgian (Latin-9 only, alt.) + Belgian (Latin-9 only, alt.) + ibus-keyboard + 1 + + + xkb:be:iso-alternate:deu + de + GPL + Peng Huang <shawn.p.huang@gmail.com> + be + iso-alternate + Belgian (ISO, alt.) + Belgian (ISO, alt.) + ibus-keyboard + 1 + + + xkb:be:iso-alternate:nld + nl + GPL + Peng Huang <shawn.p.huang@gmail.com> + be + iso-alternate + Belgian (ISO, alt.) + Belgian (ISO, alt.) + ibus-keyboard + 1 + + + xkb:be:iso-alternate:fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + be + iso-alternate + Belgian (ISO, alt.) + Belgian (ISO, alt.) + ibus-keyboard + 1 + + + xkb:be:nodeadkeys:deu + de + GPL + Peng Huang <shawn.p.huang@gmail.com> + be + nodeadkeys + Belgian (no dead keys) + Belgian (no dead keys) + ibus-keyboard + 1 + + + xkb:be:nodeadkeys:nld + nl + GPL + Peng Huang <shawn.p.huang@gmail.com> + be + nodeadkeys + Belgian (no dead keys) + Belgian (no dead keys) + ibus-keyboard + 1 + + + xkb:be:nodeadkeys:fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + be + nodeadkeys + Belgian (no dead keys) + Belgian (no dead keys) + ibus-keyboard + 1 + + + xkb:be:wang:deu + de + GPL + Peng Huang <shawn.p.huang@gmail.com> + be + wang + Belgian (Wang 724 AZERTY) + Belgian (Wang 724 AZERTY) + ibus-keyboard + 1 + + + xkb:be:wang:nld + nl + GPL + Peng Huang <shawn.p.huang@gmail.com> + be + wang + Belgian (Wang 724 AZERTY) + Belgian (Wang 724 AZERTY) + ibus-keyboard + 1 + + + xkb:be:wang:fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + be + wang + Belgian (Wang 724 AZERTY) + Belgian (Wang 724 AZERTY) + ibus-keyboard + 1 + + + xkb:bd::ben + bn + GPL + Peng Huang <shawn.p.huang@gmail.com> + bd + Bangla + Bangla + ibus-keyboard + 50 + + + xkb:bd::sat + sat + GPL + Peng Huang <shawn.p.huang@gmail.com> + bd + Bangla + Bangla + ibus-keyboard + 50 + + + xkb:bd:probhat:ben + bn + GPL + Peng Huang <shawn.p.huang@gmail.com> + bd + probhat + Bangla (Probhat) + Bangla (Probhat) + ibus-keyboard + 1 + + + xkb:bd:probhat:sat + sat + GPL + Peng Huang <shawn.p.huang@gmail.com> + bd + probhat + Bangla (Probhat) + Bangla (Probhat) + ibus-keyboard + 1 + + + xkb:in::hin + hi + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::anp + anp + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::awa + awa + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::bap + bap + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::bfy + bfy + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::bgc + bgc + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::bhb + bhb + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::bhi + bhi + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::bho + bho + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::bjj + bjj + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::bra + bra + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::brx + brx + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::btv + btv + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::doi + doi + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::dty + dty + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::gbm + gbm + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::gom + gom + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::gvr + gvr + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::hne + hne + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::hoc + hoc + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::hoj + hoj + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::jml + jml + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::kfr + kfr + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::kfy + kfy + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::khn + khn + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::kok + kok + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::kru + kru + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::mag + mag + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::mai + mai + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::mar + mr + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::mgp + mgp + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::mrd + mrd + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::mtr + mtr + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::mwr + mwr + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::nep + ne + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::new + new + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::noe + noe + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::raj + raj + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::rjs + rjs + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::sck + sck + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::srx + srx + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::swv + swv + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::taj + taj + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::tdg + tdg + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::tdh + tdh + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::thl + thl + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::thq + thq + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::thr + thr + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::tkt + tkt + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::wbr + wbr + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::wtm + wtm + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::xnr + xnr + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in::xsr + xsr + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + Indian + Indian + ibus-keyboard + 50 + + + xkb:in:ben:ben + bn + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + ben + Bangla (India) + Bangla (India) + ibus-keyboard + 1 + + + xkb:in:ben:sat + sat + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + ben + Bangla (India) + Bangla (India) + ibus-keyboard + 1 + + + xkb:in:ben_probhat:ben + bn + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + ben_probhat + Bangla (India, Probhat) + Bangla (India, Probhat) + ibus-keyboard + 1 + + + xkb:in:ben_probhat:sat + sat + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + ben_probhat + Bangla (India, Probhat) + Bangla (India, Probhat) + ibus-keyboard + 1 + + + xkb:in:ben_baishakhi:ben + bn + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + ben_baishakhi + Bangla (India, Baishakhi) + Bangla (India, Baishakhi) + ibus-keyboard + 1 + + + xkb:in:ben_baishakhi:sat + sat + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + ben_baishakhi + Bangla (India, Baishakhi) + Bangla (India, Baishakhi) + ibus-keyboard + 1 + + + xkb:in:ben_bornona:ben + bn + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + ben_bornona + Bangla (India, Bornona) + Bangla (India, Bornona) + ibus-keyboard + 1 + + + xkb:in:ben_bornona:sat + sat + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + ben_bornona + Bangla (India, Bornona) + Bangla (India, Bornona) + ibus-keyboard + 1 + + + xkb:in:ben_gitanjali:ben + bn + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + ben_gitanjali + Bangla (India, Gitanjali) + Bangla (India, Gitanjali) + ibus-keyboard + 1 + + + xkb:in:ben_gitanjali:sat + sat + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + ben_gitanjali + Bangla (India, Gitanjali) + Bangla (India, Gitanjali) + ibus-keyboard + 1 + + + xkb:in:ben_inscript:ben + bn + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + ben_inscript + Bangla (India, Baishakhi InScript) + Bangla (India, Baishakhi InScript) + ibus-keyboard + 1 + + + xkb:in:ben_inscript:sat + sat + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + ben_inscript + Bangla (India, Baishakhi InScript) + Bangla (India, Baishakhi InScript) + ibus-keyboard + 1 + + + xkb:in:eeyek:mni + mni + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + eeyek + Manipuri (Eeyek) + Manipuri (Eeyek) + ibus-keyboard + 1 + + + xkb:in:guj:guj + gu + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + guj + Gujarati + Gujarati + ibus-keyboard + 1 + + + xkb:in:guru:pan + pa + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + guru + Punjabi (Gurmukhi) + Punjabi (Gurmukhi) + ibus-keyboard + 1 + + + xkb:in:jhelum:pan + pa + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + jhelum + Punjabi (Gurmukhi Jhelum) + Punjabi (Gurmukhi Jhelum) + ibus-keyboard + 1 + + + xkb:in:kan:kan + kn + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + kan + Kannada + Kannada + ibus-keyboard + 1 + + + xkb:in:kan-kagapa:kan + kn + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + kan-kagapa + Kannada (KaGaPa, phonetic) + Kannada (KaGaPa, phonetic) + ibus-keyboard + 1 + + + xkb:in:mal:mal + ml + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + mal + Malayalam + Malayalam + ibus-keyboard + 1 + + + xkb:in:mal_lalitha:mal + ml + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + mal_lalitha + Malayalam (Lalitha) + Malayalam (Lalitha) + ibus-keyboard + 1 + + + xkb:in:mal_enhanced:mal + ml + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + mal_enhanced + Malayalam (enhanced InScript, with rupee) + Malayalam (enhanced InScript, with rupee) + ibus-keyboard + 1 + + + xkb:in:ori:ori + or + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + ori + Oriya + Oriya + ibus-keyboard + 1 + + + xkb:in:ori:sat + sat + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + ori + Oriya + Oriya + ibus-keyboard + 1 + + + xkb:in:ori-bolnagri:ori + or + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + ori-bolnagri + Oriya (Bolnagri) + Oriya (Bolnagri) + ibus-keyboard + 1 + + + xkb:in:ori-bolnagri:sat + sat + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + ori-bolnagri + Oriya (Bolnagri) + Oriya (Bolnagri) + ibus-keyboard + 1 + + + xkb:in:ori-wx:ori + or + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + ori-wx + Oriya (Wx) + Oriya (Wx) + ibus-keyboard + 1 + + + xkb:in:ori-wx:sat + sat + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + ori-wx + Oriya (Wx) + Oriya (Wx) + ibus-keyboard + 1 + + + xkb:in:olck:sat + sat + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + olck + Ol Chiki + Ol Chiki + ibus-keyboard + 1 + + + xkb:in:tam_tamilnet:tam + ta + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + tam_tamilnet + Tamil (TamilNet '99) + Tamil (TamilNet '99) + ibus-keyboard + 1 + + + xkb:in:tam_tamilnet_with_tam_nums:tam + ta + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + tam_tamilnet_with_tam_nums + Tamil (TamilNet '99 with Tamil numerals) + Tamil (TamilNet '99 with Tamil numerals) + ibus-keyboard + 1 + + + xkb:in:tam_tamilnet_TAB:tam + ta + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + tam_tamilnet_TAB + Tamil (TamilNet '99, TAB encoding) + Tamil (TamilNet '99, TAB encoding) + ibus-keyboard + 1 + + + xkb:in:tam_tamilnet_TSCII:tam + ta + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + tam_tamilnet_TSCII + Tamil (TamilNet '99, TSCII encoding) + Tamil (TamilNet '99, TSCII encoding) + ibus-keyboard + 1 + + + xkb:in:tam:tam + ta + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + tam + Tamil (InScript) + Tamil (InScript) + ibus-keyboard + 1 + + + xkb:in:tel:tel + te + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + tel + Telugu + Telugu + ibus-keyboard + 1 + + + xkb:in:tel-kagapa:tel + te + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + tel-kagapa + Telugu (KaGaPa, phonetic) + Telugu (KaGaPa, phonetic) + ibus-keyboard + 1 + + + xkb:in:tel-sarala:tel + te + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + tel-sarala + Telugu (Sarala) + Telugu (Sarala) + ibus-keyboard + 1 + + + xkb:in:urd-phonetic:urd + ur + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + urd-phonetic + Urdu (phonetic) + Urdu (phonetic) + ibus-keyboard + 1 + + + xkb:in:urd-phonetic3:urd + ur + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + urd-phonetic3 + Urdu (alt. phonetic) + Urdu (alt. phonetic) + ibus-keyboard + 1 + + + xkb:in:urd-winkeys:urd + ur + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + urd-winkeys + Urdu (Windows) + Urdu (Windows) + ibus-keyboard + 1 + + + xkb:in:bolnagri:hin + hi + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + bolnagri + Hindi (Bolnagri) + Hindi (Bolnagri) + ibus-keyboard + 1 + + + xkb:in:hin-wx:hin + hi + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + hin-wx + Hindi (Wx) + Hindi (Wx) + ibus-keyboard + 1 + + + xkb:in:hin-kagapa:hin + hi + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + hin-kagapa + Hindi (KaGaPa, phonetic) + Hindi (KaGaPa, phonetic) + ibus-keyboard + 1 + + + xkb:in:san-kagapa:san + sa + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + san-kagapa + Sanskrit (KaGaPa, phonetic) + Sanskrit (KaGaPa, phonetic) + ibus-keyboard + 1 + + + xkb:in:mar-kagapa:mar + mr + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + mar-kagapa + Marathi (KaGaPa, phonetic) + Marathi (KaGaPa, phonetic) + ibus-keyboard + 1 + + + xkb:in:eng:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + eng + English (India, with rupee) + English (India, with rupee) + ibus-keyboard + 1 + + + xkb:in:iipa:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + iipa + Indic IPA + Indic IPA + ibus-keyboard + 1 + + + xkb:in:marathi:mar + mr + GPL + Peng Huang <shawn.p.huang@gmail.com> + in + marathi + Marathi (enhanced InScript) + Marathi (enhanced InScript) + ibus-keyboard + 1 + + + xkb:ba::bos + bs + GPL + Peng Huang <shawn.p.huang@gmail.com> + ba + Bosnian + Bosnian + ibus-keyboard + 50 + + + xkb:ba:alternatequotes:bos + bs + GPL + Peng Huang <shawn.p.huang@gmail.com> + ba + alternatequotes + Bosnian (with guillemets) + Bosnian (with guillemets) + ibus-keyboard + 1 + + + xkb:ba:unicode:bos + bs + GPL + Peng Huang <shawn.p.huang@gmail.com> + ba + unicode + Bosnian (with Bosnian digraphs) + Bosnian (with Bosnian digraphs) + ibus-keyboard + 1 + + + xkb:ba:unicodeus:bos + bs + GPL + Peng Huang <shawn.p.huang@gmail.com> + ba + unicodeus + Bosnian (US, with Bosnian digraphs) + Bosnian (US, with Bosnian digraphs) + ibus-keyboard + 1 + + + xkb:ba:us:bos + bs + GPL + Peng Huang <shawn.p.huang@gmail.com> + ba + us + Bosnian (US) + Bosnian (US) + ibus-keyboard + 1 + + + xkb:br::por + pt + GPL + Peng Huang <shawn.p.huang@gmail.com> + br + Portuguese (Brazil) + Portuguese (Brazil) + ibus-keyboard + 50 + + + xkb:br:nodeadkeys:por + pt + GPL + Peng Huang <shawn.p.huang@gmail.com> + br + nodeadkeys + Portuguese (Brazil, no dead keys) + Portuguese (Brazil, no dead keys) + ibus-keyboard + 1 + + + xkb:br:dvorak:por + pt + GPL + Peng Huang <shawn.p.huang@gmail.com> + br + dvorak + Portuguese (Brazil, Dvorak) + Portuguese (Brazil, Dvorak) + ibus-keyboard + 1 + + + xkb:br:nativo:por + pt + GPL + Peng Huang <shawn.p.huang@gmail.com> + br + nativo + Portuguese (Brazil, Nativo) + Portuguese (Brazil, Nativo) + ibus-keyboard + 1 + + + xkb:br:nativo-us:por + pt + GPL + Peng Huang <shawn.p.huang@gmail.com> + br + nativo-us + Portuguese (Brazil, Nativo for US keyboards) + Portuguese (Brazil, Nativo for US keyboards) + ibus-keyboard + 1 + + + xkb:br:nativo-epo:epo + eo + GPL + Peng Huang <shawn.p.huang@gmail.com> + br + nativo-epo + Esperanto (Brazil, Nativo) + Esperanto (Brazil, Nativo) + ibus-keyboard + 1 + + + xkb:br:thinkpad:por + pt + GPL + Peng Huang <shawn.p.huang@gmail.com> + br + thinkpad + Portuguese (Brazil, IBM/Lenovo ThinkPad) + Portuguese (Brazil, IBM/Lenovo ThinkPad) + ibus-keyboard + 1 + + + xkb:bg::bul + bg + GPL + Peng Huang <shawn.p.huang@gmail.com> + bg + Bulgarian + Bulgarian + ibus-keyboard + 50 + + + xkb:bg:phonetic:bul + bg + GPL + Peng Huang <shawn.p.huang@gmail.com> + bg + phonetic + Bulgarian (traditional phonetic) + Bulgarian (traditional phonetic) + ibus-keyboard + 1 + + + xkb:bg:bas_phonetic:bul + bg + GPL + Peng Huang <shawn.p.huang@gmail.com> + bg + bas_phonetic + Bulgarian (new phonetic) + Bulgarian (new phonetic) + ibus-keyboard + 1 + + + xkb:bg:bekl:bul + bg + GPL + Peng Huang <shawn.p.huang@gmail.com> + bg + bekl + Bulgarian (enhanced) + Bulgarian (enhanced) + ibus-keyboard + 1 + + + xkb:dz::tzm + tzm + GPL + Peng Huang <shawn.p.huang@gmail.com> + dz + Berber (Algeria, Latin) + Berber (Algeria, Latin) + ibus-keyboard + 50 + + + xkb:dz::fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + dz + Berber (Algeria, Latin) + Berber (Algeria, Latin) + ibus-keyboard + 50 + + + xkb:dz:azerty-deadkeys:kab + kab + GPL + Peng Huang <shawn.p.huang@gmail.com> + dz + azerty-deadkeys + Kabyle (AZERTY, with dead keys) + Kabyle (AZERTY, with dead keys) + ibus-keyboard + 1 + + + xkb:dz:qwerty-gb-deadkeys:kab + kab + GPL + Peng Huang <shawn.p.huang@gmail.com> + dz + qwerty-gb-deadkeys + Kabyle (QWERTY, UK, with dead keys) + Kabyle (QWERTY, UK, with dead keys) + ibus-keyboard + 1 + + + xkb:dz:qwerty-us-deadkeys:kab + kab + GPL + Peng Huang <shawn.p.huang@gmail.com> + dz + qwerty-us-deadkeys + Kabyle (QWERTY, US, with dead keys) + Kabyle (QWERTY, US, with dead keys) + ibus-keyboard + 1 + + + xkb:dz:ber:kab + kab + GPL + Peng Huang <shawn.p.huang@gmail.com> + dz + ber + Berber (Algeria, Tifinagh) + Berber (Algeria, Tifinagh) + ibus-keyboard + 1 + + + xkb:dz:ar:ara + ar + GPL + Peng Huang <shawn.p.huang@gmail.com> + dz + ar + Arabic (Algeria) + Arabic (Algeria) + ibus-keyboard + 1 + + + xkb:ma::ary + ary + GPL + Peng Huang <shawn.p.huang@gmail.com> + ma + Arabic (Morocco) + Arabic (Morocco) + ibus-keyboard + 50 + + + xkb:ma:french:fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + ma + french + French (Morocco) + French (Morocco) + ibus-keyboard + 1 + + + xkb:ma:tifinagh:ber + ber + GPL + Peng Huang <shawn.p.huang@gmail.com> + ma + tifinagh + Berber (Morocco, Tifinagh) + Berber (Morocco, Tifinagh) + ibus-keyboard + 1 + + + xkb:ma:tifinagh-alt:ber + ber + GPL + Peng Huang <shawn.p.huang@gmail.com> + ma + tifinagh-alt + Berber (Morocco, Tifinagh alt.) + Berber (Morocco, Tifinagh alt.) + ibus-keyboard + 1 + + + xkb:ma:tifinagh-alt-phonetic:ber + ber + GPL + Peng Huang <shawn.p.huang@gmail.com> + ma + tifinagh-alt-phonetic + Berber (Morocco, Tifinagh phonetic, alt.) + Berber (Morocco, Tifinagh phonetic, alt.) + ibus-keyboard + 1 + + + xkb:ma:tifinagh-extended:ber + ber + GPL + Peng Huang <shawn.p.huang@gmail.com> + ma + tifinagh-extended + Berber (Morocco, Tifinagh extended) + Berber (Morocco, Tifinagh extended) + ibus-keyboard + 1 + + + xkb:ma:tifinagh-phonetic:ber + ber + GPL + Peng Huang <shawn.p.huang@gmail.com> + ma + tifinagh-phonetic + Berber (Morocco, Tifinagh phonetic) + Berber (Morocco, Tifinagh phonetic) + ibus-keyboard + 1 + + + xkb:ma:tifinagh-extended-phonetic:ber + ber + GPL + Peng Huang <shawn.p.huang@gmail.com> + ma + tifinagh-extended-phonetic + Berber (Morocco, Tifinagh extended phonetic) + Berber (Morocco, Tifinagh extended phonetic) + ibus-keyboard + 1 + + + xkb:ma:rif:rif + rif + GPL + Peng Huang <shawn.p.huang@gmail.com> + ma + rif + Tarifit + Tarifit + ibus-keyboard + 1 + + + xkb:cm::eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + English (Cameroon) + English (Cameroon) + ibus-keyboard + 50 + + + xkb:cm:french:fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + french + French (Cameroon) + French (Cameroon) + ibus-keyboard + 1 + + + xkb:cm:qwerty:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + qwerty + Cameroon Multilingual (QWERTY, intl.) + Cameroon Multilingual (QWERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:qwerty:bas + bas + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + qwerty + Cameroon Multilingual (QWERTY, intl.) + Cameroon Multilingual (QWERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:qwerty:nmg + nmg + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + qwerty + Cameroon Multilingual (QWERTY, intl.) + Cameroon Multilingual (QWERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:qwerty:fub + fub + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + qwerty + Cameroon Multilingual (QWERTY, intl.) + Cameroon Multilingual (QWERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:qwerty:ewo + ewo + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + qwerty + Cameroon Multilingual (QWERTY, intl.) + Cameroon Multilingual (QWERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:qwerty:xmd + xmd + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + qwerty + Cameroon Multilingual (QWERTY, intl.) + Cameroon Multilingual (QWERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:qwerty:mfh + mfh + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + qwerty + Cameroon Multilingual (QWERTY, intl.) + Cameroon Multilingual (QWERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:qwerty:bkm + bkm + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + qwerty + Cameroon Multilingual (QWERTY, intl.) + Cameroon Multilingual (QWERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:qwerty:ozm + ozm + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + qwerty + Cameroon Multilingual (QWERTY, intl.) + Cameroon Multilingual (QWERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:qwerty:lns + lns + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + qwerty + Cameroon Multilingual (QWERTY, intl.) + Cameroon Multilingual (QWERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:qwerty:sox + sox + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + qwerty + Cameroon Multilingual (QWERTY, intl.) + Cameroon Multilingual (QWERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:qwerty:pny + pny + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + qwerty + Cameroon Multilingual (QWERTY, intl.) + Cameroon Multilingual (QWERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:qwerty:wes + wes + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + qwerty + Cameroon Multilingual (QWERTY, intl.) + Cameroon Multilingual (QWERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:qwerty:lem + lem + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + qwerty + Cameroon Multilingual (QWERTY, intl.) + Cameroon Multilingual (QWERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:qwerty:nyj + nyj + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + qwerty + Cameroon Multilingual (QWERTY, intl.) + Cameroon Multilingual (QWERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:qwerty:mfk + mfk + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + qwerty + Cameroon Multilingual (QWERTY, intl.) + Cameroon Multilingual (QWERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:qwerty:mcp + mcp + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + qwerty + Cameroon Multilingual (QWERTY, intl.) + Cameroon Multilingual (QWERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:qwerty:ass + ass + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + qwerty + Cameroon Multilingual (QWERTY, intl.) + Cameroon Multilingual (QWERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:qwerty:xed + xed + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + qwerty + Cameroon Multilingual (QWERTY, intl.) + Cameroon Multilingual (QWERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:qwerty:dua + dua + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + qwerty + Cameroon Multilingual (QWERTY, intl.) + Cameroon Multilingual (QWERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:qwerty:anv + anv + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + qwerty + Cameroon Multilingual (QWERTY, intl.) + Cameroon Multilingual (QWERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:qwerty:bum + bum + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + qwerty + Cameroon Multilingual (QWERTY, intl.) + Cameroon Multilingual (QWERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:qwerty:btb + btb + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + qwerty + Cameroon Multilingual (QWERTY, intl.) + Cameroon Multilingual (QWERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:qwerty:bfd + bfd + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + qwerty + Cameroon Multilingual (QWERTY, intl.) + Cameroon Multilingual (QWERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:qwerty:azo + azo + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + qwerty + Cameroon Multilingual (QWERTY, intl.) + Cameroon Multilingual (QWERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:qwerty:ken + ken + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + qwerty + Cameroon Multilingual (QWERTY, intl.) + Cameroon Multilingual (QWERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:qwerty:yam + yam + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + qwerty + Cameroon Multilingual (QWERTY, intl.) + Cameroon Multilingual (QWERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:qwerty:yat + yat + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + qwerty + Cameroon Multilingual (QWERTY, intl.) + Cameroon Multilingual (QWERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:qwerty:yas + yas + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + qwerty + Cameroon Multilingual (QWERTY, intl.) + Cameroon Multilingual (QWERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:azerty:fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + azerty + Cameroon (AZERTY, intl.) + Cameroon (AZERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:azerty:bas + bas + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + azerty + Cameroon (AZERTY, intl.) + Cameroon (AZERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:azerty:nmg + nmg + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + azerty + Cameroon (AZERTY, intl.) + Cameroon (AZERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:azerty:fub + fub + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + azerty + Cameroon (AZERTY, intl.) + Cameroon (AZERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:azerty:ewo + ewo + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + azerty + Cameroon (AZERTY, intl.) + Cameroon (AZERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:azerty:xmd + xmd + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + azerty + Cameroon (AZERTY, intl.) + Cameroon (AZERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:azerty:mfh + mfh + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + azerty + Cameroon (AZERTY, intl.) + Cameroon (AZERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:azerty:bkm + bkm + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + azerty + Cameroon (AZERTY, intl.) + Cameroon (AZERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:azerty:ozm + ozm + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + azerty + Cameroon (AZERTY, intl.) + Cameroon (AZERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:azerty:lns + lns + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + azerty + Cameroon (AZERTY, intl.) + Cameroon (AZERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:azerty:sox + sox + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + azerty + Cameroon (AZERTY, intl.) + Cameroon (AZERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:azerty:pny + pny + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + azerty + Cameroon (AZERTY, intl.) + Cameroon (AZERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:azerty:wes + wes + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + azerty + Cameroon (AZERTY, intl.) + Cameroon (AZERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:azerty:lem + lem + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + azerty + Cameroon (AZERTY, intl.) + Cameroon (AZERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:azerty:nyj + nyj + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + azerty + Cameroon (AZERTY, intl.) + Cameroon (AZERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:azerty:mfk + mfk + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + azerty + Cameroon (AZERTY, intl.) + Cameroon (AZERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:azerty:mcp + mcp + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + azerty + Cameroon (AZERTY, intl.) + Cameroon (AZERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:azerty:ass + ass + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + azerty + Cameroon (AZERTY, intl.) + Cameroon (AZERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:azerty:xed + xed + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + azerty + Cameroon (AZERTY, intl.) + Cameroon (AZERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:azerty:dua + dua + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + azerty + Cameroon (AZERTY, intl.) + Cameroon (AZERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:azerty:anv + anv + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + azerty + Cameroon (AZERTY, intl.) + Cameroon (AZERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:azerty:bum + bum + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + azerty + Cameroon (AZERTY, intl.) + Cameroon (AZERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:azerty:btb + btb + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + azerty + Cameroon (AZERTY, intl.) + Cameroon (AZERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:azerty:bfd + bfd + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + azerty + Cameroon (AZERTY, intl.) + Cameroon (AZERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:azerty:azo + azo + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + azerty + Cameroon (AZERTY, intl.) + Cameroon (AZERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:azerty:ken + ken + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + azerty + Cameroon (AZERTY, intl.) + Cameroon (AZERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:azerty:yam + yam + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + azerty + Cameroon (AZERTY, intl.) + Cameroon (AZERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:azerty:yat + yat + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + azerty + Cameroon (AZERTY, intl.) + Cameroon (AZERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:azerty:yas + yas + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + azerty + Cameroon (AZERTY, intl.) + Cameroon (AZERTY, intl.) + ibus-keyboard + 1 + + + xkb:cm:dvorak:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + dvorak + Cameroon (Dvorak, intl.) + Cameroon (Dvorak, intl.) + ibus-keyboard + 1 + + + xkb:cm:mmuock:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + cm + mmuock + Mmuock + Mmuock + ibus-keyboard + 1 + + + xkb:mm::mya + my + GPL + Peng Huang <shawn.p.huang@gmail.com> + mm + Burmese + Burmese + ibus-keyboard + 50 + + + xkb:mm:zawgyi:mya + my + GPL + Peng Huang <shawn.p.huang@gmail.com> + mm + zawgyi + Burmese Zawgyi + Burmese Zawgyi + ibus-keyboard + 1 + + + xkb:mm:shn:shn + shn + GPL + Peng Huang <shawn.p.huang@gmail.com> + mm + shn + Shan + Shan + ibus-keyboard + 1 + + + xkb:mm:shn:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + mm + shn + Shan + Shan + ibus-keyboard + 1 + + + xkb:mm:zgt:shn + shn + GPL + Peng Huang <shawn.p.huang@gmail.com> + mm + zgt + Shan (Zawgyi Tai) + Shan (Zawgyi Tai) + ibus-keyboard + 1 + + + xkb:mm:zgt:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + mm + zgt + Shan (Zawgyi Tai) + Shan (Zawgyi Tai) + ibus-keyboard + 1 + + + xkb:mm:mnw:mnw + mnw + GPL + Peng Huang <shawn.p.huang@gmail.com> + mm + mnw + Mon + Mon + ibus-keyboard + 1 + + + xkb:mm:mnw:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + mm + mnw + Mon + Mon + ibus-keyboard + 1 + + + xkb:mm:mnw-a1:mnw + mnw + GPL + Peng Huang <shawn.p.huang@gmail.com> + mm + mnw-a1 + Mon (A1) + Mon (A1) + ibus-keyboard + 1 + + + xkb:mm:mnw-a1:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + mm + mnw-a1 + Mon (A1) + Mon (A1) + ibus-keyboard + 1 + + + xkb:ca::fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + ca + French (Canada) + French (Canada) + ibus-keyboard + 50 + + + xkb:ca:fr-dvorak:fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + ca + fr-dvorak + French (Canada, Dvorak) + French (Canada, Dvorak) + ibus-keyboard + 1 + + + xkb:ca:fr-legacy:fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + ca + fr-legacy + French (Canada, legacy) + French (Canada, legacy) + ibus-keyboard + 1 + + + xkb:ca:multix:fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + ca + multix + Canadian (intl.) + Canadian (intl.) + ibus-keyboard + 1 + + + xkb:ca:multi:fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + ca + multi + Canadian (intl., 1st part) + Canadian (intl., 1st part) + ibus-keyboard + 1 + + + xkb:ca:multi-2gr:fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + ca + multi-2gr + Canadian (intl., 2nd part) + Canadian (intl., 2nd part) + ibus-keyboard + 1 + + + xkb:ca:ike:iku + iu + GPL + Peng Huang <shawn.p.huang@gmail.com> + ca + ike + Inuktitut + Inuktitut + ibus-keyboard + 1 + + + xkb:ca:eng:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + ca + eng + English (Canada) + English (Canada) + ibus-keyboard + 1 + + + xkb:cd::fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + cd + French (Democratic Republic of the Congo) + French (Democratic Republic of the Congo) + ibus-keyboard + 50 + + + xkb:hr::hrv + hr + GPL + Peng Huang <shawn.p.huang@gmail.com> + hr + Croatian + Croatian + ibus-keyboard + 50 + + + xkb:hr:alternatequotes:hrv + hr + GPL + Peng Huang <shawn.p.huang@gmail.com> + hr + alternatequotes + Croatian (with guillemets) + Croatian (with guillemets) + ibus-keyboard + 1 + + + xkb:hr:unicode:hrv + hr + GPL + Peng Huang <shawn.p.huang@gmail.com> + hr + unicode + Croatian (with Croatian digraphs) + Croatian (with Croatian digraphs) + ibus-keyboard + 1 + + + xkb:hr:unicodeus:hrv + hr + GPL + Peng Huang <shawn.p.huang@gmail.com> + hr + unicodeus + Croatian (US, with Croatian digraphs) + Croatian (US, with Croatian digraphs) + ibus-keyboard + 1 + + + xkb:hr:us:hrv + hr + GPL + Peng Huang <shawn.p.huang@gmail.com> + hr + us + Croatian (US) + Croatian (US) + ibus-keyboard + 1 + + + xkb:cz::ces + cs + GPL + Peng Huang <shawn.p.huang@gmail.com> + cz + Czech + Czech + ibus-keyboard + 50 + + + xkb:cz:bksl:ces + cs + GPL + Peng Huang <shawn.p.huang@gmail.com> + cz + bksl + key) + key) + ibus-keyboard + 1 + + + xkb:cz:qwerty:ces + cs + GPL + Peng Huang <shawn.p.huang@gmail.com> + cz + qwerty + Czech (QWERTY) + Czech (QWERTY) + ibus-keyboard + 1 + + + xkb:cz:qwerty_bksl:ces + cs + GPL + Peng Huang <shawn.p.huang@gmail.com> + cz + qwerty_bksl + Czech (QWERTY, extended backslash) + Czech (QWERTY, extended backslash) + ibus-keyboard + 1 + + + xkb:cz:qwerty-mac:ces + cs + GPL + Peng Huang <shawn.p.huang@gmail.com> + cz + qwerty-mac + Czech (QWERTY, Macintosh) + Czech (QWERTY, Macintosh) + ibus-keyboard + 1 + + + xkb:cz:ucw:ces + cs + GPL + Peng Huang <shawn.p.huang@gmail.com> + cz + ucw + Czech (UCW, only accented letters) + Czech (UCW, only accented letters) + ibus-keyboard + 1 + + + xkb:cz:dvorak-ucw:ces + cs + GPL + Peng Huang <shawn.p.huang@gmail.com> + cz + dvorak-ucw + Czech (US, Dvorak, UCW support) + Czech (US, Dvorak, UCW support) + ibus-keyboard + 1 + + + xkb:cz:rus:rus + ru + GPL + Peng Huang <shawn.p.huang@gmail.com> + cz + rus + Russian (Czech, phonetic) + Russian (Czech, phonetic) + ibus-keyboard + 1 + + + xkb:dk::dan + da + GPL + Peng Huang <shawn.p.huang@gmail.com> + dk + Danish + Danish + ibus-keyboard + 50 + + + xkb:dk:nodeadkeys:dan + da + GPL + Peng Huang <shawn.p.huang@gmail.com> + dk + nodeadkeys + Danish (no dead keys) + Danish (no dead keys) + ibus-keyboard + 1 + + + xkb:dk:winkeys:dan + da + GPL + Peng Huang <shawn.p.huang@gmail.com> + dk + winkeys + Danish (Windows) + Danish (Windows) + ibus-keyboard + 1 + + + xkb:dk:mac:dan + da + GPL + Peng Huang <shawn.p.huang@gmail.com> + dk + mac + Danish (Macintosh) + Danish (Macintosh) + ibus-keyboard + 1 + + + xkb:dk:mac_nodeadkeys:dan + da + GPL + Peng Huang <shawn.p.huang@gmail.com> + dk + mac_nodeadkeys + Danish (Macintosh, no dead keys) + Danish (Macintosh, no dead keys) + ibus-keyboard + 1 + + + xkb:dk:dvorak:dan + da + GPL + Peng Huang <shawn.p.huang@gmail.com> + dk + dvorak + Danish (Dvorak) + Danish (Dvorak) + ibus-keyboard + 1 + + + xkb:nl::nld + nl + GPL + Peng Huang <shawn.p.huang@gmail.com> + nl + Dutch + Dutch + ibus-keyboard + 50 + + + xkb:nl:us:nld + nl + GPL + Peng Huang <shawn.p.huang@gmail.com> + nl + us + Dutch (US) + Dutch (US) + ibus-keyboard + 1 + + + xkb:nl:mac:nld + nl + GPL + Peng Huang <shawn.p.huang@gmail.com> + nl + mac + Dutch (Macintosh) + Dutch (Macintosh) + ibus-keyboard + 1 + + + xkb:nl:std:nld + nl + GPL + Peng Huang <shawn.p.huang@gmail.com> + nl + std + Dutch (standard) + Dutch (standard) + ibus-keyboard + 1 + + + xkb:bt::dzo + dz + GPL + Peng Huang <shawn.p.huang@gmail.com> + bt + Dzongkha + Dzongkha + ibus-keyboard + 50 + + + xkb:ee::est + et + GPL + Peng Huang <shawn.p.huang@gmail.com> + ee + Estonian + Estonian + ibus-keyboard + 50 + + + xkb:ee:nodeadkeys:est + et + GPL + Peng Huang <shawn.p.huang@gmail.com> + ee + nodeadkeys + Estonian (no dead keys) + Estonian (no dead keys) + ibus-keyboard + 1 + + + xkb:ee:dvorak:est + et + GPL + Peng Huang <shawn.p.huang@gmail.com> + ee + dvorak + Estonian (Dvorak) + Estonian (Dvorak) + ibus-keyboard + 1 + + + xkb:ee:us:est + et + GPL + Peng Huang <shawn.p.huang@gmail.com> + ee + us + Estonian (US) + Estonian (US) + ibus-keyboard + 1 + + + xkb:ir::fas + fa + GPL + Peng Huang <shawn.p.huang@gmail.com> + ir + Persian + Persian + ibus-keyboard + 50 + + + xkb:ir:pes_keypad:fas + fa + GPL + Peng Huang <shawn.p.huang@gmail.com> + ir + pes_keypad + Persian (with Persian keypad) + Persian (with Persian keypad) + ibus-keyboard + 1 + + + xkb:ir:ku:kur + ku + GPL + Peng Huang <shawn.p.huang@gmail.com> + ir + ku + Kurdish (Iran, Latin Q) + Kurdish (Iran, Latin Q) + ibus-keyboard + 1 + + + xkb:ir:ku_f:kur + ku + GPL + Peng Huang <shawn.p.huang@gmail.com> + ir + ku_f + Kurdish (Iran, F) + Kurdish (Iran, F) + ibus-keyboard + 1 + + + xkb:ir:ku_alt:kur + ku + GPL + Peng Huang <shawn.p.huang@gmail.com> + ir + ku_alt + Kurdish (Iran, Latin Alt-Q) + Kurdish (Iran, Latin Alt-Q) + ibus-keyboard + 1 + + + xkb:ir:ku_ara:kur + ku + GPL + Peng Huang <shawn.p.huang@gmail.com> + ir + ku_ara + Kurdish (Iran, Arabic-Latin) + Kurdish (Iran, Arabic-Latin) + ibus-keyboard + 1 + + + xkb:iq::ara + ar + GPL + Peng Huang <shawn.p.huang@gmail.com> + iq + Iraqi + Iraqi + ibus-keyboard + 50 + + + xkb:iq::kur + ku + GPL + Peng Huang <shawn.p.huang@gmail.com> + iq + Iraqi + Iraqi + ibus-keyboard + 50 + + + xkb:iq:ku:kur + ku + GPL + Peng Huang <shawn.p.huang@gmail.com> + iq + ku + Kurdish (Iraq, Latin Q) + Kurdish (Iraq, Latin Q) + ibus-keyboard + 1 + + + xkb:iq:ku_f:kur + ku + GPL + Peng Huang <shawn.p.huang@gmail.com> + iq + ku_f + Kurdish (Iraq, F) + Kurdish (Iraq, F) + ibus-keyboard + 1 + + + xkb:iq:ku_alt:kur + ku + GPL + Peng Huang <shawn.p.huang@gmail.com> + iq + ku_alt + Kurdish (Iraq, Latin Alt-Q) + Kurdish (Iraq, Latin Alt-Q) + ibus-keyboard + 1 + + + xkb:iq:ku_ara:kur + ku + GPL + Peng Huang <shawn.p.huang@gmail.com> + iq + ku_ara + Kurdish (Iraq, Arabic-Latin) + Kurdish (Iraq, Arabic-Latin) + ibus-keyboard + 1 + + + xkb:fo::fao + fo + GPL + Peng Huang <shawn.p.huang@gmail.com> + fo + Faroese + Faroese + ibus-keyboard + 50 + + + xkb:fo:nodeadkeys:fao + fo + GPL + Peng Huang <shawn.p.huang@gmail.com> + fo + nodeadkeys + Faroese (no dead keys) + Faroese (no dead keys) + ibus-keyboard + 1 + + + xkb:fi::fin + fi + GPL + Peng Huang <shawn.p.huang@gmail.com> + fi + Finnish + Finnish + ibus-keyboard + 50 + + + xkb:fi:winkeys:fin + fi + GPL + Peng Huang <shawn.p.huang@gmail.com> + fi + winkeys + Finnish (Windows) + Finnish (Windows) + ibus-keyboard + 1 + + + xkb:fi:classic:fin + fi + GPL + Peng Huang <shawn.p.huang@gmail.com> + fi + classic + Finnish (classic) + Finnish (classic) + ibus-keyboard + 1 + + + xkb:fi:nodeadkeys:fin + fi + GPL + Peng Huang <shawn.p.huang@gmail.com> + fi + nodeadkeys + Finnish (classic, no dead keys) + Finnish (classic, no dead keys) + ibus-keyboard + 1 + + + xkb:fi:smi:sme + se + GPL + Peng Huang <shawn.p.huang@gmail.com> + fi + smi + Northern Saami (Finland) + Northern Saami (Finland) + ibus-keyboard + 1 + + + xkb:fi:mac:fin + fi + GPL + Peng Huang <shawn.p.huang@gmail.com> + fi + mac + Finnish (Macintosh) + Finnish (Macintosh) + ibus-keyboard + 1 + + + xkb:fr::fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + fr + French + French + ibus-keyboard + 50 + + + xkb:fr:nodeadkeys:fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + fr + nodeadkeys + French (no dead keys) + French (no dead keys) + ibus-keyboard + 1 + + + xkb:fr:oss:fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + fr + oss + French (alt.) + French (alt.) + ibus-keyboard + 1 + + + xkb:fr:oss_latin9:fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + fr + oss_latin9 + French (alt., Latin-9 only) + French (alt., Latin-9 only) + ibus-keyboard + 1 + + + xkb:fr:oss_nodeadkeys:fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + fr + oss_nodeadkeys + French (alt., no dead keys) + French (alt., no dead keys) + ibus-keyboard + 1 + + + xkb:fr:latin9:fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + fr + latin9 + French (legacy, alt.) + French (legacy, alt.) + ibus-keyboard + 1 + + + xkb:fr:latin9_nodeadkeys:fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + fr + latin9_nodeadkeys + French (legacy, alt., no dead keys) + French (legacy, alt., no dead keys) + ibus-keyboard + 1 + + + xkb:fr:bepo:fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + fr + bepo + French (BEPO) + French (BEPO) + ibus-keyboard + 1 + + + xkb:fr:bepo_latin9:fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + fr + bepo_latin9 + French (BEPO, Latin-9 only) + French (BEPO, Latin-9 only) + ibus-keyboard + 1 + + + xkb:fr:bepo_afnor:fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + fr + bepo_afnor + French (BEPO, AFNOR) + French (BEPO, AFNOR) + ibus-keyboard + 1 + + + xkb:fr:dvorak:fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + fr + dvorak + French (Dvorak) + French (Dvorak) + ibus-keyboard + 1 + + + xkb:fr:mac:fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + fr + mac + French (Macintosh) + French (Macintosh) + ibus-keyboard + 1 + + + xkb:fr:azerty:fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + fr + azerty + French (AZERTY) + French (AZERTY) + ibus-keyboard + 1 + + + xkb:fr:afnor:fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + fr + afnor + French (AZERTY, AFNOR) + French (AZERTY, AFNOR) + ibus-keyboard + 1 + + + xkb:fr:bre:fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + fr + bre + French (Breton) + French (Breton) + ibus-keyboard + 1 + + + xkb:fr:oci:oci + oc + GPL + Peng Huang <shawn.p.huang@gmail.com> + fr + oci + Occitan + Occitan + ibus-keyboard + 1 + + + xkb:fr:geo:kat + ka + GPL + Peng Huang <shawn.p.huang@gmail.com> + fr + geo + Georgian (France, AZERTY Tskapo) + Georgian (France, AZERTY Tskapo) + ibus-keyboard + 1 + + + xkb:fr:us:fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + fr + us + French (US) + French (US) + ibus-keyboard + 1 + + + xkb:gh::eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + gh + English (Ghana) + English (Ghana) + ibus-keyboard + 50 + + + xkb:gh:generic:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + gh + generic + English (Ghana, multilingual) + English (Ghana, multilingual) + ibus-keyboard + 1 + + + xkb:gh:akan:aka + ak + GPL + Peng Huang <shawn.p.huang@gmail.com> + gh + akan + Akan + Akan + ibus-keyboard + 1 + + + xkb:gh:ewe:ewe + ee + GPL + Peng Huang <shawn.p.huang@gmail.com> + gh + ewe + Ewe + Ewe + ibus-keyboard + 1 + + + xkb:gh:fula:ful + ff + GPL + Peng Huang <shawn.p.huang@gmail.com> + gh + fula + Fula + Fula + ibus-keyboard + 1 + + + xkb:gh:ga:gaa + gaa + GPL + Peng Huang <shawn.p.huang@gmail.com> + gh + ga + Ga + Ga + ibus-keyboard + 1 + + + xkb:gh:hausa:hau + ha + GPL + Peng Huang <shawn.p.huang@gmail.com> + gh + hausa + Hausa (Ghana) + Hausa (Ghana) + ibus-keyboard + 1 + + + xkb:gh:avn:avn + avn + GPL + Peng Huang <shawn.p.huang@gmail.com> + gh + avn + Avatime + Avatime + ibus-keyboard + 1 + + + xkb:gh:gillbt:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + gh + gillbt + English (Ghana, GILLBT) + English (Ghana, GILLBT) + ibus-keyboard + 1 + + + xkb:gn::nqo + nqo + GPL + Peng Huang <shawn.p.huang@gmail.com> + gn + N'Ko (AZERTY) + N'Ko (AZERTY) + ibus-keyboard + 50 + + + xkb:ge::kat + ka + GPL + Peng Huang <shawn.p.huang@gmail.com> + ge + Georgian + Georgian + ibus-keyboard + 50 + + + xkb:ge:ergonomic:kat + ka + GPL + Peng Huang <shawn.p.huang@gmail.com> + ge + ergonomic + Georgian (ergonomic) + Georgian (ergonomic) + ibus-keyboard + 1 + + + xkb:ge:mess:kat + ka + GPL + Peng Huang <shawn.p.huang@gmail.com> + ge + mess + Georgian (MESS) + Georgian (MESS) + ibus-keyboard + 1 + + + xkb:ge:ru:rus + ru + GPL + Peng Huang <shawn.p.huang@gmail.com> + ge + ru + Russian (Georgia) + Russian (Georgia) + ibus-keyboard + 1 + + + xkb:ge:os:oss + os + GPL + Peng Huang <shawn.p.huang@gmail.com> + ge + os + Ossetian (Georgia) + Ossetian (Georgia) + ibus-keyboard + 1 + + + xkb:de::deu + de + GPL + Peng Huang <shawn.p.huang@gmail.com> + de + German + German + ibus-keyboard + 50 + + + xkb:de:deadacute:deu + de + GPL + Peng Huang <shawn.p.huang@gmail.com> + de + deadacute + German (dead acute) + German (dead acute) + ibus-keyboard + 1 + + + xkb:de:deadgraveacute:deu + de + GPL + Peng Huang <shawn.p.huang@gmail.com> + de + deadgraveacute + German (dead grave acute) + German (dead grave acute) + ibus-keyboard + 1 + + + xkb:de:nodeadkeys:deu + de + GPL + Peng Huang <shawn.p.huang@gmail.com> + de + nodeadkeys + German (no dead keys) + German (no dead keys) + ibus-keyboard + 1 + + + xkb:de:e1:deu + de + GPL + Peng Huang <shawn.p.huang@gmail.com> + de + e1 + German (E1) + German (E1) + ibus-keyboard + 1 + + + xkb:de:e2:deu + de + GPL + Peng Huang <shawn.p.huang@gmail.com> + de + e2 + German (E2) + German (E2) + ibus-keyboard + 1 + + + xkb:de:T3:deu + de + GPL + Peng Huang <shawn.p.huang@gmail.com> + de + T3 + German (T3) + German (T3) + ibus-keyboard + 1 + + + xkb:de:us:deu + de + GPL + Peng Huang <shawn.p.huang@gmail.com> + de + us + German (US) + German (US) + ibus-keyboard + 1 + + + xkb:de:ro:ron + ro + GPL + Peng Huang <shawn.p.huang@gmail.com> + de + ro + Romanian (Germany) + Romanian (Germany) + ibus-keyboard + 1 + + + xkb:de:ro_nodeadkeys:ron + ro + GPL + Peng Huang <shawn.p.huang@gmail.com> + de + ro_nodeadkeys + Romanian (Germany, no dead keys) + Romanian (Germany, no dead keys) + ibus-keyboard + 1 + + + xkb:de:dvorak:deu + de + GPL + Peng Huang <shawn.p.huang@gmail.com> + de + dvorak + German (Dvorak) + German (Dvorak) + ibus-keyboard + 1 + + + xkb:de:neo:deu + de + GPL + Peng Huang <shawn.p.huang@gmail.com> + de + neo + German (Neo 2) + German (Neo 2) + ibus-keyboard + 1 + + + xkb:de:mac:deu + de + GPL + Peng Huang <shawn.p.huang@gmail.com> + de + mac + German (Macintosh) + German (Macintosh) + ibus-keyboard + 1 + + + xkb:de:mac_nodeadkeys:deu + de + GPL + Peng Huang <shawn.p.huang@gmail.com> + de + mac_nodeadkeys + German (Macintosh, no dead keys) + German (Macintosh, no dead keys) + ibus-keyboard + 1 + + + xkb:de:dsb:dsb + dsb + GPL + Peng Huang <shawn.p.huang@gmail.com> + de + dsb + Lower Sorbian + Lower Sorbian + ibus-keyboard + 1 + + + xkb:de:dsb_qwertz:dsb + dsb + GPL + Peng Huang <shawn.p.huang@gmail.com> + de + dsb_qwertz + Lower Sorbian (QWERTZ) + Lower Sorbian (QWERTZ) + ibus-keyboard + 1 + + + xkb:de:qwerty:deu + de + GPL + Peng Huang <shawn.p.huang@gmail.com> + de + qwerty + German (QWERTY) + German (QWERTY) + ibus-keyboard + 1 + + + xkb:de:tr:tur + tr + GPL + Peng Huang <shawn.p.huang@gmail.com> + de + tr + Turkish (Germany) + Turkish (Germany) + ibus-keyboard + 1 + + + xkb:de:ru:rus + ru + GPL + Peng Huang <shawn.p.huang@gmail.com> + de + ru + Russian (Germany, phonetic) + Russian (Germany, phonetic) + ibus-keyboard + 1 + + + xkb:de:deadtilde:deu + de + GPL + Peng Huang <shawn.p.huang@gmail.com> + de + deadtilde + German (dead tilde) + German (dead tilde) + ibus-keyboard + 1 + + + xkb:gr::ell + el + GPL + Peng Huang <shawn.p.huang@gmail.com> + gr + Greek + Greek + ibus-keyboard + 50 + + + xkb:gr:simple:ell + el + GPL + Peng Huang <shawn.p.huang@gmail.com> + gr + simple + Greek (simple) + Greek (simple) + ibus-keyboard + 1 + + + xkb:gr:extended:ell + el + GPL + Peng Huang <shawn.p.huang@gmail.com> + gr + extended + Greek (extended) + Greek (extended) + ibus-keyboard + 1 + + + xkb:gr:nodeadkeys:ell + el + GPL + Peng Huang <shawn.p.huang@gmail.com> + gr + nodeadkeys + Greek (no dead keys) + Greek (no dead keys) + ibus-keyboard + 1 + + + xkb:gr:polytonic:ell + el + GPL + Peng Huang <shawn.p.huang@gmail.com> + gr + polytonic + Greek (polytonic) + Greek (polytonic) + ibus-keyboard + 1 + + + xkb:hu::hun + hu + GPL + Peng Huang <shawn.p.huang@gmail.com> + hu + Hungarian + Hungarian + ibus-keyboard + 50 + + + xkb:hu:standard:hun + hu + GPL + Peng Huang <shawn.p.huang@gmail.com> + hu + standard + Hungarian (standard) + Hungarian (standard) + ibus-keyboard + 1 + + + xkb:hu:nodeadkeys:hun + hu + GPL + Peng Huang <shawn.p.huang@gmail.com> + hu + nodeadkeys + Hungarian (no dead keys) + Hungarian (no dead keys) + ibus-keyboard + 1 + + + xkb:hu:qwerty:hun + hu + GPL + Peng Huang <shawn.p.huang@gmail.com> + hu + qwerty + Hungarian (QWERTY) + Hungarian (QWERTY) + ibus-keyboard + 1 + + + xkb:hu:101_qwertz_comma_dead:hun + hu + GPL + Peng Huang <shawn.p.huang@gmail.com> + hu + 101_qwertz_comma_dead + Hungarian (QWERTZ, 101-key, comma, dead keys) + Hungarian (QWERTZ, 101-key, comma, dead keys) + ibus-keyboard + 1 + + + xkb:hu:101_qwertz_comma_nodead:hun + hu + GPL + Peng Huang <shawn.p.huang@gmail.com> + hu + 101_qwertz_comma_nodead + Hungarian (QWERTZ, 101-key, comma, no dead keys) + Hungarian (QWERTZ, 101-key, comma, no dead keys) + ibus-keyboard + 1 + + + xkb:hu:101_qwertz_dot_dead:hun + hu + GPL + Peng Huang <shawn.p.huang@gmail.com> + hu + 101_qwertz_dot_dead + Hungarian (QWERTZ, 101-key, dot, dead keys) + Hungarian (QWERTZ, 101-key, dot, dead keys) + ibus-keyboard + 1 + + + xkb:hu:101_qwertz_dot_nodead:hun + hu + GPL + Peng Huang <shawn.p.huang@gmail.com> + hu + 101_qwertz_dot_nodead + Hungarian (QWERTZ, 101-key, dot, no dead keys) + Hungarian (QWERTZ, 101-key, dot, no dead keys) + ibus-keyboard + 1 + + + xkb:hu:101_qwerty_comma_dead:hun + hu + GPL + Peng Huang <shawn.p.huang@gmail.com> + hu + 101_qwerty_comma_dead + Hungarian (QWERTY, 101-key, comma, dead keys) + Hungarian (QWERTY, 101-key, comma, dead keys) + ibus-keyboard + 1 + + + xkb:hu:101_qwerty_comma_nodead:hun + hu + GPL + Peng Huang <shawn.p.huang@gmail.com> + hu + 101_qwerty_comma_nodead + Hungarian (QWERTY, 101-key, comma, no dead keys) + Hungarian (QWERTY, 101-key, comma, no dead keys) + ibus-keyboard + 1 + + + xkb:hu:101_qwerty_dot_dead:hun + hu + GPL + Peng Huang <shawn.p.huang@gmail.com> + hu + 101_qwerty_dot_dead + Hungarian (QWERTY, 101-key, dot, dead keys) + Hungarian (QWERTY, 101-key, dot, dead keys) + ibus-keyboard + 1 + + + xkb:hu:101_qwerty_dot_nodead:hun + hu + GPL + Peng Huang <shawn.p.huang@gmail.com> + hu + 101_qwerty_dot_nodead + Hungarian (QWERTY, 101-key, dot, no dead keys) + Hungarian (QWERTY, 101-key, dot, no dead keys) + ibus-keyboard + 1 + + + xkb:hu:102_qwertz_comma_dead:hun + hu + GPL + Peng Huang <shawn.p.huang@gmail.com> + hu + 102_qwertz_comma_dead + Hungarian (QWERTZ, 102-key, comma, dead keys) + Hungarian (QWERTZ, 102-key, comma, dead keys) + ibus-keyboard + 1 + + + xkb:hu:102_qwertz_comma_nodead:hun + hu + GPL + Peng Huang <shawn.p.huang@gmail.com> + hu + 102_qwertz_comma_nodead + Hungarian (QWERTZ, 102-key, comma, no dead keys) + Hungarian (QWERTZ, 102-key, comma, no dead keys) + ibus-keyboard + 1 + + + xkb:hu:102_qwertz_dot_dead:hun + hu + GPL + Peng Huang <shawn.p.huang@gmail.com> + hu + 102_qwertz_dot_dead + Hungarian (QWERTZ, 102-key, dot, dead keys) + Hungarian (QWERTZ, 102-key, dot, dead keys) + ibus-keyboard + 1 + + + xkb:hu:102_qwertz_dot_nodead:hun + hu + GPL + Peng Huang <shawn.p.huang@gmail.com> + hu + 102_qwertz_dot_nodead + Hungarian (QWERTZ, 102-key, dot, no dead keys) + Hungarian (QWERTZ, 102-key, dot, no dead keys) + ibus-keyboard + 1 + + + xkb:hu:102_qwerty_comma_dead:hun + hu + GPL + Peng Huang <shawn.p.huang@gmail.com> + hu + 102_qwerty_comma_dead + Hungarian (QWERTY, 102-key, comma, dead keys) + Hungarian (QWERTY, 102-key, comma, dead keys) + ibus-keyboard + 1 + + + xkb:hu:102_qwerty_comma_nodead:hun + hu + GPL + Peng Huang <shawn.p.huang@gmail.com> + hu + 102_qwerty_comma_nodead + Hungarian (QWERTY, 102-key, comma, no dead keys) + Hungarian (QWERTY, 102-key, comma, no dead keys) + ibus-keyboard + 1 + + + xkb:hu:102_qwerty_dot_dead:hun + hu + GPL + Peng Huang <shawn.p.huang@gmail.com> + hu + 102_qwerty_dot_dead + Hungarian (QWERTY, 102-key, dot, dead keys) + Hungarian (QWERTY, 102-key, dot, dead keys) + ibus-keyboard + 1 + + + xkb:hu:102_qwerty_dot_nodead:hun + hu + GPL + Peng Huang <shawn.p.huang@gmail.com> + hu + 102_qwerty_dot_nodead + Hungarian (QWERTY, 102-key, dot, no dead keys) + Hungarian (QWERTY, 102-key, dot, no dead keys) + ibus-keyboard + 1 + + + xkb:is::isl + is + GPL + Peng Huang <shawn.p.huang@gmail.com> + is + Icelandic + Icelandic + ibus-keyboard + 50 + + + xkb:is:mac_legacy:isl + is + GPL + Peng Huang <shawn.p.huang@gmail.com> + is + mac_legacy + Icelandic (Macintosh, legacy) + Icelandic (Macintosh, legacy) + ibus-keyboard + 1 + + + xkb:is:mac:isl + is + GPL + Peng Huang <shawn.p.huang@gmail.com> + is + mac + Icelandic (Macintosh) + Icelandic (Macintosh) + ibus-keyboard + 1 + + + xkb:is:dvorak:isl + is + GPL + Peng Huang <shawn.p.huang@gmail.com> + is + dvorak + Icelandic (Dvorak) + Icelandic (Dvorak) + ibus-keyboard + 1 + + + xkb:il::heb + he + GPL + Peng Huang <shawn.p.huang@gmail.com> + il + Hebrew + Hebrew + ibus-keyboard + 50 + + + xkb:il:lyx:heb + he + GPL + Peng Huang <shawn.p.huang@gmail.com> + il + lyx + Hebrew (lyx) + Hebrew (lyx) + ibus-keyboard + 1 + + + xkb:il:phonetic:heb + he + GPL + Peng Huang <shawn.p.huang@gmail.com> + il + phonetic + Hebrew (phonetic) + Hebrew (phonetic) + ibus-keyboard + 1 + + + xkb:il:biblical:heb + he + GPL + Peng Huang <shawn.p.huang@gmail.com> + il + biblical + Hebrew (Biblical, Tiro) + Hebrew (Biblical, Tiro) + ibus-keyboard + 1 + + + xkb:it::ita + it + GPL + Peng Huang <shawn.p.huang@gmail.com> + it + Italian + Italian + ibus-keyboard + 50 + + + xkb:it:nodeadkeys:ita + it + GPL + Peng Huang <shawn.p.huang@gmail.com> + it + nodeadkeys + Italian (no dead keys) + Italian (no dead keys) + ibus-keyboard + 1 + + + xkb:it:winkeys:ita + it + GPL + Peng Huang <shawn.p.huang@gmail.com> + it + winkeys + Italian (Windows) + Italian (Windows) + ibus-keyboard + 1 + + + xkb:it:mac:ita + it + GPL + Peng Huang <shawn.p.huang@gmail.com> + it + mac + Italian (Macintosh) + Italian (Macintosh) + ibus-keyboard + 1 + + + xkb:it:us:ita + it + GPL + Peng Huang <shawn.p.huang@gmail.com> + it + us + Italian (US) + Italian (US) + ibus-keyboard + 1 + + + xkb:it:geo:kat + ka + GPL + Peng Huang <shawn.p.huang@gmail.com> + it + geo + Georgian (Italy) + Georgian (Italy) + ibus-keyboard + 1 + + + xkb:it:ibm:ita + it + GPL + Peng Huang <shawn.p.huang@gmail.com> + it + ibm + Italian (IBM 142) + Italian (IBM 142) + ibus-keyboard + 1 + + + xkb:it:intl:deu + de + GPL + Peng Huang <shawn.p.huang@gmail.com> + it + intl + Italian (intl., with dead keys) + Italian (intl., with dead keys) + ibus-keyboard + 1 + + + xkb:it:intl:fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + it + intl + Italian (intl., with dead keys) + Italian (intl., with dead keys) + ibus-keyboard + 1 + + + xkb:it:intl:ita + it + GPL + Peng Huang <shawn.p.huang@gmail.com> + it + intl + Italian (intl., with dead keys) + Italian (intl., with dead keys) + ibus-keyboard + 1 + + + xkb:it:intl:slk + sk + GPL + Peng Huang <shawn.p.huang@gmail.com> + it + intl + Italian (intl., with dead keys) + Italian (intl., with dead keys) + ibus-keyboard + 1 + + + xkb:it:intl:srd + sc + GPL + Peng Huang <shawn.p.huang@gmail.com> + it + intl + Italian (intl., with dead keys) + Italian (intl., with dead keys) + ibus-keyboard + 1 + + + xkb:it:intl:nap + nap + GPL + Peng Huang <shawn.p.huang@gmail.com> + it + intl + Italian (intl., with dead keys) + Italian (intl., with dead keys) + ibus-keyboard + 1 + + + xkb:it:intl:scn + scn + GPL + Peng Huang <shawn.p.huang@gmail.com> + it + intl + Italian (intl., with dead keys) + Italian (intl., with dead keys) + ibus-keyboard + 1 + + + xkb:it:intl:fur + fur + GPL + Peng Huang <shawn.p.huang@gmail.com> + it + intl + Italian (intl., with dead keys) + Italian (intl., with dead keys) + ibus-keyboard + 1 + + + xkb:it:scn:ita + it + GPL + Peng Huang <shawn.p.huang@gmail.com> + it + scn + Sicilian + Sicilian + ibus-keyboard + 1 + + + xkb:it:scn:scn + scn + GPL + Peng Huang <shawn.p.huang@gmail.com> + it + scn + Sicilian + Sicilian + ibus-keyboard + 1 + + + xkb:it:fur:fur + fur + GPL + Peng Huang <shawn.p.huang@gmail.com> + it + fur + Friulian (Italy) + Friulian (Italy) + ibus-keyboard + 1 + + + xkb:jp::jpn + ja + GPL + Peng Huang <shawn.p.huang@gmail.com> + jp + Japanese + Japanese + ibus-keyboard + 50 + + + xkb:jp:kana:jpn + ja + GPL + Peng Huang <shawn.p.huang@gmail.com> + jp + kana + Japanese (Kana) + Japanese (Kana) + ibus-keyboard + 1 + + + xkb:jp:kana86:jpn + ja + GPL + Peng Huang <shawn.p.huang@gmail.com> + jp + kana86 + Japanese (Kana 86) + Japanese (Kana 86) + ibus-keyboard + 1 + + + xkb:jp:OADG109A:jpn + ja + GPL + Peng Huang <shawn.p.huang@gmail.com> + jp + OADG109A + Japanese (OADG 109A) + Japanese (OADG 109A) + ibus-keyboard + 1 + + + xkb:jp:mac:jpn + ja + GPL + Peng Huang <shawn.p.huang@gmail.com> + jp + mac + Japanese (Macintosh) + Japanese (Macintosh) + ibus-keyboard + 1 + + + xkb:jp:dvorak:jpn + ja + GPL + Peng Huang <shawn.p.huang@gmail.com> + jp + dvorak + Japanese (Dvorak) + Japanese (Dvorak) + ibus-keyboard + 1 + + + xkb:kg::kir + ky + GPL + Peng Huang <shawn.p.huang@gmail.com> + kg + Kyrgyz + Kyrgyz + ibus-keyboard + 50 + + + xkb:kg:phonetic:kir + ky + GPL + Peng Huang <shawn.p.huang@gmail.com> + kg + phonetic + Kyrgyz (phonetic) + Kyrgyz (phonetic) + ibus-keyboard + 1 + + + xkb:kh::khm + km + GPL + Peng Huang <shawn.p.huang@gmail.com> + kh + Khmer (Cambodia) + Khmer (Cambodia) + ibus-keyboard + 50 + + + xkb:kz::kaz + kk + GPL + Peng Huang <shawn.p.huang@gmail.com> + kz + Kazakh + Kazakh + ibus-keyboard + 50 + + + xkb:kz:ruskaz:kaz + kk + GPL + Peng Huang <shawn.p.huang@gmail.com> + kz + ruskaz + Russian (Kazakhstan, with Kazakh) + Russian (Kazakhstan, with Kazakh) + ibus-keyboard + 1 + + + xkb:kz:ruskaz:rus + ru + GPL + Peng Huang <shawn.p.huang@gmail.com> + kz + ruskaz + Russian (Kazakhstan, with Kazakh) + Russian (Kazakhstan, with Kazakh) + ibus-keyboard + 1 + + + xkb:kz:kazrus:kaz + kk + GPL + Peng Huang <shawn.p.huang@gmail.com> + kz + kazrus + Kazakh (with Russian) + Kazakh (with Russian) + ibus-keyboard + 1 + + + xkb:kz:kazrus:rus + ru + GPL + Peng Huang <shawn.p.huang@gmail.com> + kz + kazrus + Kazakh (with Russian) + Kazakh (with Russian) + ibus-keyboard + 1 + + + xkb:kz:ext:kaz + kk + GPL + Peng Huang <shawn.p.huang@gmail.com> + kz + ext + Kazakh (extended) + Kazakh (extended) + ibus-keyboard + 1 + + + xkb:kz:latin:kaz + kk + GPL + Peng Huang <shawn.p.huang@gmail.com> + kz + latin + Kazakh (Latin) + Kazakh (Latin) + ibus-keyboard + 1 + + + xkb:la::lao + lo + GPL + Peng Huang <shawn.p.huang@gmail.com> + la + Lao + Lao + ibus-keyboard + 50 + + + xkb:la:stea:lao + lo + GPL + Peng Huang <shawn.p.huang@gmail.com> + la + stea + Lao (STEA) + Lao (STEA) + ibus-keyboard + 1 + + + xkb:lt::lit + lt + GPL + Peng Huang <shawn.p.huang@gmail.com> + lt + Lithuanian + Lithuanian + ibus-keyboard + 50 + + + xkb:lt:std:lit + lt + GPL + Peng Huang <shawn.p.huang@gmail.com> + lt + std + Lithuanian (standard) + Lithuanian (standard) + ibus-keyboard + 1 + + + xkb:lt:us:lit + lt + GPL + Peng Huang <shawn.p.huang@gmail.com> + lt + us + Lithuanian (US) + Lithuanian (US) + ibus-keyboard + 1 + + + xkb:lt:ibm:lit + lt + GPL + Peng Huang <shawn.p.huang@gmail.com> + lt + ibm + Lithuanian (IBM LST 1205-92) + Lithuanian (IBM LST 1205-92) + ibus-keyboard + 1 + + + xkb:lt:lekp:lit + lt + GPL + Peng Huang <shawn.p.huang@gmail.com> + lt + lekp + Lithuanian (LEKP) + Lithuanian (LEKP) + ibus-keyboard + 1 + + + xkb:lt:lekpa:lit + lt + GPL + Peng Huang <shawn.p.huang@gmail.com> + lt + lekpa + Lithuanian (LEKPa) + Lithuanian (LEKPa) + ibus-keyboard + 1 + + + xkb:lt:sgs:sgs + sgs + GPL + Peng Huang <shawn.p.huang@gmail.com> + lt + sgs + Samogitian + Samogitian + ibus-keyboard + 1 + + + xkb:lt:ratise:lit + lt + GPL + Peng Huang <shawn.p.huang@gmail.com> + lt + ratise + Lithuanian (Ratise) + Lithuanian (Ratise) + ibus-keyboard + 1 + + + xkb:lv::lav + lv + GPL + Peng Huang <shawn.p.huang@gmail.com> + lv + Latvian + Latvian + ibus-keyboard + 50 + + + xkb:lv:apostrophe:lav + lv + GPL + Peng Huang <shawn.p.huang@gmail.com> + lv + apostrophe + Latvian (apostrophe) + Latvian (apostrophe) + ibus-keyboard + 1 + + + xkb:lv:tilde:lav + lv + GPL + Peng Huang <shawn.p.huang@gmail.com> + lv + tilde + Latvian (tilde) + Latvian (tilde) + ibus-keyboard + 1 + + + xkb:lv:fkey:lav + lv + GPL + Peng Huang <shawn.p.huang@gmail.com> + lv + fkey + Latvian (F) + Latvian (F) + ibus-keyboard + 1 + + + xkb:lv:modern:lav + lv + GPL + Peng Huang <shawn.p.huang@gmail.com> + lv + modern + Latvian (modern) + Latvian (modern) + ibus-keyboard + 1 + + + xkb:lv:ergonomic:lav + lv + GPL + Peng Huang <shawn.p.huang@gmail.com> + lv + ergonomic + Latvian (ergonomic, ŪGJRMV) + Latvian (ergonomic, ŪGJRMV) + ibus-keyboard + 1 + + + xkb:lv:adapted:lav + lv + GPL + Peng Huang <shawn.p.huang@gmail.com> + lv + adapted + Latvian (adapted) + Latvian (adapted) + ibus-keyboard + 1 + + + xkb:mao::mri + mi + GPL + Peng Huang <shawn.p.huang@gmail.com> + mao + Maori + Maori + ibus-keyboard + 50 + + + xkb:me::srp + sr + GPL + Peng Huang <shawn.p.huang@gmail.com> + me + Montenegrin + Montenegrin + ibus-keyboard + 50 + + + xkb:me:cyrillic:srp + sr + GPL + Peng Huang <shawn.p.huang@gmail.com> + me + cyrillic + Montenegrin (Cyrillic) + Montenegrin (Cyrillic) + ibus-keyboard + 1 + + + xkb:me:cyrillicyz:srp + sr + GPL + Peng Huang <shawn.p.huang@gmail.com> + me + cyrillicyz + Montenegrin (Cyrillic, ZE and ZHE swapped) + Montenegrin (Cyrillic, ZE and ZHE swapped) + ibus-keyboard + 1 + + + xkb:me:latinunicode:srp + sr + GPL + Peng Huang <shawn.p.huang@gmail.com> + me + latinunicode + Montenegrin (Latin, Unicode) + Montenegrin (Latin, Unicode) + ibus-keyboard + 1 + + + xkb:me:latinyz:srp + sr + GPL + Peng Huang <shawn.p.huang@gmail.com> + me + latinyz + Montenegrin (Latin, QWERTY) + Montenegrin (Latin, QWERTY) + ibus-keyboard + 1 + + + xkb:me:latinunicodeyz:srp + sr + GPL + Peng Huang <shawn.p.huang@gmail.com> + me + latinunicodeyz + Montenegrin (Latin, Unicode, QWERTY) + Montenegrin (Latin, Unicode, QWERTY) + ibus-keyboard + 1 + + + xkb:me:cyrillicalternatequotes:srp + sr + GPL + Peng Huang <shawn.p.huang@gmail.com> + me + cyrillicalternatequotes + Montenegrin (Cyrillic, with guillemets) + Montenegrin (Cyrillic, with guillemets) + ibus-keyboard + 1 + + + xkb:me:latinalternatequotes:srp + sr + GPL + Peng Huang <shawn.p.huang@gmail.com> + me + latinalternatequotes + Montenegrin (Latin, with guillemets) + Montenegrin (Latin, with guillemets) + ibus-keyboard + 1 + + + xkb:mk::mkd + mk + GPL + Peng Huang <shawn.p.huang@gmail.com> + mk + Macedonian + Macedonian + ibus-keyboard + 50 + + + xkb:mk:nodeadkeys:mkd + mk + GPL + Peng Huang <shawn.p.huang@gmail.com> + mk + nodeadkeys + Macedonian (no dead keys) + Macedonian (no dead keys) + ibus-keyboard + 1 + + + xkb:mt::mlt + mt + GPL + Peng Huang <shawn.p.huang@gmail.com> + mt + Maltese + Maltese + ibus-keyboard + 50 + + + xkb:mt:us:mlt + mt + GPL + Peng Huang <shawn.p.huang@gmail.com> + mt + us + Maltese (US) + Maltese (US) + ibus-keyboard + 1 + + + xkb:mt:alt-us:mlt + mt + GPL + Peng Huang <shawn.p.huang@gmail.com> + mt + alt-us + Maltese (US, with AltGr overrides) + Maltese (US, with AltGr overrides) + ibus-keyboard + 1 + + + xkb:mt:alt-gb:mlt + mt + GPL + Peng Huang <shawn.p.huang@gmail.com> + mt + alt-gb + Maltese (UK, with AltGr overrides) + Maltese (UK, with AltGr overrides) + ibus-keyboard + 1 + + + xkb:mn::mon + mn + GPL + Peng Huang <shawn.p.huang@gmail.com> + mn + Mongolian + Mongolian + ibus-keyboard + 50 + + + xkb:no::nor + no + GPL + Peng Huang <shawn.p.huang@gmail.com> + no + Norwegian + Norwegian + ibus-keyboard + 50 + + + xkb:no::nob + nb + GPL + Peng Huang <shawn.p.huang@gmail.com> + no + Norwegian + Norwegian + ibus-keyboard + 50 + + + xkb:no::nno + nn + GPL + Peng Huang <shawn.p.huang@gmail.com> + no + Norwegian + Norwegian + ibus-keyboard + 50 + + + xkb:no:nodeadkeys:nor + no + GPL + Peng Huang <shawn.p.huang@gmail.com> + no + nodeadkeys + Norwegian (no dead keys) + Norwegian (no dead keys) + ibus-keyboard + 1 + + + xkb:no:nodeadkeys:nob + nb + GPL + Peng Huang <shawn.p.huang@gmail.com> + no + nodeadkeys + Norwegian (no dead keys) + Norwegian (no dead keys) + ibus-keyboard + 1 + + + xkb:no:nodeadkeys:nno + nn + GPL + Peng Huang <shawn.p.huang@gmail.com> + no + nodeadkeys + Norwegian (no dead keys) + Norwegian (no dead keys) + ibus-keyboard + 1 + + + xkb:no:winkeys:nor + no + GPL + Peng Huang <shawn.p.huang@gmail.com> + no + winkeys + Norwegian (Windows) + Norwegian (Windows) + ibus-keyboard + 1 + + + xkb:no:winkeys:nob + nb + GPL + Peng Huang <shawn.p.huang@gmail.com> + no + winkeys + Norwegian (Windows) + Norwegian (Windows) + ibus-keyboard + 1 + + + xkb:no:winkeys:nno + nn + GPL + Peng Huang <shawn.p.huang@gmail.com> + no + winkeys + Norwegian (Windows) + Norwegian (Windows) + ibus-keyboard + 1 + + + xkb:no:dvorak:nor + no + GPL + Peng Huang <shawn.p.huang@gmail.com> + no + dvorak + Norwegian (Dvorak) + Norwegian (Dvorak) + ibus-keyboard + 1 + + + xkb:no:dvorak:nob + nb + GPL + Peng Huang <shawn.p.huang@gmail.com> + no + dvorak + Norwegian (Dvorak) + Norwegian (Dvorak) + ibus-keyboard + 1 + + + xkb:no:dvorak:nno + nn + GPL + Peng Huang <shawn.p.huang@gmail.com> + no + dvorak + Norwegian (Dvorak) + Norwegian (Dvorak) + ibus-keyboard + 1 + + + xkb:no:smi:sme + se + GPL + Peng Huang <shawn.p.huang@gmail.com> + no + smi + Northern Saami (Norway) + Northern Saami (Norway) + ibus-keyboard + 1 + + + xkb:no:smi_nodeadkeys:sme + se + GPL + Peng Huang <shawn.p.huang@gmail.com> + no + smi_nodeadkeys + Northern Saami (Norway, no dead keys) + Northern Saami (Norway, no dead keys) + ibus-keyboard + 1 + + + xkb:no:mac:nor + no + GPL + Peng Huang <shawn.p.huang@gmail.com> + no + mac + Norwegian (Macintosh) + Norwegian (Macintosh) + ibus-keyboard + 1 + + + xkb:no:mac:nob + nb + GPL + Peng Huang <shawn.p.huang@gmail.com> + no + mac + Norwegian (Macintosh) + Norwegian (Macintosh) + ibus-keyboard + 1 + + + xkb:no:mac:nno + nn + GPL + Peng Huang <shawn.p.huang@gmail.com> + no + mac + Norwegian (Macintosh) + Norwegian (Macintosh) + ibus-keyboard + 1 + + + xkb:no:mac_nodeadkeys:nor + no + GPL + Peng Huang <shawn.p.huang@gmail.com> + no + mac_nodeadkeys + Norwegian (Macintosh, no dead keys) + Norwegian (Macintosh, no dead keys) + ibus-keyboard + 1 + + + xkb:no:mac_nodeadkeys:nob + nb + GPL + Peng Huang <shawn.p.huang@gmail.com> + no + mac_nodeadkeys + Norwegian (Macintosh, no dead keys) + Norwegian (Macintosh, no dead keys) + ibus-keyboard + 1 + + + xkb:no:mac_nodeadkeys:nno + nn + GPL + Peng Huang <shawn.p.huang@gmail.com> + no + mac_nodeadkeys + Norwegian (Macintosh, no dead keys) + Norwegian (Macintosh, no dead keys) + ibus-keyboard + 1 + + + xkb:no:colemak:nor + no + GPL + Peng Huang <shawn.p.huang@gmail.com> + no + colemak + Norwegian (Colemak) + Norwegian (Colemak) + ibus-keyboard + 1 + + + xkb:no:colemak:nob + nb + GPL + Peng Huang <shawn.p.huang@gmail.com> + no + colemak + Norwegian (Colemak) + Norwegian (Colemak) + ibus-keyboard + 1 + + + xkb:no:colemak:nno + nn + GPL + Peng Huang <shawn.p.huang@gmail.com> + no + colemak + Norwegian (Colemak) + Norwegian (Colemak) + ibus-keyboard + 1 + + + xkb:pl::pol + pl + GPL + Peng Huang <shawn.p.huang@gmail.com> + pl + Polish + Polish + ibus-keyboard + 50 + + + xkb:pl:legacy:pol + pl + GPL + Peng Huang <shawn.p.huang@gmail.com> + pl + legacy + Polish (legacy) + Polish (legacy) + ibus-keyboard + 1 + + + xkb:pl:qwertz:pol + pl + GPL + Peng Huang <shawn.p.huang@gmail.com> + pl + qwertz + Polish (QWERTZ) + Polish (QWERTZ) + ibus-keyboard + 1 + + + xkb:pl:dvorak:pol + pl + GPL + Peng Huang <shawn.p.huang@gmail.com> + pl + dvorak + Polish (Dvorak) + Polish (Dvorak) + ibus-keyboard + 1 + + + xkb:pl:dvorak_quotes:pol + pl + GPL + Peng Huang <shawn.p.huang@gmail.com> + pl + dvorak_quotes + Polish (Dvorak, with Polish quotes on quotemark key) + Polish (Dvorak, with Polish quotes on quotemark key) + ibus-keyboard + 1 + + + xkb:pl:dvorak_altquotes:pol + pl + GPL + Peng Huang <shawn.p.huang@gmail.com> + pl + dvorak_altquotes + Polish (Dvorak, with Polish quotes on key 1) + Polish (Dvorak, with Polish quotes on key 1) + ibus-keyboard + 1 + + + xkb:pl:csb:csb + csb + GPL + Peng Huang <shawn.p.huang@gmail.com> + pl + csb + Kashubian + Kashubian + ibus-keyboard + 1 + + + xkb:pl:szl:szl + szl + GPL + Peng Huang <shawn.p.huang@gmail.com> + pl + szl + Silesian + Silesian + ibus-keyboard + 1 + + + xkb:pl:ru_phonetic_dvorak:rus + ru + GPL + Peng Huang <shawn.p.huang@gmail.com> + pl + ru_phonetic_dvorak + Russian (Poland, phonetic Dvorak) + Russian (Poland, phonetic Dvorak) + ibus-keyboard + 1 + + + xkb:pl:dvp:pol + pl + GPL + Peng Huang <shawn.p.huang@gmail.com> + pl + dvp + Polish (programmer Dvorak) + Polish (programmer Dvorak) + ibus-keyboard + 1 + + + xkb:pt::por + pt + GPL + Peng Huang <shawn.p.huang@gmail.com> + pt + Portuguese + Portuguese + ibus-keyboard + 50 + + + xkb:pt:nodeadkeys:por + pt + GPL + Peng Huang <shawn.p.huang@gmail.com> + pt + nodeadkeys + Portuguese (no dead keys) + Portuguese (no dead keys) + ibus-keyboard + 1 + + + xkb:pt:mac:por + pt + GPL + Peng Huang <shawn.p.huang@gmail.com> + pt + mac + Portuguese (Macintosh) + Portuguese (Macintosh) + ibus-keyboard + 1 + + + xkb:pt:mac_nodeadkeys:por + pt + GPL + Peng Huang <shawn.p.huang@gmail.com> + pt + mac_nodeadkeys + Portuguese (Macintosh, no dead keys) + Portuguese (Macintosh, no dead keys) + ibus-keyboard + 1 + + + xkb:pt:nativo:por + pt + GPL + Peng Huang <shawn.p.huang@gmail.com> + pt + nativo + Portuguese (Nativo) + Portuguese (Nativo) + ibus-keyboard + 1 + + + xkb:pt:nativo-us:por + pt + GPL + Peng Huang <shawn.p.huang@gmail.com> + pt + nativo-us + Portuguese (Nativo for US keyboards) + Portuguese (Nativo for US keyboards) + ibus-keyboard + 1 + + + xkb:pt:nativo-epo:epo + eo + GPL + Peng Huang <shawn.p.huang@gmail.com> + pt + nativo-epo + Esperanto (Portugal, Nativo) + Esperanto (Portugal, Nativo) + ibus-keyboard + 1 + + + xkb:ro::ron + ro + GPL + Peng Huang <shawn.p.huang@gmail.com> + ro + Romanian + Romanian + ibus-keyboard + 50 + + + xkb:ro:std:ron + ro + GPL + Peng Huang <shawn.p.huang@gmail.com> + ro + std + Romanian (standard) + Romanian (standard) + ibus-keyboard + 1 + + + xkb:ro:winkeys:ron + ro + GPL + Peng Huang <shawn.p.huang@gmail.com> + ro + winkeys + Romanian (Windows) + Romanian (Windows) + ibus-keyboard + 1 + + + xkb:ru::rus + ru + GPL + Peng Huang <shawn.p.huang@gmail.com> + ru + Russian + Russian + ibus-keyboard + 50 + + + xkb:ru:phonetic:rus + ru + GPL + Peng Huang <shawn.p.huang@gmail.com> + ru + phonetic + Russian (phonetic) + Russian (phonetic) + ibus-keyboard + 1 + + + xkb:ru:phonetic_winkeys:rus + ru + GPL + Peng Huang <shawn.p.huang@gmail.com> + ru + phonetic_winkeys + Russian (phonetic, Windows) + Russian (phonetic, Windows) + ibus-keyboard + 1 + + + xkb:ru:phonetic_YAZHERTY:rus + ru + GPL + Peng Huang <shawn.p.huang@gmail.com> + ru + phonetic_YAZHERTY + Russian (phonetic, YAZHERTY) + Russian (phonetic, YAZHERTY) + ibus-keyboard + 1 + + + xkb:ru:typewriter:rus + ru + GPL + Peng Huang <shawn.p.huang@gmail.com> + ru + typewriter + Russian (typewriter) + Russian (typewriter) + ibus-keyboard + 1 + + + xkb:ru:legacy:rus + ru + GPL + Peng Huang <shawn.p.huang@gmail.com> + ru + legacy + Russian (legacy) + Russian (legacy) + ibus-keyboard + 1 + + + xkb:ru:typewriter-legacy:rus + ru + GPL + Peng Huang <shawn.p.huang@gmail.com> + ru + typewriter-legacy + Russian (typewriter, legacy) + Russian (typewriter, legacy) + ibus-keyboard + 1 + + + xkb:ru:tt:tat + tt + GPL + Peng Huang <shawn.p.huang@gmail.com> + ru + tt + Tatar + Tatar + ibus-keyboard + 1 + + + xkb:ru:os_legacy:oss + os + GPL + Peng Huang <shawn.p.huang@gmail.com> + ru + os_legacy + Ossetian (legacy) + Ossetian (legacy) + ibus-keyboard + 1 + + + xkb:ru:os_winkeys:oss + os + GPL + Peng Huang <shawn.p.huang@gmail.com> + ru + os_winkeys + Ossetian (Windows) + Ossetian (Windows) + ibus-keyboard + 1 + + + xkb:ru:cv:chv + cv + GPL + Peng Huang <shawn.p.huang@gmail.com> + ru + cv + Chuvash + Chuvash + ibus-keyboard + 1 + + + xkb:ru:cv_latin:chv + cv + GPL + Peng Huang <shawn.p.huang@gmail.com> + ru + cv_latin + Chuvash (Latin) + Chuvash (Latin) + ibus-keyboard + 1 + + + xkb:ru:udm:udm + udm + GPL + Peng Huang <shawn.p.huang@gmail.com> + ru + udm + Udmurt + Udmurt + ibus-keyboard + 1 + + + xkb:ru:kom:kom + kv + GPL + Peng Huang <shawn.p.huang@gmail.com> + ru + kom + Komi + Komi + ibus-keyboard + 1 + + + xkb:ru:sah:sah + sah + GPL + Peng Huang <shawn.p.huang@gmail.com> + ru + sah + Yakut + Yakut + ibus-keyboard + 1 + + + xkb:ru:xal:xal + xal + GPL + Peng Huang <shawn.p.huang@gmail.com> + ru + xal + Kalmyk + Kalmyk + ibus-keyboard + 1 + + + xkb:ru:dos:rus + ru + GPL + Peng Huang <shawn.p.huang@gmail.com> + ru + dos + Russian (DOS) + Russian (DOS) + ibus-keyboard + 1 + + + xkb:ru:mac:rus + ru + GPL + Peng Huang <shawn.p.huang@gmail.com> + ru + mac + Russian (Macintosh) + Russian (Macintosh) + ibus-keyboard + 1 + + + xkb:ru:srp:rus + ru + GPL + Peng Huang <shawn.p.huang@gmail.com> + ru + srp + Serbian (Russia) + Serbian (Russia) + ibus-keyboard + 1 + + + xkb:ru:srp:srp + sr + GPL + Peng Huang <shawn.p.huang@gmail.com> + ru + srp + Serbian (Russia) + Serbian (Russia) + ibus-keyboard + 1 + + + xkb:ru:bak:bak + ba + GPL + Peng Huang <shawn.p.huang@gmail.com> + ru + bak + Bashkirian + Bashkirian + ibus-keyboard + 1 + + + xkb:ru:chm:chm + chm + GPL + Peng Huang <shawn.p.huang@gmail.com> + ru + chm + Mari + Mari + ibus-keyboard + 1 + + + xkb:ru:phonetic_azerty:rus + ru + GPL + Peng Huang <shawn.p.huang@gmail.com> + ru + phonetic_azerty + Russian (phonetic, AZERTY) + Russian (phonetic, AZERTY) + ibus-keyboard + 1 + + + xkb:ru:phonetic_dvorak:rus + ru + GPL + Peng Huang <shawn.p.huang@gmail.com> + ru + phonetic_dvorak + Russian (phonetic, Dvorak) + Russian (phonetic, Dvorak) + ibus-keyboard + 1 + + + xkb:ru:phonetic_fr:rus + ru + GPL + Peng Huang <shawn.p.huang@gmail.com> + ru + phonetic_fr + Russian (phonetic, French) + Russian (phonetic, French) + ibus-keyboard + 1 + + + xkb:rs::srp + sr + GPL + Peng Huang <shawn.p.huang@gmail.com> + rs + Serbian + Serbian + ibus-keyboard + 50 + + + xkb:rs:yz:srp + sr + GPL + Peng Huang <shawn.p.huang@gmail.com> + rs + yz + Serbian (Cyrillic, ZE and ZHE swapped) + Serbian (Cyrillic, ZE and ZHE swapped) + ibus-keyboard + 1 + + + xkb:rs:latin:srp + sr + GPL + Peng Huang <shawn.p.huang@gmail.com> + rs + latin + Serbian (Latin) + Serbian (Latin) + ibus-keyboard + 1 + + + xkb:rs:latinunicode:srp + sr + GPL + Peng Huang <shawn.p.huang@gmail.com> + rs + latinunicode + Serbian (Latin, Unicode) + Serbian (Latin, Unicode) + ibus-keyboard + 1 + + + xkb:rs:latinyz:srp + sr + GPL + Peng Huang <shawn.p.huang@gmail.com> + rs + latinyz + Serbian (Latin, QWERTY) + Serbian (Latin, QWERTY) + ibus-keyboard + 1 + + + xkb:rs:latinunicodeyz:srp + sr + GPL + Peng Huang <shawn.p.huang@gmail.com> + rs + latinunicodeyz + Serbian (Latin, Unicode, QWERTY) + Serbian (Latin, Unicode, QWERTY) + ibus-keyboard + 1 + + + xkb:rs:alternatequotes:srp + sr + GPL + Peng Huang <shawn.p.huang@gmail.com> + rs + alternatequotes + Serbian (Cyrillic, with guillemets) + Serbian (Cyrillic, with guillemets) + ibus-keyboard + 1 + + + xkb:rs:latinalternatequotes:srp + sr + GPL + Peng Huang <shawn.p.huang@gmail.com> + rs + latinalternatequotes + Serbian (Latin, with guillemets) + Serbian (Latin, with guillemets) + ibus-keyboard + 1 + + + xkb:rs:rue:rue + rue + GPL + Peng Huang <shawn.p.huang@gmail.com> + rs + rue + Pannonian Rusyn + Pannonian Rusyn + ibus-keyboard + 1 + + + xkb:si::slv + sl + GPL + Peng Huang <shawn.p.huang@gmail.com> + si + Slovenian + Slovenian + ibus-keyboard + 50 + + + xkb:si:alternatequotes:slv + sl + GPL + Peng Huang <shawn.p.huang@gmail.com> + si + alternatequotes + Slovenian (with guillemets) + Slovenian (with guillemets) + ibus-keyboard + 1 + + + xkb:si:us:slv + sl + GPL + Peng Huang <shawn.p.huang@gmail.com> + si + us + Slovenian (US) + Slovenian (US) + ibus-keyboard + 1 + + + xkb:sk::slk + sk + GPL + Peng Huang <shawn.p.huang@gmail.com> + sk + Slovak + Slovak + ibus-keyboard + 50 + + + xkb:sk:bksl:slk + sk + GPL + Peng Huang <shawn.p.huang@gmail.com> + sk + bksl + Slovak (extended backslash) + Slovak (extended backslash) + ibus-keyboard + 1 + + + xkb:sk:qwerty:slk + sk + GPL + Peng Huang <shawn.p.huang@gmail.com> + sk + qwerty + Slovak (QWERTY) + Slovak (QWERTY) + ibus-keyboard + 1 + + + xkb:sk:qwerty_bksl:slk + sk + GPL + Peng Huang <shawn.p.huang@gmail.com> + sk + qwerty_bksl + Slovak (QWERTY, extended backslash) + Slovak (QWERTY, extended backslash) + ibus-keyboard + 1 + + + xkb:es::spa + es + GPL + Peng Huang <shawn.p.huang@gmail.com> + es + Spanish + Spanish + ibus-keyboard + 50 + + + xkb:es:nodeadkeys:spa + es + GPL + Peng Huang <shawn.p.huang@gmail.com> + es + nodeadkeys + Spanish (no dead keys) + Spanish (no dead keys) + ibus-keyboard + 1 + + + xkb:es:winkeys:spa + es + GPL + Peng Huang <shawn.p.huang@gmail.com> + es + winkeys + Spanish (Windows) + Spanish (Windows) + ibus-keyboard + 1 + + + xkb:es:deadtilde:spa + es + GPL + Peng Huang <shawn.p.huang@gmail.com> + es + deadtilde + Spanish (dead tilde) + Spanish (dead tilde) + ibus-keyboard + 1 + + + xkb:es:dvorak:spa + es + GPL + Peng Huang <shawn.p.huang@gmail.com> + es + dvorak + Spanish (Dvorak) + Spanish (Dvorak) + ibus-keyboard + 1 + + + xkb:es:ast:ast + ast + GPL + Peng Huang <shawn.p.huang@gmail.com> + es + ast + Asturian (Spain, with bottom-dot H and L) + Asturian (Spain, with bottom-dot H and L) + ibus-keyboard + 1 + + + xkb:es:cat:cat + ca + GPL + Peng Huang <shawn.p.huang@gmail.com> + es + cat + Catalan (Spain, with middle-dot L) + Catalan (Spain, with middle-dot L) + ibus-keyboard + 1 + + + xkb:es:mac:spa + es + GPL + Peng Huang <shawn.p.huang@gmail.com> + es + mac + Spanish (Macintosh) + Spanish (Macintosh) + ibus-keyboard + 1 + + + xkb:se::swe + sv + GPL + Peng Huang <shawn.p.huang@gmail.com> + se + Swedish + Swedish + ibus-keyboard + 50 + + + xkb:se:nodeadkeys:swe + sv + GPL + Peng Huang <shawn.p.huang@gmail.com> + se + nodeadkeys + Swedish (no dead keys) + Swedish (no dead keys) + ibus-keyboard + 1 + + + xkb:se:dvorak:swe + sv + GPL + Peng Huang <shawn.p.huang@gmail.com> + se + dvorak + Swedish (Dvorak) + Swedish (Dvorak) + ibus-keyboard + 1 + + + xkb:se:rus:rus + ru + GPL + Peng Huang <shawn.p.huang@gmail.com> + se + rus + Russian (Sweden, phonetic) + Russian (Sweden, phonetic) + ibus-keyboard + 1 + + + xkb:se:rus_nodeadkeys:rus + ru + GPL + Peng Huang <shawn.p.huang@gmail.com> + se + rus_nodeadkeys + Russian (Sweden, phonetic, no dead keys) + Russian (Sweden, phonetic, no dead keys) + ibus-keyboard + 1 + + + xkb:se:smi:sme + se + GPL + Peng Huang <shawn.p.huang@gmail.com> + se + smi + Northern Saami (Sweden) + Northern Saami (Sweden) + ibus-keyboard + 1 + + + xkb:se:mac:swe + sv + GPL + Peng Huang <shawn.p.huang@gmail.com> + se + mac + Swedish (Macintosh) + Swedish (Macintosh) + ibus-keyboard + 1 + + + xkb:se:svdvorak:swe + sv + GPL + Peng Huang <shawn.p.huang@gmail.com> + se + svdvorak + Swedish (Svdvorak) + Swedish (Svdvorak) + ibus-keyboard + 1 + + + xkb:se:us_dvorak:swe + sv + GPL + Peng Huang <shawn.p.huang@gmail.com> + se + us_dvorak + Swedish (Dvorak, intl.) + Swedish (Dvorak, intl.) + ibus-keyboard + 1 + + + xkb:se:us:swe + sv + GPL + Peng Huang <shawn.p.huang@gmail.com> + se + us + Swedish (US) + Swedish (US) + ibus-keyboard + 1 + + + xkb:se:swl:swl + swl + GPL + Peng Huang <shawn.p.huang@gmail.com> + se + swl + Swedish Sign Language + Swedish Sign Language + ibus-keyboard + 1 + + + xkb:ch::deu + de + GPL + Peng Huang <shawn.p.huang@gmail.com> + ch + German (Switzerland) + German (Switzerland) + ibus-keyboard + 50 + + + xkb:ch::gsw + gsw + GPL + Peng Huang <shawn.p.huang@gmail.com> + ch + German (Switzerland) + German (Switzerland) + ibus-keyboard + 50 + + + xkb:ch:legacy:deu + de + GPL + Peng Huang <shawn.p.huang@gmail.com> + ch + legacy + German (Switzerland, legacy) + German (Switzerland, legacy) + ibus-keyboard + 1 + + + xkb:ch:legacy:gsw + gsw + GPL + Peng Huang <shawn.p.huang@gmail.com> + ch + legacy + German (Switzerland, legacy) + German (Switzerland, legacy) + ibus-keyboard + 1 + + + xkb:ch:de_nodeadkeys:deu + de + GPL + Peng Huang <shawn.p.huang@gmail.com> + ch + de_nodeadkeys + German (Switzerland, no dead keys) + German (Switzerland, no dead keys) + ibus-keyboard + 1 + + + xkb:ch:de_nodeadkeys:gsw + gsw + GPL + Peng Huang <shawn.p.huang@gmail.com> + ch + de_nodeadkeys + German (Switzerland, no dead keys) + German (Switzerland, no dead keys) + ibus-keyboard + 1 + + + xkb:ch:fr:fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + ch + fr + French (Switzerland) + French (Switzerland) + ibus-keyboard + 1 + + + xkb:ch:fr_nodeadkeys:fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + ch + fr_nodeadkeys + French (Switzerland, no dead keys) + French (Switzerland, no dead keys) + ibus-keyboard + 1 + + + xkb:ch:fr_mac:fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + ch + fr_mac + French (Switzerland, Macintosh) + French (Switzerland, Macintosh) + ibus-keyboard + 1 + + + xkb:ch:de_mac:deu + de + GPL + Peng Huang <shawn.p.huang@gmail.com> + ch + de_mac + German (Switzerland, Macintosh) + German (Switzerland, Macintosh) + ibus-keyboard + 1 + + + xkb:ch:de_mac:gsw + gsw + GPL + Peng Huang <shawn.p.huang@gmail.com> + ch + de_mac + German (Switzerland, Macintosh) + German (Switzerland, Macintosh) + ibus-keyboard + 1 + + + xkb:sy::syr + syr + GPL + Peng Huang <shawn.p.huang@gmail.com> + sy + Arabic (Syria) + Arabic (Syria) + ibus-keyboard + 50 + + + xkb:sy:syc:syr + syr + GPL + Peng Huang <shawn.p.huang@gmail.com> + sy + syc + Syriac + Syriac + ibus-keyboard + 1 + + + xkb:sy:syc_phonetic:syr + syr + GPL + Peng Huang <shawn.p.huang@gmail.com> + sy + syc_phonetic + Syriac (phonetic) + Syriac (phonetic) + ibus-keyboard + 1 + + + xkb:sy:ku:kur + ku + GPL + Peng Huang <shawn.p.huang@gmail.com> + sy + ku + Kurdish (Syria, Latin Q) + Kurdish (Syria, Latin Q) + ibus-keyboard + 1 + + + xkb:sy:ku_f:kur + ku + GPL + Peng Huang <shawn.p.huang@gmail.com> + sy + ku_f + Kurdish (Syria, F) + Kurdish (Syria, F) + ibus-keyboard + 1 + + + xkb:sy:ku_alt:kur + ku + GPL + Peng Huang <shawn.p.huang@gmail.com> + sy + ku_alt + Kurdish (Syria, Latin Alt-Q) + Kurdish (Syria, Latin Alt-Q) + ibus-keyboard + 1 + + + xkb:tj::tgk + tg + GPL + Peng Huang <shawn.p.huang@gmail.com> + tj + Tajik + Tajik + ibus-keyboard + 50 + + + xkb:tj:legacy:tgk + tg + GPL + Peng Huang <shawn.p.huang@gmail.com> + tj + legacy + Tajik (legacy) + Tajik (legacy) + ibus-keyboard + 1 + + + xkb:lk::sin + si + GPL + Peng Huang <shawn.p.huang@gmail.com> + lk + Sinhala (phonetic) + Sinhala (phonetic) + ibus-keyboard + 50 + + + xkb:lk:tam_unicode:tam + ta + GPL + Peng Huang <shawn.p.huang@gmail.com> + lk + tam_unicode + Tamil (Sri Lanka, TamilNet '99) + Tamil (Sri Lanka, TamilNet '99) + ibus-keyboard + 1 + + + xkb:lk:tam_TAB:tam + ta + GPL + Peng Huang <shawn.p.huang@gmail.com> + lk + tam_TAB + Tamil (Sri Lanka, TamilNet '99, TAB encoding) + Tamil (Sri Lanka, TamilNet '99, TAB encoding) + ibus-keyboard + 1 + + + xkb:lk:us:sin + si + GPL + Peng Huang <shawn.p.huang@gmail.com> + lk + us + Sinhala (US) + Sinhala (US) + ibus-keyboard + 1 + + + xkb:th::tha + th + GPL + Peng Huang <shawn.p.huang@gmail.com> + th + Thai + Thai + ibus-keyboard + 50 + + + xkb:th:tis:tha + th + GPL + Peng Huang <shawn.p.huang@gmail.com> + th + tis + Thai (TIS-820.2538) + Thai (TIS-820.2538) + ibus-keyboard + 1 + + + xkb:th:pat:tha + th + GPL + Peng Huang <shawn.p.huang@gmail.com> + th + pat + Thai (Pattachote) + Thai (Pattachote) + ibus-keyboard + 1 + + + xkb:tr::tur + tr + GPL + Peng Huang <shawn.p.huang@gmail.com> + tr + Turkish + Turkish + ibus-keyboard + 50 + + + xkb:tr:f:tur + tr + GPL + Peng Huang <shawn.p.huang@gmail.com> + tr + f + Turkish (F) + Turkish (F) + ibus-keyboard + 1 + + + xkb:tr:alt:tur + tr + GPL + Peng Huang <shawn.p.huang@gmail.com> + tr + alt + Turkish (Alt-Q) + Turkish (Alt-Q) + ibus-keyboard + 1 + + + xkb:tr:ku:kur + ku + GPL + Peng Huang <shawn.p.huang@gmail.com> + tr + ku + Kurdish (Turkey, Latin Q) + Kurdish (Turkey, Latin Q) + ibus-keyboard + 1 + + + xkb:tr:ku_f:kur + ku + GPL + Peng Huang <shawn.p.huang@gmail.com> + tr + ku_f + Kurdish (Turkey, F) + Kurdish (Turkey, F) + ibus-keyboard + 1 + + + xkb:tr:ku_alt:kur + ku + GPL + Peng Huang <shawn.p.huang@gmail.com> + tr + ku_alt + Kurdish (Turkey, Latin Alt-Q) + Kurdish (Turkey, Latin Alt-Q) + ibus-keyboard + 1 + + + xkb:tr:intl:tur + tr + GPL + Peng Huang <shawn.p.huang@gmail.com> + tr + intl + Turkish (intl., with dead keys) + Turkish (intl., with dead keys) + ibus-keyboard + 1 + + + xkb:tr:ot:tur + tr + GPL + Peng Huang <shawn.p.huang@gmail.com> + tr + ot + Ottoman (Q) + Ottoman (Q) + ibus-keyboard + 1 + + + xkb:tr:otf:tur + tr + GPL + Peng Huang <shawn.p.huang@gmail.com> + tr + otf + Ottoman (F) + Ottoman (F) + ibus-keyboard + 1 + + + xkb:tr:otk:tur + tr + GPL + Peng Huang <shawn.p.huang@gmail.com> + tr + otk + Old Turkic + Old Turkic + ibus-keyboard + 1 + + + xkb:tr:otkf:tur + tr + GPL + Peng Huang <shawn.p.huang@gmail.com> + tr + otkf + Old Turkic (F) + Old Turkic (F) + ibus-keyboard + 1 + + + xkb:tw::fox + fox + GPL + Peng Huang <shawn.p.huang@gmail.com> + tw + Taiwanese + Taiwanese + ibus-keyboard + 50 + + + xkb:tw:indigenous:ami + ami + GPL + Peng Huang <shawn.p.huang@gmail.com> + tw + indigenous + Taiwanese (indigenous) + Taiwanese (indigenous) + ibus-keyboard + 1 + + + xkb:tw:indigenous:tay + tay + GPL + Peng Huang <shawn.p.huang@gmail.com> + tw + indigenous + Taiwanese (indigenous) + Taiwanese (indigenous) + ibus-keyboard + 1 + + + xkb:tw:indigenous:bnn + bnn + GPL + Peng Huang <shawn.p.huang@gmail.com> + tw + indigenous + Taiwanese (indigenous) + Taiwanese (indigenous) + ibus-keyboard + 1 + + + xkb:tw:indigenous:ckv + ckv + GPL + Peng Huang <shawn.p.huang@gmail.com> + tw + indigenous + Taiwanese (indigenous) + Taiwanese (indigenous) + ibus-keyboard + 1 + + + xkb:tw:indigenous:pwn + pwn + GPL + Peng Huang <shawn.p.huang@gmail.com> + tw + indigenous + Taiwanese (indigenous) + Taiwanese (indigenous) + ibus-keyboard + 1 + + + xkb:tw:indigenous:pyu + pyu + GPL + Peng Huang <shawn.p.huang@gmail.com> + tw + indigenous + Taiwanese (indigenous) + Taiwanese (indigenous) + ibus-keyboard + 1 + + + xkb:tw:indigenous:dru + dru + GPL + Peng Huang <shawn.p.huang@gmail.com> + tw + indigenous + Taiwanese (indigenous) + Taiwanese (indigenous) + ibus-keyboard + 1 + + + xkb:tw:indigenous:ais + ais + GPL + Peng Huang <shawn.p.huang@gmail.com> + tw + indigenous + Taiwanese (indigenous) + Taiwanese (indigenous) + ibus-keyboard + 1 + + + xkb:tw:indigenous:ssf + ssf + GPL + Peng Huang <shawn.p.huang@gmail.com> + tw + indigenous + Taiwanese (indigenous) + Taiwanese (indigenous) + ibus-keyboard + 1 + + + xkb:tw:indigenous:tao + tao + GPL + Peng Huang <shawn.p.huang@gmail.com> + tw + indigenous + Taiwanese (indigenous) + Taiwanese (indigenous) + ibus-keyboard + 1 + + + xkb:tw:indigenous:tsu + tsu + GPL + Peng Huang <shawn.p.huang@gmail.com> + tw + indigenous + Taiwanese (indigenous) + Taiwanese (indigenous) + ibus-keyboard + 1 + + + xkb:tw:indigenous:trv + trv + GPL + Peng Huang <shawn.p.huang@gmail.com> + tw + indigenous + Taiwanese (indigenous) + Taiwanese (indigenous) + ibus-keyboard + 1 + + + xkb:tw:indigenous:xnb + xnb + GPL + Peng Huang <shawn.p.huang@gmail.com> + tw + indigenous + Taiwanese (indigenous) + Taiwanese (indigenous) + ibus-keyboard + 1 + + + xkb:tw:indigenous:sxr + sxr + GPL + Peng Huang <shawn.p.huang@gmail.com> + tw + indigenous + Taiwanese (indigenous) + Taiwanese (indigenous) + ibus-keyboard + 1 + + + xkb:tw:indigenous:uun + uun + GPL + Peng Huang <shawn.p.huang@gmail.com> + tw + indigenous + Taiwanese (indigenous) + Taiwanese (indigenous) + ibus-keyboard + 1 + + + xkb:tw:indigenous:fos + fos + GPL + Peng Huang <shawn.p.huang@gmail.com> + tw + indigenous + Taiwanese (indigenous) + Taiwanese (indigenous) + ibus-keyboard + 1 + + + xkb:tw:saisiyat:xsy + xsy + GPL + Peng Huang <shawn.p.huang@gmail.com> + tw + saisiyat + Saisiyat (Taiwan) + Saisiyat (Taiwan) + ibus-keyboard + 1 + + + xkb:ua::ukr + uk + GPL + Peng Huang <shawn.p.huang@gmail.com> + ua + Ukrainian + Ukrainian + ibus-keyboard + 50 + + + xkb:ua:phonetic:ukr + uk + GPL + Peng Huang <shawn.p.huang@gmail.com> + ua + phonetic + Ukrainian (phonetic) + Ukrainian (phonetic) + ibus-keyboard + 1 + + + xkb:ua:typewriter:ukr + uk + GPL + Peng Huang <shawn.p.huang@gmail.com> + ua + typewriter + Ukrainian (typewriter) + Ukrainian (typewriter) + ibus-keyboard + 1 + + + xkb:ua:winkeys:ukr + uk + GPL + Peng Huang <shawn.p.huang@gmail.com> + ua + winkeys + Ukrainian (Windows) + Ukrainian (Windows) + ibus-keyboard + 1 + + + xkb:ua:macOS:ukr + uk + GPL + Peng Huang <shawn.p.huang@gmail.com> + ua + macOS + Ukrainian (macOS) + Ukrainian (macOS) + ibus-keyboard + 1 + + + xkb:ua:legacy:ukr + uk + GPL + Peng Huang <shawn.p.huang@gmail.com> + ua + legacy + Ukrainian (legacy) + Ukrainian (legacy) + ibus-keyboard + 1 + + + xkb:ua:rstu:ukr + uk + GPL + Peng Huang <shawn.p.huang@gmail.com> + ua + rstu + Ukrainian (standard RSTU) + Ukrainian (standard RSTU) + ibus-keyboard + 1 + + + xkb:ua:rstu_ru:ukr + uk + GPL + Peng Huang <shawn.p.huang@gmail.com> + ua + rstu_ru + Russian (Ukraine, standard RSTU) + Russian (Ukraine, standard RSTU) + ibus-keyboard + 1 + + + xkb:ua:homophonic:ukr + uk + GPL + Peng Huang <shawn.p.huang@gmail.com> + ua + homophonic + Ukrainian (homophonic) + Ukrainian (homophonic) + ibus-keyboard + 1 + + + xkb:ua:crh:crh + crh + GPL + Peng Huang <shawn.p.huang@gmail.com> + ua + crh + Crimean Tatar (Turkish Q) + Crimean Tatar (Turkish Q) + ibus-keyboard + 1 + + + xkb:ua:crh_f:crh + crh + GPL + Peng Huang <shawn.p.huang@gmail.com> + ua + crh_f + Crimean Tatar (Turkish F) + Crimean Tatar (Turkish F) + ibus-keyboard + 1 + + + xkb:ua:crh_alt:crh + crh + GPL + Peng Huang <shawn.p.huang@gmail.com> + ua + crh_alt + Crimean Tatar (Turkish Alt-Q) + Crimean Tatar (Turkish Alt-Q) + ibus-keyboard + 1 + + + xkb:gb::eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + gb + English (UK) + English (UK) + ibus-keyboard + 50 + + + xkb:gb:extd:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + gb + extd + English (UK, extended, Windows) + English (UK, extended, Windows) + ibus-keyboard + 1 + + + xkb:gb:intl:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + gb + intl + English (UK, intl., with dead keys) + English (UK, intl., with dead keys) + ibus-keyboard + 1 + + + xkb:gb:dvorak:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + gb + dvorak + English (UK, Dvorak) + English (UK, Dvorak) + ibus-keyboard + 1 + + + xkb:gb:dvorakukp:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + gb + dvorakukp + English (UK, Dvorak, with UK punctuation) + English (UK, Dvorak, with UK punctuation) + ibus-keyboard + 1 + + + xkb:gb:mac:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + gb + mac + English (UK, Macintosh) + English (UK, Macintosh) + ibus-keyboard + 1 + + + xkb:gb:mac_intl:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + gb + mac_intl + English (UK, Macintosh, intl.) + English (UK, Macintosh, intl.) + ibus-keyboard + 1 + + + xkb:gb:colemak:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + gb + colemak + English (UK, Colemak) + English (UK, Colemak) + ibus-keyboard + 1 + + + xkb:gb:colemak_dh:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + gb + colemak_dh + English (UK, Colemak-DH) + English (UK, Colemak-DH) + ibus-keyboard + 1 + + + xkb:gb:pl:pol + pl + GPL + Peng Huang <shawn.p.huang@gmail.com> + gb + pl + Polish (British keyboard) + Polish (British keyboard) + ibus-keyboard + 1 + + + xkb:gb:gla:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + gb + gla + Scottish Gaelic + Scottish Gaelic + ibus-keyboard + 1 + + + xkb:gb:gla:gla + gd + GPL + Peng Huang <shawn.p.huang@gmail.com> + gb + gla + Scottish Gaelic + Scottish Gaelic + ibus-keyboard + 1 + + + xkb:uz::uzb + uz + GPL + Peng Huang <shawn.p.huang@gmail.com> + uz + Uzbek + Uzbek + ibus-keyboard + 50 + + + xkb:uz:latin:uzb + uz + GPL + Peng Huang <shawn.p.huang@gmail.com> + uz + latin + Uzbek (Latin) + Uzbek (Latin) + ibus-keyboard + 1 + + + xkb:vn::vie + vi + GPL + Peng Huang <shawn.p.huang@gmail.com> + vn + Vietnamese + Vietnamese + ibus-keyboard + 50 + + + xkb:vn:us:vie + vi + GPL + Peng Huang <shawn.p.huang@gmail.com> + vn + us + Vietnamese (US) + Vietnamese (US) + ibus-keyboard + 1 + + + xkb:vn:fr:vie + vi + GPL + Peng Huang <shawn.p.huang@gmail.com> + vn + fr + Vietnamese (French) + Vietnamese (French) + ibus-keyboard + 1 + + + xkb:kr::kor + ko + GPL + Peng Huang <shawn.p.huang@gmail.com> + kr + Korean + Korean + ibus-keyboard + 50 + + + xkb:kr:kr104:kor + ko + GPL + Peng Huang <shawn.p.huang@gmail.com> + kr + kr104 + Korean (101/104-key compatible) + Korean (101/104-key compatible) + ibus-keyboard + 1 + + + xkb:ie::eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + ie + Irish + Irish + ibus-keyboard + 50 + + + xkb:ie:CloGaelach:gle + ga + GPL + Peng Huang <shawn.p.huang@gmail.com> + ie + CloGaelach + CloGaelach + CloGaelach + ibus-keyboard + 1 + + + xkb:ie:UnicodeExpert:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + ie + UnicodeExpert + Irish (UnicodeExpert) + Irish (UnicodeExpert) + ibus-keyboard + 1 + + + xkb:ie:ogam:sga + sga + GPL + Peng Huang <shawn.p.huang@gmail.com> + ie + ogam + Ogham + Ogham + ibus-keyboard + 1 + + + xkb:ie:ogam_is434:sga + sga + GPL + Peng Huang <shawn.p.huang@gmail.com> + ie + ogam_is434 + Ogham (IS434) + Ogham (IS434) + ibus-keyboard + 1 + + + xkb:pk::urd + ur + GPL + Peng Huang <shawn.p.huang@gmail.com> + pk + Urdu (Pakistan) + Urdu (Pakistan) + ibus-keyboard + 50 + + + xkb:pk:urd-crulp:urd + ur + GPL + Peng Huang <shawn.p.huang@gmail.com> + pk + urd-crulp + Urdu (Pakistan, CRULP) + Urdu (Pakistan, CRULP) + ibus-keyboard + 1 + + + xkb:pk:urd-nla:urd + ur + GPL + Peng Huang <shawn.p.huang@gmail.com> + pk + urd-nla + Urdu (Pakistan, NLA) + Urdu (Pakistan, NLA) + ibus-keyboard + 1 + + + xkb:pk:ara:ara + ar + GPL + Peng Huang <shawn.p.huang@gmail.com> + pk + ara + Arabic (Pakistan) + Arabic (Pakistan) + ibus-keyboard + 1 + + + xkb:pk:snd:snd + sd + GPL + Peng Huang <shawn.p.huang@gmail.com> + pk + snd + Sindhi + Sindhi + ibus-keyboard + 1 + + + xkb:mv::div + dv + GPL + Peng Huang <shawn.p.huang@gmail.com> + mv + Dhivehi + Dhivehi + ibus-keyboard + 50 + + + xkb:za::eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + za + English (South Africa) + English (South Africa) + ibus-keyboard + 50 + + + xkb:epo::epo + eo + GPL + Peng Huang <shawn.p.huang@gmail.com> + epo + Esperanto + Esperanto + ibus-keyboard + 50 + + + xkb:epo:legacy:epo + eo + GPL + Peng Huang <shawn.p.huang@gmail.com> + epo + legacy + Esperanto (legacy) + Esperanto (legacy) + ibus-keyboard + 1 + + + xkb:np::nep + ne + GPL + Peng Huang <shawn.p.huang@gmail.com> + np + Nepali + Nepali + ibus-keyboard + 50 + + + xkb:np::sat + sat + GPL + Peng Huang <shawn.p.huang@gmail.com> + np + Nepali + Nepali + ibus-keyboard + 50 + + + xkb:ng::eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + ng + English (Nigeria) + English (Nigeria) + ibus-keyboard + 50 + + + xkb:ng:igbo:ibo + ig + GPL + Peng Huang <shawn.p.huang@gmail.com> + ng + igbo + Igbo + Igbo + ibus-keyboard + 1 + + + xkb:ng:yoruba:yor + yo + GPL + Peng Huang <shawn.p.huang@gmail.com> + ng + yoruba + Yoruba + Yoruba + ibus-keyboard + 1 + + + xkb:ng:hausa:hau + ha + GPL + Peng Huang <shawn.p.huang@gmail.com> + ng + hausa + Hausa (Nigeria) + Hausa (Nigeria) + ibus-keyboard + 1 + + + xkb:et::amh + am + GPL + Peng Huang <shawn.p.huang@gmail.com> + et + Amharic + Amharic + ibus-keyboard + 50 + + + xkb:sn::wol + wo + GPL + Peng Huang <shawn.p.huang@gmail.com> + sn + Wolof + Wolof + ibus-keyboard + 50 + + + xkb:tm::tuk + tk + GPL + Peng Huang <shawn.p.huang@gmail.com> + tm + Turkmen + Turkmen + ibus-keyboard + 50 + + + xkb:tm:alt:tuk + tk + GPL + Peng Huang <shawn.p.huang@gmail.com> + tm + alt + Turkmen (Alt-Q) + Turkmen (Alt-Q) + ibus-keyboard + 1 + + + xkb:ml::bam + bm + GPL + Peng Huang <shawn.p.huang@gmail.com> + ml + Bambara + Bambara + ibus-keyboard + 50 + + + xkb:ml:fr-oss:fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + ml + fr-oss + French (Mali, alt.) + French (Mali, alt.) + ibus-keyboard + 1 + + + xkb:ml:us-mac:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + ml + us-mac + English (Mali, US, Macintosh) + English (Mali, US, Macintosh) + ibus-keyboard + 1 + + + xkb:ml:us-intl:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + ml + us-intl + English (Mali, US, intl.) + English (Mali, US, intl.) + ibus-keyboard + 1 + + + xkb:tz::swa + sw + GPL + Peng Huang <shawn.p.huang@gmail.com> + tz + Swahili (Tanzania) + Swahili (Tanzania) + ibus-keyboard + 50 + + + xkb:tg::fra + fr + GPL + Peng Huang <shawn.p.huang@gmail.com> + tg + French (Togo) + French (Togo) + ibus-keyboard + 50 + + + xkb:tg::ajg + ajg + GPL + Peng Huang <shawn.p.huang@gmail.com> + tg + French (Togo) + French (Togo) + ibus-keyboard + 50 + + + xkb:tg::blo + blo + GPL + Peng Huang <shawn.p.huang@gmail.com> + tg + French (Togo) + French (Togo) + ibus-keyboard + 50 + + + xkb:tg::kpo + kpo + GPL + Peng Huang <shawn.p.huang@gmail.com> + tg + French (Togo) + French (Togo) + ibus-keyboard + 50 + + + xkb:tg::ewe + ee + GPL + Peng Huang <shawn.p.huang@gmail.com> + tg + French (Togo) + French (Togo) + ibus-keyboard + 50 + + + xkb:tg::fon + fon + GPL + Peng Huang <shawn.p.huang@gmail.com> + tg + French (Togo) + French (Togo) + ibus-keyboard + 50 + + + xkb:tg::fue + fue + GPL + Peng Huang <shawn.p.huang@gmail.com> + tg + French (Togo) + French (Togo) + ibus-keyboard + 50 + + + xkb:tg::gej + gej + GPL + Peng Huang <shawn.p.huang@gmail.com> + tg + French (Togo) + French (Togo) + ibus-keyboard + 50 + + + xkb:tg::ife + ife + GPL + Peng Huang <shawn.p.huang@gmail.com> + tg + French (Togo) + French (Togo) + ibus-keyboard + 50 + + + xkb:tg::kbp + kbp + GPL + Peng Huang <shawn.p.huang@gmail.com> + tg + French (Togo) + French (Togo) + ibus-keyboard + 50 + + + xkb:tg::las + las + GPL + Peng Huang <shawn.p.huang@gmail.com> + tg + French (Togo) + French (Togo) + ibus-keyboard + 50 + + + xkb:tg::dop + dop + GPL + Peng Huang <shawn.p.huang@gmail.com> + tg + French (Togo) + French (Togo) + ibus-keyboard + 50 + + + xkb:tg::mfg + mfg + GPL + Peng Huang <shawn.p.huang@gmail.com> + tg + French (Togo) + French (Togo) + ibus-keyboard + 50 + + + xkb:tg::nmz + nmz + GPL + Peng Huang <shawn.p.huang@gmail.com> + tg + French (Togo) + French (Togo) + ibus-keyboard + 50 + + + xkb:tg::bud + bud + GPL + Peng Huang <shawn.p.huang@gmail.com> + tg + French (Togo) + French (Togo) + ibus-keyboard + 50 + + + xkb:tg::gng + gng + GPL + Peng Huang <shawn.p.huang@gmail.com> + tg + French (Togo) + French (Togo) + ibus-keyboard + 50 + + + xkb:tg::kdh + kdh + GPL + Peng Huang <shawn.p.huang@gmail.com> + tg + French (Togo) + French (Togo) + ibus-keyboard + 50 + + + xkb:tg::soy + soy + GPL + Peng Huang <shawn.p.huang@gmail.com> + tg + French (Togo) + French (Togo) + ibus-keyboard + 50 + + + xkb:ke::swa + sw + GPL + Peng Huang <shawn.p.huang@gmail.com> + ke + Swahili (Kenya) + Swahili (Kenya) + ibus-keyboard + 50 + + + xkb:ke:kik:kik + ki + GPL + Peng Huang <shawn.p.huang@gmail.com> + ke + kik + Kikuyu + Kikuyu + ibus-keyboard + 1 + + + xkb:bw::tsn + tn + GPL + Peng Huang <shawn.p.huang@gmail.com> + bw + Tswana + Tswana + ibus-keyboard + 50 + + + xkb:ph::eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + Filipino + Filipino + ibus-keyboard + 50 + + + xkb:ph::bik + bik + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + Filipino + Filipino + ibus-keyboard + 50 + + + xkb:ph::ceb + ceb + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + Filipino + Filipino + ibus-keyboard + 50 + + + xkb:ph::fil + fil + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + Filipino + Filipino + ibus-keyboard + 50 + + + xkb:ph::hil + hil + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + Filipino + Filipino + ibus-keyboard + 50 + + + xkb:ph::ilo + ilo + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + Filipino + Filipino + ibus-keyboard + 50 + + + xkb:ph::pam + pam + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + Filipino + Filipino + ibus-keyboard + 50 + + + xkb:ph::pag + pag + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + Filipino + Filipino + ibus-keyboard + 50 + + + xkb:ph::phi + phi + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + Filipino + Filipino + ibus-keyboard + 50 + + + xkb:ph::tgl + tl + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + Filipino + Filipino + ibus-keyboard + 50 + + + xkb:ph::war + war + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + Filipino + Filipino + ibus-keyboard + 50 + + + xkb:ph:qwerty-bay:bik + bik + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + qwerty-bay + Filipino (QWERTY, Baybayin) + Filipino (QWERTY, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:qwerty-bay:ceb + ceb + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + qwerty-bay + Filipino (QWERTY, Baybayin) + Filipino (QWERTY, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:qwerty-bay:fil + fil + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + qwerty-bay + Filipino (QWERTY, Baybayin) + Filipino (QWERTY, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:qwerty-bay:hil + hil + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + qwerty-bay + Filipino (QWERTY, Baybayin) + Filipino (QWERTY, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:qwerty-bay:ilo + ilo + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + qwerty-bay + Filipino (QWERTY, Baybayin) + Filipino (QWERTY, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:qwerty-bay:pam + pam + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + qwerty-bay + Filipino (QWERTY, Baybayin) + Filipino (QWERTY, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:qwerty-bay:pag + pag + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + qwerty-bay + Filipino (QWERTY, Baybayin) + Filipino (QWERTY, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:qwerty-bay:phi + phi + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + qwerty-bay + Filipino (QWERTY, Baybayin) + Filipino (QWERTY, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:qwerty-bay:tgl + tl + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + qwerty-bay + Filipino (QWERTY, Baybayin) + Filipino (QWERTY, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:qwerty-bay:war + war + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + qwerty-bay + Filipino (QWERTY, Baybayin) + Filipino (QWERTY, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:capewell-dvorak:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-dvorak + Filipino (Capewell-Dvorak, Latin) + Filipino (Capewell-Dvorak, Latin) + ibus-keyboard + 1 + + + xkb:ph:capewell-dvorak:bik + bik + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-dvorak + Filipino (Capewell-Dvorak, Latin) + Filipino (Capewell-Dvorak, Latin) + ibus-keyboard + 1 + + + xkb:ph:capewell-dvorak:ceb + ceb + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-dvorak + Filipino (Capewell-Dvorak, Latin) + Filipino (Capewell-Dvorak, Latin) + ibus-keyboard + 1 + + + xkb:ph:capewell-dvorak:fil + fil + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-dvorak + Filipino (Capewell-Dvorak, Latin) + Filipino (Capewell-Dvorak, Latin) + ibus-keyboard + 1 + + + xkb:ph:capewell-dvorak:hil + hil + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-dvorak + Filipino (Capewell-Dvorak, Latin) + Filipino (Capewell-Dvorak, Latin) + ibus-keyboard + 1 + + + xkb:ph:capewell-dvorak:ilo + ilo + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-dvorak + Filipino (Capewell-Dvorak, Latin) + Filipino (Capewell-Dvorak, Latin) + ibus-keyboard + 1 + + + xkb:ph:capewell-dvorak:pam + pam + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-dvorak + Filipino (Capewell-Dvorak, Latin) + Filipino (Capewell-Dvorak, Latin) + ibus-keyboard + 1 + + + xkb:ph:capewell-dvorak:pag + pag + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-dvorak + Filipino (Capewell-Dvorak, Latin) + Filipino (Capewell-Dvorak, Latin) + ibus-keyboard + 1 + + + xkb:ph:capewell-dvorak:phi + phi + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-dvorak + Filipino (Capewell-Dvorak, Latin) + Filipino (Capewell-Dvorak, Latin) + ibus-keyboard + 1 + + + xkb:ph:capewell-dvorak:tgl + tl + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-dvorak + Filipino (Capewell-Dvorak, Latin) + Filipino (Capewell-Dvorak, Latin) + ibus-keyboard + 1 + + + xkb:ph:capewell-dvorak:war + war + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-dvorak + Filipino (Capewell-Dvorak, Latin) + Filipino (Capewell-Dvorak, Latin) + ibus-keyboard + 1 + + + xkb:ph:capewell-dvorak-bay:bik + bik + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-dvorak-bay + Filipino (Capewell-Dvorak, Baybayin) + Filipino (Capewell-Dvorak, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:capewell-dvorak-bay:ceb + ceb + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-dvorak-bay + Filipino (Capewell-Dvorak, Baybayin) + Filipino (Capewell-Dvorak, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:capewell-dvorak-bay:fil + fil + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-dvorak-bay + Filipino (Capewell-Dvorak, Baybayin) + Filipino (Capewell-Dvorak, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:capewell-dvorak-bay:hil + hil + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-dvorak-bay + Filipino (Capewell-Dvorak, Baybayin) + Filipino (Capewell-Dvorak, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:capewell-dvorak-bay:ilo + ilo + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-dvorak-bay + Filipino (Capewell-Dvorak, Baybayin) + Filipino (Capewell-Dvorak, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:capewell-dvorak-bay:pam + pam + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-dvorak-bay + Filipino (Capewell-Dvorak, Baybayin) + Filipino (Capewell-Dvorak, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:capewell-dvorak-bay:pag + pag + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-dvorak-bay + Filipino (Capewell-Dvorak, Baybayin) + Filipino (Capewell-Dvorak, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:capewell-dvorak-bay:phi + phi + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-dvorak-bay + Filipino (Capewell-Dvorak, Baybayin) + Filipino (Capewell-Dvorak, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:capewell-dvorak-bay:tgl + tl + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-dvorak-bay + Filipino (Capewell-Dvorak, Baybayin) + Filipino (Capewell-Dvorak, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:capewell-dvorak-bay:war + war + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-dvorak-bay + Filipino (Capewell-Dvorak, Baybayin) + Filipino (Capewell-Dvorak, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:capewell-qwerf2k6:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-qwerf2k6 + Filipino (Capewell-QWERF 2006, Latin) + Filipino (Capewell-QWERF 2006, Latin) + ibus-keyboard + 1 + + + xkb:ph:capewell-qwerf2k6:bik + bik + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-qwerf2k6 + Filipino (Capewell-QWERF 2006, Latin) + Filipino (Capewell-QWERF 2006, Latin) + ibus-keyboard + 1 + + + xkb:ph:capewell-qwerf2k6:ceb + ceb + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-qwerf2k6 + Filipino (Capewell-QWERF 2006, Latin) + Filipino (Capewell-QWERF 2006, Latin) + ibus-keyboard + 1 + + + xkb:ph:capewell-qwerf2k6:fil + fil + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-qwerf2k6 + Filipino (Capewell-QWERF 2006, Latin) + Filipino (Capewell-QWERF 2006, Latin) + ibus-keyboard + 1 + + + xkb:ph:capewell-qwerf2k6:hil + hil + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-qwerf2k6 + Filipino (Capewell-QWERF 2006, Latin) + Filipino (Capewell-QWERF 2006, Latin) + ibus-keyboard + 1 + + + xkb:ph:capewell-qwerf2k6:ilo + ilo + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-qwerf2k6 + Filipino (Capewell-QWERF 2006, Latin) + Filipino (Capewell-QWERF 2006, Latin) + ibus-keyboard + 1 + + + xkb:ph:capewell-qwerf2k6:pam + pam + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-qwerf2k6 + Filipino (Capewell-QWERF 2006, Latin) + Filipino (Capewell-QWERF 2006, Latin) + ibus-keyboard + 1 + + + xkb:ph:capewell-qwerf2k6:pag + pag + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-qwerf2k6 + Filipino (Capewell-QWERF 2006, Latin) + Filipino (Capewell-QWERF 2006, Latin) + ibus-keyboard + 1 + + + xkb:ph:capewell-qwerf2k6:phi + phi + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-qwerf2k6 + Filipino (Capewell-QWERF 2006, Latin) + Filipino (Capewell-QWERF 2006, Latin) + ibus-keyboard + 1 + + + xkb:ph:capewell-qwerf2k6:tgl + tl + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-qwerf2k6 + Filipino (Capewell-QWERF 2006, Latin) + Filipino (Capewell-QWERF 2006, Latin) + ibus-keyboard + 1 + + + xkb:ph:capewell-qwerf2k6:war + war + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-qwerf2k6 + Filipino (Capewell-QWERF 2006, Latin) + Filipino (Capewell-QWERF 2006, Latin) + ibus-keyboard + 1 + + + xkb:ph:capewell-qwerf2k6-bay:bik + bik + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-qwerf2k6-bay + Filipino (Capewell-QWERF 2006, Baybayin) + Filipino (Capewell-QWERF 2006, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:capewell-qwerf2k6-bay:ceb + ceb + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-qwerf2k6-bay + Filipino (Capewell-QWERF 2006, Baybayin) + Filipino (Capewell-QWERF 2006, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:capewell-qwerf2k6-bay:fil + fil + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-qwerf2k6-bay + Filipino (Capewell-QWERF 2006, Baybayin) + Filipino (Capewell-QWERF 2006, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:capewell-qwerf2k6-bay:hil + hil + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-qwerf2k6-bay + Filipino (Capewell-QWERF 2006, Baybayin) + Filipino (Capewell-QWERF 2006, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:capewell-qwerf2k6-bay:ilo + ilo + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-qwerf2k6-bay + Filipino (Capewell-QWERF 2006, Baybayin) + Filipino (Capewell-QWERF 2006, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:capewell-qwerf2k6-bay:pam + pam + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-qwerf2k6-bay + Filipino (Capewell-QWERF 2006, Baybayin) + Filipino (Capewell-QWERF 2006, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:capewell-qwerf2k6-bay:pag + pag + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-qwerf2k6-bay + Filipino (Capewell-QWERF 2006, Baybayin) + Filipino (Capewell-QWERF 2006, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:capewell-qwerf2k6-bay:phi + phi + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-qwerf2k6-bay + Filipino (Capewell-QWERF 2006, Baybayin) + Filipino (Capewell-QWERF 2006, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:capewell-qwerf2k6-bay:tgl + tl + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-qwerf2k6-bay + Filipino (Capewell-QWERF 2006, Baybayin) + Filipino (Capewell-QWERF 2006, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:capewell-qwerf2k6-bay:war + war + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + capewell-qwerf2k6-bay + Filipino (Capewell-QWERF 2006, Baybayin) + Filipino (Capewell-QWERF 2006, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:colemak:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + colemak + Filipino (Colemak, Latin) + Filipino (Colemak, Latin) + ibus-keyboard + 1 + + + xkb:ph:colemak:bik + bik + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + colemak + Filipino (Colemak, Latin) + Filipino (Colemak, Latin) + ibus-keyboard + 1 + + + xkb:ph:colemak:ceb + ceb + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + colemak + Filipino (Colemak, Latin) + Filipino (Colemak, Latin) + ibus-keyboard + 1 + + + xkb:ph:colemak:fil + fil + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + colemak + Filipino (Colemak, Latin) + Filipino (Colemak, Latin) + ibus-keyboard + 1 + + + xkb:ph:colemak:hil + hil + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + colemak + Filipino (Colemak, Latin) + Filipino (Colemak, Latin) + ibus-keyboard + 1 + + + xkb:ph:colemak:ilo + ilo + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + colemak + Filipino (Colemak, Latin) + Filipino (Colemak, Latin) + ibus-keyboard + 1 + + + xkb:ph:colemak:pam + pam + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + colemak + Filipino (Colemak, Latin) + Filipino (Colemak, Latin) + ibus-keyboard + 1 + + + xkb:ph:colemak:pag + pag + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + colemak + Filipino (Colemak, Latin) + Filipino (Colemak, Latin) + ibus-keyboard + 1 + + + xkb:ph:colemak:phi + phi + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + colemak + Filipino (Colemak, Latin) + Filipino (Colemak, Latin) + ibus-keyboard + 1 + + + xkb:ph:colemak:tgl + tl + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + colemak + Filipino (Colemak, Latin) + Filipino (Colemak, Latin) + ibus-keyboard + 1 + + + xkb:ph:colemak:war + war + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + colemak + Filipino (Colemak, Latin) + Filipino (Colemak, Latin) + ibus-keyboard + 1 + + + xkb:ph:colemak-bay:bik + bik + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + colemak-bay + Filipino (Colemak, Baybayin) + Filipino (Colemak, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:colemak-bay:ceb + ceb + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + colemak-bay + Filipino (Colemak, Baybayin) + Filipino (Colemak, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:colemak-bay:fil + fil + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + colemak-bay + Filipino (Colemak, Baybayin) + Filipino (Colemak, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:colemak-bay:hil + hil + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + colemak-bay + Filipino (Colemak, Baybayin) + Filipino (Colemak, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:colemak-bay:ilo + ilo + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + colemak-bay + Filipino (Colemak, Baybayin) + Filipino (Colemak, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:colemak-bay:pam + pam + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + colemak-bay + Filipino (Colemak, Baybayin) + Filipino (Colemak, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:colemak-bay:pag + pag + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + colemak-bay + Filipino (Colemak, Baybayin) + Filipino (Colemak, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:colemak-bay:phi + phi + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + colemak-bay + Filipino (Colemak, Baybayin) + Filipino (Colemak, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:colemak-bay:tgl + tl + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + colemak-bay + Filipino (Colemak, Baybayin) + Filipino (Colemak, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:colemak-bay:war + war + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + colemak-bay + Filipino (Colemak, Baybayin) + Filipino (Colemak, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:dvorak:eng + en + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + dvorak + Filipino (Dvorak, Latin) + Filipino (Dvorak, Latin) + ibus-keyboard + 1 + + + xkb:ph:dvorak:bik + bik + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + dvorak + Filipino (Dvorak, Latin) + Filipino (Dvorak, Latin) + ibus-keyboard + 1 + + + xkb:ph:dvorak:ceb + ceb + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + dvorak + Filipino (Dvorak, Latin) + Filipino (Dvorak, Latin) + ibus-keyboard + 1 + + + xkb:ph:dvorak:fil + fil + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + dvorak + Filipino (Dvorak, Latin) + Filipino (Dvorak, Latin) + ibus-keyboard + 1 + + + xkb:ph:dvorak:hil + hil + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + dvorak + Filipino (Dvorak, Latin) + Filipino (Dvorak, Latin) + ibus-keyboard + 1 + + + xkb:ph:dvorak:ilo + ilo + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + dvorak + Filipino (Dvorak, Latin) + Filipino (Dvorak, Latin) + ibus-keyboard + 1 + + + xkb:ph:dvorak:pam + pam + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + dvorak + Filipino (Dvorak, Latin) + Filipino (Dvorak, Latin) + ibus-keyboard + 1 + + + xkb:ph:dvorak:pag + pag + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + dvorak + Filipino (Dvorak, Latin) + Filipino (Dvorak, Latin) + ibus-keyboard + 1 + + + xkb:ph:dvorak:phi + phi + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + dvorak + Filipino (Dvorak, Latin) + Filipino (Dvorak, Latin) + ibus-keyboard + 1 + + + xkb:ph:dvorak:tgl + tl + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + dvorak + Filipino (Dvorak, Latin) + Filipino (Dvorak, Latin) + ibus-keyboard + 1 + + + xkb:ph:dvorak:war + war + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + dvorak + Filipino (Dvorak, Latin) + Filipino (Dvorak, Latin) + ibus-keyboard + 1 + + + xkb:ph:dvorak-bay:bik + bik + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + dvorak-bay + Filipino (Dvorak, Baybayin) + Filipino (Dvorak, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:dvorak-bay:ceb + ceb + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + dvorak-bay + Filipino (Dvorak, Baybayin) + Filipino (Dvorak, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:dvorak-bay:fil + fil + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + dvorak-bay + Filipino (Dvorak, Baybayin) + Filipino (Dvorak, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:dvorak-bay:hil + hil + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + dvorak-bay + Filipino (Dvorak, Baybayin) + Filipino (Dvorak, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:dvorak-bay:ilo + ilo + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + dvorak-bay + Filipino (Dvorak, Baybayin) + Filipino (Dvorak, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:dvorak-bay:pam + pam + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + dvorak-bay + Filipino (Dvorak, Baybayin) + Filipino (Dvorak, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:dvorak-bay:pag + pag + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + dvorak-bay + Filipino (Dvorak, Baybayin) + Filipino (Dvorak, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:dvorak-bay:phi + phi + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + dvorak-bay + Filipino (Dvorak, Baybayin) + Filipino (Dvorak, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:dvorak-bay:tgl + tl + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + dvorak-bay + Filipino (Dvorak, Baybayin) + Filipino (Dvorak, Baybayin) + ibus-keyboard + 1 + + + xkb:ph:dvorak-bay:war + war + GPL + Peng Huang <shawn.p.huang@gmail.com> + ph + dvorak-bay + Filipino (Dvorak, Baybayin) + Filipino (Dvorak, Baybayin) + ibus-keyboard + 1 + + + xkb:md::ron + ro + GPL + Peng Huang <shawn.p.huang@gmail.com> + md + Moldavian + Moldavian + ibus-keyboard + 50 + + + xkb:md:gag:gag + gag + GPL + Peng Huang <shawn.p.huang@gmail.com> + md + gag + Moldavian (Gagauz) + Moldavian (Gagauz) + ibus-keyboard + 1 + + + xkb:id::ind + id + GPL + Peng Huang <shawn.p.huang@gmail.com> + id + Indonesian (Latin) + Indonesian (Latin) + ibus-keyboard + 50 + + + xkb:id::msa + ms + GPL + Peng Huang <shawn.p.huang@gmail.com> + id + Indonesian (Latin) + Indonesian (Latin) + ibus-keyboard + 50 + + + xkb:id::min + min + GPL + Peng Huang <shawn.p.huang@gmail.com> + id + Indonesian (Latin) + Indonesian (Latin) + ibus-keyboard + 50 + + + xkb:id::ace + ace + GPL + Peng Huang <shawn.p.huang@gmail.com> + id + Indonesian (Latin) + Indonesian (Latin) + ibus-keyboard + 50 + + + xkb:id::bjn + bjn + GPL + Peng Huang <shawn.p.huang@gmail.com> + id + Indonesian (Latin) + Indonesian (Latin) + ibus-keyboard + 50 + + + xkb:id::tsg + tsg + GPL + Peng Huang <shawn.p.huang@gmail.com> + id + Indonesian (Latin) + Indonesian (Latin) + ibus-keyboard + 50 + + + xkb:id::mfa + mfa + GPL + Peng Huang <shawn.p.huang@gmail.com> + id + Indonesian (Latin) + Indonesian (Latin) + ibus-keyboard + 50 + + + xkb:id:phonetic:ind + id + GPL + Peng Huang <shawn.p.huang@gmail.com> + id + phonetic + Indonesian (Arab Pegon, phonetic) + Indonesian (Arab Pegon, phonetic) + ibus-keyboard + 1 + + + xkb:id:phonetic:msa + ms + GPL + Peng Huang <shawn.p.huang@gmail.com> + id + phonetic + Indonesian (Arab Pegon, phonetic) + Indonesian (Arab Pegon, phonetic) + ibus-keyboard + 1 + + + xkb:id:phonetic:min + min + GPL + Peng Huang <shawn.p.huang@gmail.com> + id + phonetic + Indonesian (Arab Pegon, phonetic) + Indonesian (Arab Pegon, phonetic) + ibus-keyboard + 1 + + + xkb:id:phonetic:ace + ace + GPL + Peng Huang <shawn.p.huang@gmail.com> + id + phonetic + Indonesian (Arab Pegon, phonetic) + Indonesian (Arab Pegon, phonetic) + ibus-keyboard + 1 + + + xkb:id:phonetic:bjn + bjn + GPL + Peng Huang <shawn.p.huang@gmail.com> + id + phonetic + Indonesian (Arab Pegon, phonetic) + Indonesian (Arab Pegon, phonetic) + ibus-keyboard + 1 + + + xkb:id:phonetic:tsg + tsg + GPL + Peng Huang <shawn.p.huang@gmail.com> + id + phonetic + Indonesian (Arab Pegon, phonetic) + Indonesian (Arab Pegon, phonetic) + ibus-keyboard + 1 + + + xkb:id:phonetic:mfa + mfa + GPL + Peng Huang <shawn.p.huang@gmail.com> + id + phonetic + Indonesian (Arab Pegon, phonetic) + Indonesian (Arab Pegon, phonetic) + ibus-keyboard + 1 + + + xkb:id:phoneticx:ind + id + GPL + Peng Huang <shawn.p.huang@gmail.com> + id + phoneticx + Indonesian (Arab Pegon, extended phonetic) + Indonesian (Arab Pegon, extended phonetic) + ibus-keyboard + 1 + + + xkb:id:phoneticx:msa + ms + GPL + Peng Huang <shawn.p.huang@gmail.com> + id + phoneticx + Indonesian (Arab Pegon, extended phonetic) + Indonesian (Arab Pegon, extended phonetic) + ibus-keyboard + 1 + + + xkb:id:phoneticx:min + min + GPL + Peng Huang <shawn.p.huang@gmail.com> + id + phoneticx + Indonesian (Arab Pegon, extended phonetic) + Indonesian (Arab Pegon, extended phonetic) + ibus-keyboard + 1 + + + xkb:id:phoneticx:ace + ace + GPL + Peng Huang <shawn.p.huang@gmail.com> + id + phoneticx + Indonesian (Arab Pegon, extended phonetic) + Indonesian (Arab Pegon, extended phonetic) + ibus-keyboard + 1 + + + xkb:id:phoneticx:bjn + bjn + GPL + Peng Huang <shawn.p.huang@gmail.com> + id + phoneticx + Indonesian (Arab Pegon, extended phonetic) + Indonesian (Arab Pegon, extended phonetic) + ibus-keyboard + 1 + + + xkb:id:phoneticx:tsg + tsg + GPL + Peng Huang <shawn.p.huang@gmail.com> + id + phoneticx + Indonesian (Arab Pegon, extended phonetic) + Indonesian (Arab Pegon, extended phonetic) + ibus-keyboard + 1 + + + xkb:id:phoneticx:mfa + mfa + GPL + Peng Huang <shawn.p.huang@gmail.com> + id + phoneticx + Indonesian (Arab Pegon, extended phonetic) + Indonesian (Arab Pegon, extended phonetic) + ibus-keyboard + 1 + + + xkb:jv::jav + jv + GPL + Peng Huang <shawn.p.huang@gmail.com> + jv + Indonesian (Javanese) + Indonesian (Javanese) + ibus-keyboard + 50 + + + xkb:my::ind + id + GPL + Peng Huang <shawn.p.huang@gmail.com> + my + Malay (Jawi, Arabic Keyboard) + Malay (Jawi, Arabic Keyboard) + ibus-keyboard + 50 + + + xkb:my::msa + ms + GPL + Peng Huang <shawn.p.huang@gmail.com> + my + Malay (Jawi, Arabic Keyboard) + Malay (Jawi, Arabic Keyboard) + ibus-keyboard + 50 + + + xkb:my::min + min + GPL + Peng Huang <shawn.p.huang@gmail.com> + my + Malay (Jawi, Arabic Keyboard) + Malay (Jawi, Arabic Keyboard) + ibus-keyboard + 50 + + + xkb:my::ace + ace + GPL + Peng Huang <shawn.p.huang@gmail.com> + my + Malay (Jawi, Arabic Keyboard) + Malay (Jawi, Arabic Keyboard) + ibus-keyboard + 50 + + + xkb:my::bjn + bjn + GPL + Peng Huang <shawn.p.huang@gmail.com> + my + Malay (Jawi, Arabic Keyboard) + Malay (Jawi, Arabic Keyboard) + ibus-keyboard + 50 + + + xkb:my::tsg + tsg + GPL + Peng Huang <shawn.p.huang@gmail.com> + my + Malay (Jawi, Arabic Keyboard) + Malay (Jawi, Arabic Keyboard) + ibus-keyboard + 50 + + + xkb:my::mfa + mfa + GPL + Peng Huang <shawn.p.huang@gmail.com> + my + Malay (Jawi, Arabic Keyboard) + Malay (Jawi, Arabic Keyboard) + ibus-keyboard + 50 + + + xkb:my:phonetic:ind + id + GPL + Peng Huang <shawn.p.huang@gmail.com> + my + phonetic + Malay (Jawi, phonetic) + Malay (Jawi, phonetic) + ibus-keyboard + 1 + + + xkb:my:phonetic:msa + ms + GPL + Peng Huang <shawn.p.huang@gmail.com> + my + phonetic + Malay (Jawi, phonetic) + Malay (Jawi, phonetic) + ibus-keyboard + 1 + + + xkb:my:phonetic:min + min + GPL + Peng Huang <shawn.p.huang@gmail.com> + my + phonetic + Malay (Jawi, phonetic) + Malay (Jawi, phonetic) + ibus-keyboard + 1 + + + xkb:my:phonetic:ace + ace + GPL + Peng Huang <shawn.p.huang@gmail.com> + my + phonetic + Malay (Jawi, phonetic) + Malay (Jawi, phonetic) + ibus-keyboard + 1 + + + xkb:my:phonetic:bjn + bjn + GPL + Peng Huang <shawn.p.huang@gmail.com> + my + phonetic + Malay (Jawi, phonetic) + Malay (Jawi, phonetic) + ibus-keyboard + 1 + + + xkb:my:phonetic:tsg + tsg + GPL + Peng Huang <shawn.p.huang@gmail.com> + my + phonetic + Malay (Jawi, phonetic) + Malay (Jawi, phonetic) + ibus-keyboard + 1 + + + xkb:my:phonetic:mfa + mfa + GPL + Peng Huang <shawn.p.huang@gmail.com> + my + phonetic + Malay (Jawi, phonetic) + Malay (Jawi, phonetic) + ibus-keyboard + 1 + + + diff --git a/engine/simple.xml.in.in b/engine/simple.xml.in.in deleted file mode 100644 index 25db57821..000000000 --- a/engine/simple.xml.in.in +++ /dev/null @@ -1,540 +0,0 @@ - - org.freedesktop.IBus.Simple - A table based simple engine - ${libexecdir}/ibus-engine-simple - @VERSION@ - Peng Huang <shawn.p.huang@gmail.com> - GPL - http://code.google.com/p/ibus - ibus - - - xkb:us::eng - eng - GPL - Peng Huang <shawn.p.huang@gmail.com> - us - English (US) - English (US) - ibus-keyboard - 99 - - - xkb:us:intl:eng - eng - GPL - Peng Huang <shawn.p.huang@gmail.com> - us(intl) - English (US, international with dead keys) - English (US, international with dead keys) - ibus-keyboard - 99 - - - xkb:us:colemak:eng - eng - GPL - Peng Huang <shawn.p.huang@gmail.com> - us(colemak) - English (Colemak) - English (Colemak) - ibus-keyboard - 99 - - - xkb:us:dvorak:eng - eng - GPL - Peng Huang <shawn.p.huang@gmail.com> - us(dvorak) - English (Dvorak) - English (Dvorak) - ibus-keyboard - 99 - - - xkb:us:altgr-intl:eng - eng - GPL - Peng Huang <shawn.p.huang@gmail.com> - us(altgr-intl) - English (international AltGr dead keys) - English (international AltGr dead keys) - ibus-keyboard - 99 - - - xkb:us:altgr-intl:eng - eng - GPL - Peng Huang <shawn.p.huang@gmail.com> - us(altgr-intl) - English (international AltGr dead keys) - English (international AltGr dead keys) - ibus-keyboard - 99 - - - xkb:be::ger - ger - GPL - Peng Huang <shawn.p.huang@gmail.com> - be - Belgian - Belgian - ibus-keyboard - 99 - - - xkb:be::nld - nld - GPL - Peng Huang <shawn.p.huang@gmail.com> - be - Belgian - Belgian - ibus-keyboard - 99 - - - xkb:be::fra - fra - GPL - Peng Huang <shawn.p.huang@gmail.com> - be - Belgian - Belgian - ibus-keyboard - 99 - - - xkb:br::por - por - GPL - Peng Huang <shawn.p.huang@gmail.com> - br - Portuguese (Brazil) - Portuguese (Brazil) - ibus-keyboard - 99 - - - xkb:bg::bul - bul - GPL - Peng Huang <shawn.p.huang@gmail.com> - bg - Bulgarian - Bulgarian - ibus-keyboard - 99 - - - xkb:bg:phonetic:bul - bul - GPL - Peng Huang <shawn.p.huang@gmail.com> - bg(phonetic) - Bulgarian (traditional phonetic) - Bulgarian (traditional phonetic) - ibus-keyboard - 99 - - - xkb:ca::fra - fra - GPL - Peng Huang <shawn.p.huang@gmail.com> - ca - French (Canada) - French (Canada) - ibus-keyboard - 99 - - - xkb:ca:eng:eng - eng - GPL - Peng Huang <shawn.p.huang@gmail.com> - ca(eng) - English (Canada) - English (Canada) - ibus-keyboard - 99 - - - xkb:hr::scr - scr - GPL - Peng Huang <shawn.p.huang@gmail.com> - hr - Croatian - Croatian - ibus-keyboard - 99 - - - xkb:cz::cze - cze - GPL - Peng Huang <shawn.p.huang@gmail.com> - cz - Czech - Czech - ibus-keyboard - 99 - - - xkb:dk::dan - dan - GPL - Peng Huang <shawn.p.huang@gmail.com> - dk - Danish - Danish - ibus-keyboard - 99 - - - xkb:ee::est - est - GPL - Peng Huang <shawn.p.huang@gmail.com> - ee - Estonian - Estonian - ibus-keyboard - 99 - - - xkb:fi::fin - fin - GPL - Peng Huang <shawn.p.huang@gmail.com> - fi - Finnish - Finnish - ibus-keyboard - 99 - - - xkb:fr::fra - fra - GPL - Peng Huang <shawn.p.huang@gmail.com> - fr - French - French - ibus-keyboard - 99 - - - xkb:de::ger - ger - GPL - Peng Huang <shawn.p.huang@gmail.com> - de - German - German - ibus-keyboard - 99 - - - xkb:de:neo:ger - ger - GPL - Peng Huang <shawn.p.huang@gmail.com> - de(neo) - German (Neo 2) - German (Neo 2) - ibus-keyboard - 99 - - - xkb:gr::gre - gre - GPL - Peng Huang <shawn.p.huang@gmail.com> - gr - Greek - Greek - ibus-keyboard - 99 - - - xkb:hu::hun - hun - GPL - Peng Huang <shawn.p.huang@gmail.com> - hu - Hungarian - Hungarian - ibus-keyboard - 99 - - - xkb:il::heb - heb - GPL - Peng Huang <shawn.p.huang@gmail.com> - il - Hebrew - Hebrew - ibus-keyboard - 99 - - - xkb:it::ita - ita - GPL - Peng Huang <shawn.p.huang@gmail.com> - it - Italian - Italian - ibus-keyboard - 99 - - - xkb:jp::jpn - jpn - GPL - Peng Huang <shawn.p.huang@gmail.com> - jp - Japanese - Japanese - ibus-keyboard - 99 - - - xkb:latam::spa - spa - GPL - Peng Huang <shawn.p.huang@gmail.com> - latam - Spanish (Latin American) - Spanish (Latin American) - ibus-keyboard - 99 - - - xkb:lt::lit - lit - GPL - Peng Huang <shawn.p.huang@gmail.com> - lt - Lithuanian - Lithuanian - ibus-keyboard - 99 - - - xkb:lv:apostrophe:lav - lav - GPL - Peng Huang <shawn.p.huang@gmail.com> - lv(apostrophe) - Latvian (apostrophe variant) - Latvian (apostrophe variant) - ibus-keyboard - 99 - - - xkb:pl::pol - pol - GPL - Peng Huang <shawn.p.huang@gmail.com> - pl - Polish - Polish - ibus-keyboard - 99 - - - xkb:pt::por - por - GPL - Peng Huang <shawn.p.huang@gmail.com> - pt - Portuguese - Portuguese - ibus-keyboard - 99 - - - xkb:ro::rum - rum - GPL - Peng Huang <shawn.p.huang@gmail.com> - ro - Romanian - Romanian - ibus-keyboard - 99 - - - xkb:ru::rus - rus - GPL - Peng Huang <shawn.p.huang@gmail.com> - ru - Russian - Russian - ibus-keyboard - 99 - - - xkb:ru:phonetic:rus - rus - GPL - Peng Huang <shawn.p.huang@gmail.com> - ru(phonetic) - Russian (phonetic) - Russian (phonetic) - ibus-keyboard - 99 - - - xkb:rs::srp - srp - GPL - Peng Huang <shawn.p.huang@gmail.com> - rs - Serbian - Serbian - ibus-keyboard - 99 - - - xkb:si::slv - slv - GPL - Peng Huang <shawn.p.huang@gmail.com> - si - Slovenian - Slovenian - ibus-keyboard - 99 - - - xkb:sk::slo - slo - GPL - Peng Huang <shawn.p.huang@gmail.com> - sk - Slovak - Slovak - ibus-keyboard - 99 - - - xkb:es::spa - spa - GPL - Peng Huang <shawn.p.huang@gmail.com> - es - Spanish - Spanish - ibus-keyboard - 99 - - - xkb:es:cat:cat - cat - GPL - Peng Huang <shawn.p.huang@gmail.com> - es(cat) - Catalan (Spain, with middle-dot L) - Catalan (Spain, with middle-dot L) - ibus-keyboard - 99 - - - xkb:se::swe - swe - GPL - Peng Huang <shawn.p.huang@gmail.com> - se - Swedish - Swedish - ibus-keyboard - 99 - - - xkb:ch::ger - ger - GPL - Peng Huang <shawn.p.huang@gmail.com> - ch - German (Switzerland) - German (Switzerland) - ibus-keyboard - 99 - - - xkb:ch:fr:fra - fra - GPL - Peng Huang <shawn.p.huang@gmail.com> - ch(fr) - French (Switzerland) - French (Switzerland) - ibus-keyboard - 99 - - - xkb:tr::tur - tur - GPL - Peng Huang <shawn.p.huang@gmail.com> - tr - Turkish - Turkish - ibus-keyboard - 99 - - - xkb:ua::ukr - ukr - GPL - Peng Huang <shawn.p.huang@gmail.com> - ua - Ukrainian - Ukrainian - ibus-keyboard - 99 - - - xkb:gb:extd:eng - eng - GPL - Peng Huang <shawn.p.huang@gmail.com> - gb(extd) - English (UK, extended WinKeys) - English (UK, extended WinKeys) - ibus-keyboard - 99 - - - xkb:gb:dvorak:eng - eng - GPL - Peng Huang <shawn.p.huang@gmail.com> - gb(dvorak) - English (UK, Dvorak) - English (UK, Dvorak) - ibus-keyboard - 99 - - - xkb:kr:kr104:kor - kor - GPL - Peng Huang <shawn.p.huang@gmail.com> - kr(kr104) - Korean (101/104 key compatible) - Korean (101/104 key compatible) - ibus-keyboard - 99 - - - diff --git a/ibus.spec.in b/ibus.spec.in index 58cac3863..40aead167 100644 --- a/ibus.spec.in +++ b/ibus.spec.in @@ -1,9 +1,11 @@ %{!?python_sitelib: %define python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")} +%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")} %{!?gtk2_binary_version: %define gtk2_binary_version %(pkg-config --variable=gtk_binary_version gtk+-2.0)} %{!?gtk3_binary_version: %define gtk3_binary_version %(pkg-config --variable=gtk_binary_version gtk+-3.0)} # Build flags %define build_python_library 0 +%define build_emoji_dictionary 1 %define glib_ver %([ -a %{_libdir}/pkgconfig/glib-2.0.pc ] && pkg-config --modversion glib-2.0 | cut -d. -f 1,2 || echo -n "999") %define gconf2_version 2.12.0 @@ -16,8 +18,8 @@ Release: 1%{?dist} Summary: Intelligent Input Bus for Linux OS License: LGPLv2+ Group: System Environment/Libraries -URL: http://code.google.com/p/ibus/ -Source0: http://ibus.googlecode.com/files/%{name}-%{version}.tar.gz +URL: https://github.com/ibus/ibus/wiki +Source0: https://github.com/ibus/ibus/releases/download/%{version}/%{name}-%{version}.tar.gz Source1: xinput-ibus # Patch0: ibus-HEAD.patch @@ -35,30 +37,30 @@ BuildRequires: dbus-python-devel >= %{dbus_python_version} BuildRequires: desktop-file-utils BuildRequires: gtk-doc BuildRequires: GConf2-devel +BuildRequires: dconf-devel BuildRequires: pygobject2-devel BuildRequires: intltool BuildRequires: iso-codes-devel +%if %build_emoji_dictionary +BuildRequires: nodejs-emojione +BuildRequires: json-glib +%endif Requires: %{name}-libs = %{version}-%{release} Requires: %{name}-gtk2 = %{version}-%{release} Requires: %{name}-gtk3 = %{version}-%{release} +Requires: %{name}-conf = %{version}-%{release} Requires: pygtk2 -Requires: pyxdg Requires: iso-codes Requires: dbus-python >= %{dbus_python_version} Requires: im-chooser >= %{im_chooser_version} -Requires: GConf2 >= %{gconf2_version} Requires: notify-python Requires: librsvg2 Requires(post): desktop-file-utils Requires(postun): desktop-file-utils -Requires(pre): GConf2 >= %{gconf2_version} -Requires(post): GConf2 >= %{gconf2_version} -Requires(preun): GConf2 >= %{gconf2_version} - Requires(post): %{_sbindir}/alternatives Requires(postun): %{_sbindir}/alternatives @@ -79,6 +81,29 @@ Requires: dbus >= 1.2.4 %description libs This package contains the libraries for IBus +%package gconf +Summary: IBus configuration module using GConf +Group: System Environment/Libraries +Provides: %{name}-conf = %{version}-%{release} +Requires: %{name} = %{version}-%{release} +Requires: GConf2 >= %{gconf2_version} +Requires(pre): GConf2 >= %{gconf2_version} +Requires(post): GConf2 >= %{gconf2_version} +Requires(preun): GConf2 >= %{gconf2_version} + +%description gconf +This package contains ibus configuration module using GConf + +%package dconf +Summary: IBus configuration module using DConf +Group: System Environment/Libraries +Provides: %{name}-conf = %{version}-%{release} +Requires: %{name} = %{version}-%{release} +Requires(posttrans): dconf + +%description dconf +This package contains ibus configuration module using DConf + %package gtk2 Summary: IBus im module for gtk2 Group: System Environment/Libraries @@ -124,13 +149,19 @@ The ibus-devel-docs package contains developer documentation for ibus %build -OPTIONS="--disable-static --enable-gtk2 --enable-gtk3 --enable-xim --disable-gtk-doc --enable-introspection" +OPTIONS="--disable-static --enable-gtk2 --enable-gtk3 --enable-xim --disable-gtk-doc --enable-introspection --enable-gconf" %if %{build_python_library} OPTIONS="$OPTIONS --enable-python-library" %else OPTIONS="$OPTIONS --disable-python-library" %endif +%if %build_emoji_dictionary +OPTIONS="$OPTIONS --enable-emoji-dict" +%else +OPTIONS="$OPTIONS --disable-emoji-dict" +%endif + %configure $OPTIONS @@ -167,16 +198,17 @@ touch --no-create %{_datadir}/icons/hicolor || : %{_sbindir}/alternatives --install %{_sysconfdir}/X11/xinit/xinputrc xinputrc %{_xinputconf} 83 || : +%post gconf export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source` gconftool-2 --makefile-install-rule %{_sysconfdir}/gconf/schemas/ibus.schemas >& /dev/null || : -%pre +%pre gconf if [ "$1" -gt 1 ]; then export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source` gconftool-2 --makefile-uninstall-rule %{_sysconfdir}/gconf/schemas/ibus.schemas >& /dev/null || : fi -%preun +%preun gconf if [ "$1" -eq 0 ]; then export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source` gconftool-2 --makefile-uninstall-rule %{_sysconfdir}/gconf/schemas/ibus.schemas >& /dev/null || : @@ -194,6 +226,16 @@ if [ "$1" = "0" ]; then [ -L %{_sysconfdir}/alternatives/xinputrc -a "`readlink %{_sysconfdir}/alternatives/xinputrc`" = "%{_xinputconf}" ] && %{_sbindir}/alternatives --auto xinputrc || : fi +%postun dconf +if [ "$1" -eq 0 ] ; then + /usr/bin/glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || : + rm -f %{_sysconfdir}/dconf/db/ibus +fi + +%posttrans dconf +/usr/bin/glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || : +dconf update &> /dev/null || : + %post libs -p /sbin/ldconfig %postun libs -p /sbin/ldconfig @@ -219,14 +261,23 @@ fi %{python_sitelib}/ibus/* %endif +%{python_sitearch}/gi/overrides/IBus.py* + %dir %{_datadir}/ibus/ %{_bindir}/ibus %{_bindir}/ibus-daemon %{_bindir}/ibus-setup -%{_datadir}/ibus/* +%{_datadir}/ibus/component/gtkpanel.xml +%{_datadir}/ibus/component/simple.xml +%if %build_emoji_dictionary +%{_datadir}/ibus/dicts +%endif +%{_datadir}/ibus/keymaps/* +%{_datadir}/ibus/setup/* + + %{_datadir}/applications/* %{_datadir}/icons/hicolor/*/apps/* -%{_libexecdir}/ibus-gconf %if %{build_python_library} %{_libexecdir}/ibus-ui-gtk %endif @@ -234,8 +285,7 @@ fi %{_libexecdir}/ibus-x11 %{_libexecdir}/ibus-engine-simple # %{_sysconfdir}/xdg/autostart/ibus.desktop -%{_sysconfdir}/gconf/schemas/ibus.schemas -%{_sysconfdir}/bash_completion.d/ibus.bash +%{_datadir}/bash-completion/completions/ibus.bash %config %{_xinputconf} %files libs @@ -243,6 +293,21 @@ fi %{_libdir}/libibus-1.0.so.* %{_libdir}/girepository-1.0/IBus-1.0.typelib +%files gconf +%defattr(-,root,root,-) +%{_datadir}/ibus/component/gconf.xml +%{_libexecdir}/ibus-gconf +%{_sysconfdir}/gconf/schemas/ibus.schemas + +%files dconf +%defattr(-,root,root,-) +%{_datadir}/ibus/component/dconf.xml +%{_libexecdir}/ibus-dconf +%{_sysconfdir}/dconf/db/ibus.d +%{_sysconfdir}/dconf/profile/ibus +%{_datadir}/GConf/gsettings/ibus.convert +%{_datadir}/glib-2.0/schemas/org.freedesktop.ibus.gschema.xml + %files gtk2 %defattr(-,root,root,-) %{_libdir}/gtk-2.0/%{gtk2_binary_version}/immodules/im-ibus.so diff --git a/ibus/Makefile.am b/ibus/Makefile.am index c71df1b76..0ed14823f 100644 --- a/ibus/Makefile.am +++ b/ibus/Makefile.am @@ -2,27 +2,29 @@ # # ibus - The Input Bus # -# Copyright (c) 2007-2010 Peng Huang -# Copyright (c) 2007-2010 Red Hat, Inc. +# Copyright (c) 2007-2014 Peng Huang +# Copyright (c) 2007-2014 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA SUBDIRS = \ interface \ $(NULL) +PYTHON = $(PYTHON2) + ibus_PYTHON = \ ascii.py \ application.py \ @@ -56,7 +58,7 @@ nodist_ibus_PYTHON = \ _config.py \ $(NULL) -ibusdir = @pkgpythondir@ +ibusdir = @pkgpython2dir@ EXTRA_DIST = \ _config.py.in \ diff --git a/ibus/__init__.py b/ibus/__init__.py index 933bba7e3..1c16f3022 100644 --- a/ibus/__init__.py +++ b/ibus/__init__.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA import warnings warnings.warn("The ibus module is deprecated; " diff --git a/ibus/_config.py.in b/ibus/_config.py.in index 098d805af..21c9cafc8 100644 --- a/ibus/_config.py.in +++ b/ibus/_config.py.in @@ -8,23 +8,24 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA __all__ = ( "get_version", "get_copyright", "get_license", "get_ICON_KEYBOARD", + "LIBIBUS_SONAME", "ISOCODES_PREFIX", "_" ) @@ -55,4 +56,5 @@ def get_ICON_KEYBOARD(): return fallback_icon return icon +LIBIBUS_SONAME='libibus-@IBUS_API_VERSION@.so.@LT_CURRENT_MINUS_AGE@' ISOCODES_PREFIX='@ISOCODES_PREFIX@' diff --git a/ibus/_gtk.py b/ibus/_gtk.py index b9eea1f05..5b8fb1dd7 100644 --- a/ibus/_gtk.py +++ b/ibus/_gtk.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA __all__ = ( "PangoAttrList", diff --git a/ibus/application.py b/ibus/application.py index e21f17e54..c088f1513 100644 --- a/ibus/application.py +++ b/ibus/application.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA import ibus import dbus diff --git a/ibus/attribute.py b/ibus/attribute.py index 127048817..750e3fd54 100644 --- a/ibus/attribute.py +++ b/ibus/attribute.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA __all__ = ( "ATTR_TYPE_UNDERLINE", diff --git a/ibus/bus.py b/ibus/bus.py index 179fd4eae..c55586d19 100644 --- a/ibus/bus.py +++ b/ibus/bus.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA __all__ = ( "Bus", diff --git a/ibus/common.py b/ibus/common.py index 6483aaed6..41759bf6b 100644 --- a/ibus/common.py +++ b/ibus/common.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA __all__ = ( "IBUS_IFACE_IBUS", @@ -57,8 +57,9 @@ import os import sys -from xdg import BaseDirectory +#from xdg import BaseDirectory import ctypes +import _config # __display = os.environ["DISPLAY"] # __hostname, __display_screen = __display.split(":", 1) @@ -104,7 +105,7 @@ # return None # return address -libibus = ctypes.CDLL("libibus-1.0.so.0") +libibus = ctypes.CDLL(_config.LIBIBUS_SONAME) get_address = libibus.ibus_get_address get_address.restype=ctypes.c_char_p diff --git a/ibus/component.py b/ibus/component.py index 7255ee1c2..7c1d7d2d3 100644 --- a/ibus/component.py +++ b/ibus/component.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA __all__ = ( "Component", diff --git a/ibus/config.py b/ibus/config.py index 7a0557f44..92936ae00 100644 --- a/ibus/config.py +++ b/ibus/config.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA __all__ = ( "ConfigBase", diff --git a/ibus/engine.py b/ibus/engine.py index d6282063e..7442745f0 100644 --- a/ibus/engine.py +++ b/ibus/engine.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA __all__ = ( "EngineBase", diff --git a/ibus/enginedesc.py b/ibus/enginedesc.py index 055a3a0d7..70e207721 100644 --- a/ibus/enginedesc.py +++ b/ibus/enginedesc.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA __all__ = ( "EngineDesc", @@ -31,7 +31,11 @@ class EngineDesc(Serializable): __gtype_name__ = "PYIBusEngineDesc" __NAME__ = "IBusEngineDesc" - def __init__(self, name="", longname="", description="", language="", license="", author="", icon="", layout="", hotkeys="", rank=0, symbol="", setup=""): + def __init__(self, name="", longname="", description="", language="", + license="", author="", icon="", layout="us", hotkeys="", + rank=0, symbol="", setup="", + layout_variant="", layout_option="", + version=""): super(EngineDesc, self).__init__() self.__name = name self.__longname = longname @@ -41,10 +45,13 @@ def __init__(self, name="", longname="", description="", language="", license="" self.__author = author self.__icon = icon self.__layout = layout + self.__layout_variant = layout_variant + self.__layout_option = layout_option self.__rank = rank self.__hotkeys = hotkeys self.__symbol = symbol self.__setup = setup + self.__version = version def get_name(self): return self.__name @@ -70,6 +77,12 @@ def get_icon(self): def get_layout(self): return self.__layout + def get_layout_variant(self): + return self.__layout_variant + + def get_layout_option(self): + return self.__layout_option + def get_rank(self): return self.__rank @@ -82,18 +95,24 @@ def get_symbol(self): def get_setup(self): return self.__setup - name = property(get_name) - longname = property(get_longname) - description = property(get_description) - language = property(get_language) - license = property(get_license) - author = property(get_author) - icon = property(get_icon) - layout = property(get_layout) - rank = property(get_rank) - hotkeys = property(get_hotkeys) - symbol = property(get_symbol) - setup = property(get_setup) + def get_version(self): + return self.__version + + name = property(get_name) + longname = property(get_longname) + description = property(get_description) + language = property(get_language) + license = property(get_license) + author = property(get_author) + icon = property(get_icon) + layout = property(get_layout) + layout_variant = property(get_layout_variant) + layout_option = property(get_layout_option) + rank = property(get_rank) + hotkeys = property(get_hotkeys) + symbol = property(get_symbol) + setup = property(get_setup) + version = property(get_version) def serialize(self, struct): super(EngineDesc, self).serialize(struct) @@ -106,24 +125,36 @@ def serialize(self, struct): struct.append(dbus.String(self.__icon)) struct.append(dbus.String(self.__layout)) struct.append(dbus.UInt32(self.__rank)) + # Keep the serialize order. struct.append(dbus.String(self.__hotkeys)) struct.append(dbus.String(self.__symbol)) struct.append(dbus.String(self.__setup)) + struct.append(dbus.String(self.__layout_variant)) + struct.append(dbus.String(self.__layout_option)) + struct.append(dbus.String(self.__version)) def deserialize(self, struct): super(EngineDesc, self).deserialize(struct) - self.__name = struct.pop(0) - self.__longname = struct.pop(0) - self.__description = struct.pop(0) - self.__language = struct.pop(0) - self.__license = struct.pop(0) - self.__author = struct.pop(0) - self.__icon = struct.pop(0) - self.__layout = struct.pop(0) - self.__rank = struct.pop(0) - self.__hotkeys = struct.pop(0) - self.__symbol = struct.pop(0) - self.__setup = struct.pop(0) + self.__name = struct.pop(0) + self.__longname = struct.pop(0) + self.__description = struct.pop(0) + self.__language = struct.pop(0) + self.__license = struct.pop(0) + self.__author = struct.pop(0) + self.__icon = struct.pop(0) + self.__layout = struct.pop(0) + self.__rank = struct.pop(0) + # Keep the serialize order. + self.__hotkeys = struct.pop(0) + self.__symbol = struct.pop(0) + self.__setup = struct.pop(0) + if len(struct) < 2: + return + self.__layout_variant = struct.pop(0) + self.__layout_option = struct.pop(0) + if len(struct) < 1: + return + self.__version = struct.pop(0) def test(): engine = EngineDesc("Hello", "", "", "", "", "", "", "", "", 0, "", "") diff --git a/ibus/exception.py b/ibus/exception.py index f5ba1310a..b41569d9d 100644 --- a/ibus/exception.py +++ b/ibus/exception.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA __all__ = ("IBusException", ) diff --git a/ibus/factory.py b/ibus/factory.py index b9be700d4..c13745d78 100644 --- a/ibus/factory.py +++ b/ibus/factory.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA __all__ = ( "EngineFactoryBase", diff --git a/ibus/inputcontext.py b/ibus/inputcontext.py index a2989091a..c93a9149f 100644 --- a/ibus/inputcontext.py +++ b/ibus/inputcontext.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA __all__ = ( "InputContext", diff --git a/ibus/interface/Makefile.am b/ibus/interface/Makefile.am index 2d9ae4226..443e8269f 100644 --- a/ibus/interface/Makefile.am +++ b/ibus/interface/Makefile.am @@ -2,23 +2,25 @@ # # ibus - The Input Bus # -# Copyright (c) 2007-2010 Peng Huang -# Copyright (c) 2007-2010 Red Hat, Inc. +# Copyright (c) 2007-2014 Peng Huang +# Copyright (c) 2007-2014 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA + +PYTHON = $(PYTHON2) ibus_interface_PYTHON = \ iconfig.py \ @@ -31,7 +33,7 @@ ibus_interface_PYTHON = \ __init__.py \ $(NULL) -ibus_interfacedir = @pkgpythondir@/interface +ibus_interfacedir = @pkgpython2dir@/interface CLEANFILES = \ *.pyc \ diff --git a/ibus/interface/__init__.py b/ibus/interface/__init__.py index 7ee0dd829..8fb35a685 100644 --- a/ibus/interface/__init__.py +++ b/ibus/interface/__init__.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA from iibus import * from iinputcontext import * diff --git a/ibus/interface/iconfig.py b/ibus/interface/iconfig.py index 5f3f0404f..425b61a80 100644 --- a/ibus/interface/iconfig.py +++ b/ibus/interface/iconfig.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA __all__ = ("IConfig", ) diff --git a/ibus/interface/iengine.py b/ibus/interface/iengine.py index d04e70a2c..67a2012d1 100644 --- a/ibus/interface/iengine.py +++ b/ibus/interface/iengine.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or(at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA __all__ = ("IEngine", ) diff --git a/ibus/interface/ienginefactory.py b/ibus/interface/ienginefactory.py index f16fe4355..37c9e9b16 100644 --- a/ibus/interface/ienginefactory.py +++ b/ibus/interface/ienginefactory.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA __all__ = ("IEngineFactory", ) diff --git a/ibus/interface/iibus.py b/ibus/interface/iibus.py index 99874c415..b5677ba92 100644 --- a/ibus/interface/iibus.py +++ b/ibus/interface/iibus.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA __all__ = ("IIBus", ) diff --git a/ibus/interface/iinputcontext.py b/ibus/interface/iinputcontext.py index 62047919f..da5838e19 100644 --- a/ibus/interface/iinputcontext.py +++ b/ibus/interface/iinputcontext.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA __all__ = ("IInputContext", ) diff --git a/ibus/interface/inotifications.py b/ibus/interface/inotifications.py index a94c54fcc..6cbb6d273 100644 --- a/ibus/interface/inotifications.py +++ b/ibus/interface/inotifications.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or(at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA __all__ = ("INotifications", ) diff --git a/ibus/interface/ipanel.py b/ibus/interface/ipanel.py index 26b6b03d9..c400eefb0 100644 --- a/ibus/interface/ipanel.py +++ b/ibus/interface/ipanel.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or(at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA __all__ = ("IPanel", ) diff --git a/ibus/lang.py b/ibus/lang.py index 705ef70f7..238a91725 100644 --- a/ibus/lang.py +++ b/ibus/lang.py @@ -3,22 +3,22 @@ # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang -# Copyright (c) 2007-2010 Red Hat, Inc. +# Copyright (c) 2007-2019 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA __all__ = ( "get_language_name", @@ -36,7 +36,7 @@ def get_language_name(_locale): lang = lang.lower() if lang in __languages_dict: lang = __languages_dict[lang] - lang = gettext.dgettext("iso_639", lang) + lang = gettext.dgettext("iso_639_3", lang) else: lang = _(u"Other") lang = gettext.dgettext("ibus", lang) @@ -46,7 +46,7 @@ def __start_element(name, attrs): global __languages_dict try: name = attrs[u"name"] - for attr_name in (u"iso_639_2B_code", u"iso_639_2T_code", u"iso_639_1_code"): + for attr_name in (u"id", u"part1_code", u"part2_code"): if attr_name in attrs: attr_value = attrs[attr_name] __languages_dict[attr_value] = name @@ -62,12 +62,12 @@ def __char_data(data): def __load_lang(): import os import _config - iso_639_xml = os.path.join(_config.ISOCODES_PREFIX, "share/xml/iso-codes/iso_639.xml") + iso_639_3_xml = os.path.join(_config.ISOCODES_PREFIX, "share/xml/iso-codes/iso_639_3.xml") p = xml.parsers.expat.ParserCreate() p.StartElementHandler = __start_element p.EndElementHandler = __end_element p.CharacterDataHandler = __char_data - p.ParseFile(file(iso_639_xml)) + p.ParseFile(file(iso_639_3_xml)) __load_lang() diff --git a/ibus/lookuptable.py b/ibus/lookuptable.py index 5eaa35838..3caa31892 100644 --- a/ibus/lookuptable.py +++ b/ibus/lookuptable.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA __all__ = ( "LookupTable", diff --git a/ibus/modifier.py b/ibus/modifier.py index 844933ccf..648600e7d 100644 --- a/ibus/modifier.py +++ b/ibus/modifier.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA SHIFT_MASK = 1 << 0 LOCK_MASK = 1 << 1 diff --git a/ibus/notifications.py b/ibus/notifications.py index f55c3ceae..319ca6ff2 100644 --- a/ibus/notifications.py +++ b/ibus/notifications.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA __all__ = ( "NotificationsBase", diff --git a/ibus/object.py b/ibus/object.py index a7dd8b4f4..6f5e312c7 100644 --- a/ibus/object.py +++ b/ibus/object.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA __all__ = ( "Object", diff --git a/ibus/observedpath.py b/ibus/observedpath.py index 1301f597d..1f4007db0 100644 --- a/ibus/observedpath.py +++ b/ibus/observedpath.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA __all__ = ( "ObservedPath", diff --git a/ibus/panel.py b/ibus/panel.py index 204219f4e..0cc63efb1 100644 --- a/ibus/panel.py +++ b/ibus/panel.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA __all__ = ( "PanelBase", diff --git a/ibus/property.py b/ibus/property.py index a7ea5a955..733803258 100644 --- a/ibus/property.py +++ b/ibus/property.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA __all__ = ( "PROP_TYPE_NORMAL", @@ -63,11 +63,13 @@ class Property(Serializable): __gtype_name__ = "PYIBusProperty" __NAME__ = "IBusProperty" def __init__(self, key="", type=PROP_TYPE_NORMAL, label=u"", icon=u"", tooltip=u"", - sensitive=True, visible=True, state=PROP_STATE_UNCHECKED): + sensitive=True, visible=True, state=PROP_STATE_UNCHECKED, + symbol=u""): super(Property, self).__init__() self.__key = _to_unicode(key) self.__type = type self.label = label + self.symbol = symbol self.icon = icon self.tooltip = tooltip self.sensitive = sensitive @@ -93,6 +95,12 @@ def set_label(self, label): def get_label(self): return self.__label + def set_symbol(self, symbol): + self.__symbol = _to_text(symbol) + + def get_symbol(self): + return self.__symbol + def set_icon(self, icon): self.__icon = _to_unicode(icon) @@ -126,6 +134,7 @@ def get_visible(self): key = property(get_key) type = property(get_type) label = property(get_label, set_label) + symbol = property(get_symbol, set_symbol) icon = property(get_icon, set_icon) tooltip = property(get_tooltip, set_tooltip) state = property(get_state, set_state) @@ -139,6 +148,7 @@ def is_same(self, prop, test_all = True): if not test_all: return True if self.__label != prop.__label or \ + self.__symbol != prop.__symbol or \ self.__icon != prop.__icon or \ self.__tooltip != prop.__tooltip or \ self.__sensitive != prop.__sensitive or \ @@ -160,6 +170,7 @@ def serialize(self, struct): struct.append(dbus.UInt32(self.__state)) sub_props = serialize_object(self.__sub_props) struct.append(sub_props) + struct.append(serialize_object(self.__symbol)) def deserialize(self, struct): super(Property, self).deserialize(struct) @@ -174,6 +185,7 @@ def deserialize(self, struct): props = struct.pop(0) self.__sub_props = deserialize_object(props) + self.__symbol = deserialize_object(struct.pop(0)) class PropList(Serializable): __gtype_name__ = "PYIBusPropList" diff --git a/ibus/serializable.py b/ibus/serializable.py index c928356b9..105372d1b 100644 --- a/ibus/serializable.py +++ b/ibus/serializable.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA __all__ = ( "Serializable", diff --git a/ibus/text.py b/ibus/text.py index a99520a40..a68c930a8 100644 --- a/ibus/text.py +++ b/ibus/text.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA __all__ = ( "Text", diff --git a/ibus/utility.py b/ibus/utility.py index c644821a5..eff094a6c 100644 --- a/ibus/utility.py +++ b/ibus/utility.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA __all__ = ( "unichar_half_to_full", diff --git a/m4/Makefile.am b/m4/Makefile.am index 3454042f5..dcf84ac35 100644 --- a/m4/Makefile.am +++ b/m4/Makefile.am @@ -3,25 +3,27 @@ # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang -# Copyright (c) 2007-2010 Red Hat, Inc. +# Copyright (c) 2007-2018 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA EXTRA_DIST = \ as-version.m4 \ + ibuslocale.m4 \ + vapigen.m4 \ $(NULL) GITIGNOREFILES = \ diff --git a/m4/gconf-2.m4 b/m4/gconf-2.m4 new file mode 100644 index 000000000..c84267201 --- /dev/null +++ b/m4/gconf-2.m4 @@ -0,0 +1,41 @@ +dnl AM_GCONF_SOURCE_2 +dnl Copied from /usr/share/aclocal/gconf-2.m4 so that ibus build does not +dnl need GConf2-devel + +AC_DEFUN([AM_GCONF_SOURCE_2], +[ + if test "x$GCONF_SCHEMA_INSTALL_SOURCE" = "x"; then + GCONF_SCHEMA_CONFIG_SOURCE=`gconftool-2 --get-default-source` + else + GCONF_SCHEMA_CONFIG_SOURCE=$GCONF_SCHEMA_INSTALL_SOURCE + fi + + AC_ARG_WITH([gconf-source], + AC_HELP_STRING([--with-gconf-source=sourceaddress], + [Config database for installing schema files.]), + [GCONF_SCHEMA_CONFIG_SOURCE="$withval"],) + + AC_SUBST(GCONF_SCHEMA_CONFIG_SOURCE) + AC_MSG_RESULT([Using config source $GCONF_SCHEMA_CONFIG_SOURCE for schema installation]) + + if test "x$GCONF_SCHEMA_FILE_DIR" = "x"; then + GCONF_SCHEMA_FILE_DIR='$(sysconfdir)/gconf/schemas' + fi + + AC_ARG_WITH([gconf-schema-file-dir], + AC_HELP_STRING([--with-gconf-schema-file-dir=dir], + [Directory for installing schema files.]), + [GCONF_SCHEMA_FILE_DIR="$withval"],) + + AC_SUBST(GCONF_SCHEMA_FILE_DIR) + AC_MSG_RESULT([Using $GCONF_SCHEMA_FILE_DIR as install directory for schema files]) + + AC_ARG_ENABLE(schemas-install, + AC_HELP_STRING([--disable-schemas-install], + [Disable the schemas installation]), + [case ${enableval} in + yes|no) ;; + *) AC_MSG_ERROR([bad value ${enableval} for --enable-schemas-install]) ;; + esac]) + AM_CONDITIONAL([GCONF_SCHEMAS_INSTALL], [test "$enable_schemas_install" != no]) +]) diff --git a/m4/ibuslocale.m4 b/m4/ibuslocale.m4 new file mode 100644 index 000000000..d0f45cfb7 --- /dev/null +++ b/m4/ibuslocale.m4 @@ -0,0 +1,15 @@ +AC_DEFUN([DEFINE_IBUS_LOCALEDIR], [ +ibus_save_prefix="$prefix" +ibus_save_datarootdir="$datarootdir" +ibus_save_datadir="$datadir" +ibus_save_localedir="$localedir" +test "x$prefix" = xNONE && prefix=$ac_default_prefix +datarootdir=`eval echo "$datarootdir"` +datadir=`eval echo "$datadir"` +test "x$localedir" = xNONE && localedir="${datadir}/locale" +ibus_localedir=`eval echo "$localedir"` +localedir="$ibus_save_localedir" +datadir="$ibus_save_datadir" +datarootdir="$ibus_save_datarootdir" +prefix="$ibus_save_prefix" +]) diff --git a/m4/vapigen.m4 b/m4/vapigen.m4 new file mode 100644 index 000000000..051ccd2e4 --- /dev/null +++ b/m4/vapigen.m4 @@ -0,0 +1,96 @@ +dnl vapigen.m4 +dnl +dnl Copyright 2012 Evan Nemerson +dnl +dnl This library is free software; you can redistribute it and/or +dnl modify it under the terms of the GNU Lesser General Public +dnl License as published by the Free Software Foundation; either +dnl version 2.1 of the License, or (at your option) any later version. +dnl +dnl This library is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl Lesser General Public License for more details. +dnl +dnl You should have received a copy of the GNU Lesser General Public +dnl License along with this library; if not, write to the Free Software +dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +# VAPIGEN_CHECK([VERSION], [API_VERSION], [FOUND-INTROSPECTION], [DEFAULT]) +# -------------------------------------- +# Check vapigen existence and version +# +# See http://live.gnome.org/Vala/UpstreamGuide for detailed documentation +AC_DEFUN([VAPIGEN_CHECK], +[ + AC_BEFORE([GOBJECT_INTROSPECTION_CHECK],[$0]) + AC_BEFORE([GOBJECT_INTROSPECTION_REQUIRE],[$0]) + + AC_ARG_ENABLE([vala], + [AS_HELP_STRING([--enable-vala[=@<:@no/auto/yes@:>@]],[build Vala bindings @<:@default=]ifelse($4,,auto,$4)[@:>@])],,[ + AS_IF([test "x$4" = "x"], [ + enable_vala=auto + ], [ + enable_vala=$4 + ]) + ]) + + AS_CASE([$enable_vala], [no], [enable_vala=no], + [yes], [ + AS_IF([test "x$3" != "xyes" -a "x$found_introspection" != "xyes"], [ + AC_MSG_ERROR([Vala bindings require GObject Introspection]) + ]) + ], [auto], [ + AS_IF([test "x$3" != "xyes" -a "x$found_introspection" != "xyes"], [ + enable_vala=no + ]) + ], [ + AC_MSG_ERROR([Invalid argument passed to --enable-vala, should be one of @<:@no/auto/yes@:>@]) + ]) + + AS_IF([test "x$2" = "x"], [ + vapigen_pkg_name=vapigen + ], [ + vapigen_pkg_name=vapigen-$2 + ]) + AS_IF([test "x$1" = "x"], [ + vapigen_pkg="$vapigen_pkg_name" + ], [ + vapigen_pkg="$vapigen_pkg_name >= $1" + ]) + + PKG_PROG_PKG_CONFIG + + PKG_CHECK_EXISTS([$vapigen_pkg], [ + AS_IF([test "$enable_vala" = "auto"], [ + enable_vala=yes + ]) + ], [ + AS_CASE([$enable_vala], [yes], [ + AC_MSG_ERROR([$vapigen_pkg not found]) + ], [auto], [ + enable_vala=no + ]) + ]) + + AC_MSG_CHECKING([for vapigen]) + + AS_CASE([$enable_vala], + [yes], [ + VAPIGEN=`$PKG_CONFIG --variable=vapigen $vapigen_pkg_name` + VAPIGEN_MAKEFILE=`$PKG_CONFIG --variable=datadir $vapigen_pkg_name`/vala/Makefile.vapigen + AS_IF([test "x$2" = "x"], [ + VAPIGEN_VAPIDIR=`$PKG_CONFIG --variable=vapidir $vapigen_pkg_name` + ], [ + VAPIGEN_VAPIDIR=`$PKG_CONFIG --variable=vapidir_versioned $vapigen_pkg_name` + ]) + ]) + + AC_MSG_RESULT([$enable_vala]) + + AC_SUBST([VAPIGEN]) + AC_SUBST([VAPIGEN_VAPIDIR]) + AC_SUBST([VAPIGEN_MAKEFILE]) + + AM_CONDITIONAL(ENABLE_VAPIGEN, test "x$enable_vala" = "xyes") +]) diff --git a/po/LINGUAS b/po/LINGUAS index 10191ae9b..0df9484f5 100644 --- a/po/LINGUAS +++ b/po/LINGUAS @@ -1,35 +1,52 @@ ar as +bg +bn bn_IN ca +cs da de en_GB es +et +eu fa +fi fr gu +he hi hu +ia +id it ja kn ko lv ml +mn mr +nb nl +oc or pa pl +pt pt_BR ru +sq sr sr@latin +sv ta te tg +tr uk +ur vi zh_CN zh_HK diff --git a/po/Makevars b/po/Makevars index 3e56bea1d..1d16cc98b 100644 --- a/po/Makevars +++ b/po/Makevars @@ -1,14 +1,16 @@ # Makefile variables for PO directory in any package using GNU gettext. # Usually the message domain is the same as the package name. -DOMAIN = $(PACKAGE) +DOMAIN = $(shell grep "GETTEXT_PACKAGE.*=" $(top_srcdir)/configure.ac | sed -e 's/\(.*\)=[ ]*\(.*\)/\2/') # These two variables depend on the location of this directory. subdir = po top_builddir = .. # These options get passed to xgettext. -XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ +# The last argument --keyword without keyword prevents xgettext from +# extracting translatable strings from "Icon" in *.desktop files. +XGETTEXT_OPTIONS = --from-code=UTF-8 --keyword=_ --keyword=N_ --keyword=C_:1c,2 --keyword=NC_:1c,2 --keyword=g_dngettext:2,3 --keyword=Name --keyword=Comment --keyword --add-comments # This is the copyright holder that gets inserted into the header of the # $(DOMAIN).pot file. Set this to the copyright holder of the surrounding @@ -18,7 +20,8 @@ XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ # or entity, or to disclaim their copyright. The empty string stands for # the public domain; in this case the translators are expected to disclaim # their copyright. -COPYRIGHT_HOLDER = Peng Huang +COPYRIGHT_HOLDER = Peng Huang \ +Takao Fujiwara # This is the email address or URL to which the translators shall report # bugs in the untranslated strings: @@ -39,3 +42,7 @@ MSGID_BUGS_ADDRESS = $(PACKAGE_BUGREPORT) # This is the list of locale categories, beyond LC_MESSAGES, for which the # message catalogs shall be used. It is usually empty. EXTRA_LOCALE_CATEGORIES = + +# https://wiki.gnome.org/Initiatives/GnomeGoals/GettextMigration +PO_DEPENDS_ON_POT = "no" +DIST_DEPENDS_ON_UPDAE_PO = "no" diff --git a/po/POTFILES.in b/po/POTFILES.in index 6121f10bf..b3b71e812 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -1,60 +1,73 @@ -src/ibusbus.c -src/ibusconfig.c -src/ibusengine.c -src/ibusfactory.c -src/ibushotkey.c -src/ibusinputcontext.c -src/ibusobject.c -src/ibuspanelservice.c -src/ibusproxy.c -src/ibusservice.c -src/keyname-table.h -bus/ibus.desktop.in +# Files with translatable strings. +# Please keep this file in alphabetical order. bus/dbusimpl.c bus/engineproxy.c bus/inputcontext.c bus/panelproxy.c -bus/registry.c -ibus/bus.py +data/dconf/org.freedesktop.ibus.gschema.xml ibus/__init__.py ibus/_config.py.in -ibus/common.py -ibus/utility.py -ibus/keysyms.py -ibus/modifier.py +ibus/_gtk.py +ibus/application.py +ibus/ascii.py ibus/attribute.py +ibus/bus.py +ibus/common.py ibus/engine.py -ibus/panel.py +ibus/exception.py +ibus/factory.py ibus/interface/__init__.py -ibus/interface/ipanel.py ibus/interface/iconfig.py -ibus/interface/iibus.py ibus/interface/iengine.py ibus/interface/ienginefactory.py -ibus/exception.py -ibus/application.py -ibus/object.py +ibus/interface/iibus.py +ibus/interface/ipanel.py +ibus/keysyms.py ibus/lang.py ibus/lookuptable.py +ibus/modifier.py +ibus/object.py +ibus/panel.py ibus/property.py -ibus/_gtk.py -ibus/ascii.py -ibus/factory.py -ui/gtk/menu.py -ui/gtk/handle.py -ui/gtk/icon.py -ui/gtk/candidatepanel.py -ui/gtk/toolitem.py -ui/gtk/main.py -ui/gtk/panel.py -ui/gtk/propitem.py -ui/gtk/languagebar.py -ui/gtk/engineabout.py -setup/main.py -setup/keyboardshortcut.py -setup/enginecombobox.py +ibus/utility.py +setup/emojilang.py setup/engineabout.py +setup/enginecombobox.py +setup/enginedialog.py setup/enginetreeview.py -setup/ibus-setup.desktop.in -data/ibus.schemas.in -[type: gettext/glade]setup/setup.ui +setup/ibus-setup.desktop +setup/keyboardshortcut.py +setup/main.py +setup/setup.ui +src/ibusbus.c +src/ibusconfig.c +src/ibusemojigen.h +src/ibusengine.c +src/ibusfactory.c +src/ibushotkey.c +src/ibusinputcontext.c +src/ibusobject.c +src/ibuspanelservice.c +src/ibusproxy.c +src/ibusregistry.c +src/ibusservice.c +src/ibusunicodegen.h +src/ibusutil.c +src/keyname-table.h +tools/main.vala +ui/gtk3/application.vala +ui/gtk3/candidatearea.vala +ui/gtk3/candidatepanel.vala +ui/gtk3/emojier.vala +ui/gtk3/emojierapp.vala +ui/gtk3/handle.vala +ui/gtk3/ibus-extension-gtk3.desktop.in +ui/gtk3/ibus-ui-emojier.desktop.in +ui/gtk3/iconwidget.vala +ui/gtk3/keybindingmanager.vala +ui/gtk3/panel.vala +ui/gtk3/pango.vala +ui/gtk3/property.vala +ui/gtk3/propertypanel.vala +ui/gtk3/separator.vala +ui/gtk3/switcher.vala diff --git a/po/POTFILES.skip b/po/POTFILES.skip new file mode 100644 index 000000000..10b882982 --- /dev/null +++ b/po/POTFILES.skip @@ -0,0 +1,29 @@ +# Files with translatable strings. +# Please keep this file in alphabetical order. +# Files under ui/gtk2/ are not shipped in the distribution, but kept +# in the git repository for reference. +bindings/vala/candidatearea.c +bindings/vala/emojier.c +bindings/vala/iconwidget.c +bindings/vala/pango.c +bindings/vala/separator.c +ibus/_config.py +tools/main.c +ui/gtk2/candidatepanel.py +ui/gtk2/engineabout.py +ui/gtk2/languagebar.py +ui/gtk2/panel.py +ui/gtk3/application.c +ui/gtk3/candidatearea.c +ui/gtk3/candidatepanel.c +ui/gtk3/emojier.c +ui/gtk3/emojierapp.c +ui/gtk3/handle.c +ui/gtk3/iconwidget.c +ui/gtk3/keybindingmanager.c +ui/gtk3/panel.c +ui/gtk3/pango.c +ui/gtk3/property.c +ui/gtk3/propertypanel.c +ui/gtk3/separator.c +ui/gtk3/switcher.c diff --git a/po/ar.po b/po/ar.po index a4144f840..006ba4d4a 100644 --- a/po/ar.po +++ b/po/ar.po @@ -1,575 +1,699 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. +# translation of ibus.pot to Arabic +# Arabic translation of ibus. +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2022 Takao Fujiwara +# This file is distributed under the same license as the ibus package. # +# Translators: +# Muayyad Alsadi , 2009 +# Abdullah Albaroty , 2022. +# Zayed Al-Saidi , 2022. msgid "" msgstr "" -"Project-Id-Version: ibus\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-12 00:41+0900\n" -"PO-Revision-Date: 2009-04-06 11:45+0800\n" -"Last-Translator: Muayyad Alsadi \n" -"Language-Team: Arabic \n" +"Project-Id-Version: IBus\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2014-02-18 13:46+0900\n" +"PO-Revision-Date: 2022-01-11 09:16+0000\n" +"Last-Translator: Zayed Al-Saidi \n" +"Language-Team: Arabic \n" "Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" +"X-Generator: Weblate 4.10.1\n" -#: ../bus/ibus.desktop.in.h:1 -msgid "IBus" -msgstr "IBus" - -#: ../bus/ibus.desktop.in.h:2 -#, fuzzy -msgid "Input Method Framework" -msgstr "إطار إطرق الإدخال IBUS" +#: ../setup/setup.ui.h:1 +msgid "Horizontal" +msgstr "أفقي" -#: ../bus/ibus.desktop.in.h:3 -#, fuzzy -msgid "Start IBus Input Method Framework" -msgstr "إطار إطرق الإدخال IBUS" +#: ../setup/setup.ui.h:2 +msgid "Vertical" +msgstr "عمودي" -#: ../ibus/_config.py.in:39 -msgid "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +#: ../setup/setup.ui.h:3 +msgid "Top left corner" msgstr "" -#: ../ibus/lang.py:41 -msgid "Other" -msgstr "أخرى" - -#: ../ui/gtk/candidatepanel.py:264 -#, fuzzy -msgid "Previous page" -msgstr "طريقة الإدخال السابقة" +#: ../setup/setup.ui.h:4 +msgid "Top right corner" +msgstr "" -#: ../ui/gtk/candidatepanel.py:269 -msgid "Next page" +#: ../setup/setup.ui.h:5 +msgid "Bottom left corner" msgstr "" -#: ../ui/gtk/main.py:55 -msgid "" -"Some input methods have been installed, removed or updated. Please restart " -"ibus input platform." +#: ../setup/setup.ui.h:6 +msgid "Bottom right corner" msgstr "" -#: ../ui/gtk/main.py:59 -#, fuzzy -msgid "Restart Now" -msgstr "إعادة تشغيل" +#: ../setup/setup.ui.h:7 +msgid "Custom" +msgstr "مخصّصة" -#: ../ui/gtk/main.py:60 -#, fuzzy -msgid "Later" -msgstr "أخرى" +#: ../setup/setup.ui.h:8 +msgid "Do not show" +msgstr "لا تعرض" -#: ../ui/gtk/panel.py:109 -msgid "IBus input method framework" -msgstr "إطار إطرق الإدخال IBUS" +#: ../setup/setup.ui.h:9 +msgid "Hide automatically" +msgstr "إخفاء تلقائي" -#: ../ui/gtk/panel.py:327 -msgid "Restart" -msgstr "إعادة تشغيل" +#: ../setup/setup.ui.h:10 +msgid "Always" +msgstr "دائمًا" -#: ../ui/gtk/panel.py:414 -#, fuzzy -msgid "Turn off input method" -msgstr "لا يوجد طريقة إدخال" +#: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 +msgid "IBus Preferences" +msgstr "تفضيلات IBus" -#: ../ui/gtk/panel.py:453 -msgid "No input window" +#: ../setup/setup.ui.h:12 +msgid "The shortcut keys for switching to next input method in the list" msgstr "" -#: ../ui/gtk/panel.py:484 -msgid "IBus is an intelligent input bus for Linux/Unix." -msgstr "نظام IBus هو ناقل إدخال ذكي لنظام لينكس ويونكس." +#: ../setup/setup.ui.h:13 +msgid "Next input method:" +msgstr "طريقة الإدخال التالية" -#: ../ui/gtk/panel.py:488 -msgid "translator-credits" -msgstr "Muayyad Alsadi " +#: ../setup/setup.ui.h:14 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "" -#: ../ui/gtk/languagebar.py:106 -#, fuzzy -msgid "About the input method" -msgstr "طرق الإدخال" +#: ../setup/setup.ui.h:15 +msgid "Previous input method:" +msgstr "طريقة الإدخال السابقة" -#: ../ui/gtk/languagebar.py:214 -msgid "Switch input method" -msgstr "تبديل طريقة الإدخال" +#: ../setup/setup.ui.h:16 +msgid "..." +msgstr "..." -#: ../ui/gtk/languagebar.py:357 ../ui/gtk/engineabout.py:33 -#: ../setup/engineabout.py:33 ../setup/setup.ui.h:16 -msgid "About" -msgstr "حول" +#: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 +msgid "The shortcut keys for turning input method on or off" +msgstr "" -#: ../ui/gtk/languagebar.py:361 -#, fuzzy -msgid "About the Input Method" -msgstr "طرق الإدخال" +#: ../setup/setup.ui.h:18 +msgid "Enable or disable:" +msgstr "تفعيّل أو تثبيط:" -#: ../ui/gtk/engineabout.py:61 ../setup/engineabout.py:61 -#, python-format -msgid "Language: %s\n" +#: ../setup/setup.ui.h:19 +msgid "Enable:" +msgstr "مكّن %1" + +#: ../setup/setup.ui.h:20 +msgid "Disable:" +msgstr "عطّل %1" + +#: ../setup/setup.ui.h:21 +msgid "Keyboard Shortcuts" +msgstr "اختصارات لوحة المفاتيح" + +#: ../setup/setup.ui.h:22 +msgid "Set the orientation of candidates in lookup table" msgstr "" -#: ../ui/gtk/engineabout.py:63 ../setup/engineabout.py:63 -#, fuzzy, python-format -msgid "Keyboard layout: %s\n" -msgstr "اختصارات لوحة المفاتيح" +#: ../setup/setup.ui.h:23 +msgid "Candidates orientation:" +msgstr "الاتجاهات المرشحة:" -#: ../ui/gtk/engineabout.py:65 ../setup/engineabout.py:65 -#, python-format -msgid "Author: %s\n" +#: ../setup/setup.ui.h:24 +msgid "Set the behavior of ibus how to show or hide language bar" msgstr "" -#: ../ui/gtk/engineabout.py:67 ../setup/engineabout.py:67 -msgid "Description:\n" +#: ../setup/setup.ui.h:25 +msgid "Show property panel:" msgstr "" -#: ../setup/main.py:102 -msgid "trigger" -msgstr "زناد" +#: ../setup/setup.ui.h:26 +msgid "Language panel position:" +msgstr "" -#: ../setup/main.py:113 -msgid "enable" +#: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 +msgid "Show icon on system tray" msgstr "" -#: ../setup/main.py:124 -msgid "disable" +#: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 +msgid "Show input method name on language bar" msgstr "" -#: ../setup/main.py:135 -msgid "next input method" -msgstr "طريقة الإدخال التالية" +#: ../setup/setup.ui.h:29 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "" -#: ../setup/main.py:146 -msgid "previous input method" -msgstr "طريقة الإدخال السابقة" +#: ../setup/setup.ui.h:30 +msgid "Embed preedit text in application window" +msgstr "" -#: ../setup/main.py:286 -msgid "IBus daemon is not started. Do you want to start it now?" -msgstr "خادم IBUS لم يبدأ من قبل. هل تريد تشغيله الآن؟" +#: ../setup/setup.ui.h:31 +msgid "Embed the preedit text of input method in the application window" +msgstr "" -#: ../setup/main.py:301 -msgid "" -"IBus has been started! If you can not use IBus, please add below lines in " -"$HOME/.bashrc, and relogin your desktop.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +#: ../setup/setup.ui.h:32 +msgid "Use custom font:" +msgstr "استعمال خط مخصص" + +#: ../setup/setup.ui.h:33 +msgid "Font and Style" +msgstr "الخط والتنسيق" + +#: ../setup/setup.ui.h:34 +msgid "General" +msgstr "عام" + +#. add button +#: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 +msgid "_Add" +msgstr "أ_ضف" + +#: ../setup/setup.ui.h:36 +msgid "Add the selected input method into the enabled input methods" msgstr "" -#: ../setup/main.py:316 -#, python-format -msgid "Select keyboard shortcut for %s" -msgstr "اختر الاختصار ل %s" +#: ../setup/setup.ui.h:37 +msgid "_Remove" +msgstr "ا_حذِف" -#: ../setup/keyboardshortcut.py:52 -msgid "Keyboard shortcuts" -msgstr "اختصارات لوحة المفاتيح" +#: ../setup/setup.ui.h:38 +msgid "Remove the selected input method from the enabled input methods" +msgstr "" -#: ../setup/keyboardshortcut.py:63 -msgid "Key code:" -msgstr "كود المفتاح" +#: ../setup/setup.ui.h:39 +msgid "_Up" +msgstr "ف_وق" -#: ../setup/keyboardshortcut.py:78 -msgid "Modifiers:" +#: ../setup/setup.ui.h:40 +msgid "Move up the selected input method in the enabled input methods list" msgstr "" -#: ../setup/keyboardshortcut.py:231 -msgid "" -"Please press a key (or a key combination).\n" -"The dialog will be closed when the key is released." +#: ../setup/setup.ui.h:41 +msgid "_Down" +msgstr "أ_سفل" + +#: ../setup/setup.ui.h:42 +msgid "Move down the selected input method in the enabled input methods" msgstr "" -"فضلا اضغط مفتاح أو (عدة مفاتيح).\n" -"صندوق الحوار سيغلق عند ترك المفتاح." -#: ../setup/keyboardshortcut.py:233 -msgid "Please press a key (or a key combination)" -msgstr "فضلا اضغط مفتاح أو عدة مفاتيح" +#: ../setup/setup.ui.h:43 +msgid "_About" +msgstr "_عنْ" -#: ../setup/enginecombobox.py:120 -msgid "Select an input method" -msgstr "اختر طريقة الإدخال" +#: ../setup/setup.ui.h:44 +msgid "Show information of the selected input method" +msgstr "" + +#: ../setup/setup.ui.h:45 +msgid "_Preferences" +msgstr "_التفضيلات" + +#: ../setup/setup.ui.h:46 +msgid "Show setup of the selected input method" +msgstr "" + +#: ../setup/setup.ui.h:47 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" #. create im name & icon column -#: ../setup/enginetreeview.py:64 ../setup/setup.ui.h:33 -#, fuzzy +#: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" -msgstr "طرق الإدخال" +msgstr "" -#: ../setup/enginetreeview.py:92 -msgid "Kbd" +#: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 +msgid "Use system keyboard layout" msgstr "" -#: ../setup/ibus-setup.desktop.in.h:1 ../setup/setup.ui.h:32 -msgid "IBus Preferences" -msgstr "تفضيلات IBus" +#: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 +msgid "Use system keyboard (XKB) layout" +msgstr "" -#: ../setup/ibus-setup.desktop.in.h:2 -#, fuzzy -msgid "Set IBus Preferences" -msgstr "تفضيلات IBus" +#: ../setup/setup.ui.h:51 +msgid "Keyboard Layout" +msgstr "تخطيط لوحة مفاتيح" + +#: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 +msgid "Share the same input method among all applications" +msgstr "" + +#: ../setup/setup.ui.h:53 +msgid "Global input method settings" +msgstr "اختر طريقة الإدخال" + +#: ../setup/setup.ui.h:54 +msgid "Advanced" +msgstr "متقدّم" + +#: ../setup/setup.ui.h:55 +msgid "" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" +msgstr "IBus\nناقل الإدخال الذكي\nالموقع: https://github.com/ibus/ibus/wiki\n\n\n\n" + +#: ../setup/setup.ui.h:62 +msgid "Start ibus on login" +msgstr "بدء ibus عند الولوج" + +#: ../setup/setup.ui.h:63 +msgid "Startup" +msgstr "البدء" + +#: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 +msgid "About" +msgstr "حول" + +#: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 +msgid "_Close" +msgstr "أ_غلق" #: ../data/ibus.schemas.in.h:1 -#, fuzzy -msgid "Auto hide" -msgstr "اخفاء تلقائي" +msgid "Preload engines" +msgstr "" #: ../data/ibus.schemas.in.h:2 -#, fuzzy -msgid "Custom font" -msgstr "خط مخصص:" +msgid "Preload engines during ibus starts up" +msgstr "" #: ../data/ibus.schemas.in.h:3 -msgid "Custom font name for language panel" -msgstr "اسم الخط المخصص للوحة اللغة" +msgid "Engines order" +msgstr "" #: ../data/ibus.schemas.in.h:4 -msgid "Embed Preedit Text" +msgid "Saved engines order in input method list" msgstr "" #: ../data/ibus.schemas.in.h:5 -msgid "Embed Preedit Text in Application Window" +msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: ../data/ibus.schemas.in.h:6 -#, fuzzy -msgid "Enable input method by default" -msgstr "طريقة الإدخال التالية" +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is " +"400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " +"not show the window and switch prev/next engines." +msgstr "" #: ../data/ibus.schemas.in.h:7 -msgid "Enable input method by default when the application gets input focus" +msgid "Saved version number" msgstr "" #: ../data/ibus.schemas.in.h:8 -#, fuzzy -msgid "Language panel position" -msgstr "إظهار لوحة اللغات:" +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" #: ../data/ibus.schemas.in.h:9 -#, fuzzy -msgid "Next engine shortcut keys" -msgstr "مفتاح المحرك التالي" - -#: ../data/ibus.schemas.in.h:10 -msgid "Orientation of lookup table" +msgid "Trigger shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:11 -msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: ../data/ibus.schemas.in.h:12 -#, fuzzy -msgid "Preload engines" -msgstr "المحركات المحملة مسبقا" +msgid "Enable shortcut keys" +msgstr "" #: ../data/ibus.schemas.in.h:13 -#, fuzzy -msgid "Preload engines during ibus starts up" -msgstr "المحركات المحملة مسبقا عند بدء ibus" +msgid "The shortcut keys for turning input method on" +msgstr "" #: ../data/ibus.schemas.in.h:14 -#, fuzzy -msgid "Prev engine shortcut keys" -msgstr "مفتاح المحرك السابق" +msgid "Disable shortcut keys" +msgstr "" -#: ../data/ibus.schemas.in.h:15 ../setup/setup.ui.h:42 -msgid "Share the same input method among all applications" +#: ../data/ibus.schemas.in.h:15 +msgid "The shortcut keys for turning input method off" msgstr "" -#: ../data/ibus.schemas.in.h:16 ../setup/setup.ui.h:43 -msgid "Show icon on system tray" +#: ../data/ibus.schemas.in.h:16 +msgid "Next engine shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:17 -#, fuzzy -msgid "Show input method name" -msgstr "اسم الخط المخصص للوحة اللغة" +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "" -#: ../data/ibus.schemas.in.h:18 ../setup/setup.ui.h:45 -#, fuzzy -msgid "Show input method name on language bar" -msgstr "اسم الخط المخصص للوحة اللغة" +#: ../data/ibus.schemas.in.h:18 +msgid "Prev engine shortcut keys" +msgstr "" #: ../data/ibus.schemas.in.h:19 -msgid "" -"The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = " -"Always show" +msgid "The shortcut keys for switching to the previous input method" msgstr "" #: ../data/ibus.schemas.in.h:20 -msgid "" -"The position of the language panel. 0 = Top left corner, 1 = Top right " -"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" -msgstr "" +msgid "Auto hide" +msgstr "أخف آليًّا" #: ../data/ibus.schemas.in.h:21 -msgid "The shortcut keys for switching to the next input method in the list" +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" msgstr "" #: ../data/ibus.schemas.in.h:22 -msgid "The shortcut keys for switching to the previous input method" +msgid "Language panel position" msgstr "" -#: ../data/ibus.schemas.in.h:23 ../setup/setup.ui.h:51 -msgid "The shortcut keys for turning input method on or off" +#: ../data/ibus.schemas.in.h:23 +msgid "" +"The position of the language panel. 0 = Top left corner, 1 = Top right " +"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "" #: ../data/ibus.schemas.in.h:24 -#, fuzzy -msgid "Trigger shortcut keys" -msgstr "مفتاح الزناد" +msgid "Follow the input cursor in case the panel is always shown" +msgstr "" #: ../data/ibus.schemas.in.h:25 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" + +#: ../data/ibus.schemas.in.h:26 +msgid "The milliseconds to show property panel" +msgstr "" + +#: ../data/ibus.schemas.in.h:27 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" + +#: ../data/ibus.schemas.in.h:28 +msgid "Orientation of lookup table" +msgstr "" + +#: ../data/ibus.schemas.in.h:29 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "" + +#: ../data/ibus.schemas.in.h:31 +msgid "Show input method name" +msgstr "" + +#: ../data/ibus.schemas.in.h:35 msgid "Use custom font" msgstr "استعمال خط مخصص" -#: ../data/ibus.schemas.in.h:26 +#: ../data/ibus.schemas.in.h:36 msgid "Use custom font name for language panel" msgstr "استخدم خط مخصص في لوحة اللغة" -#: ../data/ibus.schemas.in.h:27 -#, fuzzy -msgid "Use global input method" -msgstr "اختر طريقة الإدخال" +#: ../data/ibus.schemas.in.h:37 +msgid "Custom font" +msgstr "خطّ مخصّص" -#: ../data/ibus.schemas.in.h:28 ../setup/setup.ui.h:55 -msgid "Use system keyboard (XKB) layout" -msgstr "" +#: ../data/ibus.schemas.in.h:38 +msgid "Custom font name for language panel" +msgstr "اسم الخط المخصص للوحة اللغة" -#: ../data/ibus.schemas.in.h:29 ../setup/setup.ui.h:56 -msgid "Use system keyboard layout" +#: ../data/ibus.schemas.in.h:39 +msgid "Embed Preedit Text" msgstr "" -#: ../setup/setup.ui.h:1 -msgid "..." -msgstr "..." +#: ../data/ibus.schemas.in.h:40 +msgid "Embed Preedit Text in Application Window" +msgstr "" -#: ../setup/setup.ui.h:2 -msgid "Font and Style" -msgstr "الخط والتنسيق" +#: ../data/ibus.schemas.in.h:41 +msgid "Use global input method" +msgstr "" -#: ../setup/setup.ui.h:3 -msgid "Global input method settings" -msgstr "اختر طريقة الإدخال" +#: ../data/ibus.schemas.in.h:43 +msgid "Enable input method by default" +msgstr "" -#: ../setup/setup.ui.h:4 -#, fuzzy -msgid "Keyboard Layout" -msgstr "اختصارات لوحة المفاتيح" +#: ../data/ibus.schemas.in.h:44 +msgid "Enable input method by default when the application gets input focus" +msgstr "" -#: ../setup/setup.ui.h:5 -msgid "Keyboard Shortcuts" -msgstr "اختصارات لوحة المفاتيح" +#: ../data/ibus.schemas.in.h:45 +msgid "DConf preserve name prefixes" +msgstr "" -#: ../setup/setup.ui.h:6 -msgid "Startup" -msgstr "البدء" +#: ../data/ibus.schemas.in.h:46 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "" -#: ../setup/setup.ui.h:7 +#: ../ibus/_config.py.in:41 msgid "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." msgstr "" -"IBus\n" -"ناقل الإدخال الذكي\n" -"الموقع: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" -#: ../setup/setup.ui.h:14 -msgid "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." +#: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 +msgid "Other" +msgstr "أخرى" + +#: ../setup/engineabout.py:68 +#, python-format +msgid "Language: %s\n" msgstr "" -#: ../setup/setup.ui.h:17 -msgid "Add the selected input method into the enabled input methods" +#: ../setup/engineabout.py:71 +#, python-format +msgid "Keyboard layout: %s\n" msgstr "" -#: ../setup/setup.ui.h:18 -msgid "Advanced" +#: ../setup/engineabout.py:74 +#, python-format +msgid "Author: %s\n" msgstr "" -#: ../setup/setup.ui.h:19 -msgid "Always" +#: ../setup/engineabout.py:77 +msgid "Description:\n" msgstr "" -#: ../setup/setup.ui.h:20 -msgid "Bottom left corner" +#: ../setup/enginecombobox.py:139 +msgid "Select an input method" +msgstr "اختر طريقة الإدخال" + +#: ../setup/enginetreeview.py:94 +msgid "Kbd" msgstr "" -#: ../setup/setup.ui.h:21 -msgid "Bottom right corner" +#: ../setup/ibus-setup.desktop.in.h:2 +msgid "Set IBus Preferences" msgstr "" -#: ../setup/setup.ui.h:22 -msgid "Candidates orientation:" -msgstr "الاتجاهات المرشحة:" +#: ../setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "اختصارات لوحة المفاتيح" -#: ../setup/setup.ui.h:23 -#, fuzzy -msgid "Custom" -msgstr "خط مخصص:" +#: ../setup/keyboardshortcut.py:66 +msgid "Key code:" +msgstr "كود المفتاح" -#: ../setup/setup.ui.h:24 -msgid "Disable:" +#: ../setup/keyboardshortcut.py:81 +msgid "Modifiers:" +msgstr "المعدِّلات:" + +#. apply button +#: ../setup/keyboardshortcut.py:133 +msgid "_Apply" +msgstr "_طبّق" + +#. delete button +#: ../setup/keyboardshortcut.py:139 +msgid "_Delete" +msgstr "ا_حذف" + +#: ../setup/keyboardshortcut.py:254 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "فضلا اضغط مفتاح أو (عدة مفاتيح).\nصندوق الحوار سيغلق عند ترك المفتاح." + +#: ../setup/keyboardshortcut.py:256 +msgid "Please press a key (or a key combination)" +msgstr "فضلا اضغط مفتاح أو عدة مفاتيح" + +#: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 +msgid "_Cancel" +msgstr "أل_غِ" + +#: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 +msgid "_OK" +msgstr "_نعم" + +#: ../setup/main.py:102 ../setup/main.py:395 +msgid "Use shortcut with shift to switch to the previous input method" msgstr "" -#: ../setup/setup.ui.h:25 -msgid "Embed preedit text in application window" +#: ../setup/main.py:329 +msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "" -#: ../setup/setup.ui.h:26 -msgid "Embed the preedit text of input method in the application window" +#: ../setup/main.py:350 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" msgstr "" -#: ../setup/setup.ui.h:27 -msgid "Embedded in menu" +#. Translators: %d == 5 currently +#: ../setup/main.py:364 +#, python-format +msgid "IBus daemon could not be started in %d seconds" msgstr "" -#: ../setup/setup.ui.h:28 -msgid "Enable or disable:" -msgstr "تفعيّل أو تثبيط:" +#: ../setup/main.py:376 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "اختر الاختصار ل %s" -#: ../setup/setup.ui.h:29 -msgid "Enable:" +#: ../setup/main.py:377 +msgid "switching input methods" msgstr "" -#: ../setup/setup.ui.h:30 -msgid "General" -msgstr "عام" +#: ../tools/main.vala:42 +msgid "List engine name only" +msgstr "" -#: ../setup/setup.ui.h:31 -#, fuzzy -msgid "Horizontal" +#: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 +#, c-format +msgid "Can't connect to IBus.\n" msgstr "" -"أفقي\n" -"عمودي" -#: ../setup/setup.ui.h:34 -#, fuzzy -msgid "Language panel position:" -msgstr "إظهار لوحة اللغات:" +#: ../tools/main.vala:84 +#, c-format +msgid "language: %s\n" +msgstr "" -#: ../setup/setup.ui.h:35 -msgid "Move down the selected input method in the enabled input methods" +#: ../tools/main.vala:152 +#, c-format +msgid "No engine is set.\n" msgstr "" -#: ../setup/setup.ui.h:36 -msgid "Move up the selected input method in the enabled input methods list" +#: ../tools/main.vala:160 +#, c-format +msgid "Set global engine failed.\n" msgstr "" -#: ../setup/setup.ui.h:37 -msgid "Next input method:" -msgstr "طريقة الإدخال التالية" +#: ../tools/main.vala:165 +#, c-format +msgid "Get global engine failed.\n" +msgstr "" -#: ../setup/setup.ui.h:38 -msgid "Previous input method:" -msgstr "طريقة الإدخال السابقة" +#: ../tools/main.vala:204 +msgid "Read the system registry cache." +msgstr "" -#: ../setup/setup.ui.h:39 -msgid "Remove the selected input method from the enabled input methods" +#: ../tools/main.vala:206 +msgid "Read the registry cache FILE." msgstr "" -#: ../setup/setup.ui.h:40 -msgid "Set the behavior of ibus how to show or hide language bar" +#: ../tools/main.vala:224 ../tools/main.vala:229 +#, c-format +msgid "The registry cache is invalid.\n" msgstr "" -#: ../setup/setup.ui.h:41 -msgid "Set the orientation of candidates in lookup table" +#: ../tools/main.vala:244 +msgid "Write the system registry cache." msgstr "" -#: ../setup/setup.ui.h:44 -msgid "Show information of the selected input method" +#: ../tools/main.vala:246 +msgid "Write the registry cache FILE." msgstr "" -#: ../setup/setup.ui.h:46 -#, fuzzy -msgid "Show input method's name on language bar when check the checkbox" -msgstr "اسم الخط المخصص للوحة اللغة" +#: ../tools/main.vala:293 +msgid "Set or get engine" +msgstr "" -#: ../setup/setup.ui.h:47 -msgid "Show language panel:" -msgstr "إظهار لوحة اللغات:" +#: ../tools/main.vala:294 +msgid "Exit ibus-daemon" +msgstr "" -#: ../setup/setup.ui.h:48 -msgid "Start ibus on login" -msgstr "بدء ibus عند الولوج" +#: ../tools/main.vala:295 +msgid "Show available engines" +msgstr "" -#: ../setup/setup.ui.h:49 -msgid "The shortcut keys for switching to next input method in the list" +#: ../tools/main.vala:296 +msgid "(Not implemented)" msgstr "" -#: ../setup/setup.ui.h:50 -msgid "The shortcut keys for switching to previous input method in the list" +#: ../tools/main.vala:297 +msgid "Restart ibus-daemon" msgstr "" -#: ../setup/setup.ui.h:52 -msgid "Top left corner" +#: ../tools/main.vala:298 +msgid "Show version" msgstr "" -#: ../setup/setup.ui.h:53 -msgid "Top right corner" +#: ../tools/main.vala:299 +msgid "Show the content of registry cache" msgstr "" -#: ../setup/setup.ui.h:54 -#, fuzzy -msgid "Use custom font:" -msgstr "استعمال خط مخصص" +#: ../tools/main.vala:300 +msgid "Create registry cache" +msgstr "" -#: ../setup/setup.ui.h:57 -msgid "Vertical" +#: ../tools/main.vala:301 +msgid "Print the D-Bus address of ibus-daemon" msgstr "" -#: ../setup/setup.ui.h:58 -#, fuzzy -msgid "When active" +#: ../tools/main.vala:302 +msgid "Show this information" msgstr "" -"أبدا\n" -"عند التفعيل\n" -"دائما" -#, fuzzy -#~ msgid "Use global engine" -#~ msgstr "المحركات المحملة مسبقا" +#: ../tools/main.vala:308 +#, c-format +msgid "" +"Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "" -#, fuzzy -#~ msgid "Langauge panel position" -#~ msgstr "إظهار لوحة اللغات:" +#: ../tools/main.vala:309 +#, c-format +msgid "Commands:\n" +msgstr "" -#~ msgid "Custom font:" -#~ msgstr "خط مخصص:" +#: ../tools/main.vala:338 +#, c-format +msgid "%s is unknown command!\n" +msgstr "" -#, fuzzy -#~ msgid "Font for language bar and candidates" -#~ msgstr "اسم الخط المخصص للوحة اللغة" +#: ../ui/gtk3/panel.vala:425 +msgid "IBus Update" +msgstr "" -#, fuzzy -#~ msgid "Use custom font for language bar and candidates" -#~ msgstr "استخدم خط مخصص في لوحة اللغة" +#: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 +msgid "Super+space is now the default hotkey." +msgstr "" -#~ msgid "Custom Font" -#~ msgstr "خط مخصص" +#: ../ui/gtk3/panel.vala:707 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "نظام IBus هو ناقل إدخال ذكي لنظام لينكس ويونكس." + +#: ../ui/gtk3/panel.vala:711 +msgid "translator-credits" +msgstr "Muayyad Alsadi " -#, fuzzy -#~ msgid "Show IM name on language bar" -#~ msgstr "اسم الخط المخصص للوحة اللغة" +#: ../ui/gtk3/panel.vala:732 +msgid "Preferences" +msgstr "التفضيلات" -#~ msgid "Use Custom Font" -#~ msgstr "استخدم خط مخصص" +#: ../ui/gtk3/panel.vala:742 +msgid "Restart" +msgstr "إعادة تشغيل" -#~ msgid "Trigger hotkey for enable or disable input context" -#~ msgstr "مفتاح الزناد لتفعيل وتثبيط سياق الإدخال" +#: ../ui/gtk3/panel.vala:746 +msgid "Quit" +msgstr "أنهِ" -#~ msgid "[Control+space]" -#~ msgstr "[Control+space]" +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ../ui/gtk3/propertypanel.vala:374 +msgid "default:LTR" +msgstr "default:RTL" diff --git a/po/as.po b/po/as.po index 2b1ad482f..1090db224 100644 --- a/po/as.po +++ b/po/as.po @@ -1,550 +1,3064 @@ -# translation of ibus.pot to Assamese # Assamese translation of ibus. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2018 Takao Fujiwara # This file is distributed under the same license as the ibus package. # -# Amitakhya Phukan , 2009. -# Amitakhya Phukan , 2010. -# ngoswami , 2011. +# Translators: +# Amitakhya Phukan , 2009 +# Amitakhya Phukan , 2010 +# Nilamdyuti Goswami , 2011 +# Nilamdyuti Goswami , 2012-2014 +# fujiwara , 2015. #zanata +# fujiwara , 2018. #zanata msgid "" msgstr "" -"Project-Id-Version: ibus.master.ibus.as\n" -"Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/list\n" -"POT-Creation-Date: 2011-03-08 12:32+0900\n" -"PO-Revision-Date: 2011-03-23 10:15+0000\n" -"Last-Translator: ngoswami \n" -"Language-Team: Assamese \n" -"Language: as\n" +"Project-Id-Version: IBus\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2018-02-20 17:31+0900\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Lokalize 1.0\n" +"PO-Revision-Date: 2018-02-20 04:21-0500\n" +"Last-Translator: Copied by Zanata \n" +"Language-Team: Assamese \n" +"Language: as\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Zanata 3.9.6\n" + +#: ../setup/setup.ui.h:1 +msgid "Horizontal" +msgstr "আনুভূমিক" + +#: ../setup/setup.ui.h:2 +msgid "Vertical" +msgstr "উল্লম্ব" + +#: ../setup/setup.ui.h:3 +msgid "Top left corner" +msgstr "ওপৰৰ বাওঁফালৰ কোণত" + +#: ../setup/setup.ui.h:4 +msgid "Top right corner" +msgstr "ওপৰৰ সোঁফালৰ কোণত" + +#: ../setup/setup.ui.h:5 +msgid "Bottom left corner" +msgstr "তলৰ বাওঁফালৰ কোণত" + +#: ../setup/setup.ui.h:6 +msgid "Bottom right corner" +msgstr "তলৰ সোঁফালৰ কোণত" + +#: ../setup/setup.ui.h:7 +msgid "Custom" +msgstr "স্বনিৰ্বাচিত" + +#: ../setup/setup.ui.h:8 +msgid "Do not show" +msgstr "নেদেখুৱাব" + +#: ../setup/setup.ui.h:9 +msgid "Hide automatically" +msgstr "স্বচালিতভাৱে লুকুৱাওক" + +#: ../setup/setup.ui.h:10 +msgid "Always" +msgstr "সদায়ে" + +#: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 +msgid "IBus Preferences" +msgstr "IBus পছন্দসমূহ" + +#: ../setup/setup.ui.h:12 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "" +"তালিকাত উপস্থিত পৰবৰ্তী ইনপুট পদ্ধতিলৈ পৰিবৰ্তনৰ বাবে প্ৰযোজ্য চৰ্টকাট কি'" + +#: ../setup/setup.ui.h:13 +msgid "Next input method:" +msgstr "পিছৰ ইনপুট পদ্ধতি:" + +#: ../setup/setup.ui.h:14 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "" +"তালিকাত উপস্থিত পূৰ্ববৰ্তী ইনপুট পদ্ধতিলৈ পৰিবৰ্তনৰ বাবে প্ৰযোজ্য চৰ্টকাট " +"কি'" + +#: ../setup/setup.ui.h:15 +msgid "Previous input method:" +msgstr "আগৰ ইনপুট পদ্ধতি" + +#: ../setup/setup.ui.h:16 +msgid "..." +msgstr "..." + +#: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:16 +msgid "The shortcut keys for turning input method on or off" +msgstr "" +"ইনপুট পদ্ধতি খোলা আৰু বন্ধ কৰাৰ বাবে প্ৰয়োজনীয় চৰ্টকাট কি' নিৰ্ধাৰণ কৰক" + +#: ../setup/setup.ui.h:18 +msgid "Enable or disable:" +msgstr "সামৰ্থবান বা অসামৰ্থবান কৰক:" + +#: ../setup/setup.ui.h:19 +msgid "Enable:" +msgstr "সামৰ্থবান কৰক:" + +#: ../setup/setup.ui.h:20 +msgid "Disable:" +msgstr "অসামৰ্থবান কৰক:" + +#: ../setup/setup.ui.h:21 +msgid "Keyboard Shortcuts" +msgstr "কিবৰ্ডৰ চৰ্টকাটসমূহ" + +#: ../setup/setup.ui.h:22 +msgid "Set the orientation of candidates in lookup table" +msgstr "লুক-আপ টেবুলত প্ৰযোজ্য বিকল্পসমূহৰ দিশ নিৰ্ধাৰণ কৰক" + +#: ../setup/setup.ui.h:23 +msgid "Candidates orientation:" +msgstr "প্ৰাৰ্থীৰ দিশ:" + +#: ../setup/setup.ui.h:24 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "ভাষাৰ বাৰ প্ৰদৰ্শন আৰু লুকুৱাৰ উদ্দেশ্যে ibus ৰ আচৰণ নিৰ্ধাৰণ কৰক" + +#: ../setup/setup.ui.h:25 +msgid "Show property panel:" +msgstr "বৈশিষ্ট্য পেনেল দেখুৱাওক:" + +#: ../setup/setup.ui.h:26 +msgid "Language panel position:" +msgstr "ভাষাৰ পেনেলৰ স্থান:" + +#: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:36 +msgid "Show icon on system tray" +msgstr "চিস্টেম ট্ৰেত আইকন দেখুৱাওক" + +#: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:38 +msgid "Show input method name on language bar" +msgstr "ভাষাৰ বাৰত ইনপুট পদ্ধতিৰ নাম দেখুৱাওক" + +#: ../setup/setup.ui.h:29 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "চেকবক্স নিৰ্বাচিত হ'লে ভাষাৰ বাৰত ইনপুট পদ্ধতিৰ নাম দেখুৱাওক" + +#: ../setup/setup.ui.h:30 +msgid "Embed preedit text in application window" +msgstr "এপ্লিকেচনৰ উইন্ডোত পূৰ্বসম্পাদনা লিখনী প্ৰোথিত কৰক" + +#: ../setup/setup.ui.h:31 +msgid "Embed the preedit text of input method in the application window" +msgstr "এপ্লিকেচনৰ উইন্ডোত ইনপুট পদ্ধতিৰ পূৰ্বসম্পাদনা লিখনী প্ৰোথিত কৰক" + +#: ../setup/setup.ui.h:32 +msgid "Use custom font:" +msgstr "স্বনিৰ্বাচিত ফন্ট ব্যৱহাৰ কৰক:" + +#: ../setup/setup.ui.h:33 +msgid "Font and Style" +msgstr "ফন্ট আৰু শৈলী" + +#: ../setup/setup.ui.h:34 +msgid "General" +msgstr "সাধাৰণ" + +#. add button +#: ../setup/setup.ui.h:35 ../setup/enginedialog.py:61 +#: ../setup/keyboardshortcut.py:124 +msgid "_Add" +msgstr "যোগ কৰক (_A)" + +#: ../setup/setup.ui.h:36 +msgid "Add the selected input method into the enabled input methods" +msgstr "নিৰ্বাচিত ইনপুট পদ্ধতিক সামৰ্থবান ইনপুট পদ্ধতিৰ তালিকাত যোগ কৰক" + +#: ../setup/setup.ui.h:37 +msgid "_Remove" +msgstr "আঁতৰাওক (_R)" + +#: ../setup/setup.ui.h:38 +msgid "Remove the selected input method from the enabled input methods" +msgstr "" +"সামৰ্থবান ইনপুট পদ্ধতিৰ তালিকাৰ পৰা নিৰ্বাচিত ইনপুট পদ্ধতি আঁতৰুৱা হ'ব" + +#: ../setup/setup.ui.h:39 +msgid "_Up" +msgstr "ওপৰত (_U)" + +#: ../setup/setup.ui.h:40 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "" +"নিৰ্বাচিত ইনপুট পদ্ধতিক সামৰ্থবান ইনপুট পদ্ধতিৰ তালিকাৰ ওপৰলৈ স্থানান্তৰ কৰক" + +#: ../setup/setup.ui.h:41 +msgid "_Down" +msgstr "তলত (_D)" + +#: ../setup/setup.ui.h:42 +msgid "Move down the selected input method in the enabled input methods" +msgstr "" +"নিৰ্বাচিত ইনপুট পদ্ধতিক সামৰ্থবান ইনপুট পদ্ধতিৰ তালিকাৰ তললৈ স্থানান্তৰ কৰক" +#: ../setup/setup.ui.h:43 +msgid "_About" +msgstr "বিষয়ে (_A)" -#: ../bus/ibus.desktop.in.h:1 -msgid "IBus" -msgstr "IBus" +#: ../setup/setup.ui.h:44 +msgid "Show information of the selected input method" +msgstr "নিৰ্বাচিত ইনপুট পদ্ধতি সংক্ৰান্ত তথ্য দেখুৱাওক" -#: ../bus/ibus.desktop.in.h:2 -msgid "Input Method Framework" -msgstr "ইনপুট পদ্ধতি গাথনি" +#: ../setup/setup.ui.h:45 +msgid "_Preferences" +msgstr "পছন্দ (_P)" -#: ../bus/ibus.desktop.in.h:3 -msgid "Start IBus Input Method Framework" -msgstr "IBus ইনপুট পদ্ধতি গাথনি আৰম্ভ কৰা" +#: ../setup/setup.ui.h:46 +msgid "Show setup of the selected input method" +msgstr "নিৰ্বাচিত ইনপুট পদ্ধতিৰ ইনস্টল দেখুৱাওক" -#: ../ibus/_config.py.in:39 +#: ../setup/setup.ui.h:47 msgid "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." msgstr "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +"কি'বৰ্ড চৰ্টকাট কি অথবা পেনেল আইকন ক্লিক কৰি সক্ৰিয় ইনপুট পদ্ধতিত " +"ওপৰৰ তালিকাত নিৰ্বাচিতসমূহৰ পৰা চুইচ কৰিব পৰা যাব। " -#: ../ibus/lang.py:41 -msgid "Other" -msgstr "অন্য" +#. create im name & icon column +#: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:68 +msgid "Input Method" +msgstr "ইনপুট পদ্ধতি" + +#: ../setup/setup.ui.h:49 +msgid "The shortcut keys for showing emoji dialog" +msgstr "" + +#: ../setup/setup.ui.h:50 +msgid "Emoji choice:" +msgstr "" + +#: ../setup/setup.ui.h:51 +msgid "Set a font of emoji candidates on the emoji dialog" +msgstr "" + +#: ../setup/setup.ui.h:52 +msgid "Emoji font:" +msgstr "" + +#: ../setup/setup.ui.h:53 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "" -#: ../ui/gtk/candidatepanel.py:264 -msgid "Previous page" -msgstr "পূৰ্ববৰ্তী পৃষ্ঠা" +#: ../setup/setup.ui.h:54 +msgid "Emoji annotation language:" +msgstr "" -#: ../ui/gtk/candidatepanel.py:269 -msgid "Next page" -msgstr "পৰবৰ্তী পৃষ্ঠা" +#: ../setup/setup.ui.h:55 +msgid "" +"Match emoji annotations partially with the following condition and more than " +"the number of characters:" +msgstr "" -#: ../ui/gtk/main.py:55 +#: ../setup/setup.ui.h:56 msgid "" -"Some input methods have been installed, removed or updated. Please restart " -"ibus input platform." +"If emoji annotations can be matched with a partial string instead of the " +"exact match" +msgstr "" + +#: ../setup/setup.ui.h:57 +msgid "Prefix match" +msgstr "" + +#: ../setup/setup.ui.h:58 +msgid "Suffix match" msgstr "" -"কিছুমান নিবেশ পদ্ধতিক সংস্থাপন, আঁতৰুৱা বা উন্নত কৰা হৈছে । অনুগ্ৰহ কৰি ibus" -" নিবেশৰ মঞ্চ পুনৰাৰম্ভ কৰক ।" -#: ../ui/gtk/main.py:59 -msgid "Restart Now" -msgstr "এতিয়া পুনৰাৰম্ভ কৰক" +#: ../setup/setup.ui.h:59 +msgid "Containing match" +msgstr "" -#: ../ui/gtk/main.py:60 -msgid "Later" -msgstr "পিছত" +#: ../setup/setup.ui.h:60 +msgid "Emoji" +msgstr "" -#: ../ui/gtk/panel.py:109 -msgid "IBus input method framework" -msgstr "IBus input method framework" +#: ../setup/setup.ui.h:61 ../data/ibus.schemas.in.h:44 +msgid "Use system keyboard layout" +msgstr "চিস্টেম কিবৰ্ড বিন্যাস ব্যৱহাৰ কৰক" -#: ../ui/gtk/panel.py:327 -msgid "Restart" -msgstr "পুনৰাৰম্ভ" +#: ../setup/setup.ui.h:62 ../data/ibus.schemas.in.h:45 +msgid "Use system keyboard (XKB) layout" +msgstr "চিস্টেম কিবৰ্ড (XKB) বিন্যাস ব্যৱহাৰ কৰক" -#: ../ui/gtk/panel.py:414 -msgid "Turn off input method" -msgstr "নিবেশ পদ্ধতি বন্ধ কৰক" +#: ../setup/setup.ui.h:63 +msgid "Keyboard Layout" +msgstr "কিবৰ্ডৰ বিন্যাস" -#: ../ui/gtk/panel.py:453 -msgid "No input window" -msgstr "নিবেশৰ সংযোগক্ষেত্ৰ নাই" +#: ../setup/setup.ui.h:64 ../data/ibus.schemas.in.h:68 +msgid "Share the same input method among all applications" +msgstr "সকলো এপ্লিকেচনৰ মাজত একেই ইনপুট পদ্ধতি অংশীদাৰী কৰক" -#: ../ui/gtk/panel.py:484 -msgid "IBus is an intelligent input bus for Linux/Unix." -msgstr "IBus এটা Linux/Unix ৰ কাৰণে বুদ্ধিমান নিবেশ bus ।" +#: ../setup/setup.ui.h:65 +msgid "Global input method settings" +msgstr "বিশ্বব্যাপী ইনপুট পদ্ধতি সংহতিসমূহ" -#: ../ui/gtk/panel.py:488 -msgid "translator-credits" -msgstr "অমিতাক্ষ ফুকন (aphukan@fedoraproject.org)" +#: ../setup/setup.ui.h:66 +msgid "Advanced" +msgstr "উন্নত" -#: ../ui/gtk/languagebar.py:106 -msgid "About the input method" -msgstr "নিবেশ পদ্ধতিৰ বিষয়ে" +#: ../setup/setup.ui.h:67 +msgid "" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" +msgstr "" +"IBus\n" +"বুদ্ধিমান ইনপুট bus\n" +"ঘৰৰ পৃষ্ঠা: htthttps://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" + +#: ../setup/setup.ui.h:74 +msgid "Start ibus on login" +msgstr "লগিনত ibus আৰম্ভ কৰক" -#: ../ui/gtk/languagebar.py:214 -msgid "Switch input method" -msgstr "নিবেশ পদ্ধতি সলনি কৰক" +#: ../setup/setup.ui.h:75 +msgid "Startup" +msgstr "আৰম্ভণি" -#: ../ui/gtk/languagebar.py:357 ../ui/gtk/engineabout.py:33 -#: ../setup/engineabout.py:33 ../setup/setup.ui.h:16 +#: ../setup/setup.ui.h:76 ../setup/engineabout.py:37 ../ui/gtk3/panel.vala:1175 msgid "About" msgstr "বিষয়ে" -#: ../ui/gtk/languagebar.py:361 -msgid "About the Input Method" -msgstr "নিবেশ পদ্ধতিৰ বিষয়ে" +#: ../setup/setup.ui.h:77 ../setup/engineabout.py:40 +msgid "_Close" +msgstr "বন্ধ কৰক (_C)" -#: ../ui/gtk/engineabout.py:61 ../setup/engineabout.py:61 -#, python-format -msgid "Language: %s\n" -msgstr "ভাষা: %s\n" +#. Translators: Here “Preload” is a verb +#: ../data/ibus.schemas.in.h:2 +msgid "Preload engines" +msgstr "ইঞ্জিনসমূহ আগতে ল'ড কৰক" -#: ../ui/gtk/engineabout.py:63 ../setup/engineabout.py:63 -#, python-format -msgid "Keyboard layout: %s\n" -msgstr "চাবিৰ ফলকৰ বিন্যাস: %s\n" +#. Translators: Tooltip for the button “Preload Engines” +#: ../data/ibus.schemas.in.h:4 +msgid "Preload engines during ibus starts up" +msgstr "ibus আৰম্ভৰ আগতে ইঞ্জিন ল'ড কৰক" -#: ../ui/gtk/engineabout.py:65 ../setup/engineabout.py:65 -#, python-format -msgid "Author: %s\n" -msgstr "লিখক: %s\n" +#: ../data/ibus.schemas.in.h:5 +msgid "Engines order" +msgstr "ইঞ্জিনসমূহৰ ক্ৰম" -#: ../ui/gtk/engineabout.py:67 ../setup/engineabout.py:67 -msgid "Description:\n" -msgstr "বিৱৰণ:\n" +#: ../data/ibus.schemas.in.h:6 +msgid "Saved engines order in input method list" +msgstr "ইনপুট পদ্ধতি তালিকাত সংৰক্ষিত ইঞ্জিন ক্ৰম" + +#: ../data/ibus.schemas.in.h:7 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "IME চুইচাৰ উইন্ডোৰ বাবে মিলিছেকেণ্ডত পপআপ বিলম্ব" + +#: ../data/ibus.schemas.in.h:8 +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is 400." +" 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " +"show the window and switch prev/next engines." +msgstr "" +"IME চুইচাৰ উইন্ডো দেখুৱাবলে মিলিছেকেণ্ডত পপআপ বিলম্ব দেখুৱাওক। অবিকল্পিত হল " +"400. 0 = উইন্ডো তৎক্ষনাত দেখুৱাওক। 0 < মিলিছেকেণ্ডত বিলম্ব। 0 > উইন্ডো " +"নেদেখুৱাব আৰু পূৰ্বৱৰ্তী/পৰৱৰ্তী ইঞ্জিন চুইচ নকৰিব।" + +#: ../data/ibus.schemas.in.h:9 +msgid "Saved version number" +msgstr "সংৰক্ষিত সংস্কৰণ সংখ্যা" + +#: ../data/ibus.schemas.in.h:10 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" +"সংৰক্ষিত সংস্কৰণ সংখ্যাক পূৰ্বতে ইনস্টল কৰা ibus আৰু বৰ্তমান ibus ৰ মাজত " +"পাৰ্থক্য নিৰীক্ষণ কৰিবলৈ ব্যৱহাৰ কৰা হব।" + +#: ../data/ibus.schemas.in.h:11 +msgid "Latin layouts which have no ASCII" +msgstr "ASCII নথকা লেটিন বিন্যাসসমূহ" + +#: ../data/ibus.schemas.in.h:12 +msgid "US layout is appended to the Latin layouts. variant can be omitted." +msgstr "US বিন্যাসক লেটিন বিন্যাসসমূহলৈ সংযোজন কৰা হয়। অপৰক বাদ দিব পাৰি।" + +#: ../data/ibus.schemas.in.h:13 +msgid "Use xmodmap" +msgstr "xmodmap ব্যৱহাৰ কৰক" -#: ../setup/main.py:102 -msgid "trigger" -msgstr "ট্ৰিগাৰ" +#: ../data/ibus.schemas.in.h:14 +msgid "" +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." +msgstr "" +"ibus ইঞ্জিনসমূহ চুইচ কৰোতে যদি .xmodmap অথবা .Xmodmap থাকে xmodmap চলাব।" + +#: ../data/ibus.schemas.in.h:15 +msgid "Trigger shortcut keys" +msgstr "ট্ৰিগাৰৰ চৰ্টকাট কি'সমূহ" + +#: ../data/ibus.schemas.in.h:17 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "gtk_accelerator_parse ৰ বাবে চৰ্টকাট কি'সমূহ ট্ৰিগাৰ কৰক" + +#: ../data/ibus.schemas.in.h:18 +msgid "Enable shortcut keys" +msgstr "চৰ্টকাট কি'সমূহ সামৰ্থবান কৰক" + +#: ../data/ibus.schemas.in.h:19 +msgid "The shortcut keys for turning input method on" +msgstr "ইনপুট পদ্ধতি খুলিবলে চৰ্টকাট কি'সমূহ" + +#: ../data/ibus.schemas.in.h:20 +msgid "Disable shortcut keys" +msgstr "চৰ্টকাট কি'সমূহ অসামৰ্থবান কৰক" + +#: ../data/ibus.schemas.in.h:21 +msgid "The shortcut keys for turning input method off" +msgstr "ইনপুট পদ্ধতি বন্ধ কৰিবলে চৰ্টকাট কি'সমূহ" + +#: ../data/ibus.schemas.in.h:22 +msgid "Next engine shortcut keys" +msgstr "পৰবৰ্তী ইঞ্জিন চৰ্টকাট কি'সমূহ" + +#: ../data/ibus.schemas.in.h:23 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "তালিকাত থকা পৰৱৰ্তী ইনপুট পদ্ধতিলে যাবলে চৰ্টকাট কি'সমূহ" + +#: ../data/ibus.schemas.in.h:24 +msgid "Prev engine shortcut keys" +msgstr "পূৰ্ববৰ্তী ইঞ্জিনৰ চৰ্টকাট কি'" + +#: ../data/ibus.schemas.in.h:25 +msgid "The shortcut keys for switching to the previous input method" +msgstr "তালিকাত থকা পূৰ্বৱৰ্তী ইনপুট পদ্ধতিলে যাবলে চৰ্টকাট কি'সমূহ" + +#: ../data/ibus.schemas.in.h:26 +msgid "Auto hide" +msgstr "স্বচালিতভাৱে লুকাওক" + +#: ../data/ibus.schemas.in.h:27 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "" +"বৈশিষ্ট্য পেনেলৰ আচৰণ। 0 = নেদেখুৱাব, 1 = স্বচালিতভাৱে লুকুৱাওক, 2 = সদায় " +"দেখুৱাব" + +#: ../data/ibus.schemas.in.h:28 +msgid "Language panel position" +msgstr "ভাষাৰ পেনেলৰ স্থান" + +#: ../data/ibus.schemas.in.h:29 +msgid "" +"The position of the language panel. 0 = Top left corner, 1 = Top right " +"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +msgstr "" +"ভাষাৰ পেনেলৰ স্থান। 0 = ওপৰৰ বাওঁফালৰ কোণত, 1 = ওপৰৰ সোঁফালৰ কোণত, 2 = তলৰ " +"বাওঁফালৰ কোণত, 3 = তলৰ সোঁফালৰ কোণত, 4 = স্বনিৰ্বাচিত" + +#: ../data/ibus.schemas.in.h:30 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "পেনেল সদায় দেখুৱা হলে ইনপুট কাৰ্চাৰক অনুকৰণ কৰিব" + +#: ../data/ibus.schemas.in.h:31 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" +"যদি সত্য, পেনেলে ইনপুট কাৰ্চাৰক দেখুৱায় যদি পেনেলক সদায় দেখুৱা হয়। যদি ভুল, " +"পেনেলক এটা নিৰ্দিষ্ট স্থানত দেখুৱা হয়।" + +#: ../data/ibus.schemas.in.h:32 +msgid "The milliseconds to show property panel" +msgstr "বৈশিষ্ট্য পেনেল দেখুৱাবলৈ মিলিছেকেণ্ড" + +#: ../data/ibus.schemas.in.h:33 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" +"ফকাচ-ইন আৰু বৈশিষ্ট্যসমূহ পৰিবৰ্তন হোৱাৰ পিছত বৈশিষ্ট্য পেনেল দেখুৱাবলৈ " +"মিলিছেকেণ্ড।" + +#: ../data/ibus.schemas.in.h:34 +msgid "Orientation of lookup table" +msgstr "লুক-আপ টেবুলৰ দিশ" + +#: ../data/ibus.schemas.in.h:35 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "লুকআপ টেবুলৰ দিশ। ০ = আনুভূমিক, ১ = উলম্ব" + +#: ../data/ibus.schemas.in.h:37 +msgid "Show input method name" +msgstr "ইনপুট পদ্ধতিৰ নাম দেখুৱাওক" + +#: ../data/ibus.schemas.in.h:39 +msgid "RGBA value of XKB icon" +msgstr "XKB আইকনৰ RGBA মান" + +#: ../data/ibus.schemas.in.h:41 +#, no-c-format +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " +"'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " +"to 255 or percentage values in the range 0% to 100%, and 'a' is a floating " +"point value in the range 0 to 1 of the alpha." +msgstr "" +"XKB আইকনে বিন্যাস স্ট্ৰিং দেখুৱায় আৰু স্ট্ৰিং RGBA মানৰ সৈতে ৰেণ্ডাৰ হয়। " +"RGBA মান হব পাৰে 1. X11 ৰ পৰা এটা ৰঙৰ নাম, 2. '#rrggbb' বিন্যাসত এটা হেক্স " +"মান য'ত 'r', 'g' আৰু 'b' হল ৰঙা, সেউজীয়া আৰু নীলাৰ হেক্স ডিজিট, 3. " +"'rgb(r,g,b)' বিন্যাসত এটা RGB ৰঙ অথবা 4. 'rgba(r,g,b,a)' বিন্যাসত এটা RGBA " +"ৰঙ য'ত 'r', 'g', and 'b' 0 ৰ পৰা 255 বিস্তাৰত পূৰ্ণসংখ্যা অথবা 0% ৰ পৰা " +"100% বিস্তাৰত শতাংশ মান, আৰু 'a' 0 ৰ পৰা 1 বিস্তাৰত এটা দশমিক মান।" + +#: ../data/ibus.schemas.in.h:42 +msgid "The milliseconds to show the panel icon for a property" +msgstr "" + +#: ../data/ibus.schemas.in.h:43 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" + +#: ../data/ibus.schemas.in.h:46 +msgid "Use custom font" +msgstr "স্বনিৰ্বাচিত ফন্ট ব্যৱহাৰ কৰক" + +#: ../data/ibus.schemas.in.h:47 +msgid "Use custom font name for language panel" +msgstr "ভাষাৰ পেনেলৰ বাবে স্বনিৰ্বাচিত ফন্টৰ নাম ব্যৱহাৰ কৰক" + +#: ../data/ibus.schemas.in.h:48 +msgid "Custom font" +msgstr "স্বনিৰ্বাচিত ফন্ট" + +#: ../data/ibus.schemas.in.h:49 +msgid "Custom font name for language panel" +msgstr "ভাষাৰ পেনেলৰ বাবে স্বনিৰ্বাচিত ফন্ট" + +#: ../data/ibus.schemas.in.h:50 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "" + +#: ../data/ibus.schemas.in.h:51 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "" + +#: ../data/ibus.schemas.in.h:52 +msgid "Custom font name for emoji characters on emoji dialog" +msgstr "" + +#: ../data/ibus.schemas.in.h:53 +msgid "Default language for emoji dictionary" +msgstr "" + +#: ../data/ibus.schemas.in.h:54 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" +msgstr "" + +#: ../data/ibus.schemas.in.h:55 +msgid "favorite emoji list on emoji dialog" +msgstr "" + +#: ../data/ibus.schemas.in.h:56 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "" + +#: ../data/ibus.schemas.in.h:57 +msgid "favorite emoji annotation list on emoji dialog" +msgstr "" + +#: ../data/ibus.schemas.in.h:58 +msgid "You can assign an annotation for a favorite emoji in this list." +msgstr "" + +#: ../data/ibus.schemas.in.h:59 +msgid "Whether emoji annotations can be match partially or not" +msgstr "" + +#: ../data/ibus.schemas.in.h:60 +msgid "" +"Whether emoji annotations can be matched with a partial string instead of " +"the exact match or not." +msgstr "" + +#: ../data/ibus.schemas.in.h:61 +msgid "Match emoji annotations with the specified length" +msgstr "" + +#: ../data/ibus.schemas.in.h:62 +msgid "" +"Match emoji annotations partially with more than the specified number of " +"characters instead of the exact match." +msgstr "" + +#: ../data/ibus.schemas.in.h:63 +msgid "Choose a condition to match emoji annotations partially" +msgstr "" + +#: ../data/ibus.schemas.in.h:64 +msgid "" +"Choose one of the following conditions to match emoji annotations partially: " +"0 == Prefix match, 1 == Suffix match, 2 == Containing match" +msgstr "" + +#: ../data/ibus.schemas.in.h:65 +msgid "Embed Preedit Text" +msgstr "পূৰ্বসম্পাদনা লিখনী প্ৰোথিত কৰক" + +#: ../data/ibus.schemas.in.h:66 +msgid "Embed Preedit Text in Application Window" +msgstr "এপ্লিকেচনৰ উইন্ডোত পূৰ্বসম্পাদনা লিখনী প্ৰোথিত কৰক" + +#: ../data/ibus.schemas.in.h:67 +msgid "Use global input method" +msgstr "সৰ্বব্যাপী ইনপুট পদ্ধতি ব্যৱহাৰ কৰক" + +#: ../data/ibus.schemas.in.h:69 +msgid "Enable input method by default" +msgstr "ইনপুট পদ্ধতি অবিকল্পিতভাৱে সামৰ্থবান কৰক" + +#: ../data/ibus.schemas.in.h:70 +msgid "Enable input method by default when the application gets input focus" +msgstr "" +"যেতিয়া এপ্লিকেচনে ইনপুট ফকাচ প্ৰাপ্ত কৰে তেতিয়া অবিকল্পিতভাৱে ইনপুট পদ্ধতি " +"সামৰ্থবান কৰক" + +#: ../data/ibus.schemas.in.h:71 +msgid "DConf preserve name prefixes" +msgstr "DConf সংৰক্ষিত নাম উপসৰ্গসমূহ" + +#: ../data/ibus.schemas.in.h:72 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "নাম পৰিবৰ্তন বন্ধ কৰিবলে DConf কি'সমূহৰ উপসৰ্গসমূহ" + +#: ../ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "" +"স্বত্বাধিকাৰ (c) ২০০৭-২০১০ পেং হুৱাং\n" +"স্বত্বাধিকাৰ (c) ২০০৭-২০১০ Red Hat, Inc." + +#: ../ibus/lang.py:41 ../src/ibusutil.c:158 +msgid "Other" +msgstr "অন্য" + +#: ../setup/emojilang.py:67 +msgid "Select a language" +msgstr "" + +#: ../setup/emojilang.py:70 ../setup/enginedialog.py:60 +#: ../setup/keyboardshortcut.py:339 ../setup/main.py:552 +msgid "_Cancel" +msgstr "বাতিল (_C)" + +#: ../setup/emojilang.py:71 ../setup/keyboardshortcut.py:340 +#: ../setup/main.py:553 +msgid "_OK" +msgstr "ঠিক আছে (_O)" + +#: ../setup/emojilang.py:235 ../setup/enginedialog.py:205 +msgid "More…" +msgstr "অধিক" + +#: ../setup/engineabout.py:72 +#, python-format +msgid "Language: %s\n" +msgstr "ভাষা: %s\n" + +#: ../setup/engineabout.py:75 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "কিবৰ্ডৰ বিন্যাস: %s\n" + +#: ../setup/engineabout.py:78 +#, python-format +msgid "Author: %s\n" +msgstr "লিখক: %s\n" + +#: ../setup/engineabout.py:81 +msgid "Description:\n" +msgstr "বিৱৰণ:\n" + +#: ../setup/enginecombobox.py:139 ../setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "এটা ইনপুট পদ্ধতি বাছক" + +#: ../setup/enginetreeview.py:96 +msgid "Kbd" +msgstr "Kbd" + +#: ../setup/ibus-setup.desktop.in.h:2 +msgid "Set IBus Preferences" +msgstr "IBus পছন্দসমূহ সংহতি কৰক" + +#: ../setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "কিবৰ্ডৰ চৰ্টকাটসমূহ" + +#: ../setup/keyboardshortcut.py:67 +msgid "Key code:" +msgstr "কি'ৰ ক'ড:" + +#: ../setup/keyboardshortcut.py:82 +msgid "Modifiers:" +msgstr "পৰিবৰ্তক:" + +#. apply button +#: ../setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "প্ৰয়োগ কৰক (_A)" + +#. delete button +#: ../setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "আঁতৰাওক (_D)" + +#: ../setup/keyboardshortcut.py:252 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "" +"অনুগ্ৰহ কৰি এটা কি' টিপক (বা এটা কি'ৰ মিশ্ৰণ)।\n" +"কি' এৰিলে ডাইলগ বন্ধ হ'ব।" + +#: ../setup/keyboardshortcut.py:255 +msgid "Please press a key (or a key combination)" +msgstr "অনুগ্ৰহ কৰি এটা কি' টিপক (বা এটা কি'ৰ মিশ্ৰণ)" + +#: ../setup/main.py:121 ../setup/main.py:580 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "" +"পূৰ্বৱৰ্তী ইনপুট পদ্ধতিলৈ চুইচ কৰিবলে shift ৰ সৈতে চৰ্টকাট ব্যৱহাৰ কৰক" + +#: ../setup/main.py:507 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "IBus ডিমন চলি থকা নাই। আপুনি আৰম্ভ কৰিব বিচাৰে নেকি?" + +#: ../setup/main.py:528 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "" +"IBus আৰম্ভ কৰা হৈছে! যদি আপুনি IBus ব্যৱহাৰ কৰিব নোৱাৰে, নিম্নলিখিত শাৰীসমূহ " +"আপোনাৰ $HOME/.bashrc লে যোগ কৰক; তাৰ পিছত আপোনাৰ ডেস্কটপত পুনৰ লগ কৰক।\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" + +#. Translators: %d == 5 currently +#: ../setup/main.py:542 +#, python-format +msgid "IBus daemon could not be started in %d seconds" +msgstr "IBus ডিমনক %d ছেকেণ্ডত আৰম্ভ কৰিব পৰা নগল" + +#: ../setup/main.py:554 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "%s ৰ কাৰণে কিবৰ্ডৰ চৰ্টকাট বাছক" + +#. Translators: Title of the window +#: ../setup/main.py:556 +msgid "switching input methods" +msgstr "ইনপুট পদ্ধতিসমূহ চুইচ কৰা" + +#: ../src/ibusemojigen.h:30 +msgid "Activities" +msgstr "" + +#: ../src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "" + +#: ../src/ibusemojigen.h:32 +msgid "Flags" +msgstr "" + +#: ../src/ibusemojigen.h:33 +msgid "Food & Drink" +msgstr "" + +#: ../src/ibusemojigen.h:34 +msgid "Objects" +msgstr "" + +#: ../src/ibusemojigen.h:35 +msgid "Smileys & People" +msgstr "" + +#: ../src/ibusemojigen.h:36 +msgid "Symbols" +msgstr "" + +#: ../src/ibusemojigen.h:37 +msgid "Travel & Places" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:33 +msgid "Basic Latin" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:37 +msgid "Latin-1 Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:41 +msgid "Latin Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:45 +msgid "Latin Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:49 +msgid "IPA Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:53 +msgid "Spacing Modifier Letters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:57 +msgid "Combining Diacritical Marks" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:61 +msgid "Greek and Coptic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:65 +msgid "Cyrillic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:69 +msgid "Cyrillic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:73 +msgid "Armenian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:77 +msgid "Hebrew" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:81 +msgid "Arabic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:85 +msgid "Syriac" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:89 +msgid "Arabic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:93 +msgid "Thaana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:97 +msgid "NKo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:101 +msgid "Samaritan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:105 +msgid "Mandaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:109 +msgid "Syriac Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:113 +msgid "Arabic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:117 +msgid "Devanagari" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:121 +msgid "Bengali" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:125 +msgid "Gurmukhi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:129 +msgid "Gujarati" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:133 +msgid "Oriya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:137 +msgid "Tamil" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:141 +msgid "Telugu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:145 +msgid "Kannada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:149 +msgid "Malayalam" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:153 +msgid "Sinhala" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:157 +msgid "Thai" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:161 +msgid "Lao" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:165 +msgid "Tibetan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:169 +msgid "Myanmar" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:173 +msgid "Georgian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:177 +msgid "Hangul Jamo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:181 +msgid "Ethiopic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:185 +msgid "Ethiopic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:189 +msgid "Cherokee" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:193 +msgid "Unified Canadian Aboriginal Syllabics" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:197 +msgid "Ogham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:201 +msgid "Runic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:205 +msgid "Tagalog" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:209 +msgid "Hanunoo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:213 +msgid "Buhid" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:217 +msgid "Tagbanwa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:221 +msgid "Khmer" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:225 +msgid "Mongolian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:229 +msgid "Unified Canadian Aboriginal Syllabics Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:233 +msgid "Limbu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:237 +msgid "Tai Le" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:241 +msgid "New Tai Lue" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:245 +msgid "Khmer Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:249 +msgid "Buginese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:253 +msgid "Tai Tham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:257 +msgid "Combining Diacritical Marks Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:261 +msgid "Balinese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:265 +msgid "Sundanese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:269 +msgid "Batak" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:273 +msgid "Lepcha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:277 +msgid "Ol Chiki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:281 +msgid "Cyrillic Extended-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:285 +msgid "Sundanese Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:289 +msgid "Vedic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:293 +msgid "Phonetic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:297 +msgid "Phonetic Extensions Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:301 +msgid "Combining Diacritical Marks Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:305 +msgid "Latin Extended Additional" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:309 +msgid "Greek Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:313 +msgid "General Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:317 +msgid "Superscripts and Subscripts" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:321 +msgid "Currency Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:325 +msgid "Combining Diacritical Marks for Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:329 +msgid "Letterlike Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:333 +msgid "Number Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:337 +msgid "Arrows" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:341 +msgid "Mathematical Operators" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:345 +msgid "Miscellaneous Technical" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:349 +msgid "Control Pictures" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:353 +msgid "Optical Character Recognition" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:357 +msgid "Enclosed Alphanumerics" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:361 +msgid "Box Drawing" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:365 +msgid "Block Elements" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:369 +msgid "Geometric Shapes" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:373 +msgid "Miscellaneous Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:377 +msgid "Dingbats" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:381 +msgid "Miscellaneous Mathematical Symbols-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:385 +msgid "Supplemental Arrows-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:389 +msgid "Braille Patterns" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:393 +msgid "Supplemental Arrows-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:397 +msgid "Miscellaneous Mathematical Symbols-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:401 +msgid "Supplemental Mathematical Operators" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:405 +msgid "Miscellaneous Symbols and Arrows" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:409 +msgid "Glagolitic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:413 +msgid "Latin Extended-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:417 +msgid "Coptic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:421 +msgid "Georgian Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:425 +msgid "Tifinagh" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:429 +msgid "Ethiopic Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:433 +msgid "Cyrillic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:437 +msgid "Supplemental Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:441 +msgid "CJK Radicals Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:445 +msgid "Kangxi Radicals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:449 +msgid "Ideographic Description Characters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:453 +msgid "CJK Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:457 +msgid "Hiragana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:461 +msgid "Katakana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:465 +msgid "Bopomofo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:469 +msgid "Hangul Compatibility Jamo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:473 +msgid "Kanbun" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:477 +msgid "Bopomofo Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:481 +msgid "CJK Strokes" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:485 +msgid "Katakana Phonetic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:489 +msgid "Enclosed CJK Letters and Months" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:493 +msgid "CJK Compatibility" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:497 +msgid "CJK Unified Ideographs Extension A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:501 +msgid "Yijing Hexagram Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:505 +msgid "CJK Unified Ideographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:509 +msgid "Yi Syllables" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:513 +msgid "Yi Radicals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:517 +msgid "Lisu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:521 +msgid "Vai" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:525 +msgid "Cyrillic Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:529 +msgid "Bamum" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:533 +msgid "Modifier Tone Letters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:537 +msgid "Latin Extended-D" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:541 +msgid "Syloti Nagri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:545 +msgid "Common Indic Number Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:549 +msgid "Phags-pa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:553 +msgid "Saurashtra" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:557 +msgid "Devanagari Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:561 +msgid "Kayah Li" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:565 +msgid "Rejang" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:569 +msgid "Hangul Jamo Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:573 +msgid "Javanese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:577 +msgid "Myanmar Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:581 +msgid "Cham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:585 +msgid "Myanmar Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:589 +msgid "Tai Viet" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:593 +msgid "Meetei Mayek Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:597 +msgid "Ethiopic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:601 +msgid "Latin Extended-E" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:605 +msgid "Cherokee Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:609 +msgid "Meetei Mayek" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:613 +msgid "Hangul Syllables" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:617 +msgid "Hangul Jamo Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:621 +msgid "High Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:625 +msgid "High Private Use Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:629 +msgid "Low Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:633 +msgid "Private Use Area" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:637 +msgid "CJK Compatibility Ideographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:641 +msgid "Alphabetic Presentation Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:645 +msgid "Arabic Presentation Forms-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:649 +msgid "Variation Selectors" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:653 +msgid "Vertical Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:657 +msgid "Combining Half Marks" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:661 +msgid "CJK Compatibility Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:665 +msgid "Small Form Variants" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:669 +msgid "Arabic Presentation Forms-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:673 +msgid "Halfwidth and Fullwidth Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:677 +msgid "Specials" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:681 +msgid "Linear B Syllabary" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:685 +msgid "Linear B Ideograms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:689 +msgid "Aegean Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:693 +msgid "Ancient Greek Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:697 +msgid "Ancient Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:701 +msgid "Phaistos Disc" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:705 +msgid "Lycian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:709 +msgid "Carian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:713 +msgid "Coptic Epact Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:717 +msgid "Old Italic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:721 +msgid "Gothic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:725 +msgid "Old Permic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:729 +msgid "Ugaritic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:733 +msgid "Old Persian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:737 +msgid "Deseret" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:741 +msgid "Shavian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:745 +msgid "Osmanya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:749 +msgid "Osage" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:753 +msgid "Elbasan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:757 +msgid "Caucasian Albanian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:761 +msgid "Linear A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:765 +msgid "Cypriot Syllabary" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:769 +msgid "Imperial Aramaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:773 +msgid "Palmyrene" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:777 +msgid "Nabataean" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:781 +msgid "Hatran" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:785 +msgid "Phoenician" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:789 +msgid "Lydian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:793 +msgid "Meroitic Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:797 +msgid "Meroitic Cursive" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:801 +msgid "Kharoshthi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:805 +msgid "Old South Arabian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:809 +msgid "Old North Arabian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:813 +msgid "Manichaean" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:817 +msgid "Avestan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:821 +msgid "Inscriptional Parthian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:825 +msgid "Inscriptional Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:829 +msgid "Psalter Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:833 +msgid "Old Turkic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:837 +msgid "Old Hungarian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:841 +msgid "Rumi Numeral Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:845 +msgid "Brahmi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:849 +msgid "Kaithi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:853 +msgid "Sora Sompeng" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:857 +msgid "Chakma" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:861 +msgid "Mahajani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:865 +msgid "Sharada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:869 +msgid "Sinhala Archaic Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:873 +msgid "Khojki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:877 +msgid "Multani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:881 +msgid "Khudawadi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:885 +msgid "Grantha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:889 +msgid "Newa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:893 +msgid "Tirhuta" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:897 +msgid "Siddham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:901 +msgid "Modi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:905 +msgid "Mongolian Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:909 +msgid "Takri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:913 +msgid "Ahom" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:917 +msgid "Warang Citi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:921 +msgid "Zanabazar Square" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:925 +msgid "Soyombo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:929 +msgid "Pau Cin Hau" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:933 +msgid "Bhaiksuki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:937 +msgid "Marchen" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:941 +msgid "Masaram Gondi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:945 +msgid "Cuneiform" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:949 +msgid "Cuneiform Numbers and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:953 +msgid "Early Dynastic Cuneiform" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:957 +msgid "Egyptian Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:961 +msgid "Anatolian Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:965 +msgid "Bamum Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:969 +msgid "Mro" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:973 +msgid "Bassa Vah" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:977 +msgid "Pahawh Hmong" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:981 +msgid "Miao" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:985 +msgid "Ideographic Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:989 +msgid "Tangut" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:993 +msgid "Tangut Components" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:997 +msgid "Kana Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1001 +msgid "Kana Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1005 +msgid "Nushu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1009 +msgid "Duployan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1013 +msgid "Shorthand Format Controls" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1017 +msgid "Byzantine Musical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1021 +msgid "Musical Symbols" +msgstr "" -#: ../setup/main.py:113 -msgid "enable" -msgstr "সামৰ্থবান কৰা" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1025 +msgid "Ancient Greek Musical Notation" +msgstr "" -#: ../setup/main.py:124 -msgid "disable" -msgstr "অসামৰ্থবান কৰা" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1029 +msgid "Tai Xuan Jing Symbols" +msgstr "" -#: ../setup/main.py:135 -msgid "next input method" -msgstr "পিছৰ নিবেশ পদ্ধতি" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1033 +msgid "Counting Rod Numerals" +msgstr "" -#: ../setup/main.py:146 -msgid "previous input method" -msgstr "আগৰ নিবেশ পদ্ধতি" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1037 +msgid "Mathematical Alphanumeric Symbols" +msgstr "" -#: ../setup/main.py:286 -msgid "IBus daemon is not started. Do you want to start it now?" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1041 +msgid "Sutton SignWriting" msgstr "" -"IBus ডেমন আৰম্ভ কৰা হোৱা নাই । আপুনি ইয়াক এতিয়া আৰম্ভ কৰিব বিচাৰে নেকি ?" -#: ../setup/main.py:301 -msgid "" -"IBus has been started! If you can not use IBus, please add below lines in $HOME/.bashrc, and relogin your desktop.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1045 +msgid "Glagolitic Supplement" msgstr "" -"IBus আৰম্ভ কৰা হ'ল! IBus ব্যৱহাৰ কৰিব নোৱাৰিলে, এই শাৰী$HOME/.bashrc ত যোগ দিয়ক, আৰু আপোনাৰ ডেষ্কট'পত পুনঃ প্ৰৱেশ কৰক ।\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" -#: ../setup/main.py:316 -#, python-format -msgid "Select keyboard shortcut for %s" -msgstr "%s ৰ কাৰণে চাবিফলকৰ চমুপথ নিৰ্ব্বাচন কৰক" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1049 +msgid "Mende Kikakui" +msgstr "" -#: ../setup/keyboardshortcut.py:52 -msgid "Keyboard shortcuts" -msgstr "কীবৰ্ডৰ চমুপথবোৰ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1053 +msgid "Adlam" +msgstr "" -#: ../setup/keyboardshortcut.py:63 -msgid "Key code:" -msgstr "চাবিৰ কোড:" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1057 +msgid "Arabic Mathematical Alphabetic Symbols" +msgstr "" -#: ../setup/keyboardshortcut.py:78 -msgid "Modifiers:" -msgstr "পৰিবৰ্তক:" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1061 +msgid "Mahjong Tiles" +msgstr "" -#: ../setup/keyboardshortcut.py:231 -msgid "" -"Please press a key (or a key combination).\n" -"The dialog will be closed when the key is released." +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1065 +msgid "Domino Tiles" msgstr "" -"অনুগ্ৰহ কৰি এটা চাবি টিপক (বা এটা চাবিৰ মিশ্ৰণ) ।\n" -"চাবি এৰিলে সম্বাদ বন্ধ হ'ব ।" -#: ../setup/keyboardshortcut.py:233 -msgid "Please press a key (or a key combination)" -msgstr "অনুগ্ৰহ কৰি এটা চাবি টিপক (বা এটা চাবিৰ মিশ্ৰণ)" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1069 +msgid "Playing Cards" +msgstr "" -#: ../setup/enginecombobox.py:120 -msgid "Select an input method" -msgstr "এটা নিবেশ পদ্ধতি নিৰ্ব্বাচন কৰক" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1073 +msgid "Enclosed Alphanumeric Supplement" +msgstr "" -#. create im name & icon column -#: ../setup/enginetreeview.py:64 ../setup/setup.ui.h:33 -msgid "Input Method" -msgstr "নিবেশ পদ্ধতি" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1077 +msgid "Enclosed Ideographic Supplement" +msgstr "" -#: ../setup/enginetreeview.py:92 -msgid "Kbd" -msgstr "Kbd" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1081 +msgid "Miscellaneous Symbols and Pictographs" +msgstr "" -#: ../setup/ibus-setup.desktop.in.h:1 ../setup/setup.ui.h:32 -msgid "IBus Preferences" -msgstr "IBus পছন্দ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1085 +msgid "Emoticons" +msgstr "" -#: ../setup/ibus-setup.desktop.in.h:2 -msgid "Set IBus Preferences" -msgstr "IBus পছন্দসমূহ সংহতি কৰক" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1089 +msgid "Ornamental Dingbats" +msgstr "" -#: ../data/ibus.schemas.in.h:1 -msgid "Auto hide" -msgstr "স্বয়ংক্ৰিয়ভাবে লুকাওক" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1093 +msgid "Transport and Map Symbols" +msgstr "" -#: ../data/ibus.schemas.in.h:2 -msgid "Custom font" -msgstr "স্বনিৰ্ধাৰিত ফন্ট" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1097 +msgid "Alchemical Symbols" +msgstr "" -#: ../data/ibus.schemas.in.h:3 -msgid "Custom font name for language panel" -msgstr "ভাষাৰ পেনেলৰ বাবে স্বনিৰ্বাচিত ফন্ট" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1101 +msgid "Geometric Shapes Extended" +msgstr "" -#: ../data/ibus.schemas.in.h:4 -msgid "Disable shortcut keys" -msgstr "চৰ্টকাট কিসমূহ অসামৰ্থবান কৰক" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1105 +msgid "Supplemental Arrows-C" +msgstr "" -#: ../data/ibus.schemas.in.h:5 -msgid "Embed Preedit Text" -msgstr "প্ৰিএডিট টেক্সট প্ৰোথিত কৰক" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1109 +msgid "Supplemental Symbols and Pictographs" +msgstr "" -#: ../data/ibus.schemas.in.h:6 -msgid "Embed Preedit Text in Application Window" -msgstr "অনুপ্ৰয়োগৰ সংযোগক্ষেত্ৰত প্ৰিএডিট টেক্সট প্ৰোথিত কৰক" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1113 +msgid "CJK Unified Ideographs Extension B" +msgstr "" -#: ../data/ibus.schemas.in.h:7 -msgid "Enable input method by default" -msgstr "ইনপুট পদ্ধতি অবিকল্পিতভাৱে সামৰ্থবান কৰক" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1117 +msgid "CJK Unified Ideographs Extension C" +msgstr "" -#: ../data/ibus.schemas.in.h:8 -msgid "Enable input method by default when the application gets input focus" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1121 +msgid "CJK Unified Ideographs Extension D" msgstr "" -"যেতিয়া অনুপ্ৰয়োগে ইনপুট ফকাচ প্ৰাপ্ত কৰে তেতিয়া অবিকল্পিতভাৱে ইনপুট পদ্ধতি " -"সামৰ্থবান কৰা" -#: ../data/ibus.schemas.in.h:9 -msgid "Enable shortcut keys" -msgstr "চৰ্টকাট কিসমূহ সামৰ্থবান কৰা" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1125 +msgid "CJK Unified Ideographs Extension E" +msgstr "" -#: ../data/ibus.schemas.in.h:10 -msgid "Language panel position" -msgstr "ভাষাৰ পেনেলৰ স্থান" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1129 +msgid "CJK Unified Ideographs Extension F" +msgstr "" -#: ../data/ibus.schemas.in.h:11 -msgid "Next engine shortcut keys" -msgstr "পৰবৰ্তী কলঘৰৰ বাবে ছৰ্টকাট চাবি" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1133 +msgid "CJK Compatibility Ideographs Supplement" +msgstr "" -#: ../data/ibus.schemas.in.h:12 -msgid "Orientation of lookup table" -msgstr "লুক-আপ টেবুলৰ দিশ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1137 +msgid "Tags" +msgstr "" -#: ../data/ibus.schemas.in.h:13 -msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" -msgstr "লুকআপ টেবুলৰ দিশ । ০ = অনুভূমিক, ১ = উলম্ব" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1141 +msgid "Variation Selectors Supplement" +msgstr "" -#: ../data/ibus.schemas.in.h:14 -msgid "Preload engines" -msgstr "কলঘৰ আগতে তুলি লোৱা হ'ব" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1145 +msgid "Supplementary Private Use Area-A" +msgstr "" -#: ../data/ibus.schemas.in.h:15 -msgid "Preload engines during ibus starts up" -msgstr "ibus আৰম্ভৰ আগতে কলঘৰ তুলি লওক" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1149 +msgid "Supplementary Private Use Area-B" +msgstr "" -#: ../data/ibus.schemas.in.h:16 -msgid "Prev engine shortcut keys" -msgstr "পূৰ্ববৰ্তী কলঘৰৰ ছৰ্টকাট চাবি" +#: ../tools/main.vala:54 +msgid "List engine name only" +msgstr "কেৱল ইঞ্জিন নাম তালিকাভুক্ত কৰক" -#: ../data/ibus.schemas.in.h:17 ../setup/setup.ui.h:42 -msgid "Share the same input method among all applications" -msgstr "সকলো অনুপ্ৰয়োগৰ মাজত একেই নিবেশ পদ্ধতি অংশীদাৰ কৰক" +#: ../tools/main.vala:70 ../tools/main.vala:195 ../tools/main.vala:205 +msgid "Can't connect to IBus.\n" +msgstr "IBus লে সংযোগ কৰিব নোৱাৰি।\n" -#: ../data/ibus.schemas.in.h:18 ../setup/setup.ui.h:43 -msgid "Show icon on system tray" -msgstr "প্ৰণালী ট্ৰত আইকন প্ৰদৰ্শন কৰা হ'ব" +#: ../tools/main.vala:96 +#, c-format +msgid "language: %s\n" +msgstr "ভাষা: %s\n" -#: ../data/ibus.schemas.in.h:19 -msgid "Show input method name" -msgstr "নিবেশ পদ্ধতিৰ নাম দেখুৱাব" +#: ../tools/main.vala:164 +msgid "No engine is set.\n" +msgstr "কোনো ইঞ্জিন সংহতি কৰা হোৱা নাই।\n" -#: ../data/ibus.schemas.in.h:20 ../setup/setup.ui.h:45 -msgid "Show input method name on language bar" -msgstr "ভাষাৰ বাৰত নিবেশ পদ্ধতিৰ নাম দেখুৱাব" +#: ../tools/main.vala:172 +msgid "Set global engine failed.\n" +msgstr "বিশ্বব্যাপী ইঞ্জিন সংহতি কৰা ব্যৰ্থ হল।\n" -#: ../data/ibus.schemas.in.h:21 -msgid "" -"The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = " -"Always show" -msgstr "" -"ভাষাৰ পেনেলৰ আচৰণ । ০ = তালিকাত প্ৰোথিত, ১ = স্বয়ংক্ৰিয়ভাবে লুকাওক, ২ = সদায়" -" দেখুৱাওক" +#: ../tools/main.vala:177 +msgid "Get global engine failed.\n" +msgstr "বিশ্বব্যাপী ইঞ্জিন প্ৰাপ্ত কৰা ব্যৰ্থ হল।\n" -#: ../data/ibus.schemas.in.h:22 -msgid "" -"The position of the language panel. 0 = Top left corner, 1 = Top right " -"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" -msgstr "" -"ভাষাৰ পেনেলৰ স্থান । 0 = ওপৰৰ বাওঁফালৰ কোণত, 1 = ওপৰৰ সোঁফালৰ কোণত, 2 = তলৰ " -"বাওঁফালৰ কোণত, 3 = তলৰ সোঁফালৰ কোণত, 4 = স্বনিৰ্ধাৰিত" +#: ../tools/main.vala:220 +msgid "Read the system registry cache." +msgstr "চিস্টেম ৰেজিস্ট্ৰি ক্যাশ পঢ়ক।" -#: ../data/ibus.schemas.in.h:23 -msgid "The shortcut keys for switching to the next input method in the list" -msgstr "তালিকাত থকা পৰৱৰ্তী ইনপুট পদ্ধতিলে যাবলে চৰ্টকাট কিসমূহ" +#: ../tools/main.vala:222 +msgid "Read the registry cache FILE." +msgstr "ৰেজিস্ট্ৰি ক্যাশ FILE পঢ়ক।" -#: ../data/ibus.schemas.in.h:24 -msgid "The shortcut keys for switching to the previous input method" -msgstr "তালিকাত থকা পূৰ্বৱৰ্তী ইনপুট পদ্ধতিলে যাবলে চৰ্টকাট কিসমূহ" +#: ../tools/main.vala:240 ../tools/main.vala:245 +msgid "The registry cache is invalid.\n" +msgstr "ৰেজিস্ট্ৰি ক্যাশ বৈধ নহয়।\n" -#: ../data/ibus.schemas.in.h:25 -msgid "The shortcut keys for turning input method off" -msgstr "ইনপুট পদ্ধতি বন্ধ কৰিবলে চৰ্টকাট কিসমূহ" +#: ../tools/main.vala:260 +msgid "Write the system registry cache." +msgstr "চিস্টেম ৰেজিস্ট্ৰি ক্যাশ লিখক।" -#: ../data/ibus.schemas.in.h:26 -msgid "The shortcut keys for turning input method on" -msgstr "ইনপুট পদ্ধতি খুলিবলে চৰ্টকাট কিসমূহ" +#: ../tools/main.vala:262 +msgid "Write the registry cache FILE." +msgstr "ৰেজিস্ট্ৰি ক্যাশ FILE লিখক।" -#: ../data/ibus.schemas.in.h:27 ../setup/setup.ui.h:51 -msgid "The shortcut keys for turning input method on or off" -msgstr "" -"নিবেশ পদ্ধতি খোলা আৰু বন্ধ কৰাৰ বাবে প্ৰয়োজনীয় ছৰ্ট-কাট চাবি নিৰ্ধাৰণ কৰক" +#: ../tools/main.vala:314 +msgid "Resetting…" +msgstr "পুনৰ সংহতি কৰা হৈছে" -#: ../data/ibus.schemas.in.h:28 -msgid "Trigger shortcut keys" -msgstr "ট্ৰিগাৰৰ ছৰ্টকাট চাবি" +#: ../tools/main.vala:328 +msgid "Done" +msgstr "কৰা হল" -#: ../data/ibus.schemas.in.h:29 -msgid "Use custom font" -msgstr "স্বনিৰ্বাচিত ফন্ট ব্যৱহাৰ কৰা হ'ব" +#: ../tools/main.vala:373 +msgid "Set or get engine" +msgstr "ইঞ্জিন সংহতি কৰক অথবা প্ৰাপ্ত কৰক" -#: ../data/ibus.schemas.in.h:30 -msgid "Use custom font name for language panel" -msgstr "ভাষাৰ পেনেলৰ বাবে স্বনিৰ্বাচিত ফন্টৰ নাম ব্যৱহাৰ কৰক" +#: ../tools/main.vala:374 +msgid "Exit ibus-daemon" +msgstr "ibus-daemon প্ৰস্থান কৰক" -#: ../data/ibus.schemas.in.h:31 -msgid "Use global input method" -msgstr "সৰ্বব্যাপী নিবেশ পদ্ধতি ব্যৱহাৰ কৰক" +#: ../tools/main.vala:375 +msgid "Show available engines" +msgstr "উপলব্ধ ইঞ্জিনসমূহ দেখুৱাওক" -#: ../data/ibus.schemas.in.h:32 ../setup/setup.ui.h:55 -msgid "Use system keyboard (XKB) layout" -msgstr "প্ৰণালী চাবিৰ ফলক (XKB) বিন্যাস প্ৰয়োগ কৰা হ'ব" +#: ../tools/main.vala:376 +msgid "(Not implemented)" +msgstr "(প্ৰণয়ন কৰা হোৱা নাই)" -#: ../data/ibus.schemas.in.h:33 ../setup/setup.ui.h:56 -msgid "Use system keyboard layout" -msgstr "প্ৰণালী চাবিৰ ফলক বিন্যাস প্ৰয়োগ কৰা হ'ব" +#: ../tools/main.vala:377 +msgid "Restart ibus-daemon" +msgstr "ibus-daemon পুনৰাম্ভ কৰক" -#: ../setup/setup.ui.h:1 -msgid "..." -msgstr "..." +#: ../tools/main.vala:378 +msgid "Show version" +msgstr "সংস্কৰণ দেখুৱাওক" -#: ../setup/setup.ui.h:2 -msgid "Font and Style" -msgstr "ফন্ট আৰু শৈলী" +#: ../tools/main.vala:379 +msgid "Show the content of registry cache" +msgstr "ৰেজিস্ট্ৰি ক্যাশৰ সমল দেখুৱাওক" -#: ../setup/setup.ui.h:3 -msgid "Global input method settings" -msgstr "এটা নিবেশ পদ্ধতি নিৰ্ব্বাচন কৰক" +#: ../tools/main.vala:380 +msgid "Create registry cache" +msgstr "ৰেজিস্ট্ৰি ক্যাশ সৃষ্টি কৰক" -#: ../setup/setup.ui.h:4 -msgid "Keyboard Layout" -msgstr "চাবিৰ ফলকৰ বিন্যাস" +#: ../tools/main.vala:381 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "ibus-daemon ৰ D-Bus ঠিকনা প্ৰিন্ট কৰক" -#: ../setup/setup.ui.h:5 -msgid "Keyboard Shortcuts" -msgstr "কীবৰ্ডৰ চমুপথবোৰ" +#: ../tools/main.vala:382 +msgid "Show the configuration values" +msgstr "সংৰূপৰ মানসমূহ দেখুৱাওক" -#: ../setup/setup.ui.h:6 -msgid "Startup" -msgstr "ষ্টাৰ্টআপ" +#: ../tools/main.vala:383 +msgid "Reset the configuration values" +msgstr "সংৰূপৰ মানসমূহ পুনৰ সংহতি কৰক" -#: ../setup/setup.ui.h:7 -msgid "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" +#: ../tools/main.vala:385 +msgid "Save emoji on dialog to clipboard " msgstr "" -"IBus\n" -"বুদ্ধিমান নিবেশ bus\n" -"ঘৰৰ পৃষ্ঠা: http://code.google.com/p/ibus\n" -"\n" + +#: ../tools/main.vala:387 +msgid "Show this information" +msgstr "এই তথ্য দেখুৱাওক" + +#: ../tools/main.vala:393 +#, c-format +msgid "Usage: %s COMMAND [OPTION...]\n" "\n" +msgstr "ব্যৱহাৰ: %s COMMAND [OPTION...]\n" "\n" -#: ../setup/setup.ui.h:14 -msgid "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." -msgstr "" -"অবিকল্পিত নিবেশ পদ্ধতি তালিকাৰ ওপৰৰ প্ৰথমত ।\n" -"তাক সলনি কৰিবলৈ আপুনি ওপৰ/তল বুটাম ব্যৱহাৰ কৰিব পাৰে ।" +#: ../tools/main.vala:394 +msgid "Commands:\n" +msgstr "কমান্ডসমূহ:\n" -#: ../setup/setup.ui.h:17 -msgid "Add the selected input method into the enabled input methods" -msgstr "নিৰ্বাচিত নিবেশ পদ্ধতিক সক্ৰিয় নিবেশ পদ্ধতিৰ তালিকাত যোগ কৰক" +#: ../tools/main.vala:423 +#, c-format +msgid "%s is unknown command!\n" +msgstr "%s এটা অজ্ঞাত কমান্ড!\n" -#: ../setup/setup.ui.h:18 -msgid "Advanced" -msgstr "উন্নত" +#: ../ui/gtk3/emojier.vala:245 +msgid "Show emoji variants" +msgstr "" -#: ../setup/setup.ui.h:19 -msgid "Always" -msgstr "সদায়ে" +#: ../ui/gtk3/emojier.vala:250 +msgid "Menu" +msgstr "" -#: ../setup/setup.ui.h:20 -msgid "Bottom left corner" -msgstr "তলৰ বাওঁফালৰ কোণত" +#: ../ui/gtk3/emojier.vala:273 +msgid "Favorites" +msgstr "" -#: ../setup/setup.ui.h:21 -msgid "Bottom right corner" -msgstr "তলৰ সোঁফালৰ কোণত" +#: ../ui/gtk3/emojier.vala:274 +msgid "Others" +msgstr "" -#: ../setup/setup.ui.h:22 -msgid "Candidates orientation:" -msgstr "প্ৰাৰ্থীৰ দিশ:" +#: ../ui/gtk3/emojier.vala:275 +msgid "Open Unicode choice" +msgstr "" -#: ../setup/setup.ui.h:23 -msgid "Custom" -msgstr "স্বনিৰ্ধাৰিত" +#: ../ui/gtk3/emojier.vala:445 ../ui/gtk3/emojier.vala:826 +#: ../ui/gtk3/panel.vala:1149 +msgid "Emoji Choice" +msgstr "" -#: ../setup/setup.ui.h:24 -msgid "Disable:" -msgstr "অসামৰ্থবান কৰা:" +#: ../ui/gtk3/emojier.vala:451 +msgid "Type annotation or choose emoji" +msgstr "" -#: ../setup/setup.ui.h:25 -msgid "Embed preedit text in application window" -msgstr "অনুপ্ৰয়োগৰ সংযোগক্ষেত্ৰত প্ৰিএডিট টেক্সট প্ৰোথিত কৰক" +#: ../ui/gtk3/emojier.vala:948 +msgid "Unicode Choice" +msgstr "" -#: ../setup/setup.ui.h:26 -msgid "Embed the preedit text of input method in the application window" -msgstr "অনুপ্ৰয়োগৰ সংযোগক্ষেত্ৰত নিবেশ পদ্ধতিৰ প্ৰিএডিট টেক্সট প্ৰোথিত কৰক" +#: ../ui/gtk3/emojier.vala:950 +msgid "Bring back emoji choice" +msgstr "" -#: ../setup/setup.ui.h:27 -msgid "Embedded in menu" -msgstr "তালিকাত প্ৰোথিত" +#: ../ui/gtk3/emojier.vala:1016 +msgid "Loading a Unicode dictionary:" +msgstr "" -#: ../setup/setup.ui.h:28 -msgid "Enable or disable:" -msgstr "সক্ৰিয় বা নিষ্ক্ৰিয় কৰক:" +#: ../ui/gtk3/emojier.vala:1071 +msgid "Page Down" +msgstr "" -#: ../setup/setup.ui.h:29 -msgid "Enable:" -msgstr "সামৰ্থবান কৰা:" +#: ../ui/gtk3/emojier.vala:1082 +msgid "Page Up" +msgstr "" -#: ../setup/setup.ui.h:30 -msgid "General" -msgstr "সাধাৰণ" +#: ../ui/gtk3/emojier.vala:1236 +#, c-format +msgid "Code point: %s" +msgstr "" -#: ../setup/setup.ui.h:31 -msgid "Horizontal" -msgstr "অনুভূমিক" +#: ../ui/gtk3/emojier.vala:1242 +msgid "Has emoji variants" +msgstr "" -#: ../setup/setup.ui.h:34 -msgid "Language panel position:" -msgstr "ভাষাৰ পেনেলৰ স্থান:" +#: ../ui/gtk3/emojier.vala:1377 ../ui/gtk3/emojier.vala:1391 +#, c-format +msgid "Description: %s" +msgstr "" -#: ../setup/setup.ui.h:35 -msgid "Move down the selected input method in the enabled input methods" +#: ../ui/gtk3/emojier.vala:1377 +msgid "None" msgstr "" -"নিৰ্বাচিত নিবেশ পদ্ধতিক সক্ৰিয় নিবেশ পদ্ধতিৰ তালিকাৰ তললৈ স্থানান্তৰ কৰক" -#: ../setup/setup.ui.h:36 -msgid "Move up the selected input method in the enabled input methods list" +#: ../ui/gtk3/emojier.vala:1402 +#, c-format +msgid "Annotations: %s" msgstr "" -"নিৰ্বাচিত নিবেশ পদ্ধতিক সক্ৰিয় নিবেশ পদ্ধতিৰ তালিকাৰ ওপৰলৈ স্থানান্তৰ কৰক" -#: ../setup/setup.ui.h:37 -msgid "Next input method:" -msgstr "পিছৰ নিবেশ পদ্ধতি:" +#: ../ui/gtk3/emojier.vala:1428 +#, c-format +msgid "Name: %s" +msgstr "" -#: ../setup/setup.ui.h:38 -msgid "Previous input method:" -msgstr "আগৰ নিবেশ পদ্ধতি" +#: ../ui/gtk3/emojier.vala:1436 +#, c-format +msgid "Alias: %s" +msgstr "" -#: ../setup/setup.ui.h:39 -msgid "Remove the selected input method from the enabled input methods" -msgstr "সক্ৰিয় নিবেশ পদ্ধতিৰ তালিকাৰ পৰা নিৰ্বাচিত নিবেশ পদ্ধতি আঁতৰুৱা হ'ব" +#: ../ui/gtk3/emojierapp.vala:56 +msgid "Canceled to choose an emoji." +msgstr "" -#: ../setup/setup.ui.h:40 -msgid "Set the behavior of ibus how to show or hide language bar" -msgstr "ভাষাৰ বাৰ প্ৰদৰ্শন আৰু লুকুৱাৰ উদ্দেশ্যে ibus ৰ আচৰণ নিৰ্ধাৰণ কৰক" +#: ../ui/gtk3/emojierapp.vala:77 +msgid "Copied an emoji to your clipboard." +msgstr "" -#: ../setup/setup.ui.h:41 -msgid "Set the orientation of candidates in lookup table" -msgstr "লুক-আপ টেবুলত প্ৰযোজ্য বিকল্পসমূহৰ দিশ নিৰ্ধাৰণ কৰক" +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ../ui/gtk3/emojierapp.vala:97 +msgid "\"FONT\" for emoji characters on emoji dialog" +msgstr "" -#: ../setup/setup.ui.h:44 -msgid "Show information of the selected input method" -msgstr "নিৰ্বাচিত নিবেশ পদ্ধতি সংক্ৰান্ত তথ্য প্ৰদৰ্শন কৰা হ'ব" +#: ../ui/gtk3/emojierapp.vala:98 +msgid "FONT" +msgstr "" -#: ../setup/setup.ui.h:46 -msgid "Show input method's name on language bar when check the checkbox" -msgstr "চেকবক্স নিৰ্বাচিত হ'লে ভাষাৰ বাৰত নিবেশ পদ্ধতিৰ নাম প্ৰদৰ্শন কৰা হ'ব" +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ../ui/gtk3/emojierapp.vala:103 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" +msgstr "" -#: ../setup/setup.ui.h:47 -msgid "Show language panel:" -msgstr "ভাষাৰ পেনেল দেখুৱাওক:" +#: ../ui/gtk3/emojierapp.vala:104 +msgid "LANG" +msgstr "" -#: ../setup/setup.ui.h:48 -msgid "Start ibus on login" -msgstr "প্ৰৱেশত ibus আৰম্ভ কৰক" +#: ../ui/gtk3/emojierapp.vala:106 +msgid "Emoji annotations can be match partially" +msgstr "" -#: ../setup/setup.ui.h:49 -msgid "The shortcut keys for switching to next input method in the list" +#: ../ui/gtk3/emojierapp.vala:110 +msgid "Match with the length of the specified integer" msgstr "" -"তালিকাত উপস্থিত পৰবৰ্তী নিবেশ পদ্ধতিলৈ পৰিবৰ্তনৰ বাবে প্ৰযোজ্য ছৰ্ট-কাট চাবি" -#: ../setup/setup.ui.h:50 -msgid "The shortcut keys for switching to previous input method in the list" +#: ../ui/gtk3/emojierapp.vala:114 +msgid "Match with the condition of the specified integer" msgstr "" -"তালিকাত উপস্থিত পূৰ্ববৰ্তী নিবেশ পদ্ধতিলৈ পৰিবৰ্তনৰ বাবে প্ৰযোজ্য ছৰ্ট-কাট " -"চাবি" -#: ../setup/setup.ui.h:52 -msgid "Top left corner" -msgstr "ওপৰৰ বাওঁফালৰ কোণত" +#: ../ui/gtk3/panel.vala:282 ../ui/gtk3/panel.vala:313 +msgid "IBus Panel" +msgstr "" -#: ../setup/setup.ui.h:53 -msgid "Top right corner" -msgstr "ওপৰৰ সোঁফালৰ কোণত" +#: ../ui/gtk3/panel.vala:710 +msgid "IBus Update" +msgstr "IBus আপডেইট" -#: ../setup/setup.ui.h:54 -msgid "Use custom font:" -msgstr "স্বনিৰ্বাচিত ফন্ট ব্যৱহাৰ কৰক:" +#: ../ui/gtk3/panel.vala:711 ../ui/gtk3/panel.vala:722 +msgid "Super+space is now the default hotkey." +msgstr "Super+space এতিয়া অবিকল্পিত হটকি।" -#: ../setup/setup.ui.h:57 -msgid "Vertical" -msgstr "উল্লম্ব" +#: ../ui/gtk3/panel.vala:1121 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus এটা Linux/Unix ৰ কাৰণে বুদ্ধিমান ইনপুট bus।" -#: ../setup/setup.ui.h:58 -msgid "When active" -msgstr "সক্ৰিয় অৱস্থাত" +#: ../ui/gtk3/panel.vala:1125 +msgid "translator-credits" +msgstr "" +"অমিতাক্ষ ফুকন (aphukan@fedoraproject.org), নীলমদ্যুতি গোস্বামী " +"(ngoswami@redhat.com)" + +#: ../ui/gtk3/panel.vala:1144 +msgid "Preferences" +msgstr "পছন্দ" + +#: ../ui/gtk3/panel.vala:1181 +msgid "Restart" +msgstr "পুনাৰম্ভ" + +#: ../ui/gtk3/panel.vala:1185 +msgid "Quit" +msgstr "প্ৰস্থান" + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ../ui/gtk3/propertypanel.vala:368 ../ui/gtk3/propertypanel.vala:376 +msgid "default:LTR" +msgstr "default:LTR" diff --git a/po/bg.po b/po/bg.po new file mode 100644 index 000000000..a73634e71 --- /dev/null +++ b/po/bg.po @@ -0,0 +1,693 @@ +# translation of ibus.pot to Bulgarian +# Bulgarian translation of ibus. +# Copyright (C) 2008-2015 Peng Huang +# This file is distributed under the same license as the ibus package. +# +# Translators: +# Valentin Laskov , 2012 +msgid "" +msgstr "" +"Project-Id-Version: IBus\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2014-02-18 13:46+0900\n" +"PO-Revision-Date: 2014-02-18 05:45+0000\n" +"Last-Translator: Valentin Laskov \n" +"Language-Team: Bulgarian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: bg\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ../setup/setup.ui.h:1 +msgid "Horizontal" +msgstr "Хоризонтално" + +#: ../setup/setup.ui.h:2 +msgid "Vertical" +msgstr "Вертикално" + +#: ../setup/setup.ui.h:3 +msgid "Top left corner" +msgstr "Горен ляв ъгъл" + +#: ../setup/setup.ui.h:4 +msgid "Top right corner" +msgstr "Горен десен ъгъл" + +#: ../setup/setup.ui.h:5 +msgid "Bottom left corner" +msgstr "Долен ляв ъгъл" + +#: ../setup/setup.ui.h:6 +msgid "Bottom right corner" +msgstr "Долен десен ъгъл" + +#: ../setup/setup.ui.h:7 +msgid "Custom" +msgstr "По избор" + +#: ../setup/setup.ui.h:8 +msgid "Do not show" +msgstr "" + +#: ../setup/setup.ui.h:9 +msgid "Hide automatically" +msgstr "" + +#: ../setup/setup.ui.h:10 +msgid "Always" +msgstr "Винаги" + +#: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 +msgid "IBus Preferences" +msgstr "Предпочитания за IBus" + +#: ../setup/setup.ui.h:12 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "Клавишна комбинация за превключване към следващ в списъка метод за писане" + +#: ../setup/setup.ui.h:13 +msgid "Next input method:" +msgstr "Следващ метод:" + +#: ../setup/setup.ui.h:14 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "Клавишна комбинация за превключване към предишен в списъка метод за писане" + +#: ../setup/setup.ui.h:15 +msgid "Previous input method:" +msgstr "Предишен метод:" + +#: ../setup/setup.ui.h:16 +msgid "..." +msgstr "..." + +#: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 +msgid "The shortcut keys for turning input method on or off" +msgstr "Клавишна комбинация за включване или изключване на метода за писане" + +#: ../setup/setup.ui.h:18 +msgid "Enable or disable:" +msgstr "Разрешаване или забрана:" + +#: ../setup/setup.ui.h:19 +msgid "Enable:" +msgstr "Разреши:" + +#: ../setup/setup.ui.h:20 +msgid "Disable:" +msgstr "Забрани:" + +#: ../setup/setup.ui.h:21 +msgid "Keyboard Shortcuts" +msgstr "Клавишни комбинации" + +#: ../setup/setup.ui.h:22 +msgid "Set the orientation of candidates in lookup table" +msgstr "Задава ориентацията на кандидатите в таблицата за преглед" + +#: ../setup/setup.ui.h:23 +msgid "Candidates orientation:" +msgstr "Ориентация на кандидатите:" + +#: ../setup/setup.ui.h:24 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "Задава как ibus да показва или скрива лентата за езика" + +#: ../setup/setup.ui.h:25 +msgid "Show property panel:" +msgstr "" + +#: ../setup/setup.ui.h:26 +msgid "Language panel position:" +msgstr "Позиция на панела с езици:" + +#: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 +msgid "Show icon on system tray" +msgstr "Показвай икона в зоната за уведомяване" + +#: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 +msgid "Show input method name on language bar" +msgstr "Показва името на метода за писане на лентата за език" + +#: ../setup/setup.ui.h:29 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "Показва името на метода за писане на лентата за език при поставена отметка" + +#: ../setup/setup.ui.h:30 +msgid "Embed preedit text in application window" +msgstr "Вгражда предв. редактиран текст в прозореца на приложението" + +#: ../setup/setup.ui.h:31 +msgid "Embed the preedit text of input method in the application window" +msgstr "Вгражда редактирания текст от метода за писане в прозореца на приложението" + +#: ../setup/setup.ui.h:32 +msgid "Use custom font:" +msgstr "Използван шрифт по избор:" + +#: ../setup/setup.ui.h:33 +msgid "Font and Style" +msgstr "Шрифт и стил" + +#: ../setup/setup.ui.h:34 +msgid "General" +msgstr "Основни" + +#. add button +#: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 +msgid "_Add" +msgstr "_Добавяне" + +#: ../setup/setup.ui.h:36 +msgid "Add the selected input method into the enabled input methods" +msgstr "Добавя избрания метод в списъка с разрешени методи за писане" + +#: ../setup/setup.ui.h:37 +msgid "_Remove" +msgstr "_Премахване" + +#: ../setup/setup.ui.h:38 +msgid "Remove the selected input method from the enabled input methods" +msgstr "Премахва избрания метод за писане от списъка с разрешени методи" + +#: ../setup/setup.ui.h:39 +msgid "_Up" +msgstr "На_горе" + +#: ../setup/setup.ui.h:40 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "Премества нагоре избрания метод за писане в списъка с разрешени методи" + +#: ../setup/setup.ui.h:41 +msgid "_Down" +msgstr "На_долу" + +#: ../setup/setup.ui.h:42 +msgid "Move down the selected input method in the enabled input methods" +msgstr "Премества надолу избрания метод за писане в списъка с разрешени методи" + +#: ../setup/setup.ui.h:43 +msgid "_About" +msgstr "_Относно" + +#: ../setup/setup.ui.h:44 +msgid "Show information of the selected input method" +msgstr "Показва информация от избрания метод за писане" + +#: ../setup/setup.ui.h:45 +msgid "_Preferences" +msgstr "_Предпочитания" + +#: ../setup/setup.ui.h:46 +msgid "Show setup of the selected input method" +msgstr "Показва настройки на избрания метод за писане" + +#: ../setup/setup.ui.h:47 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" + +#. create im name & icon column +#: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 +msgid "Input Method" +msgstr "Метод за писане" + +#: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 +msgid "Use system keyboard layout" +msgstr "Използване на системната клавиатурна подредба" + +#: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 +msgid "Use system keyboard (XKB) layout" +msgstr "Използване на системната клавиатурна подредба (XKB)" + +#: ../setup/setup.ui.h:51 +msgid "Keyboard Layout" +msgstr "Клавиатурна подредба" + +#: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 +msgid "Share the same input method among all applications" +msgstr "Споделяй същия метод за писане за всички приложения" + +#: ../setup/setup.ui.h:53 +msgid "Global input method settings" +msgstr "Настройки на глобалния метод за писане" + +#: ../setup/setup.ui.h:54 +msgid "Advanced" +msgstr "Допълнителни" + +#: ../setup/setup.ui.h:55 +msgid "" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" +msgstr "IBus\nИнтелигентен организатор на методите за писане\nСтраница на проекта: https://github.com/ibus/ibus/wiki\n\n\n\n" + +#: ../setup/setup.ui.h:62 +msgid "Start ibus on login" +msgstr "Стартирай ibus при влизане" + +#: ../setup/setup.ui.h:63 +msgid "Startup" +msgstr "Стартиране" + +#: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 +msgid "About" +msgstr "Относно" + +#: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 +msgid "_Close" +msgstr "Зат_варяне" + +#: ../data/ibus.schemas.in.h:1 +msgid "Preload engines" +msgstr "Предв. заредени механизми" + +#: ../data/ibus.schemas.in.h:2 +msgid "Preload engines during ibus starts up" +msgstr "Предварително заредени механизми по време на стартирането на ibus" + +#: ../data/ibus.schemas.in.h:3 +msgid "Engines order" +msgstr "Ред на механизмите" + +#: ../data/ibus.schemas.in.h:4 +msgid "Saved engines order in input method list" +msgstr "Съхранен ред на механизми в списъка с методи за писане" + +#: ../data/ibus.schemas.in.h:5 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "" + +#: ../data/ibus.schemas.in.h:6 +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is " +"400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " +"not show the window and switch prev/next engines." +msgstr "" + +#: ../data/ibus.schemas.in.h:7 +msgid "Saved version number" +msgstr "" + +#: ../data/ibus.schemas.in.h:8 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" + +#: ../data/ibus.schemas.in.h:9 +msgid "Trigger shortcut keys" +msgstr "Превключващи клавишни комбинации" + +#: ../data/ibus.schemas.in.h:11 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "" + +#: ../data/ibus.schemas.in.h:12 +msgid "Enable shortcut keys" +msgstr "Разреши клавишните комбинации" + +#: ../data/ibus.schemas.in.h:13 +msgid "The shortcut keys for turning input method on" +msgstr "Клавишна комбинация за включване на метода за писане" + +#: ../data/ibus.schemas.in.h:14 +msgid "Disable shortcut keys" +msgstr "Забрани клавишните комбинации" + +#: ../data/ibus.schemas.in.h:15 +msgid "The shortcut keys for turning input method off" +msgstr "Клавишна комбинация за изключване на метода за писане" + +#: ../data/ibus.schemas.in.h:16 +msgid "Next engine shortcut keys" +msgstr "Клавишни комбинации за следващ механизъм" + +#: ../data/ibus.schemas.in.h:17 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "Клавишна комбинация за превключване към следващия в списъка метод за писане" + +#: ../data/ibus.schemas.in.h:18 +msgid "Prev engine shortcut keys" +msgstr "Клавишни комбинации за предишен механизъм" + +#: ../data/ibus.schemas.in.h:19 +msgid "The shortcut keys for switching to the previous input method" +msgstr "Клавишна комбинация за превключване към предишния в списъка метод за писане" + +#: ../data/ibus.schemas.in.h:20 +msgid "Auto hide" +msgstr "Автом. скриване" + +#: ../data/ibus.schemas.in.h:21 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "" + +#: ../data/ibus.schemas.in.h:22 +msgid "Language panel position" +msgstr "Позиция на панела с езици" + +#: ../data/ibus.schemas.in.h:23 +msgid "" +"The position of the language panel. 0 = Top left corner, 1 = Top right " +"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +msgstr "Позиция на панела с езици. 0 = Горен ляв ъгъл, 1 = Горен десен ъгъл, 2 = Долен ляв ъгъл, 3 = Долен десен ъгъл, 4 = По избор" + +#: ../data/ibus.schemas.in.h:24 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "" + +#: ../data/ibus.schemas.in.h:25 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" + +#: ../data/ibus.schemas.in.h:26 +msgid "The milliseconds to show property panel" +msgstr "" + +#: ../data/ibus.schemas.in.h:27 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" + +#: ../data/ibus.schemas.in.h:28 +msgid "Orientation of lookup table" +msgstr "Ориентация на таблицата за преглед" + +#: ../data/ibus.schemas.in.h:29 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "Ориентация на таблицата за преглед. 0 = Хоризонтално, 1 = Вертикално" + +#: ../data/ibus.schemas.in.h:31 +msgid "Show input method name" +msgstr "Показва името на метода за писане" + +#: ../data/ibus.schemas.in.h:35 +msgid "Use custom font" +msgstr "Използване на избран шрифт" + +#: ../data/ibus.schemas.in.h:36 +msgid "Use custom font name for language panel" +msgstr "Използване на избран шрифт за панела с езици" + +#: ../data/ibus.schemas.in.h:37 +msgid "Custom font" +msgstr "Шрифт по избор" + +#: ../data/ibus.schemas.in.h:38 +msgid "Custom font name for language panel" +msgstr "Име на избрания шрифт за панела с езици" + +#: ../data/ibus.schemas.in.h:39 +msgid "Embed Preedit Text" +msgstr "Вграден редактиран текст" + +#: ../data/ibus.schemas.in.h:40 +msgid "Embed Preedit Text in Application Window" +msgstr "Вгражда предв. редактиран текст в прозореца на приложението" + +#: ../data/ibus.schemas.in.h:41 +msgid "Use global input method" +msgstr "Използва глобалния метод за писане" + +#: ../data/ibus.schemas.in.h:43 +msgid "Enable input method by default" +msgstr "Разрешава метод за писане по подразбиране" + +#: ../data/ibus.schemas.in.h:44 +msgid "Enable input method by default when the application gets input focus" +msgstr "Разрешава метод за писане по подразбиране, когато приложението е на фокус" + +#: ../data/ibus.schemas.in.h:45 +msgid "DConf preserve name prefixes" +msgstr "DConf запазва префиксите на имената" + +#: ../data/ibus.schemas.in.h:46 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "Префикси на DConf клавишите за спиране конверсията на имената" + +#: ../ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "Copyright (c) 2007-2010 Peng Huang\nCopyright (c) 2007-2010 Red Hat, Inc." + +#: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 +msgid "Other" +msgstr "Друг" + +#: ../setup/engineabout.py:68 +#, python-format +msgid "Language: %s\n" +msgstr "Език: %s\n" + +#: ../setup/engineabout.py:71 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "Клавиатурна подредба: %s\n" + +#: ../setup/engineabout.py:74 +#, python-format +msgid "Author: %s\n" +msgstr "Автор: %s\n" + +#: ../setup/engineabout.py:77 +msgid "Description:\n" +msgstr "Описание:\n" + +#: ../setup/enginecombobox.py:139 +msgid "Select an input method" +msgstr "Избор на метод за писане" + +#: ../setup/enginetreeview.py:94 +msgid "Kbd" +msgstr "Клав." + +#: ../setup/ibus-setup.desktop.in.h:2 +msgid "Set IBus Preferences" +msgstr "Задава предпочитания за IBUS" + +#: ../setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "Клавишни комбинации" + +#: ../setup/keyboardshortcut.py:66 +msgid "Key code:" +msgstr "Код на клавиш:" + +#: ../setup/keyboardshortcut.py:81 +msgid "Modifiers:" +msgstr "Модифициращи:" + +#. apply button +#: ../setup/keyboardshortcut.py:133 +msgid "_Apply" +msgstr "П_рилагане" + +#. delete button +#: ../setup/keyboardshortcut.py:139 +msgid "_Delete" +msgstr "_Изтриване" + +#: ../setup/keyboardshortcut.py:254 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "Моля, натиснете клавиш (или комбинация клавиши).\nДиалогът ще се затвори при отпускането на клавиша." + +#: ../setup/keyboardshortcut.py:256 +msgid "Please press a key (or a key combination)" +msgstr "Моля, натиснете клавиш (или комбинация клавиши)" + +#: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 +msgid "_Cancel" +msgstr "_Отказване" + +#: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 +msgid "_OK" +msgstr "_Добре" + +#: ../setup/main.py:102 ../setup/main.py:395 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "" + +#: ../setup/main.py:329 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "IBus демонът не е стартиран. Да го стартирам ли сега?" + +#: ../setup/main.py:350 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "IBus беше стартиран! Ако не можете да използвате IBus, добавете следните редове във файла $HOME/.bashrc; след което излезте и влезте отново.\n export GTK_IM_MODULE=ibus\n export XMODIFIERS=@im=ibus\n export QT_IM_MODULE=ibus" + +#. Translators: %d == 5 currently +#: ../setup/main.py:364 +#, python-format +msgid "IBus daemon could not be started in %d seconds." +msgstr "IBus демонът не може да се стартира вече %d секунди." + +#: ../setup/main.py:376 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "Изберете клавишна комбинация за %s" + +#: ../setup/main.py:377 +msgid "switching input methods" +msgstr "" + +#: ../tools/main.vala:42 +msgid "List engine name only" +msgstr "Списък само на имена на механизми" + +#: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 +#, c-format +msgid "Can't connect to IBus.\n" +msgstr "Не мога да се свържа с IBus.\n" + +#: ../tools/main.vala:84 +#, c-format +msgid "language: %s\n" +msgstr "език: %s\n" + +#: ../tools/main.vala:152 +#, c-format +msgid "No engine is set.\n" +msgstr "Не е зададен механизъм.\n" + +#: ../tools/main.vala:160 +#, c-format +msgid "Set global engine failed.\n" +msgstr "Задаването на глобален механизъм не успя.\n" + +#: ../tools/main.vala:165 +#, c-format +msgid "Get global engine failed.\n" +msgstr "Получаването на глобален механизъм не успя.\n" + +#: ../tools/main.vala:204 +msgid "Read the system registry cache." +msgstr "" + +#: ../tools/main.vala:206 +msgid "Read the registry cache FILE." +msgstr "" + +#: ../tools/main.vala:224 ../tools/main.vala:229 +#, c-format +msgid "The registry cache is invalid.\n" +msgstr "" + +#: ../tools/main.vala:244 +msgid "Write the system registry cache." +msgstr "" + +#: ../tools/main.vala:246 +msgid "Write the registry cache FILE." +msgstr "" + +#: ../tools/main.vala:293 +msgid "Set or get engine" +msgstr "" + +#: ../tools/main.vala:294 +msgid "Exit ibus-daemon" +msgstr "" + +#: ../tools/main.vala:295 +msgid "Show available engines" +msgstr "" + +#: ../tools/main.vala:296 +msgid "(Not implemented)" +msgstr "" + +#: ../tools/main.vala:297 +msgid "Restart ibus-daemon" +msgstr "" + +#: ../tools/main.vala:298 +msgid "Show version" +msgstr "" + +#: ../tools/main.vala:299 +msgid "Show the content of registry cache" +msgstr "" + +#: ../tools/main.vala:300 +msgid "Create registry cache" +msgstr "" + +#: ../tools/main.vala:301 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "" + +#: ../tools/main.vala:302 +msgid "Show this information" +msgstr "" + +#: ../tools/main.vala:308 +#, c-format +msgid "" +"Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "Употреба: %s КОМАНДА [ОПЦИЯ...]\n\n" + +#: ../tools/main.vala:309 +#, c-format +msgid "Commands:\n" +msgstr "Команди:\n" + +#: ../tools/main.vala:338 +#, c-format +msgid "%s is unknown command!\n" +msgstr "%s е непозната команда!\n" + +#: ../ui/gtk3/panel.vala:425 +msgid "IBus Update" +msgstr "" + +#: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 +msgid "Super+space is now the default hotkey." +msgstr "" + +#: ../ui/gtk3/panel.vala:707 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus е интелигентен начин за избор на метод за въвеждане на информация за Linux/Unix." + +#: ../ui/gtk3/panel.vala:711 +msgid "translator-credits" +msgstr "Валентин Ласков" + +#: ../ui/gtk3/panel.vala:732 +msgid "Preferences" +msgstr "Предпочитания" + +#: ../ui/gtk3/panel.vala:742 +msgid "Restart" +msgstr "Рестартиране" + +#: ../ui/gtk3/panel.vala:746 +msgid "Quit" +msgstr "Спиране на програмата" + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ../ui/gtk3/propertypanel.vala:374 +msgid "default:LTR" +msgstr "default:LTR" diff --git a/po/bn.po b/po/bn.po new file mode 100644 index 000000000..698c25068 --- /dev/null +++ b/po/bn.po @@ -0,0 +1,819 @@ +# Bengali translation of ibus. +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2021 Takao Fujiwara +# This file is distributed under the same license as the ibus package. +# +# Translators: +# Ayesha Akhtar , 2012 +# Mahay Alam Khan , 2012 +# newton , 2012 +# newton , 2012 +# Robin Mehdee , 2012 +# Runa Bhattacharjee , 2009 +# runab , 2009, 2010 +# runab , 2009-2010 +# Tawsif Hossain Shafi , 2020. +# Abu Huraira , 2021. +msgid "" +msgstr "" +"Project-Id-Version: IBus\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2015-07-13 19:48+0900\n" +"PO-Revision-Date: 2021-03-19 18:01+0000\n" +"Last-Translator: Abu Huraira \n" +"Language-Team: Bengali \n" +"Language: bn\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Weblate 4.5.1\n" + +#: ../setup/setup.ui.h:1 +msgid "Horizontal" +msgstr "অনুভূমিক" + +#: ../setup/setup.ui.h:2 +msgid "Vertical" +msgstr "উল্লম্ব" + +#: ../setup/setup.ui.h:3 +msgid "Top left corner" +msgstr "উপরে বাঁদিকের কোণায়" + +#: ../setup/setup.ui.h:4 +msgid "Top right corner" +msgstr "উপরে ডানদিকের কোণায়" + +#: ../setup/setup.ui.h:5 +msgid "Bottom left corner" +msgstr "নীচে বাঁদিকের কোণায়" + +#: ../setup/setup.ui.h:6 +msgid "Bottom right corner" +msgstr "নীচে ডানদিকের কোণায়" + +#: ../setup/setup.ui.h:7 +msgid "Custom" +msgstr "স্বনির্ধারিত" + +#: ../setup/setup.ui.h:8 +msgid "Do not show" +msgstr "দেখাবেন না" + +#: ../setup/setup.ui.h:9 +msgid "Hide automatically" +msgstr "স্বয়ংক্রিয়ভাবে লুকান" + +#: ../setup/setup.ui.h:10 +msgid "Always" +msgstr "সর্বদা" + +#: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 +msgid "IBus Preferences" +msgstr "IBus সংক্রান্ত পছন্দ" + +#: ../setup/setup.ui.h:12 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "" +"তালিকায় উপস্থিত পরবর্তী ইনপুট পদ্ধতিতে পরিবর্তনের জন্য প্রযোজ্য শর্ট-কাট কি" + +#: ../setup/setup.ui.h:13 +msgid "Next input method:" +msgstr "পরবর্তী ইনপুট পদ্ধতি:" + +#: ../setup/setup.ui.h:14 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "" +"তালিকায় উপস্থিত পূর্ববর্তী ইনপুট পদ্ধতিতে পরিবর্তনের জন্য প্রযোজ্য শর্ট-কাট " +"কি" + +#: ../setup/setup.ui.h:15 +msgid "Previous input method:" +msgstr "পূর্ববর্তী ইনপুট পদ্ধতি:" + +#: ../setup/setup.ui.h:16 +msgid "..." +msgstr "..." + +#: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:16 +msgid "The shortcut keys for turning input method on or off" +msgstr "" +"ইনপুট পদ্ধতি খোলা ও বন্ধ করার জন্য প্রয়োজনীয় শর্ট-কাট কি নির্ধারণ করুন" + +#: ../setup/setup.ui.h:18 +msgid "Enable or disable:" +msgstr "সক্রিয় অথা নিষ্ক্রিয় করুন:" + +#: ../setup/setup.ui.h:19 +msgid "Enable:" +msgstr "সক্রিয়:" + +#: ../setup/setup.ui.h:20 +msgid "Disable:" +msgstr "নিষ্ক্রিয়:" + +#: ../setup/setup.ui.h:21 +msgid "Keyboard Shortcuts" +msgstr "কি-বোর্ড শর্ট-কাট" + +#: ../setup/setup.ui.h:22 +msgid "Set the orientation of candidates in lookup table" +msgstr "লুক-আপ টেবিলের মধ্যে প্রযোজ্য বিকল্পগুলির দিশা নির্ধারণ করুন" + +#: ../setup/setup.ui.h:23 +msgid "Candidates orientation:" +msgstr "নির্বাচিত বস্তুর দিশা:" + +#: ../setup/setup.ui.h:24 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "ভাষার বার প্রদর্শন ও আড়াল করার উদ্দেশ্যে ibus-র আচরণ নির্ধারণ করুন" + +#: ../setup/setup.ui.h:25 +msgid "Show property panel:" +msgstr "প্রপার্টি প্যানেল প্রদর্শন করুন:" + +#: ../setup/setup.ui.h:26 +msgid "Language panel position:" +msgstr "ভাষার প্যানেলের অবস্থান:" + +#: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:36 +msgid "Show icon on system tray" +msgstr "সিস্টেম ট্রের মধ্যে আইকন প্রদর্শন করা হবে" + +#: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:38 +msgid "Show input method name on language bar" +msgstr "ভাষার বারের মধ্যে ইনপুট পদ্ধতির নাম প্রদর্শন করা হবে" + +#: ../setup/setup.ui.h:29 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "" +"চেকবক্স নির্বাচিত হলে, ভাষার বারের মধ্যে ইনপুট পদ্ধতির নাম প্রদর্শন করা হবে" + +#: ../setup/setup.ui.h:30 +msgid "Embed preedit text in application window" +msgstr "অ্যাপ্লিকেশনের উইন্ডোর মধ্যে প্রি-এডিট টেক্সট সন্নিবেশ করা হবে" + +#: ../setup/setup.ui.h:31 +msgid "Embed the preedit text of input method in the application window" +msgstr "" +"অ্যাপ্লিকেশনের উইন্ডোর মধ্যে ইনপুট পদ্ধতির প্রি-এডিট টেক্সট সন্নিবেশ করা হবে" + +#: ../setup/setup.ui.h:32 +msgid "Use custom font:" +msgstr "স্বনির্ধারিত ফন্ট প্রয়োগ করুন:" + +#: ../setup/setup.ui.h:33 +msgid "Font and Style" +msgstr "ফন্ট ও বিন্যাস" + +#: ../setup/setup.ui.h:34 +msgid "General" +msgstr "সাধারণ" + +#. add button +#: ../setup/setup.ui.h:35 ../setup/enginedialog.py:61 +#: ../setup/keyboardshortcut.py:124 +msgid "_Add" +msgstr "যোগ করুন (_A)" + +#: ../setup/setup.ui.h:36 +msgid "Add the selected input method into the enabled input methods" +msgstr "নির্বাচিত ইনপুট পদ্ধতিটি, সক্রিয় ইনপুট পদ্ধতির তালিকা যোগ করা হবে" + +#: ../setup/setup.ui.h:37 +msgid "_Remove" +msgstr "অপসারণ (_R)" + +#: ../setup/setup.ui.h:38 +msgid "Remove the selected input method from the enabled input methods" +msgstr "" +"সক্রিয় ইনপুট পদ্ধতির তালিকা থেকে নির্বাচিত ইনপুট পদ্ধতিটি মুছে ফেলা হবে" + +#: ../setup/setup.ui.h:39 +msgid "_Up" +msgstr "উপরে (_U)" + +#: ../setup/setup.ui.h:40 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "" +"নির্বাচিত ইনপুট পদ্ধতিটি, সক্রিয় ইনপুট পদ্ধতির তালিকায় উপরে স্থানান্তর করা " +"হবে" + +#: ../setup/setup.ui.h:41 +msgid "_Down" +msgstr "নীচে (_D)" + +#: ../setup/setup.ui.h:42 +msgid "Move down the selected input method in the enabled input methods" +msgstr "" +"নির্বাচিত ইনপুট পদ্ধতিটি, সক্রিয় ইনপুট পদ্ধতির তালিকায় নীচে স্থানান্তর করা " +"হবে" + +#: ../setup/setup.ui.h:43 +msgid "_About" +msgstr "পরিচিতি (_A)" + +#: ../setup/setup.ui.h:44 +msgid "Show information of the selected input method" +msgstr "নির্বাচিত ইনপুট পদ্ধতি সংক্রান্ত তথ্য প্রদর্শন করা হবে" + +#: ../setup/setup.ui.h:45 +msgid "_Preferences" +msgstr "পছন্দসমূহ (_P)" + +#: ../setup/setup.ui.h:46 +msgid "Show setup of the selected input method" +msgstr "নির্বাচিত ইনপুট মেথডের সেটআপ প্রদর্শন করা হবে" + +#: ../setup/setup.ui.h:47 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" +"সক্রিয় ইনপুট পদ্ধতিটি উপরের তালিকার নির্বাচিতগুলি থেকে কীবোর্ড " +"শর্টকাট কীগুলি চেপে বা প্যানেল আইকনে ক্লিক করে পরিবর্তন করা যেতে " +"পারে।" + +#. create im name & icon column +#: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:68 +msgid "Input Method" +msgstr "ইনপুট পদ্ধতি" + +#: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:44 +msgid "Use system keyboard layout" +msgstr "সিস্টেম কি-বোর্ড বিন্যাস প্রয়োগ করা হবে" + +#: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:45 +msgid "Use system keyboard (XKB) layout" +msgstr "সিস্টেম কি-বোর্ড (XKB) বিন্যাস প্রয়োগ করা হবে" + +#: ../setup/setup.ui.h:51 +msgid "Keyboard Layout" +msgstr "কি-বোর্ডের বিন্যাস" + +#: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:53 +msgid "Share the same input method among all applications" +msgstr "সকল অ্যাপ্লিকেশনের মধ্যে একই ইনপুট পদ্ধতি ব্যবহার করা হবে" + +#: ../setup/setup.ui.h:53 +msgid "Global input method settings" +msgstr "ইনপুট পদ্ধতির সার্বজনীন বৈশিষ্ট্য" + +#: ../setup/setup.ui.h:54 +msgid "Advanced" +msgstr "উন্নত" + +#: ../setup/setup.ui.h:55 +msgid "" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" +msgstr "" +"IBus\n" +"একটি ইনটেলিজেন্ট ইনপুট বাস\n" +"হোমপেজঃ https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" + +#: ../setup/setup.ui.h:62 +msgid "Start ibus on login" +msgstr "লগ-ইন করার সময় ibus আরম্ভ করা হবে" + +#: ../setup/setup.ui.h:63 +msgid "Startup" +msgstr "প্রারম্ভ" + +#: ../setup/setup.ui.h:64 ../setup/engineabout.py:37 +#: ../ui/gtk3/panel.vala:1113 +msgid "About" +msgstr "পরিচিতি" + +#: ../setup/setup.ui.h:65 ../setup/engineabout.py:40 +msgid "_Close" +msgstr "বন্ধ (_C)" + +#. Translators: Here “Preload” is a verb +#: ../data/ibus.schemas.in.h:2 +msgid "Preload engines" +msgstr "ইঞ্জিন পূর্বে লোড করা হবে" + +#. Translators: Tooltip for the button “Preload Engines” +#: ../data/ibus.schemas.in.h:4 +msgid "Preload engines during ibus starts up" +msgstr "ibus আরম্ভের সময় ইঞ্জিনগুলি পূর্বে লোড করা হবে" + +#: ../data/ibus.schemas.in.h:5 +msgid "Engines order" +msgstr "ইঞ্জিনের অর্ডার" + +#: ../data/ibus.schemas.in.h:6 +msgid "Saved engines order in input method list" +msgstr "ইনপুট পদ্ধতি তালিকায় সংরক্ষিত ইঞ্জিনগুলো অর্ডার" + +#: ../data/ibus.schemas.in.h:7 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "আইএমই সুইচ পপআপের বিলম্ব (মিলিসেকেন্ড এ)" + +#: ../data/ibus.schemas.in.h:8 +#, fuzzy +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is 400." +" 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " +"show the window and switch prev/next engines." +msgstr "" +"আইএমই স্যুইচার উইন্ডোটি দেখানোর জন্য পপআপ বিলম্ব মিলিসেকেন্ড এ সেট করুন। " +"ডিফল্টে হচ্ছে 400.0 =তাত্ক্ষণিকভাবে উইন্ডোটি দেখান। ০ < মিলিসেকেন্ডে " +"বিলম্ব। ০ > উইন্ডোটি প্রদর্শন করবেন না এবং পূর্ববর্তী / পরবর্তী " +"ইঞ্জিনগুলোতে স্যুইচ করবেন না।" + +#: ../data/ibus.schemas.in.h:9 +msgid "Saved version number" +msgstr "সংরক্ষিত ভার্সন নাম্বার" + +#: ../data/ibus.schemas.in.h:10 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" +"সংরক্ষিত ভার্সন নাম্বারটি পূর্ববর্তী ইন্সটল করা আইবাস এবং বর্তমানে আইবাসের " +"একটির সাথে পার্থক্য দেখার জন্য ব্যবহৃত করা হবে।" + +#: ../data/ibus.schemas.in.h:11 +msgid "Latin layouts which have no ASCII" +msgstr "ASCII নেই যেসব ল্যাটিন লেআউটগুলো" + +#: ../data/ibus.schemas.in.h:12 +msgid "US layout is appended to the latin layouts. variant can be omitted." +msgstr "" +"US লেআউটটি ল্যাটিন লেআউটে সংযুক্ত করা হয়েছে। বৈকল্পিক বাদ দেওয়া যেতে পারে।" + +#: ../data/ibus.schemas.in.h:13 +msgid "Use xmodmap" +msgstr "xmodmap ব্যবহার করুন" + +#: ../data/ibus.schemas.in.h:14 +#, fuzzy +msgid "" +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." +msgstr "" +"যদি .xmodmap অথবা .Xmodmap বিদ্যমান থাকে তাহলে xmodmap রান করুন, যখন আইবাস " +"ইনজিনসমূহ সুইচ করা হয়।" + +#: ../data/ibus.schemas.in.h:15 +msgid "Trigger shortcut keys" +msgstr "ট্রিগারের শর্টকাট-কি" + +#: ../data/ibus.schemas.in.h:17 +#, fuzzy +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "gtk_accelerator_parse এর জন্য শর্টকাট কী সেট করুন" + +#: ../data/ibus.schemas.in.h:18 +msgid "Enable shortcut keys" +msgstr "শর্টকাট কী সক্রিয় করুন" + +#: ../data/ibus.schemas.in.h:19 +msgid "The shortcut keys for turning input method on" +msgstr "ইনপুট পদ্ধতি চালু করার জন্য শর্টকাট কী" + +#: ../data/ibus.schemas.in.h:20 +msgid "Disable shortcut keys" +msgstr "শর্টকাট কী নিষ্ক্রিয় করুন" + +#: ../data/ibus.schemas.in.h:21 +msgid "The shortcut keys for turning input method off" +msgstr "ইনপুট পদ্ধতি বন্ধ করার জন্য শর্টকাট কী" + +#: ../data/ibus.schemas.in.h:22 +msgid "Next engine shortcut keys" +msgstr "পরবর্তী ইঞ্জিনের জন্য শর্টকাট-কি" + +#: ../data/ibus.schemas.in.h:23 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "" +"তালিকায় উপস্থিত পরবর্তী ইনপুট পদ্ধতিতে পরিবর্তনের জন্য প্রযোজ্য শর্ট-কাট কি" + +#: ../data/ibus.schemas.in.h:24 +msgid "Prev engine shortcut keys" +msgstr "পূর্ববর্তী ইঞ্জিনের শর্টকাট-কি" + +#: ../data/ibus.schemas.in.h:25 +msgid "The shortcut keys for switching to the previous input method" +msgstr "" +"তালিকায় উপস্থিত পূর্ববর্তী ইনপুট পদ্ধতিতে পরিবর্তনের জন্য প্রযোজ্য শর্ট-কাট " +"কি" + +#: ../data/ibus.schemas.in.h:26 +msgid "Auto hide" +msgstr "স্বয়ংক্রিয়ভাবে আড়াল করা হবে" + +#: ../data/ibus.schemas.in.h:27 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "" +"প্রপার্টি প্যানেলের আচরণ। 0 = দেখাবেন না, 1 = স্বয়ংক্রিয় লুকান, 2 = সবসময় " +"দেখান" + +#: ../data/ibus.schemas.in.h:28 +msgid "Language panel position" +msgstr "ভাষার প্যানেলের অবস্থান" + +#: ../data/ibus.schemas.in.h:29 +msgid "" +"The position of the language panel. 0 = Top left corner, 1 = Top right " +"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +msgstr "" +"ভাষার প্যানেলের অবস্থান। 0 = উপরে বাঁদিকের কোণায়, 1 = উপরে ডানদিকের কোণায়, 2 " +"= নীচে বাঁদিকের কোণায়, 3 = নীচে ডানদিকের কোণায়, 4 = স্বনির্ধারিত" + +#: ../data/ibus.schemas.in.h:30 +#, fuzzy +msgid "Follow the input cursor in case the panel is always shown" +msgstr "প্যানেল যখন সবসময় দৃশ্যমান, সেক্ষেত্রে ইনপুট কার্সরকে অনুসরণ করুন" + +#: ../data/ibus.schemas.in.h:31 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" + +#: ../data/ibus.schemas.in.h:32 +msgid "The milliseconds to show property panel" +msgstr "" + +#: ../data/ibus.schemas.in.h:33 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" + +#: ../data/ibus.schemas.in.h:34 +msgid "Orientation of lookup table" +msgstr "লুক-আপ টেবিলের দিশা" + +#: ../data/ibus.schemas.in.h:35 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "লুক-আপ টেবিলের দিশা। 0 (০) = অনুভুমিক, 1 (১) = উল্লম্ব" + +#: ../data/ibus.schemas.in.h:37 +msgid "Show input method name" +msgstr "ইনপুট পদ্ধতির নাম প্রদর্শন করা হবে" + +#: ../data/ibus.schemas.in.h:39 +msgid "RGBA value of XKB icon" +msgstr "" + +#: ../data/ibus.schemas.in.h:41 +#, no-c-format +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " +"'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " +"to 255 or precentage values in the range 0% to 100%, and 'a' is a floating " +"point value in the range 0 to 1 of the alpha." +msgstr "" + +#: ../data/ibus.schemas.in.h:42 +msgid "The milliseconds to show the panel icon for a property" +msgstr "" + +#: ../data/ibus.schemas.in.h:43 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" + +#: ../data/ibus.schemas.in.h:46 +msgid "Use custom font" +msgstr "স্বনির্ধারিত ফন্ট প্রয়োগ করুন" + +#: ../data/ibus.schemas.in.h:47 +msgid "Use custom font name for language panel" +msgstr "ভাষার প্যানেলের জন্য স্বনির্ধারিত ফন্টের নাম ব্যবহার করা হবে" + +#: ../data/ibus.schemas.in.h:48 +msgid "Custom font" +msgstr "স্বনির্ধারিত ফন্ট" + +#: ../data/ibus.schemas.in.h:49 +msgid "Custom font name for language panel" +msgstr "ভাষার প্যানেলের জন্য ব্যবহারযোগ্য স্বনির্ধারিত ফন্টের নাম" + +#: ../data/ibus.schemas.in.h:50 +msgid "Embed Preedit Text" +msgstr "প্রি-এডিট টেক্সট সন্নিবেশ করা হবে" + +#: ../data/ibus.schemas.in.h:51 +msgid "Embed Preedit Text in Application Window" +msgstr "অ্যাপ্লিকেশন উইন্ডোর মধ্যে প্রি-এডিট টেক্সট সন্নিবেশ করা হবে" + +#: ../data/ibus.schemas.in.h:52 +msgid "Use global input method" +msgstr "গ্লোবাল ইনপুট পদ্ধতি ব্যবহার করুন" + +#: ../data/ibus.schemas.in.h:54 +msgid "Enable input method by default" +msgstr "ডিফল্ট ভাবে ইনপুট পদ্ধতি সক্রিয় করুন" + +#: ../data/ibus.schemas.in.h:55 +#, fuzzy +msgid "Enable input method by default when the application gets input focus" +msgstr "অ্যাপ্লিকেশনটি ইনপুট ফোকাস পেলে ডিফল্ট ভাবে ইনপুট পদ্ধতি সক্রিয় করুন" + +#: ../data/ibus.schemas.in.h:56 +#, fuzzy +msgid "DConf preserve name prefixes" +msgstr "DConf নাম উপসর্গ সংরক্ষণ করে" + +#: ../data/ibus.schemas.in.h:57 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "" + +#: ../ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "" +"স্বত্বাধিকার (c) ২০০৭-২০০৯ পেং হুয়াং\n" +"স্বত্বাধিকার (c) ২০০৭-২০০৯ Red Hat, Inc." + +#: ../ibus/lang.py:41 ../src/ibusutil.c:158 +msgid "Other" +msgstr "অন্যান্য" + +#: ../setup/engineabout.py:72 +#, python-format +msgid "Language: %s\n" +msgstr "ভাষা: %s\n" + +#: ../setup/engineabout.py:75 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "কি-বোর্ড বিন্যাস: %s\n" + +#: ../setup/engineabout.py:78 +#, python-format +msgid "Author: %s\n" +msgstr "নির্মাতা: %s\n" + +#: ../setup/engineabout.py:81 +msgid "Description:\n" +msgstr "বিবরণ:\n" + +#: ../setup/enginecombobox.py:139 ../setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "একটি ইনপুট পদ্ধতি নির্বাচন করুন" + +#: ../setup/enginedialog.py:60 ../setup/keyboardshortcut.py:339 +#: ../setup/main.py:414 +msgid "_Cancel" +msgstr "বাতিল (_C)" + +#: ../setup/enginedialog.py:205 +msgid "More…" +msgstr "আরও…" + +#: ../setup/enginetreeview.py:96 +msgid "Kbd" +msgstr "Kbd" + +#: ../setup/ibus-setup.desktop.in.h:2 +msgid "Set IBus Preferences" +msgstr "IBus সংক্রান্ত পছন্দ নির্ধারণ করুন" + +#: ../setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "কি-বোর্ড শর্ট-কাট" + +#: ../setup/keyboardshortcut.py:67 +msgid "Key code:" +msgstr "কি-র কোড:" + +#: ../setup/keyboardshortcut.py:82 +msgid "Modifiers:" +msgstr "পরিবর্তক:" + +#. apply button +#: ../setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "প্রয়োগ করুন (_A)" + +#. delete button +#: ../setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "মুছে ফেলুন (_D)" + +#: ../setup/keyboardshortcut.py:252 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "" +"অনুগ্রহ করে কোনো কি (অথবা কি সংকলন) টিপুন।\n" +"কি মুক্ত করা হলে এই ডায়লগ বক্সটি বন্ধ করা হবে।" + +#: ../setup/keyboardshortcut.py:255 +msgid "Please press a key (or a key combination)" +msgstr "অনুগ্রহ করে একটি কি (অথবা কি সংকলন) টিপুন" + +#: ../setup/keyboardshortcut.py:340 ../setup/main.py:415 +msgid "_OK" +msgstr "ঠিক আছে (_O)" + +#: ../setup/main.py:114 ../setup/main.py:439 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "" + +#: ../setup/main.py:369 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "" + +#: ../setup/main.py:390 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "" + +#. Translators: %d == 5 currently +#: ../setup/main.py:404 +#, python-format +msgid "IBus daemon could not be started in %d seconds" +msgstr "" + +#: ../setup/main.py:416 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "%s-র জন্য কি-বোর্ড শর্ট-কাট ধার্য করুন" + +#. Translators: Title of the window +#: ../setup/main.py:418 +msgid "switching input methods" +msgstr "" + +#: ../tools/main.vala:48 +msgid "List engine name only" +msgstr "" + +#: ../tools/main.vala:64 ../tools/main.vala:185 ../tools/main.vala:195 +msgid "Can't connect to IBus.\n" +msgstr "" + +#: ../tools/main.vala:90 +#, c-format +msgid "language: %s\n" +msgstr "ভাষা: %s\n" + +#: ../tools/main.vala:158 +msgid "No engine is set.\n" +msgstr "" + +#: ../tools/main.vala:166 +msgid "Set global engine failed.\n" +msgstr "" + +#: ../tools/main.vala:171 +msgid "Get global engine failed.\n" +msgstr "" + +#: ../tools/main.vala:210 +msgid "Read the system registry cache." +msgstr "" + +#: ../tools/main.vala:212 +msgid "Read the registry cache FILE." +msgstr "" + +#: ../tools/main.vala:230 ../tools/main.vala:235 +msgid "The registry cache is invalid.\n" +msgstr "" + +#: ../tools/main.vala:250 +msgid "Write the system registry cache." +msgstr "" + +#: ../tools/main.vala:252 +msgid "Write the registry cache FILE." +msgstr "" + +#: ../tools/main.vala:304 +msgid "Resetting…" +msgstr "" + +#: ../tools/main.vala:318 +msgid "Done" +msgstr "" + +#: ../tools/main.vala:337 +msgid "Set or get engine" +msgstr "" + +#: ../tools/main.vala:338 +msgid "Exit ibus-daemon" +msgstr "" + +#: ../tools/main.vala:339 +msgid "Show available engines" +msgstr "" + +#: ../tools/main.vala:340 +msgid "(Not implemented)" +msgstr "" + +#: ../tools/main.vala:341 +msgid "Restart ibus-daemon" +msgstr "" + +#: ../tools/main.vala:342 +msgid "Show version" +msgstr "" + +#: ../tools/main.vala:343 +msgid "Show the content of registry cache" +msgstr "" + +#: ../tools/main.vala:344 +msgid "Create registry cache" +msgstr "" + +#: ../tools/main.vala:345 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "" + +#: ../tools/main.vala:346 +msgid "Show the configuration values" +msgstr "" + +#: ../tools/main.vala:347 +msgid "Reset the configuration values" +msgstr "" + +#: ../tools/main.vala:348 +msgid "Show this information" +msgstr "" + +#: ../tools/main.vala:354 +#, c-format +msgid "Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "" + +#: ../tools/main.vala:355 +msgid "Commands:\n" +msgstr "" + +#: ../tools/main.vala:384 +#, c-format +msgid "%s is unknown command!\n" +msgstr "" + +#: ../ui/gtk3/panel.vala:235 ../ui/gtk3/panel.vala:266 +msgid "IBus Panel" +msgstr "" + +#: ../ui/gtk3/panel.vala:731 +msgid "IBus Update" +msgstr "" + +#: ../ui/gtk3/panel.vala:732 ../ui/gtk3/panel.vala:743 +msgid "Super+space is now the default hotkey." +msgstr "" + +#: ../ui/gtk3/panel.vala:1086 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "Linux/Unix-র সাথে ব্যবহারযোগ্য বুদ্ধিবিশিষ্ট ইনপুট বাস হল IBus" + +#: ../ui/gtk3/panel.vala:1090 +msgid "translator-credits" +msgstr "রুণা ভট্টাচার্য্য (runab@fedoraproject.org)" + +#: ../ui/gtk3/panel.vala:1109 +msgid "Preferences" +msgstr "পছন্দসমূহ" + +#: ../ui/gtk3/panel.vala:1119 +msgid "Restart" +msgstr "পুনরারম্ভ" + +#: ../ui/gtk3/panel.vala:1123 +msgid "Quit" +msgstr "প্রস্থান" + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ../ui/gtk3/propertypanel.vala:400 ../ui/gtk3/propertypanel.vala:408 +msgid "default:LTR" +msgstr "default:LTR" diff --git a/po/bn_IN.po b/po/bn_IN.po index 8d960d060..e22da7ec0 100644 --- a/po/bn_IN.po +++ b/po/bn_IN.po @@ -1,527 +1,3074 @@ -# translation of ibus.master.po to Bengali INDIA -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. +# Bengali (India) translation of ibus. +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2018 Takao Fujiwara +# This file is distributed under the same license as the ibus package. # -# Runa Bhattacharjee , 2009. -# Runa Bhattacharjee , 2009, 2010. +# Translators: +# Saibal Ray, 2013 +# Runa Bhattacharjee , 2009 +# runab , 2009, 2010 +# runa , 2012 +# runab , 2009-2010 +# runa , 2012 +# Saibal Ray, 2013-2014 +# fujiwara , 2015. #zanata +# fujiwara , 2018. #zanata msgid "" msgstr "" -"Project-Id-Version: ibus.master\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-12 00:41+0900\n" -"PO-Revision-Date: 2010-08-02 18:27+0530\n" -"Last-Translator: Runa Bhattacharjee \n" -"Language-Team: Bengali INDIA \n" -"Language: \n" +"Project-Id-Version: IBus\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2018-02-20 17:31+0900\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.11.4\n" +"PO-Revision-Date: 2018-02-20 04:21-0500\n" +"Last-Translator: Copied by Zanata \n" +"Language-Team: Bengali (India) \n" +"Language: bn-IN\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Zanata 3.9.6\n" -#: ../bus/ibus.desktop.in.h:1 -msgid "IBus" -msgstr "IBus" +#: ../setup/setup.ui.h:1 +msgid "Horizontal" +msgstr "অনুভূমিক" + +#: ../setup/setup.ui.h:2 +msgid "Vertical" +msgstr "উল্লম্ব" -#: ../bus/ibus.desktop.in.h:2 -msgid "Input Method Framework" -msgstr "ইনপুট পদ্ধতির পরিকাঠামো" +#: ../setup/setup.ui.h:3 +msgid "Top left corner" +msgstr "উপরে বাঁদিকের কোণায়" -#: ../bus/ibus.desktop.in.h:3 -msgid "Start IBus Input Method Framework" -msgstr "IBus ইনপুট পদ্ধতির পরিকাঠামো আরম্ভ করা হবে" +#: ../setup/setup.ui.h:4 +msgid "Top right corner" +msgstr "উপরে ডানদিকের কোণায়" -#: ../ibus/_config.py.in:39 -msgid "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +#: ../setup/setup.ui.h:5 +msgid "Bottom left corner" +msgstr "নীচে বাঁদিকের কোণায়" + +#: ../setup/setup.ui.h:6 +msgid "Bottom right corner" +msgstr "নীচে ডানদিকের কোণায়" + +#: ../setup/setup.ui.h:7 +msgid "Custom" +msgstr "স্বনির্ধারিত" + +#: ../setup/setup.ui.h:8 +msgid "Do not show" +msgstr "দেখাবেন না" + +#: ../setup/setup.ui.h:9 +msgid "Hide automatically" +msgstr "স্বয়ংক্রিয় ভাবে লুকান" + +#: ../setup/setup.ui.h:10 +msgid "Always" +msgstr "সর্বদা" + +#: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 +msgid "IBus Preferences" +msgstr "IBus সংক্রান্ত পছন্দ" + +#: ../setup/setup.ui.h:12 +msgid "The shortcut keys for switching to next input method in the list" msgstr "" -"স্বত্বাধিকার (c) ২০০৭-২০০৯ পেং হুয়াং\n" -"স্বত্বাধিকার (c) ২০০৭-২০০৯ Red Hat, Inc." +"তালিকায় উপস্থিত পরবর্তী ইনপুট পদ্ধতিতে পরিবর্তনের জন্য প্রযোজ্য শর্ট-কাট কি" -#: ../ibus/lang.py:41 -msgid "Other" -msgstr "অন্যান্য" +#: ../setup/setup.ui.h:13 +msgid "Next input method:" +msgstr "পরবর্তী ইনপুট পদ্ধতি:" + +#: ../setup/setup.ui.h:14 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "" +"তালিকায় উপস্থিত পূর্ববর্তী ইনপুট পদ্ধতিতে পরিবর্তনের জন্য প্রযোজ্য শর্ট-কাট " +"কি" -#: ../ui/gtk/candidatepanel.py:264 -msgid "Previous page" -msgstr "পূর্ববর্তী পৃষ্ঠা" +#: ../setup/setup.ui.h:15 +msgid "Previous input method:" +msgstr "পূর্ববর্তী ইনপুট পদ্ধতি:" -#: ../ui/gtk/candidatepanel.py:269 -msgid "Next page" -msgstr "পরবর্তী পৃষ্ঠা" +#: ../setup/setup.ui.h:16 +msgid "..." +msgstr "..." -#: ../ui/gtk/main.py:55 -msgid "" -"Some input methods have been installed, removed or updated. Please restart " -"ibus input platform." +#: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:16 +msgid "The shortcut keys for turning input method on or off" msgstr "" -"কয়েকটি ইনপুট পদ্ধতি ইনস্টল, অপসারণ অথবা আপডেট করা হয়েছে। অনুগ্রহ করে ibus ইনপুট " -"প্ল্যাটফর্ম পুনরায় আরম্ভ করুন।" +"ইনপুট পদ্ধতি খোলা ও বন্ধ করার জন্য প্রয়োজনীয় শর্ট-কাট কি নির্ধারণ করুন" -#: ../ui/gtk/main.py:59 -msgid "Restart Now" -msgstr "অবিলম্বে পুনরারম্ভ" +#: ../setup/setup.ui.h:18 +msgid "Enable or disable:" +msgstr "সক্রিয় অথা নিষ্ক্রিয় করুন:" -#: ../ui/gtk/main.py:60 -msgid "Later" -msgstr "পরে" +#: ../setup/setup.ui.h:19 +msgid "Enable:" +msgstr "সক্রিয় করুন:" -#: ../ui/gtk/panel.py:109 -msgid "IBus input method framework" -msgstr "IBus ইনপুট পদ্ধতির পরিকাঠামো" +#: ../setup/setup.ui.h:20 +msgid "Disable:" +msgstr "নিষ্ক্রিয় করুন:" -#: ../ui/gtk/panel.py:327 -msgid "Restart" -msgstr "পুনরারম্ভ" +#: ../setup/setup.ui.h:21 +msgid "Keyboard Shortcuts" +msgstr "কি-বোর্ড শর্ট-কাট" -#: ../ui/gtk/panel.py:414 -msgid "Turn off input method" -msgstr "ইনপুট পদ্ধতি বন্ধ করুন" +#: ../setup/setup.ui.h:22 +msgid "Set the orientation of candidates in lookup table" +msgstr "লুক-আপ টেবিলের মধ্যে প্রযোজ্য বিকল্পগুলির দিশা নির্ধারণ করুন" -#: ../ui/gtk/panel.py:453 -msgid "No input window" -msgstr "ইনপুটের উদ্দেশ্যে উইন্ডো অনুপস্থিত" +#: ../setup/setup.ui.h:23 +msgid "Candidates orientation:" +msgstr "নির্বাচিত বস্তুর দিশা:" -#: ../ui/gtk/panel.py:484 -msgid "IBus is an intelligent input bus for Linux/Unix." -msgstr "Linux/Unix-র সাথে ব্যবহারযোগ্য বুদ্ধিবিশিষ্ট ইনপুট বাস হল IBus" +#: ../setup/setup.ui.h:24 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "ভাষার বার প্রদর্শন ও আড়াল করার উদ্দেশ্যে ibus-র আচরণ নির্ধারণ করুন" -#: ../ui/gtk/panel.py:488 -msgid "translator-credits" -msgstr "রুণা ভট্টাচার্য্য (runab@fedoraproject.org)" +#: ../setup/setup.ui.h:25 +msgid "Show property panel:" +msgstr "বিশিষ্টতা প্যানেল দেখান:" -#: ../ui/gtk/languagebar.py:106 -msgid "About the input method" -msgstr "ইনপুট পদ্ধতি পরিচিতি" +#: ../setup/setup.ui.h:26 +msgid "Language panel position:" +msgstr "ভাষার প্যানেলের অবস্থান:" -#: ../ui/gtk/languagebar.py:214 -msgid "Switch input method" -msgstr "ইনপুট পদ্ধতি পরিবর্তন করুন" +#: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:36 +msgid "Show icon on system tray" +msgstr "সিস্টেম ট্রের মধ্যে আইকন প্রদর্শন করা হবে" -#: ../ui/gtk/languagebar.py:357 ../ui/gtk/engineabout.py:33 -#: ../setup/engineabout.py:33 ../setup/setup.ui.h:16 -msgid "About" -msgstr "পরিচিতি" +#: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:38 +msgid "Show input method name on language bar" +msgstr "ভাষার বারের মধ্যে ইনপুট পদ্ধতির নাম প্রদর্শন করা হবে" -#: ../ui/gtk/languagebar.py:361 -msgid "About the Input Method" -msgstr "ইনপুট পদ্ধতি পরিচিতি" +#: ../setup/setup.ui.h:29 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "" +"চেকবক্স নির্বাচিত হলে, ভাষার বারের মধ্যে ইনপুট পদ্ধতির নাম প্রদর্শন করা হবে" -#: ../ui/gtk/engineabout.py:61 ../setup/engineabout.py:61 -#, python-format -msgid "Language: %s\n" -msgstr "ভাষা: %s\n" +#: ../setup/setup.ui.h:30 +msgid "Embed preedit text in application window" +msgstr "অ্যাপ্লিকেশনের উইন্ডোর মধ্যে প্রি-এডিট টেক্সট সন্নিবেশ করা হবে" -#: ../ui/gtk/engineabout.py:63 ../setup/engineabout.py:63 -#, python-format -msgid "Keyboard layout: %s\n" -msgstr "কি-বোর্ড বিন্যাস: %s\n" +#: ../setup/setup.ui.h:31 +msgid "Embed the preedit text of input method in the application window" +msgstr "" +"অ্যাপ্লিকেশনের উইন্ডোর মধ্যে ইনপুট পদ্ধতির প্রি-এডিট টেক্সট সন্নিবেশ করা হবে" -#: ../ui/gtk/engineabout.py:65 ../setup/engineabout.py:65 -#, python-format -msgid "Author: %s\n" -msgstr "নির্মাতা: %s\n" +#: ../setup/setup.ui.h:32 +msgid "Use custom font:" +msgstr "স্বনির্ধারিত ফন্ট প্রয়োগ করুন:" -#: ../ui/gtk/engineabout.py:67 ../setup/engineabout.py:67 -msgid "Description:\n" -msgstr "বিবরণ:\n" +#: ../setup/setup.ui.h:33 +msgid "Font and Style" +msgstr "ফন্ট ও বিন্যাস" + +#: ../setup/setup.ui.h:34 +msgid "General" +msgstr "সাধারণ" + +#. add button +#: ../setup/setup.ui.h:35 ../setup/enginedialog.py:61 +#: ../setup/keyboardshortcut.py:124 +msgid "_Add" +msgstr "যোগ করুন (_A)" + +#: ../setup/setup.ui.h:36 +msgid "Add the selected input method into the enabled input methods" +msgstr "নির্বাচিত ইনপুট পদ্ধতিটি, সক্রিয় ইনপুট পদ্ধতির তালিকা যোগ করা হবে" + +#: ../setup/setup.ui.h:37 +msgid "_Remove" +msgstr "মুছে ফেলুন (_R)" + +#: ../setup/setup.ui.h:38 +msgid "Remove the selected input method from the enabled input methods" +msgstr "" +"সক্রিয় ইনপুট পদ্ধতির তালিকা থেকে নির্বাচিত ইনপুট পদ্ধতিটি মুছে ফেলা হবে" + +#: ../setup/setup.ui.h:39 +msgid "_Up" +msgstr "উপরে (_U)" + +#: ../setup/setup.ui.h:40 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "" +"নির্বাচিত ইনপুট পদ্ধতিটি, সক্রিয় ইনপুট পদ্ধতির তালিকায় উপরে স্থানান্তর করা " +"হবে" + +#: ../setup/setup.ui.h:41 +msgid "_Down" +msgstr "নীচে (_D)" + +#: ../setup/setup.ui.h:42 +msgid "Move down the selected input method in the enabled input methods" +msgstr "" +"নির্বাচিত ইনপুট পদ্ধতিটি, সক্রিয় ইনপুট পদ্ধতির তালিকায় নীচে স্থানান্তর করা " +"হবে" + +#: ../setup/setup.ui.h:43 +msgid "_About" +msgstr "পরিচিতি (_A)" + +#: ../setup/setup.ui.h:44 +msgid "Show information of the selected input method" +msgstr "নির্বাচিত ইনপুট পদ্ধতি সংক্রান্ত তথ্য প্রদর্শন করা হবে" + +#: ../setup/setup.ui.h:45 +msgid "_Preferences" +msgstr "পছন্দ (_P)" -#: ../setup/main.py:102 -msgid "trigger" -msgstr "ট্রিগার" +#: ../setup/setup.ui.h:46 +msgid "Show setup of the selected input method" +msgstr "নির্বাচিত ইনপুট পদ্ধতির সেট-আপ প্রদর্শন করা হবে" + +#: ../setup/setup.ui.h:47 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" +"কীবোর্ড শর্টকাট কী টিপে বা প্যানেল অাইকনে ক্লিক করে, উপরের তালিকায় " +"নির্বাচিতটি থেকে সক্রিয় ইনপুট পদ্ধতি পাল্টানো যেতে পারে।" + +#. create im name & icon column +#: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:68 +msgid "Input Method" +msgstr "ইনপুট পদ্ধতি" + +#: ../setup/setup.ui.h:49 +msgid "The shortcut keys for showing emoji dialog" +msgstr "" -#: ../setup/main.py:113 -msgid "enable" +#: ../setup/setup.ui.h:50 +msgid "Emoji choice:" +msgstr "" + +#: ../setup/setup.ui.h:51 +msgid "Set a font of emoji candidates on the emoji dialog" msgstr "" -#: ../setup/main.py:124 -msgid "disable" +#: ../setup/setup.ui.h:52 +msgid "Emoji font:" msgstr "" -#: ../setup/main.py:135 -msgid "next input method" -msgstr "পরবর্তী ইনপুট পদ্ধতি" +#: ../setup/setup.ui.h:53 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "" -#: ../setup/main.py:146 -msgid "previous input method" -msgstr "পূর্ববর্তী ইনপুট পদ্ধতি" +#: ../setup/setup.ui.h:54 +msgid "Emoji annotation language:" +msgstr "" -#: ../setup/main.py:286 -msgid "IBus daemon is not started. Do you want to start it now?" -msgstr "IBus ডেমন আরম্ভ করা হয়নি। এটি এখন আরম্ভ করা হবে কি?" +#: ../setup/setup.ui.h:55 +msgid "" +"Match emoji annotations partially with the following condition and more than " +"the number of characters:" +msgstr "" -#: ../setup/main.py:301 +#: ../setup/setup.ui.h:56 msgid "" -"IBus has been started! If you can not use IBus, please add below lines in " -"$HOME/.bashrc, and relogin your desktop.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +"If emoji annotations can be matched with a partial string instead of the " +"exact match" msgstr "" -"IBus আরম্ভ করা হয়েছে! IBus ব্যবহার করা সম্ভব নয় হলে $HOME/.bashrc ফাইলের মধ্যে " -"নিম্নলিখিত পংক্তিগুলি যোগ করে ডেস্কটপে পুনরায় লগ-ইন করুন।\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" -#: ../setup/main.py:316 -#, python-format -msgid "Select keyboard shortcut for %s" -msgstr "%s-র জন্য কি-বোর্ড শর্ট-কাট ধার্য করুন" +#: ../setup/setup.ui.h:57 +msgid "Prefix match" +msgstr "" -#: ../setup/keyboardshortcut.py:52 -msgid "Keyboard shortcuts" -msgstr "কি-বোর্ড শর্ট-কাট" +#: ../setup/setup.ui.h:58 +msgid "Suffix match" +msgstr "" -#: ../setup/keyboardshortcut.py:63 -msgid "Key code:" -msgstr "কি-র কোড:" +#: ../setup/setup.ui.h:59 +msgid "Containing match" +msgstr "" -#: ../setup/keyboardshortcut.py:78 -msgid "Modifiers:" -msgstr "পরিবর্তক:" +#: ../setup/setup.ui.h:60 +msgid "Emoji" +msgstr "" + +#: ../setup/setup.ui.h:61 ../data/ibus.schemas.in.h:44 +msgid "Use system keyboard layout" +msgstr "সিস্টেম কি-বোর্ড বিন্যাস প্রয়োগ করা হবে" + +#: ../setup/setup.ui.h:62 ../data/ibus.schemas.in.h:45 +msgid "Use system keyboard (XKB) layout" +msgstr "সিস্টেম কি-বোর্ড (XKB) বিন্যাস প্রয়োগ করা হবে" + +#: ../setup/setup.ui.h:63 +msgid "Keyboard Layout" +msgstr "কি-বোর্ডের বিন্যাস" + +#: ../setup/setup.ui.h:64 ../data/ibus.schemas.in.h:68 +msgid "Share the same input method among all applications" +msgstr "সকল অ্যাপ্লিকেশনের মধ্যে একই ইনপুট পদ্ধতি ব্যবহার করা হবে" + +#: ../setup/setup.ui.h:65 +msgid "Global input method settings" +msgstr "ইনপুট পদ্ধতির সার্বজনীন বৈশিষ্ট্য" + +#: ../setup/setup.ui.h:66 +msgid "Advanced" +msgstr "উন্নত" -#: ../setup/keyboardshortcut.py:231 +#: ../setup/setup.ui.h:67 msgid "" -"Please press a key (or a key combination).\n" -"The dialog will be closed when the key is released." +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" +msgstr "" +"IBus\n" +"বুদ্ধিবিশিষ্ট ইনপুট বাস\n" +"হোম-পেজ: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" + +#: ../setup/setup.ui.h:74 +msgid "Start ibus on login" +msgstr "লগ-ইন করার সময় ibus আরম্ভ করা হবে" + +#: ../setup/setup.ui.h:75 +msgid "Startup" +msgstr "প্রারম্ভ" + +#: ../setup/setup.ui.h:76 ../setup/engineabout.py:37 ../ui/gtk3/panel.vala:1175 +msgid "About" +msgstr "পরিচিতি" + +#: ../setup/setup.ui.h:77 ../setup/engineabout.py:40 +msgid "_Close" +msgstr "বন্ধ করুন (_C)" + +#. Translators: Here “Preload” is a verb +#: ../data/ibus.schemas.in.h:2 +msgid "Preload engines" +msgstr "ইঞ্জিন পূর্বে লোড করা হবে" + +#. Translators: Tooltip for the button “Preload Engines” +#: ../data/ibus.schemas.in.h:4 +msgid "Preload engines during ibus starts up" +msgstr "ibus আরম্ভের সময় ইঞ্জিনগুলি পূর্বে লোড করা হবে" + +#: ../data/ibus.schemas.in.h:5 +msgid "Engines order" +msgstr "ইঞ্জিনের অনুক্রম" + +#: ../data/ibus.schemas.in.h:6 +msgid "Saved engines order in input method list" +msgstr "ইনপুট পদ্ধতির তালিকায় সংরক্ষিত ইঞ্জিনের অনুক্রম" + +#: ../data/ibus.schemas.in.h:7 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "IME স্যুইচার উইন্ডোর ক্ষেত্রে পপ-অাপ মিলিসেকেন্ড বিলম্ব" + +#: ../data/ibus.schemas.in.h:8 +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is 400." +" 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " +"show the window and switch prev/next engines." +msgstr "" +"IME স্যুইচার উইন্ডো দেখাতে পপ-অাপ বিলম্ব মিলিসেকেন্ড সেট করুন। ডিফল্ট হল 400." +" 0 = উইন্ডো সংগে সংগে দেখান। 0 < মিলিসেকেন্ড বিলম্ব। 0 > উইন্ডো " +"দেখাবেন না এবং পূর্ববর্তী এবং পরবর্তী ইঞ্জিনে পাল্টান।" + +#: ../data/ibus.schemas.in.h:9 +msgid "Saved version number" +msgstr "সংরক্ষিত সংস্করণ নম্বর" + +#: ../data/ibus.schemas.in.h:10 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" +"পূর্বে ইনস্টল করা ibus এবং বর্তমান ibus এর একটির মধ্যে পার্থক্য যাচাই করতে " +"সংরক্ষিত সংস্করণ নম্বর ব্যবহৃত হবে।" + +#: ../data/ibus.schemas.in.h:11 +msgid "Latin layouts which have no ASCII" +msgstr "ল্যাটিন সজ্জা যাতে কোনো ASCII নেই" + +#: ../data/ibus.schemas.in.h:12 +msgid "US layout is appended to the Latin layouts. variant can be omitted." +msgstr "US সজ্জা ল্যাটিন সজ্জাতে প্রয়োগ করা হয়। বৈচিত্র্য বাদ দেওয়া হতে পারে।" + +#: ../data/ibus.schemas.in.h:13 +msgid "Use xmodmap" +msgstr "xmodmap ব্যবহার করুন" + +#: ../data/ibus.schemas.in.h:14 +msgid "" +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." +msgstr "" +"ibus ইঞ্জিনগুলি পাল্টানোর সময়ে, .xmodmap বা .Xmodmap বিদ্যমান থাকলে xmodmap " +"চালান।" + +#: ../data/ibus.schemas.in.h:15 +msgid "Trigger shortcut keys" +msgstr "ট্রিগারের শর্টকাট-কি" + +#: ../data/ibus.schemas.in.h:17 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "gtk_accelerator_parse এর ক্ষেত্রে শর্টকাট কী ট্রিগার" + +#: ../data/ibus.schemas.in.h:18 +msgid "Enable shortcut keys" +msgstr "শর্ট-কাট কি সক্রিয় করুন" + +#: ../data/ibus.schemas.in.h:19 +msgid "The shortcut keys for turning input method on" +msgstr "ইনপুট পদ্ধতি চালু করার জন্য ব্যবহৃত শর্ট-কাট কি" + +#: ../data/ibus.schemas.in.h:20 +msgid "Disable shortcut keys" +msgstr "শর্ট-কাট কি নিষ্ক্রিয় করুন" + +#: ../data/ibus.schemas.in.h:21 +msgid "The shortcut keys for turning input method off" +msgstr "ইনপুট পদ্ধতি বন্ধ করার জন্য ব্যবহৃত শর্ট-কাট কি" + +#: ../data/ibus.schemas.in.h:22 +msgid "Next engine shortcut keys" +msgstr "পরবর্তী ইঞ্জিনের জন্য শর্টকাট-কি" + +#: ../data/ibus.schemas.in.h:23 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "" +"তালিকায় উপস্থিত পরবর্তী ইনপুট পদ্ধতিতে পরিবর্তনের জন্য প্রযোজ্য শর্ট-কাট কি" + +#: ../data/ibus.schemas.in.h:24 +msgid "Prev engine shortcut keys" +msgstr "পূর্ববর্তী ইঞ্জিনের শর্টকাট-কি" + +#: ../data/ibus.schemas.in.h:25 +msgid "The shortcut keys for switching to the previous input method" +msgstr "" +"তালিকায় উপস্থিত পূর্ববর্তী ইনপুট পদ্ধতিতে পরিবর্তনের জন্য প্রযোজ্য শর্ট-কাট " +"কি" + +#: ../data/ibus.schemas.in.h:26 +msgid "Auto hide" +msgstr "স্বয়ংক্রিয়ভাবে আড়াল করা হবে" + +#: ../data/ibus.schemas.in.h:27 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "" +"বিশিষ্টতা প্যানেলের অাচরণ। 0 = দেখাবেন না, 1 = স্বয়ংক্রিয় ভাবে লুকানো, 2 = " +"সর্বদা দেখান" + +#: ../data/ibus.schemas.in.h:28 +msgid "Language panel position" +msgstr "ভাষার প্যানেলের অবস্থান" + +#: ../data/ibus.schemas.in.h:29 +msgid "" +"The position of the language panel. 0 = Top left corner, 1 = Top right " +"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +msgstr "" +"ভাষার প্যানেলের অবস্থান। 0 = উপরে বাঁদিকের কোণায়, 1 = উপরে ডানদিকের কোণায়, 2 " +"= নীচে বাঁদিকের কোণায়, 3 = নীচে ডানদিকের কোণায়, 4 = স্বনির্ধারিত" + +#: ../data/ibus.schemas.in.h:30 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "প্যানেল সর্বদা দেখানো হলে, ইনপুট কার্সার অনুসরণ করুন" + +#: ../data/ibus.schemas.in.h:31 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" +"সত্য হলে, প্যানেল সর্বদা দেখানো হলে প্যানেল ইনপুট কার্সার অনুসরণ করে। মিথ্যা " +"হলে, প্যানেল একটি নির্দিষ্ট অবস্থানে দেখানো হয়।" + +#: ../data/ibus.schemas.in.h:32 +msgid "The milliseconds to show property panel" +msgstr "বিশিষ্টতা প্যানেল দেখাতে মিলিসেকেন্ড" + +#: ../data/ibus.schemas.in.h:33 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" +"ফোকাস-ইন বা বিশিষ্টতা পরিবর্তিত হওয়ার পরে, বিশিষ্টতা প্যানেল দেখাতে " +"মিলিসেকেন্ড।" + +#: ../data/ibus.schemas.in.h:34 +msgid "Orientation of lookup table" +msgstr "লুক-আপ টেবিলের দিশা" + +#: ../data/ibus.schemas.in.h:35 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "লুক-আপ টেবিলের দিশা। 0 (০) = অনুভুমিক, 1 (১) = উল্লম্ব" + +#: ../data/ibus.schemas.in.h:37 +msgid "Show input method name" +msgstr "ইনপুট পদ্ধতির নাম প্রদর্শন করা হবে" + +#: ../data/ibus.schemas.in.h:39 +msgid "RGBA value of XKB icon" +msgstr "XKB অাইকনের RGBA মান" + +#: ../data/ibus.schemas.in.h:41 +#, no-c-format +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " +"'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " +"to 255 or percentage values in the range 0% to 100%, and 'a' is a floating " +"point value in the range 0 to 1 of the alpha." +msgstr "" +"XKB অাইকন সজ্জা স্ট্রীং দেখায় এবং স্ট্রীং RGBA মানের সাথে রেন্ডার হয়। RGBA " +"মান হতে পারে 1. X11 থেকে একটি রঙের নাম, 2. '#rrggbb' থেকে একটি হেক্স মান " +"যেখানে 'r', 'g' এবং 'b' হল লাল, সবুজ, এবং নীলের হেক্স ডিজিট 3. একটি RGB রঙ, " +"'rgb(r,g,b)' ফর্মে অথবা 4. একটি RGBA রঙ, 'rgba(r,g,b,a)' ফর্মে, যেখানে 'r', " +"'g', এবং 'b' হয় 0 থেকে 255 রেঞ্জে পূর্ণসংখ্যা বা 0% থেকে 100% রেঞ্জে শতাংশ " +"মান, এবং 'a' হল একটি ফ্লোটিং পয়েন্ট মান, অালফার 0 থেকে 1 রেঞ্জে।" + +#: ../data/ibus.schemas.in.h:42 +msgid "The milliseconds to show the panel icon for a property" +msgstr "" + +#: ../data/ibus.schemas.in.h:43 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" + +#: ../data/ibus.schemas.in.h:46 +msgid "Use custom font" +msgstr "স্বনির্ধারিত ফন্ট প্রয়োগ করুন" + +#: ../data/ibus.schemas.in.h:47 +msgid "Use custom font name for language panel" +msgstr "ভাষার প্যানেলের জন্য স্বনির্ধারিত ফন্টের নাম ব্যবহার করা হবে" + +#: ../data/ibus.schemas.in.h:48 +msgid "Custom font" +msgstr "স্বনির্ধারিত ফন্ট" + +#: ../data/ibus.schemas.in.h:49 +msgid "Custom font name for language panel" +msgstr "ভাষার প্যানেলের জন্য ব্যবহারযোগ্য স্বনির্ধারিত ফন্টের নাম" + +#: ../data/ibus.schemas.in.h:50 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "" + +#: ../data/ibus.schemas.in.h:51 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "" + +#: ../data/ibus.schemas.in.h:52 +msgid "Custom font name for emoji characters on emoji dialog" +msgstr "" + +#: ../data/ibus.schemas.in.h:53 +msgid "Default language for emoji dictionary" +msgstr "" + +#: ../data/ibus.schemas.in.h:54 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" +msgstr "" + +#: ../data/ibus.schemas.in.h:55 +msgid "favorite emoji list on emoji dialog" +msgstr "" + +#: ../data/ibus.schemas.in.h:56 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "" + +#: ../data/ibus.schemas.in.h:57 +msgid "favorite emoji annotation list on emoji dialog" +msgstr "" + +#: ../data/ibus.schemas.in.h:58 +msgid "You can assign an annotation for a favorite emoji in this list." +msgstr "" + +#: ../data/ibus.schemas.in.h:59 +msgid "Whether emoji annotations can be match partially or not" +msgstr "" + +#: ../data/ibus.schemas.in.h:60 +msgid "" +"Whether emoji annotations can be matched with a partial string instead of " +"the exact match or not." +msgstr "" + +#: ../data/ibus.schemas.in.h:61 +msgid "Match emoji annotations with the specified length" +msgstr "" + +#: ../data/ibus.schemas.in.h:62 +msgid "" +"Match emoji annotations partially with more than the specified number of " +"characters instead of the exact match." +msgstr "" + +#: ../data/ibus.schemas.in.h:63 +msgid "Choose a condition to match emoji annotations partially" +msgstr "" + +#: ../data/ibus.schemas.in.h:64 +msgid "" +"Choose one of the following conditions to match emoji annotations partially: " +"0 == Prefix match, 1 == Suffix match, 2 == Containing match" +msgstr "" + +#: ../data/ibus.schemas.in.h:65 +msgid "Embed Preedit Text" +msgstr "প্রি-এডিট টেক্সট সন্নিবেশ করা হবে" + +#: ../data/ibus.schemas.in.h:66 +msgid "Embed Preedit Text in Application Window" +msgstr "অ্যাপ্লিকেশন উইন্ডোর মধ্যে প্রি-এডিট টেক্সট সন্নিবেশ করা হবে" + +#: ../data/ibus.schemas.in.h:67 +msgid "Use global input method" +msgstr "সার্বজনীন ইনপুট পদ্ধতি " + +#: ../data/ibus.schemas.in.h:69 +msgid "Enable input method by default" +msgstr "ডিফল্ট অবস্থায় ইনপুট পদ্ধতি সক্রিয় করা হবে" + +#: ../data/ibus.schemas.in.h:70 +msgid "Enable input method by default when the application gets input focus" +msgstr "" +"ইনপুট প্রাপ্ত করার উদ্দেশ্যে অ্যাপ্লিকেশনে ফোকাস করা হলে, ডিফল্ট রূপে ইনপুট " +"পদ্ধতি সক্রিয় করা হবে" + +#: ../data/ibus.schemas.in.h:71 +msgid "DConf preserve name prefixes" +msgstr "DConf দ্বারা নেম প্রেফিক্স সংরক্ষণ করা হবে" + +#: ../data/ibus.schemas.in.h:72 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "নেম পরিবর্তন প্রতিরোধ করার জন্য DConf-কির প্রেফিক্স" + +#: ../ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "" +"স্বত্বাধিকার (c) ২০০৭-২০০৯ পেং হুয়াং\n" +"স্বত্বাধিকার (c) ২০০৭-২০০৯ Red Hat, Inc." + +#: ../ibus/lang.py:41 ../src/ibusutil.c:158 +msgid "Other" +msgstr "অন্যান্য" + +#: ../setup/emojilang.py:67 +msgid "Select a language" +msgstr "" + +#: ../setup/emojilang.py:70 ../setup/enginedialog.py:60 +#: ../setup/keyboardshortcut.py:339 ../setup/main.py:552 +msgid "_Cancel" +msgstr "বাতিল (_C)" + +#: ../setup/emojilang.py:71 ../setup/keyboardshortcut.py:340 +#: ../setup/main.py:553 +msgid "_OK" +msgstr "ঠিক আছে (_O)" + +#: ../setup/emojilang.py:235 ../setup/enginedialog.py:205 +msgid "More…" +msgstr "অারো…" + +#: ../setup/engineabout.py:72 +#, python-format +msgid "Language: %s\n" +msgstr "ভাষা: %s\n" + +#: ../setup/engineabout.py:75 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "কি-বোর্ড বিন্যাস: %s\n" + +#: ../setup/engineabout.py:78 +#, python-format +msgid "Author: %s\n" +msgstr "নির্মাতা: %s\n" + +#: ../setup/engineabout.py:81 +msgid "Description:\n" +msgstr "বিবরণ:\n" + +#: ../setup/enginecombobox.py:139 ../setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "একটি ইনপুট পদ্ধতি নির্বাচন করুন" + +#: ../setup/enginetreeview.py:96 +msgid "Kbd" +msgstr "Kbd" + +#: ../setup/ibus-setup.desktop.in.h:2 +msgid "Set IBus Preferences" +msgstr "IBus সংক্রান্ত পছন্দ নির্ধারণ করুন" + +#: ../setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "কি-বোর্ড শর্ট-কাট" + +#: ../setup/keyboardshortcut.py:67 +msgid "Key code:" +msgstr "কি-র কোড:" + +#: ../setup/keyboardshortcut.py:82 +msgid "Modifiers:" +msgstr "পরিবর্তক:" + +#. apply button +#: ../setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "প্রয়োগ করুন (_A)" + +#. delete button +#: ../setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "মুছে ফেলুন (_D)" + +#: ../setup/keyboardshortcut.py:252 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "" +"অনুগ্রহ করে কোনো কি (অথবা কি সংকলন) টিপুন।\n" +"কি মুক্ত করা হলে এই ডায়লগ বক্সটি বন্ধ করা হবে।" + +#: ../setup/keyboardshortcut.py:255 +msgid "Please press a key (or a key combination)" +msgstr "অনুগ্রহ করে একটি কি (অথবা কি সংকলন) টিপুন" + +#: ../setup/main.py:121 ../setup/main.py:580 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "" +"পূর্ববর্তী ইনপুট পদ্ধতিতে পরিবর্তনের জন্য শিফ্ট সমেত শর্ট-কাট কি ব্যবহার " +"করুন" + +#: ../setup/main.py:507 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "IBus ডেমন বর্তমানে চলছে না। এটি আরম্ভ করা হবে কি?" + +#: ../setup/main.py:528 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "" +"IBus আরম্ভ করা হয়েছে! IBus ব্যবহার করা সম্ভব না হলে $HOME/.bashrc ফাইলের " +"মধ্যে নিম্নলিখিত পংক্তিগুলি যোগ করে ডেস্কটপে পুনরায় লগ-ইন করুন।\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" + +#. Translators: %d == 5 currently +#: ../setup/main.py:542 +#, python-format +msgid "IBus daemon could not be started in %d seconds" +msgstr "IBus ডেমনটি %d সেকেন্ডে আরম্ভ করা যায়নি।" + +#: ../setup/main.py:554 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "%s-র জন্য কি-বোর্ড শর্ট-কাট ধার্য করুন" + +#. Translators: Title of the window +#: ../setup/main.py:556 +msgid "switching input methods" +msgstr "ইনপুট পদ্ধতি পরিবর্তন" + +#: ../src/ibusemojigen.h:30 +msgid "Activities" +msgstr "" + +#: ../src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "" + +#: ../src/ibusemojigen.h:32 +msgid "Flags" +msgstr "" + +#: ../src/ibusemojigen.h:33 +msgid "Food & Drink" +msgstr "" + +#: ../src/ibusemojigen.h:34 +msgid "Objects" +msgstr "" + +#: ../src/ibusemojigen.h:35 +msgid "Smileys & People" +msgstr "" + +#: ../src/ibusemojigen.h:36 +msgid "Symbols" +msgstr "" + +#: ../src/ibusemojigen.h:37 +msgid "Travel & Places" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:33 +msgid "Basic Latin" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:37 +msgid "Latin-1 Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:41 +msgid "Latin Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:45 +msgid "Latin Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:49 +msgid "IPA Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:53 +msgid "Spacing Modifier Letters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:57 +msgid "Combining Diacritical Marks" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:61 +msgid "Greek and Coptic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:65 +msgid "Cyrillic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:69 +msgid "Cyrillic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:73 +msgid "Armenian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:77 +msgid "Hebrew" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:81 +msgid "Arabic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:85 +msgid "Syriac" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:89 +msgid "Arabic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:93 +msgid "Thaana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:97 +msgid "NKo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:101 +msgid "Samaritan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:105 +msgid "Mandaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:109 +msgid "Syriac Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:113 +msgid "Arabic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:117 +msgid "Devanagari" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:121 +msgid "Bengali" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:125 +msgid "Gurmukhi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:129 +msgid "Gujarati" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:133 +msgid "Oriya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:137 +msgid "Tamil" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:141 +msgid "Telugu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:145 +msgid "Kannada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:149 +msgid "Malayalam" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:153 +msgid "Sinhala" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:157 +msgid "Thai" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:161 +msgid "Lao" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:165 +msgid "Tibetan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:169 +msgid "Myanmar" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:173 +msgid "Georgian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:177 +msgid "Hangul Jamo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:181 +msgid "Ethiopic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:185 +msgid "Ethiopic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:189 +msgid "Cherokee" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:193 +msgid "Unified Canadian Aboriginal Syllabics" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:197 +msgid "Ogham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:201 +msgid "Runic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:205 +msgid "Tagalog" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:209 +msgid "Hanunoo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:213 +msgid "Buhid" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:217 +msgid "Tagbanwa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:221 +msgid "Khmer" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:225 +msgid "Mongolian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:229 +msgid "Unified Canadian Aboriginal Syllabics Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:233 +msgid "Limbu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:237 +msgid "Tai Le" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:241 +msgid "New Tai Lue" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:245 +msgid "Khmer Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:249 +msgid "Buginese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:253 +msgid "Tai Tham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:257 +msgid "Combining Diacritical Marks Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:261 +msgid "Balinese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:265 +msgid "Sundanese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:269 +msgid "Batak" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:273 +msgid "Lepcha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:277 +msgid "Ol Chiki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:281 +msgid "Cyrillic Extended-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:285 +msgid "Sundanese Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:289 +msgid "Vedic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:293 +msgid "Phonetic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:297 +msgid "Phonetic Extensions Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:301 +msgid "Combining Diacritical Marks Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:305 +msgid "Latin Extended Additional" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:309 +msgid "Greek Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:313 +msgid "General Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:317 +msgid "Superscripts and Subscripts" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:321 +msgid "Currency Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:325 +msgid "Combining Diacritical Marks for Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:329 +msgid "Letterlike Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:333 +msgid "Number Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:337 +msgid "Arrows" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:341 +msgid "Mathematical Operators" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:345 +msgid "Miscellaneous Technical" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:349 +msgid "Control Pictures" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:353 +msgid "Optical Character Recognition" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:357 +msgid "Enclosed Alphanumerics" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:361 +msgid "Box Drawing" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:365 +msgid "Block Elements" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:369 +msgid "Geometric Shapes" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:373 +msgid "Miscellaneous Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:377 +msgid "Dingbats" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:381 +msgid "Miscellaneous Mathematical Symbols-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:385 +msgid "Supplemental Arrows-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:389 +msgid "Braille Patterns" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:393 +msgid "Supplemental Arrows-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:397 +msgid "Miscellaneous Mathematical Symbols-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:401 +msgid "Supplemental Mathematical Operators" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:405 +msgid "Miscellaneous Symbols and Arrows" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:409 +msgid "Glagolitic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:413 +msgid "Latin Extended-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:417 +msgid "Coptic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:421 +msgid "Georgian Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:425 +msgid "Tifinagh" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:429 +msgid "Ethiopic Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:433 +msgid "Cyrillic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:437 +msgid "Supplemental Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:441 +msgid "CJK Radicals Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:445 +msgid "Kangxi Radicals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:449 +msgid "Ideographic Description Characters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:453 +msgid "CJK Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:457 +msgid "Hiragana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:461 +msgid "Katakana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:465 +msgid "Bopomofo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:469 +msgid "Hangul Compatibility Jamo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:473 +msgid "Kanbun" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:477 +msgid "Bopomofo Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:481 +msgid "CJK Strokes" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:485 +msgid "Katakana Phonetic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:489 +msgid "Enclosed CJK Letters and Months" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:493 +msgid "CJK Compatibility" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:497 +msgid "CJK Unified Ideographs Extension A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:501 +msgid "Yijing Hexagram Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:505 +msgid "CJK Unified Ideographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:509 +msgid "Yi Syllables" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:513 +msgid "Yi Radicals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:517 +msgid "Lisu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:521 +msgid "Vai" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:525 +msgid "Cyrillic Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:529 +msgid "Bamum" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:533 +msgid "Modifier Tone Letters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:537 +msgid "Latin Extended-D" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:541 +msgid "Syloti Nagri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:545 +msgid "Common Indic Number Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:549 +msgid "Phags-pa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:553 +msgid "Saurashtra" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:557 +msgid "Devanagari Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:561 +msgid "Kayah Li" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:565 +msgid "Rejang" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:569 +msgid "Hangul Jamo Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:573 +msgid "Javanese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:577 +msgid "Myanmar Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:581 +msgid "Cham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:585 +msgid "Myanmar Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:589 +msgid "Tai Viet" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:593 +msgid "Meetei Mayek Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:597 +msgid "Ethiopic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:601 +msgid "Latin Extended-E" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:605 +msgid "Cherokee Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:609 +msgid "Meetei Mayek" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:613 +msgid "Hangul Syllables" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:617 +msgid "Hangul Jamo Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:621 +msgid "High Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:625 +msgid "High Private Use Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:629 +msgid "Low Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:633 +msgid "Private Use Area" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:637 +msgid "CJK Compatibility Ideographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:641 +msgid "Alphabetic Presentation Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:645 +msgid "Arabic Presentation Forms-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:649 +msgid "Variation Selectors" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:653 +msgid "Vertical Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:657 +msgid "Combining Half Marks" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:661 +msgid "CJK Compatibility Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:665 +msgid "Small Form Variants" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:669 +msgid "Arabic Presentation Forms-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:673 +msgid "Halfwidth and Fullwidth Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:677 +msgid "Specials" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:681 +msgid "Linear B Syllabary" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:685 +msgid "Linear B Ideograms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:689 +msgid "Aegean Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:693 +msgid "Ancient Greek Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:697 +msgid "Ancient Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:701 +msgid "Phaistos Disc" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:705 +msgid "Lycian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:709 +msgid "Carian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:713 +msgid "Coptic Epact Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:717 +msgid "Old Italic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:721 +msgid "Gothic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:725 +msgid "Old Permic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:729 +msgid "Ugaritic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:733 +msgid "Old Persian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:737 +msgid "Deseret" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:741 +msgid "Shavian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:745 +msgid "Osmanya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:749 +msgid "Osage" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:753 +msgid "Elbasan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:757 +msgid "Caucasian Albanian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:761 +msgid "Linear A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:765 +msgid "Cypriot Syllabary" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:769 +msgid "Imperial Aramaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:773 +msgid "Palmyrene" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:777 +msgid "Nabataean" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:781 +msgid "Hatran" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:785 +msgid "Phoenician" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:789 +msgid "Lydian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:793 +msgid "Meroitic Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:797 +msgid "Meroitic Cursive" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:801 +msgid "Kharoshthi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:805 +msgid "Old South Arabian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:809 +msgid "Old North Arabian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:813 +msgid "Manichaean" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:817 +msgid "Avestan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:821 +msgid "Inscriptional Parthian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:825 +msgid "Inscriptional Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:829 +msgid "Psalter Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:833 +msgid "Old Turkic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:837 +msgid "Old Hungarian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:841 +msgid "Rumi Numeral Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:845 +msgid "Brahmi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:849 +msgid "Kaithi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:853 +msgid "Sora Sompeng" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:857 +msgid "Chakma" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:861 +msgid "Mahajani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:865 +msgid "Sharada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:869 +msgid "Sinhala Archaic Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:873 +msgid "Khojki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:877 +msgid "Multani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:881 +msgid "Khudawadi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:885 +msgid "Grantha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:889 +msgid "Newa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:893 +msgid "Tirhuta" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:897 +msgid "Siddham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:901 +msgid "Modi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:905 +msgid "Mongolian Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:909 +msgid "Takri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:913 +msgid "Ahom" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:917 +msgid "Warang Citi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:921 +msgid "Zanabazar Square" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:925 +msgid "Soyombo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:929 +msgid "Pau Cin Hau" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:933 +msgid "Bhaiksuki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:937 +msgid "Marchen" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:941 +msgid "Masaram Gondi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:945 +msgid "Cuneiform" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:949 +msgid "Cuneiform Numbers and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:953 +msgid "Early Dynastic Cuneiform" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:957 +msgid "Egyptian Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:961 +msgid "Anatolian Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:965 +msgid "Bamum Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:969 +msgid "Mro" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:973 +msgid "Bassa Vah" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:977 +msgid "Pahawh Hmong" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:981 +msgid "Miao" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:985 +msgid "Ideographic Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:989 +msgid "Tangut" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:993 +msgid "Tangut Components" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:997 +msgid "Kana Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1001 +msgid "Kana Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1005 +msgid "Nushu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1009 +msgid "Duployan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1013 +msgid "Shorthand Format Controls" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1017 +msgid "Byzantine Musical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1021 +msgid "Musical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1025 +msgid "Ancient Greek Musical Notation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1029 +msgid "Tai Xuan Jing Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1033 +msgid "Counting Rod Numerals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1037 +msgid "Mathematical Alphanumeric Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1041 +msgid "Sutton SignWriting" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1045 +msgid "Glagolitic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1049 +msgid "Mende Kikakui" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1053 +msgid "Adlam" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1057 +msgid "Arabic Mathematical Alphabetic Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1061 +msgid "Mahjong Tiles" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1065 +msgid "Domino Tiles" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1069 +msgid "Playing Cards" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1073 +msgid "Enclosed Alphanumeric Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1077 +msgid "Enclosed Ideographic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1081 +msgid "Miscellaneous Symbols and Pictographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1085 +msgid "Emoticons" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1089 +msgid "Ornamental Dingbats" msgstr "" -"অনুগ্রহ করে কোনো কি (অথবা কি সংকলন) টিপুন।\n" -"কি মুক্ত করা হলে এই ডায়লগ বক্সটি বন্ধ করা হবে।" -#: ../setup/keyboardshortcut.py:233 -msgid "Please press a key (or a key combination)" -msgstr "অনুগ্রহ করে একটি কি (অথবা কি সংকলন) টিপুন" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1093 +msgid "Transport and Map Symbols" +msgstr "" -#: ../setup/enginecombobox.py:120 -msgid "Select an input method" -msgstr "একটি ইনপুট পদ্ধতি নির্বাচন করুন" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1097 +msgid "Alchemical Symbols" +msgstr "" -#. create im name & icon column -#: ../setup/enginetreeview.py:64 ../setup/setup.ui.h:33 -msgid "Input Method" -msgstr "ইনপুট পদ্ধতি" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1101 +msgid "Geometric Shapes Extended" +msgstr "" -#: ../setup/enginetreeview.py:92 -msgid "Kbd" -msgstr "Kbd" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1105 +msgid "Supplemental Arrows-C" +msgstr "" -#: ../setup/ibus-setup.desktop.in.h:1 ../setup/setup.ui.h:32 -msgid "IBus Preferences" -msgstr "IBus সংক্রান্ত পছন্দ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1109 +msgid "Supplemental Symbols and Pictographs" +msgstr "" -#: ../setup/ibus-setup.desktop.in.h:2 -msgid "Set IBus Preferences" -msgstr "IBus সংক্রান্ত পছন্দ নির্ধারণ করুন" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1113 +msgid "CJK Unified Ideographs Extension B" +msgstr "" -#: ../data/ibus.schemas.in.h:1 -msgid "Auto hide" -msgstr "স্বয়ংক্রিয়ভাবে আড়াল করা হবে" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1117 +msgid "CJK Unified Ideographs Extension C" +msgstr "" -#: ../data/ibus.schemas.in.h:2 -msgid "Custom font" -msgstr "স্বনির্ধারিত ফন্ট" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1121 +msgid "CJK Unified Ideographs Extension D" +msgstr "" -#: ../data/ibus.schemas.in.h:3 -msgid "Custom font name for language panel" -msgstr "ভাষার প্যানেলের জন্য ব্যবহারযোগ্য স্বনির্ধারিত ফন্টের নাম" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1125 +msgid "CJK Unified Ideographs Extension E" +msgstr "" -#: ../data/ibus.schemas.in.h:4 -msgid "Embed Preedit Text" -msgstr "প্রি-এডিট টেক্সট সন্নিবেশ করা হবে" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1129 +msgid "CJK Unified Ideographs Extension F" +msgstr "" -#: ../data/ibus.schemas.in.h:5 -msgid "Embed Preedit Text in Application Window" -msgstr "অ্যাপ্লিকেশন উইন্ডোর মধ্যে প্রি-এডিট টেক্সট সন্নিবেশ করা হবে" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1133 +msgid "CJK Compatibility Ideographs Supplement" +msgstr "" -#: ../data/ibus.schemas.in.h:6 -msgid "Enable input method by default" -msgstr "ডিফল্ট অবস্থায় ইনপুট পদ্ধতি সক্রিয় করা হবে" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1137 +msgid "Tags" +msgstr "" -#: ../data/ibus.schemas.in.h:7 -msgid "Enable input method by default when the application gets input focus" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1141 +msgid "Variation Selectors Supplement" msgstr "" -"ইনপুট প্রাপ্ত করার উদ্দেশ্যে অ্যাপ্লিকেশনে ফোকাস করা হলে, ডিফল্ট রূপে ইনপুট পদ্ধতি " -"সক্রিয় করা হবে" -#: ../data/ibus.schemas.in.h:8 -msgid "Language panel position" -msgstr "ভাষার প্যানেলের অবস্থান" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1145 +msgid "Supplementary Private Use Area-A" +msgstr "" -#: ../data/ibus.schemas.in.h:9 -msgid "Next engine shortcut keys" -msgstr "পরবর্তী ইঞ্জিনের জন্য শর্টকাট-কি" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1149 +msgid "Supplementary Private Use Area-B" +msgstr "" -#: ../data/ibus.schemas.in.h:10 -msgid "Orientation of lookup table" -msgstr "লুক-আপ টেবিলের দিশা" +#: ../tools/main.vala:54 +msgid "List engine name only" +msgstr "শুধুমাত্র ইঞ্জিনের নামের তালিকা প্রদর্শন করা হবে" -#: ../data/ibus.schemas.in.h:11 -msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" -msgstr "লুক-আপ টেবিলের দিশা। 0 (০) = অনুভুমিক, 1 (১) = উল্লম্ব" +#: ../tools/main.vala:70 ../tools/main.vala:195 ../tools/main.vala:205 +msgid "Can't connect to IBus.\n" +msgstr "IBus-র সাথে সংযোগ করতে ব্যর্থ।\n" -#: ../data/ibus.schemas.in.h:12 -msgid "Preload engines" -msgstr "ইঞ্জিন পূর্বে লোড করা হবে" +#: ../tools/main.vala:96 +#, c-format +msgid "language: %s\n" +msgstr "ভাষা: %s\n" -#: ../data/ibus.schemas.in.h:13 -msgid "Preload engines during ibus starts up" -msgstr "ibus আরম্ভের সময় ইঞ্জিনগুলি পূর্বে লোড করা হবে" +#: ../tools/main.vala:164 +msgid "No engine is set.\n" +msgstr "কোনো ইঞ্জিন নির্ধারিত হয়নি।\n" -#: ../data/ibus.schemas.in.h:14 -msgid "Prev engine shortcut keys" -msgstr "পূর্ববর্তী ইঞ্জিনের শর্টকাট-কি" +#: ../tools/main.vala:172 +msgid "Set global engine failed.\n" +msgstr "গ্লোবাল ইঞ্জিন নির্ধারণ করতে ব্যর্থ।\n" -#: ../data/ibus.schemas.in.h:15 ../setup/setup.ui.h:42 -msgid "Share the same input method among all applications" -msgstr "সকল অ্যাপ্লিকেশনের মধ্যে একই ইনপুট পদ্ধতি ব্যবহার করা হবে" +#: ../tools/main.vala:177 +msgid "Get global engine failed.\n" +msgstr "গ্লোবাল ইঞ্জিন প্রাপ্ত করতে ব্যর্থ।\n" -#: ../data/ibus.schemas.in.h:16 ../setup/setup.ui.h:43 -msgid "Show icon on system tray" -msgstr "সিস্টেম ট্রের মধ্যে আইকন প্রদর্শন করা হবে" +#: ../tools/main.vala:220 +msgid "Read the system registry cache." +msgstr "সিস্টেম রেজিস্ট্রি ক্যাশ পড়ুন।" -#: ../data/ibus.schemas.in.h:17 -msgid "Show input method name" -msgstr "ইনপুট পদ্ধতির নাম প্রদর্শন করা হবে" +#: ../tools/main.vala:222 +msgid "Read the registry cache FILE." +msgstr "রেজিস্ট্রি ক্যাশ FILE পড়ুন।" -#: ../data/ibus.schemas.in.h:18 ../setup/setup.ui.h:45 -msgid "Show input method name on language bar" -msgstr "ভাষার বারের মধ্যে ইনপুট পদ্ধতির নাম প্রদর্শন করা হবে" +#: ../tools/main.vala:240 ../tools/main.vala:245 +msgid "The registry cache is invalid.\n" +msgstr "রেজিস্ট্রি ক্যাশ অবৈধ।\n" -#: ../data/ibus.schemas.in.h:19 -msgid "" -"The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = " -"Always show" -msgstr "" -"ভাষা প্রদর্শনের প্যানেলের আচরণ। 0 (০) = মেনুর মধ্যে সন্নিবেশ করা হবে, 1 (১) = " -"স্বয়ংক্রিয়ভাবে আড়াল করা হবে, 2 (২) = সর্বদা প্রদর্শন করা হবে" +#: ../tools/main.vala:260 +msgid "Write the system registry cache." +msgstr "সিস্টেম রেজিস্ট্রি ক্যাশ লিখুন।" -#: ../data/ibus.schemas.in.h:20 -msgid "" -"The position of the language panel. 0 = Top left corner, 1 = Top right " -"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" -msgstr "" -"ভাষার প্যানেলের অবস্থান। 0 = উপরে বাঁদিকের কোণায়, 1 = উপরে ডানদিকের কোণায়, 2 = " -"নীচে বাঁদিকের কোণায়, 3 = নীচে ডানদিকের কোণায়, 4 = স্বনির্ধারিত" +#: ../tools/main.vala:262 +msgid "Write the registry cache FILE." +msgstr "রেজিস্ট্রি ক্যাশ FILE লিখুন।" -#: ../data/ibus.schemas.in.h:21 -msgid "The shortcut keys for switching to the next input method in the list" -msgstr "তালিকায় উপস্থিত পরবর্তী ইনপুট পদ্ধতিতে পরিবর্তনের জন্য প্রযোজ্য শর্ট-কাট কি" +#: ../tools/main.vala:314 +msgid "Resetting…" +msgstr "পুনঃসেট…" -#: ../data/ibus.schemas.in.h:22 -msgid "The shortcut keys for switching to the previous input method" -msgstr "তালিকায় উপস্থিত পূর্ববর্তী ইনপুট পদ্ধতিতে পরিবর্তনের জন্য প্রযোজ্য শর্ট-কাট কি" +#: ../tools/main.vala:328 +msgid "Done" +msgstr "সম্পন্ন" -#: ../data/ibus.schemas.in.h:23 ../setup/setup.ui.h:51 -msgid "The shortcut keys for turning input method on or off" -msgstr "ইনপুট পদ্ধতি খোলা ও বন্ধ করার জন্য প্রয়োজনীয় শর্ট-কাট কি নির্ধারণ করুন" +#: ../tools/main.vala:373 +msgid "Set or get engine" +msgstr "ইঞ্জিন সেট করুন বা পান" -#: ../data/ibus.schemas.in.h:24 -msgid "Trigger shortcut keys" -msgstr "ট্রিগারের শর্টকাট-কি" +#: ../tools/main.vala:374 +msgid "Exit ibus-daemon" +msgstr "ibus-daemon থেকে প্রস্থান করুন" -#: ../data/ibus.schemas.in.h:25 -msgid "Use custom font" -msgstr "স্বনির্ধারিত ফন্ট প্রয়োগ করুন" +#: ../tools/main.vala:375 +msgid "Show available engines" +msgstr "উপলব্ধ ইঞ্জিনগুলি দেখান" -#: ../data/ibus.schemas.in.h:26 -msgid "Use custom font name for language panel" -msgstr "ভাষার প্যানেলের জন্য স্বনির্ধারিত ফন্টের নাম ব্যবহার করা হবে" +#: ../tools/main.vala:376 +msgid "(Not implemented)" +msgstr "(বাস্তবায়িত নয়)" -#: ../data/ibus.schemas.in.h:27 -msgid "Use global input method" -msgstr "সার্বজনীন ইনপুট পদ্ধতি " +#: ../tools/main.vala:377 +msgid "Restart ibus-daemon" +msgstr "ibus-daemon বন্ধ করে অাবার চালু করুন" -#: ../data/ibus.schemas.in.h:28 ../setup/setup.ui.h:55 -msgid "Use system keyboard (XKB) layout" -msgstr "সিস্টেম কি-বোর্ড (XKB) বিন্যাস প্রয়োগ করা হবে" +#: ../tools/main.vala:378 +msgid "Show version" +msgstr "সংস্করণ দেখান" -#: ../data/ibus.schemas.in.h:29 ../setup/setup.ui.h:56 -msgid "Use system keyboard layout" -msgstr "সিস্টেম কি-বোর্ড বিন্যাস প্রয়োগ করা হবে" +#: ../tools/main.vala:379 +msgid "Show the content of registry cache" +msgstr "রেজিস্ট্রি ক্যাশের বিষয়বস্তু দেখান" -#: ../setup/setup.ui.h:1 -msgid "..." -msgstr "..." +#: ../tools/main.vala:380 +msgid "Create registry cache" +msgstr "রেজিস্ট্রি ক্যাশ তৈরি করুন" -#: ../setup/setup.ui.h:2 -msgid "Font and Style" -msgstr "ফন্ট ও বিন্যাস" +#: ../tools/main.vala:381 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "ibus-daemon এর D-Bus ঠিকানা প্রিন্ট করুন" -#: ../setup/setup.ui.h:3 -msgid "Global input method settings" -msgstr "ইনপুট পদ্ধতির সার্বজনীন বৈশিষ্ট্য" +#: ../tools/main.vala:382 +msgid "Show the configuration values" +msgstr "কনফিগারেশন মানগুলি দেখান" -#: ../setup/setup.ui.h:4 -msgid "Keyboard Layout" -msgstr "কি-বোর্ডের বিন্যাস" +#: ../tools/main.vala:383 +msgid "Reset the configuration values" +msgstr "কনফিগারেশন মানগুলি পুনঃসেট করুন" -#: ../setup/setup.ui.h:5 -msgid "Keyboard Shortcuts" -msgstr "কি-বোর্ড শর্ট-কাট" +#: ../tools/main.vala:385 +msgid "Save emoji on dialog to clipboard " +msgstr "" -#: ../setup/setup.ui.h:6 -msgid "Startup" -msgstr "প্রারম্ভ" +#: ../tools/main.vala:387 +msgid "Show this information" +msgstr "এই তথ্য দেখান" -#: ../setup/setup.ui.h:7 -msgid "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" +#: ../tools/main.vala:393 +#, c-format +msgid "Usage: %s COMMAND [OPTION...]\n" "\n" +msgstr "ব্যবহারপ্রণালী: %s COMMAND [OPTION...]\n" "\n" + +#: ../tools/main.vala:394 +msgid "Commands:\n" +msgstr "কমান্ড:\n" + +#: ../tools/main.vala:423 +#, c-format +msgid "%s is unknown command!\n" +msgstr "%s একটি অজানা কমান্ড!\n" + +#: ../ui/gtk3/emojier.vala:245 +msgid "Show emoji variants" msgstr "" -"IBus\n" -"বুদ্ধিবিশিষ্ট ইনপুট বাস\n" -"হোম-পেজ: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" -#: ../setup/setup.ui.h:14 -msgid "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." +#: ../ui/gtk3/emojier.vala:250 +msgid "Menu" msgstr "" -"তালিকার শীর্ষে উপস্থিত ইনপুট পদ্ধতিটি ডিফল্ট পদ্ধতি রূপে ধার্য করা হবে।\n" -"ডিফল্ট পদ্ধতি পরিবর্তনের জন্য উপর/নীচে চিহ্নকারী বাটনগুলি প্রয়োগ করা যাবে।" -#: ../setup/setup.ui.h:17 -msgid "Add the selected input method into the enabled input methods" -msgstr "নির্বাচিত ইনপুট পদ্ধতিটি, সক্রিয় ইনপুট পদ্ধতির তালিকা যোগ করা হবে" +#: ../ui/gtk3/emojier.vala:273 +msgid "Favorites" +msgstr "" -#: ../setup/setup.ui.h:18 -msgid "Advanced" -msgstr "উন্নত" +#: ../ui/gtk3/emojier.vala:274 +msgid "Others" +msgstr "" -#: ../setup/setup.ui.h:19 -msgid "Always" -msgstr "সর্বদা" +#: ../ui/gtk3/emojier.vala:275 +msgid "Open Unicode choice" +msgstr "" -#: ../setup/setup.ui.h:20 -msgid "Bottom left corner" -msgstr "নীচে বাঁদিকের কোণায়" +#: ../ui/gtk3/emojier.vala:445 ../ui/gtk3/emojier.vala:826 +#: ../ui/gtk3/panel.vala:1149 +msgid "Emoji Choice" +msgstr "" -#: ../setup/setup.ui.h:21 -msgid "Bottom right corner" -msgstr "নীচে ডানদিকের কোণায়" +#: ../ui/gtk3/emojier.vala:451 +msgid "Type annotation or choose emoji" +msgstr "" -#: ../setup/setup.ui.h:22 -msgid "Candidates orientation:" -msgstr "নির্বাচিত বস্তুর দিশা:" +#: ../ui/gtk3/emojier.vala:948 +msgid "Unicode Choice" +msgstr "" -#: ../setup/setup.ui.h:23 -msgid "Custom" -msgstr "স্বনির্ধারিত" +#: ../ui/gtk3/emojier.vala:950 +msgid "Bring back emoji choice" +msgstr "" -#: ../setup/setup.ui.h:24 -msgid "Disable:" +#: ../ui/gtk3/emojier.vala:1016 +msgid "Loading a Unicode dictionary:" msgstr "" -#: ../setup/setup.ui.h:25 -msgid "Embed preedit text in application window" -msgstr "অ্যাপ্লিকেশনের উইন্ডোর মধ্যে প্রি-এডিট টেক্সট সন্নিবেশ করা হবে" +#: ../ui/gtk3/emojier.vala:1071 +msgid "Page Down" +msgstr "" -#: ../setup/setup.ui.h:26 -msgid "Embed the preedit text of input method in the application window" -msgstr "অ্যাপ্লিকেশনের উইন্ডোর মধ্যে ইনপুট পদ্ধতির প্রি-এডিট টেক্সট সন্নিবেশ করা হবে" +#: ../ui/gtk3/emojier.vala:1082 +msgid "Page Up" +msgstr "" -#: ../setup/setup.ui.h:27 -msgid "Embedded in menu" -msgstr "মেনুর মধ্যে সন্নিবিষ্ট" +#: ../ui/gtk3/emojier.vala:1236 +#, c-format +msgid "Code point: %s" +msgstr "" -#: ../setup/setup.ui.h:28 -msgid "Enable or disable:" -msgstr "সক্রিয় অথা নিষ্ক্রিয় করুন:" +#: ../ui/gtk3/emojier.vala:1242 +msgid "Has emoji variants" +msgstr "" -#: ../setup/setup.ui.h:29 -msgid "Enable:" +#: ../ui/gtk3/emojier.vala:1377 ../ui/gtk3/emojier.vala:1391 +#, c-format +msgid "Description: %s" msgstr "" -#: ../setup/setup.ui.h:30 -msgid "General" -msgstr "সাধারণ" +#: ../ui/gtk3/emojier.vala:1377 +msgid "None" +msgstr "" -#: ../setup/setup.ui.h:31 -msgid "Horizontal" -msgstr "অনুভূমিক" +#: ../ui/gtk3/emojier.vala:1402 +#, c-format +msgid "Annotations: %s" +msgstr "" -#: ../setup/setup.ui.h:34 -msgid "Language panel position:" -msgstr "ভাষার প্যানেলের অবস্থান:" +#: ../ui/gtk3/emojier.vala:1428 +#, c-format +msgid "Name: %s" +msgstr "" -#: ../setup/setup.ui.h:35 -msgid "Move down the selected input method in the enabled input methods" -msgstr "নির্বাচিত ইনপুট পদ্ধতিটি, সক্রিয় ইনপুট পদ্ধতির তালিকায় নীচে স্থানান্তর করা হবে" +#: ../ui/gtk3/emojier.vala:1436 +#, c-format +msgid "Alias: %s" +msgstr "" -#: ../setup/setup.ui.h:36 -msgid "Move up the selected input method in the enabled input methods list" -msgstr "নির্বাচিত ইনপুট পদ্ধতিটি, সক্রিয় ইনপুট পদ্ধতির তালিকায় উপরে স্থানান্তর করা হবে" +#: ../ui/gtk3/emojierapp.vala:56 +msgid "Canceled to choose an emoji." +msgstr "" -#: ../setup/setup.ui.h:37 -msgid "Next input method:" -msgstr "পরবর্তী ইনপুট পদ্ধতি:" +#: ../ui/gtk3/emojierapp.vala:77 +msgid "Copied an emoji to your clipboard." +msgstr "" -#: ../setup/setup.ui.h:38 -msgid "Previous input method:" -msgstr "পূর্ববর্তী ইনপুট পদ্ধতি:" +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ../ui/gtk3/emojierapp.vala:97 +msgid "\"FONT\" for emoji characters on emoji dialog" +msgstr "" -#: ../setup/setup.ui.h:39 -msgid "Remove the selected input method from the enabled input methods" -msgstr "সক্রিয় ইনপুট পদ্ধতির তালিকা থেকে নির্বাচিত ইনপুট পদ্ধতিটি মুছে ফেলা হবে" +#: ../ui/gtk3/emojierapp.vala:98 +msgid "FONT" +msgstr "" -#: ../setup/setup.ui.h:40 -msgid "Set the behavior of ibus how to show or hide language bar" -msgstr "ভাষার বার প্রদর্শন ও আড়াল করার উদ্দেশ্যে ibus-র আচরণ নির্ধারণ করুন" +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ../ui/gtk3/emojierapp.vala:103 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" +msgstr "" -#: ../setup/setup.ui.h:41 -msgid "Set the orientation of candidates in lookup table" -msgstr "লুক-আপ টেবিলের মধ্যে প্রযোজ্য বিকল্পগুলির দিশা নির্ধারণ করুন" +#: ../ui/gtk3/emojierapp.vala:104 +msgid "LANG" +msgstr "" -#: ../setup/setup.ui.h:44 -msgid "Show information of the selected input method" -msgstr "নির্বাচিত ইনপুট পদ্ধতি সংক্রান্ত তথ্য প্রদর্শন করা হবে" +#: ../ui/gtk3/emojierapp.vala:106 +msgid "Emoji annotations can be match partially" +msgstr "" -#: ../setup/setup.ui.h:46 -msgid "Show input method's name on language bar when check the checkbox" -msgstr "চেকবক্স নির্বাচিত হলে, ভাষার বারের মধ্যে ইনপুট পদ্ধতির নাম প্রদর্শন করা হবে" +#: ../ui/gtk3/emojierapp.vala:110 +msgid "Match with the length of the specified integer" +msgstr "" -#: ../setup/setup.ui.h:47 -msgid "Show language panel:" -msgstr "ভাষার প্যানেল প্রদর্শন করা হবে:" +#: ../ui/gtk3/emojierapp.vala:114 +msgid "Match with the condition of the specified integer" +msgstr "" -#: ../setup/setup.ui.h:48 -msgid "Start ibus on login" -msgstr "লগ-ইন করার সময় ibus আরম্ভ করা হবে" +#: ../ui/gtk3/panel.vala:282 ../ui/gtk3/panel.vala:313 +msgid "IBus Panel" +msgstr "" -#: ../setup/setup.ui.h:49 -msgid "The shortcut keys for switching to next input method in the list" -msgstr "তালিকায় উপস্থিত পরবর্তী ইনপুট পদ্ধতিতে পরিবর্তনের জন্য প্রযোজ্য শর্ট-কাট কি" +#: ../ui/gtk3/panel.vala:710 +msgid "IBus Update" +msgstr "IBus অাপডেট" -#: ../setup/setup.ui.h:50 -msgid "The shortcut keys for switching to previous input method in the list" -msgstr "তালিকায় উপস্থিত পূর্ববর্তী ইনপুট পদ্ধতিতে পরিবর্তনের জন্য প্রযোজ্য শর্ট-কাট কি" +#: ../ui/gtk3/panel.vala:711 ../ui/gtk3/panel.vala:722 +msgid "Super+space is now the default hotkey." +msgstr "Super+space হল এখন ডিফল্ট হট-কী।" -#: ../setup/setup.ui.h:52 -msgid "Top left corner" -msgstr "উপরে বাঁদিকের কোণায়" +#: ../ui/gtk3/panel.vala:1121 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "Linux/Unix-র সাথে ব্যবহারযোগ্য বুদ্ধিবিশিষ্ট ইনপুট বাস হল IBus" -#: ../setup/setup.ui.h:53 -msgid "Top right corner" -msgstr "উপরে ডানদিকের কোণায়" +#: ../ui/gtk3/panel.vala:1125 +msgid "translator-credits" +msgstr "রুণা ভট্টাচার্য্য (runab@fedoraproject.org)" -#: ../setup/setup.ui.h:54 -msgid "Use custom font:" -msgstr "স্বনির্ধারিত ফন্ট প্রয়োগ করুন:" +#: ../ui/gtk3/panel.vala:1144 +msgid "Preferences" +msgstr "পছন্দ" -#: ../setup/setup.ui.h:57 -msgid "Vertical" -msgstr "উল্লম্ব" +#: ../ui/gtk3/panel.vala:1181 +msgid "Restart" +msgstr "পুনরারম্ভ" -#: ../setup/setup.ui.h:58 -msgid "When active" -msgstr "সক্রিয় অবস্থায়" +#: ../ui/gtk3/panel.vala:1185 +msgid "Quit" +msgstr "প্রস্থান" + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ../ui/gtk3/propertypanel.vala:368 ../ui/gtk3/propertypanel.vala:376 +msgid "default:LTR" +msgstr "default:LTR" diff --git a/po/ca.po b/po/ca.po index 68a0d3047..d4eedbea2 100644 --- a/po/ca.po +++ b/po/ca.po @@ -1,568 +1,3357 @@ -# translation of ibus.pot to Catalan # Catalan translation of ibus. -# Copyright (C) 2008 Peng Huang +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2022 Takao Fujiwara # This file is distributed under the same license as the ibus package. -# +# # Translators: -# Oscar Osta , 2011. -# Oscar Osta Pueyo , 2009. +# Bernabé Borrero , 2012 +# Oscar Osta , 2011 +# Oscar Osta Pueyo , 2009 +# Robert Antoni Buj i Gelonch, 2014 +# Robert Antoni Buj Gelonch , 2015. #zanata +# fujiwara , 2015. #zanata +# Robert Antoni Buj Gelonch , 2017. #zanata +# Robert Antoni Buj Gelonch , 2018. #zanata +# fujiwara , 2018. #zanata +# Antoni Bella Pérez , 2020. +# Jordi Mas , 2021. msgid "" msgstr "" "Project-Id-Version: IBus\n" -"Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/list\n" -"POT-Creation-Date: 2011-05-13 11:21+0900\n" -"PO-Revision-Date: 2011-05-24 07:17+0000\n" -"Last-Translator: oostap \n" -"Language-Team: Catalan \n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2020-01-08 12:40+0900\n" +"PO-Revision-Date: 2021-10-28 06:05+0000\n" +"Last-Translator: Jordi Mas \n" +"Language-Team: Catalan \n" +"Language: ca\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: ca\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.8\n" + +#. Translators: Here “Preload” is a verb +#: data/dconf/org.freedesktop.ibus.gschema.xml:11 +msgid "Preload engines" +msgstr "Precarrega els motors" + +#. Translators: Tooltip for the button “Preload Engines” +#: data/dconf/org.freedesktop.ibus.gschema.xml:13 +msgid "Preload engines during ibus starts up" +msgstr "Precarrega els motors durant l'inici de l'IBus" -#: ../bus/ibus.desktop.in.h:1 -msgid "IBus" -msgstr "IBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:17 +msgid "Engines order" +msgstr "Ordre dels motors" -#: ../bus/ibus.desktop.in.h:2 -msgid "Input Method Framework" -msgstr "Entorn de mètodes d'entrada" +#: data/dconf/org.freedesktop.ibus.gschema.xml:18 +msgid "Saved engines order in input method list" +msgstr "Ordre dels motors desats a la llista dels mètodes d'entrada" -#: ../bus/ibus.desktop.in.h:3 -msgid "Start IBus Input Method Framework" -msgstr "Inicia l'entorn de mètodes d'entrada IBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:22 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "" +"Retard en mil·lisegons de la finestra emergent per a la finestra del " +"commutador IME" -#: ../ibus/_config.py.in:40 +#: data/dconf/org.freedesktop.ibus.gschema.xml:23 msgid "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +"Set popup delay milliseconds to show IME switcher window. The default is " +"400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " +"show the window and switch prev/next engines." msgstr "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +"Estableix el retard de la finestra emergent en mil·lisegons per mostrar la " +"finestra del commutador IME. El valor predeterminat és 400. 0 = Mostra la " +"finestra immediatament. 0 < Retard en mil·lisegons. 0 > No mostra la " +"finestra ni els motors anteriors o següents." -#: ../ibus/lang.py:41 -msgid "Other" -msgstr "Altres" +#: data/dconf/org.freedesktop.ibus.gschema.xml:27 +msgid "Saved version number" +msgstr "Número de la versió desada" -#: ../ui/gtk/candidatepanel.py:264 -msgid "Previous page" -msgstr "Pàgina anterior" +#: data/dconf/org.freedesktop.ibus.gschema.xml:28 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" +"El número desat de la versió s'usarà per comprovar la diferència entre la " +"versió anterior i l'actual de l'IBus." -#: ../ui/gtk/candidatepanel.py:269 -msgid "Next page" -msgstr "Pàgina següent" +#: data/dconf/org.freedesktop.ibus.gschema.xml:32 +msgid "Latin layouts which have no ASCII" +msgstr "Les disposicions llatines no tenen ASCII" -#: ../ui/gtk/main.py:62 -msgid "" -"Some input methods have been installed, removed or updated. Please restart " -"ibus input platform." +#: data/dconf/org.freedesktop.ibus.gschema.xml:33 +msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" -"S'han instal·lat, suprimit o actualitzat alguns mètodes d'entrada. Reinicieu" -" la plataforma d'entrada IBus." +"La disposició dels EUA és un annex de les disposicions llatines. Es pot " +"ometre la variant." -#: ../ui/gtk/main.py:66 -msgid "Restart Now" -msgstr "Reinicia ara" +#: data/dconf/org.freedesktop.ibus.gschema.xml:37 +msgid "Use xmodmap" +msgstr "Usa xmodmap" -#: ../ui/gtk/main.py:67 -msgid "Later" -msgstr "Després" +#: data/dconf/org.freedesktop.ibus.gschema.xml:38 +msgid "" +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." +msgstr "" +"Executa xmodmap si existeix .xmodmap o .Xmodmap quan es commutin els motors " +"de l'IBus." -#: ../ui/gtk/panel.py:116 -msgid "IBus Panel" -msgstr "Quadre de l'IBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 +msgid "Use system keyboard layout" +msgstr "Usa la disposició de teclat del sistema" -#: ../ui/gtk/panel.py:122 -msgid "IBus input method framework" -msgstr "Entorn de mètodes d'entrada IBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 +msgid "Use system keyboard (XKB) layout" +msgstr "Usa la disposició de teclat del sistema (XKB)" -#: ../ui/gtk/panel.py:352 -msgid "Restart" -msgstr "Reinicia" +#: data/dconf/org.freedesktop.ibus.gschema.xml:47 +msgid "Embed Preedit Text" +msgstr "Incrusta el text pre-editat" -#: ../ui/gtk/panel.py:439 -msgid "Turn off input method" -msgstr "Inhabilita el mètode d'entrada" +#: data/dconf/org.freedesktop.ibus.gschema.xml:48 +msgid "Embed Preedit Text in Application Window" +msgstr "Incrusta el text pre-editat a la finestra de l'aplicació" -#: ../ui/gtk/panel.py:478 -msgid "No input window" -msgstr "Cap finestra d'entrada" +#: data/dconf/org.freedesktop.ibus.gschema.xml:52 +msgid "Use global input method" +msgstr "Usa el mètode d'entrada global" -#: ../ui/gtk/panel.py:509 -msgid "IBus is an intelligent input bus for Linux/Unix." -msgstr "L'IBus és un bus d'entrada intel·ligent per al Linux/Unix." +#: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 +msgid "Share the same input method among all applications" +msgstr "Comparteix el mateix mètode d'entrada amb totes les aplicacions" -#: ../ui/gtk/panel.py:513 -msgid "translator-credits" +#: data/dconf/org.freedesktop.ibus.gschema.xml:57 +msgid "Enable input method by default" +msgstr "Habilita el mètode d'entrada predeterminat" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:58 +msgid "Enable input method by default when the application gets input focus" msgstr "" -"Oscar Osta Pueyo , 2009\n" -"Patricia Rivera Escuder , 2009\n" -"Xavier Conde Rueda \n" -"Joan Duran " +"Habilita el mètode d'entrada predeterminat quan l'aplicació obté el focus de " +"l'entrada" -#: ../ui/gtk/languagebar.py:106 -msgid "About the input method" -msgstr "Quant al mètode d'entrada" +#: data/dconf/org.freedesktop.ibus.gschema.xml:62 +msgid "DConf preserve name prefixes" +msgstr "DConf conserva els prefixos de nom" -#: ../ui/gtk/languagebar.py:214 -msgid "Switch input method" -msgstr "Commuta el mètode d'entrada" +#: data/dconf/org.freedesktop.ibus.gschema.xml:63 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "Prefixos de tecles DConf per aturar la conversió del nom" -#: ../ui/gtk/languagebar.py:357 ../ui/gtk/engineabout.py:33 -#: ../setup/engineabout.py:33 ../setup/setup.ui.h:16 -msgid "About" -msgstr "Quant a" +#: data/dconf/org.freedesktop.ibus.gschema.xml:70 +msgid "Trigger shortcut keys" +msgstr "Drecera de teclat per a l'activador" -#: ../ui/gtk/languagebar.py:361 -msgid "About the Input Method" -msgstr "Quant al mètode d'entrada" +#: data/dconf/org.freedesktop.ibus.gschema.xml:71 +#: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 +msgid "The shortcut keys for turning input method on or off" +msgstr "La drecera de teclat per habilitar o inhabilitar el mètode d'entrada" -#: ../ui/gtk/engineabout.py:61 ../setup/engineabout.py:61 -#, python-format -msgid "Language: %s\n" -msgstr "Idioma: %s\n" +#: data/dconf/org.freedesktop.ibus.gschema.xml:75 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "Drecera de teclat de l'activador per gtk_accelerator_parse" -#: ../ui/gtk/engineabout.py:63 ../setup/engineabout.py:63 -#, python-format -msgid "Keyboard layout: %s\n" -msgstr "Disposició del teclat: %s\n" +#: data/dconf/org.freedesktop.ibus.gschema.xml:80 +msgid "Enable shortcut keys" +msgstr "Habilita les dreceres de teclat" -#: ../ui/gtk/engineabout.py:65 ../setup/engineabout.py:65 -#, python-format -msgid "Author: %s\n" -msgstr "Autor: %s\n" +#: data/dconf/org.freedesktop.ibus.gschema.xml:81 +msgid "The shortcut keys for turning input method on" +msgstr "La drecera de teclat per activar el mètode d'entrada" -#: ../ui/gtk/engineabout.py:67 ../setup/engineabout.py:67 -msgid "Description:\n" -msgstr "Descripció: \n" +#: data/dconf/org.freedesktop.ibus.gschema.xml:85 +msgid "Disable shortcut keys" +msgstr "Inhabilita les dreceres de teclat" -#: ../setup/main.py:102 -msgid "trigger" -msgstr "activador" +#: data/dconf/org.freedesktop.ibus.gschema.xml:86 +msgid "The shortcut keys for turning input method off" +msgstr "La drecera de teclat per desactivar el mètode d'entrada" -#: ../setup/main.py:113 -msgid "enable" -msgstr "habilita" +#: data/dconf/org.freedesktop.ibus.gschema.xml:90 +#: data/dconf/org.freedesktop.ibus.gschema.xml:95 +msgid "Next engine shortcut keys" +msgstr "Drecera de teclat del motor següent" -#: ../setup/main.py:124 -msgid "disable" -msgstr "inhabilita" +#: data/dconf/org.freedesktop.ibus.gschema.xml:91 +#: data/dconf/org.freedesktop.ibus.gschema.xml:96 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "" +"La drecera de teclat per commutar al següent mètode d'entrada de la llista" -#: ../setup/main.py:135 -msgid "next input method" -msgstr "mètode d'entrada següent" +#: data/dconf/org.freedesktop.ibus.gschema.xml:100 +#: data/dconf/org.freedesktop.ibus.gschema.xml:105 +msgid "Prev engine shortcut keys" +msgstr "Drecera de teclat del motor anterior" -#: ../setup/main.py:146 -msgid "previous input method" -msgstr "mètode d'entrada anterior" +#: data/dconf/org.freedesktop.ibus.gschema.xml:101 +#: data/dconf/org.freedesktop.ibus.gschema.xml:106 +msgid "The shortcut keys for switching to the previous input method" +msgstr "" +"La drecera de teclat per commutar al mètode d'entrada anterior de la llista" -#: ../setup/main.py:286 -msgid "IBus daemon is not started. Do you want to start it now?" -msgstr "No s'ha iniciat el dimoni de l'IBus. Voleu iniciar-lo ara?" +#: data/dconf/org.freedesktop.ibus.gschema.xml:112 +msgid "Auto hide" +msgstr "Oculta automàticament" -#: ../setup/main.py:301 +#: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" -"IBus has been started! If you can not use IBus, please add below lines in $HOME/.bashrc, and relogin your desktop.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" msgstr "" -"S'ha iniciat l'IBus. Si no podeu utilitzar l'IBus, afegiu les línies següents a $HOME/.bashrc, i torneu a entrar a l'escriptori.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +"El comportament de la propietat «panel». 0 = No es mostra, 1 = S'amaga " +"automàticament, 2 = Es mostra sempre" -#: ../setup/main.py:316 -#, python-format -msgid "Select keyboard shortcut for %s" -msgstr "Seleccioneu la drecera de teclat per a %s" +#: data/dconf/org.freedesktop.ibus.gschema.xml:117 +#: data/dconf/org.freedesktop.ibus.gschema.xml:121 +msgid "Language panel position" +msgstr "Posició del quadre d'idiomes" -#: ../setup/keyboardshortcut.py:52 -msgid "Keyboard shortcuts" -msgstr "Dreceres de teclat" +#: data/dconf/org.freedesktop.ibus.gschema.xml:125 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "Segueix el cursor d'entrada en el cas que sempre es mostri el quadre" -#: ../setup/keyboardshortcut.py:63 -msgid "Key code:" -msgstr "Codi de lletra:" +#: data/dconf/org.freedesktop.ibus.gschema.xml:126 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" +"Si és cert, el quadre segueix el cursor d'entrada en el cas que sempre es " +"mostri el quadre. Si és fals, el quadre es mostra en una ubicació fixa." -#: ../setup/keyboardshortcut.py:78 -msgid "Modifiers:" -msgstr "Modificadors:" +#: data/dconf/org.freedesktop.ibus.gschema.xml:130 +msgid "The milliseconds to show property panel" +msgstr "Mil·lisegons per mostrar el quadre de propietats" -#: ../setup/keyboardshortcut.py:231 +#: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" -"Please press a key (or a key combination).\n" -"The dialog will be closed when the key is released." +"The milliseconds to show property panel after focus-in or properties are " +"changed." msgstr "" -"Premeu una tecla (o una combinació de tecles).\n" -"El diàleg es tancarà quan es deixi anar la tecla." +"Els mil·lisegons per mostrar el quadre de propietats després de rebre " +"l'enfocament o quan se'n canviïn les propietats." -#: ../setup/keyboardshortcut.py:233 -msgid "Please press a key (or a key combination)" -msgstr "Premeu una tecla (o una combinació de tecles)" +#: data/dconf/org.freedesktop.ibus.gschema.xml:135 +msgid "Orientation of lookup table" +msgstr "Orientació de la taula de cerca" -#: ../setup/enginecombobox.py:120 -msgid "Select an input method" -msgstr "Seleccioneu un mètode d'entrada" +#: data/dconf/org.freedesktop.ibus.gschema.xml:136 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "Orientació de la taula de cerca. 0 = Horitzontal, 1 = Vertical" -#. create im name & icon column -#: ../setup/enginetreeview.py:64 ../setup/setup.ui.h:33 -msgid "Input Method" -msgstr "Mètode d'entrada" +#: data/dconf/org.freedesktop.ibus.gschema.xml:140 +#: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 +#: setup/setup.ui:475 +msgid "Show icon on system tray" +msgstr "Mostra la icona a la safata del sistema" -#: ../setup/enginetreeview.py:92 -msgid "Kbd" -msgstr "Kbd" +#: data/dconf/org.freedesktop.ibus.gschema.xml:145 +msgid "Show input method name" +msgstr "Mostra el nom del mètode d'entrada" -#: ../setup/ibus-setup.desktop.in.h:1 ../setup/setup.ui.h:32 -msgid "IBus Preferences" -msgstr "Preferències de l'IBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 +msgid "Show input method name on language bar" +msgstr "Mostra el nom del mètode d'entrada a la barra d'idioma" -#: ../setup/ibus-setup.desktop.in.h:2 -msgid "Set IBus Preferences" -msgstr "Estableix les preferències de l'IBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:150 +msgid "RGBA value of XKB icon" +msgstr "Valor RGBA de la icona XKB" -#: ../data/ibus.schemas.in.h:1 -msgid "Auto hide" -msgstr "Oculta automàticament" +#: data/dconf/org.freedesktop.ibus.gschema.xml:151 +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form 'rgba(r," +"g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 to 255 or " +"percentage values in the range 0% to 100%, and 'a' is a floating point value " +"in the range 0 to 1 of the alpha." +msgstr "" +"La icona XKB mostra la cadena de text de la disposició, la cadena de text es " +"renderitza amb el valor RGBA. El valor RGBA pot ser 1. un color de X11, 2. " +"un valor hexadecimal amb el format «#rrggbb» on «r», «g» i «b» són dígits " +"hexadecimals per al roig, verd i blau, 3. un color RGB amb el format «rgb(r," +"g,b)» o 4. Un color RGBA amb el format «rgba(r,g,b,a)» on «r», «g», i «b» " +"són nombres enters en l'interval de 0 a 255 o valors de percentatge en " +"l'interval de 0% a 100%, i «a» té un valor en punt flotant en l'interval de " +"0 a 1 per l'alfa." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:155 +msgid "The milliseconds to show the panel icon for a property" +msgstr "Els mil·lisegons per mostrar el quadre d'icona amb una propietat" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:156 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" +"Els mil·lisegons per mostrar el quadre d'icona des de la icona del motor, en " +"una icona de propietat, sempre que s'activin els motors, si la propietat " +"s'especifica amb el valor icon-prop-key a IBusEngineDesc. Si el valor és 0, " +"no hi ha retard i la icona de propietat es mostra automàticament." -#: ../data/ibus.schemas.in.h:2 +#: data/dconf/org.freedesktop.ibus.gschema.xml:160 +msgid "Use custom font" +msgstr "Usa un tipus de lletra personalitzat" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:161 +msgid "Use custom font name for language panel" +msgstr "Usa un tipus de lletra personalitzat per al quadre d'idiomes" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:165 +#: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "Tipus de lletra personalitzat" -#: ../data/ibus.schemas.in.h:3 +#: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "Tipus de lletra personalitzat per al quadre d'idiomes" -#: ../data/ibus.schemas.in.h:4 -msgid "Disable shortcut keys" -msgstr "Inhabilita les dreceres de teclat" +#: data/dconf/org.freedesktop.ibus.gschema.xml:173 +msgid "Unicode shortcut keys for gtk_accelerator_parse" +msgstr "Drecera de teclat d'Unicode per gtk_accelerator_parse" -#: ../data/ibus.schemas.in.h:5 -msgid "Embed Preedit Text" -msgstr "Integra el text editat prèviament" +#: data/dconf/org.freedesktop.ibus.gschema.xml:174 +msgid "The shortcut keys for turning Unicode typing on or off" +msgstr "La drecera de teclat per activar o desactivar el tecleig d'Unicode" -#: ../data/ibus.schemas.in.h:6 -msgid "Embed Preedit Text in Application Window" -msgstr "Integra el text editat prèviament en la finestra de l'aplicació" +#: data/dconf/org.freedesktop.ibus.gschema.xml:178 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "Drecera de teclat d'emojis per gtk_accelerator_parse" -#: ../data/ibus.schemas.in.h:7 -msgid "Enable input method by default" -msgstr "Habilita els mètodes d'entrada per defecte" +#: data/dconf/org.freedesktop.ibus.gschema.xml:179 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "La drecera de teclat per activar o desactivar el tecleig d'emojis" -#: ../data/ibus.schemas.in.h:8 -msgid "Enable input method by default when the application gets input focus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:184 +msgid "Custom font name for emoji characters on emoji dialog" msgstr "" -"Habilita els mètodes d'entrada per defecte quan l'aplicació obté el focus " -"d'entrada" - -#: ../data/ibus.schemas.in.h:9 -msgid "Enable shortcut keys" -msgstr "Habilita les dreceres de teclat" - -#: ../data/ibus.schemas.in.h:10 -msgid "Language panel position" -msgstr "Posició del quadre d'idiomes" +"El nom del tipus de lletra personalitzat per als caràcters emoji al diàleg " +"dels emojis" -#: ../data/ibus.schemas.in.h:11 -msgid "Next engine shortcut keys" -msgstr "Dreceres de teclat del motor següent" - -#: ../data/ibus.schemas.in.h:12 -msgid "Orientation of lookup table" -msgstr "Orientació de la taula de cerca" +#: data/dconf/org.freedesktop.ibus.gschema.xml:188 +msgid "Default language for emoji dictionary" +msgstr "Idioma predeterminat per al diccionari emoji" -#: ../data/ibus.schemas.in.h:13 -msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" -msgstr "Orientació de la taula de cerca. 0 = horitzontal, 1 = vertical" +#: data/dconf/org.freedesktop.ibus.gschema.xml:189 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict ." +msgstr "" +"Trieu l'idioma predeterminat per ls diccionaris dels emojis al diàleg " +"d'emojis. El valor $lang s'aplica a /usr/share/ibus/dicts/emoji-$lang.dict ." -#: ../data/ibus.schemas.in.h:14 -msgid "Preload engines" -msgstr "Precarrega els motors" +#: data/dconf/org.freedesktop.ibus.gschema.xml:193 +msgid "favorite emoji list on emoji dialog" +msgstr "llista d'emojis preferits al diàleg dels emojis" -#: ../data/ibus.schemas.in.h:15 -msgid "Preload engines during ibus starts up" -msgstr "Precarrega els motors durant l'inici de l'IBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:194 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "" +"Podeu visualitzar els emojis preferits a la llista d'emojis, si aquesta " +"llista té qualsevol caràcter." -#: ../data/ibus.schemas.in.h:16 -msgid "Prev engine shortcut keys" -msgstr "Dreceres de teclat del motor anterior" +#: data/dconf/org.freedesktop.ibus.gschema.xml:198 +msgid "favorite emoji annotation list on emoji dialog" +msgstr "llista de les anotacions emoji preferides al diàleg dels emojis" -#: ../data/ibus.schemas.in.h:17 ../setup/setup.ui.h:42 -msgid "Share the same input method among all applications" -msgstr "Comparteix el mateix mètode d'entrada en totes les aplicacions" +#: data/dconf/org.freedesktop.ibus.gschema.xml:199 +msgid "You can assign an annotation for a favorite emoji in this list." +msgstr "En aquesta llista podeu assignar una anotació per a un emoji preferit." -#: ../data/ibus.schemas.in.h:18 ../setup/setup.ui.h:43 -msgid "Show icon on system tray" -msgstr "Mostra la icona a la safata del sistema" +#: data/dconf/org.freedesktop.ibus.gschema.xml:203 +msgid "Whether emoji annotations can be match partially or not" +msgstr "Si les anotacions emoji poden coincidir o no parcialment" -#: ../data/ibus.schemas.in.h:19 -msgid "Show input method name" -msgstr "Mostra el nom del mètode d'entrada" +#: data/dconf/org.freedesktop.ibus.gschema.xml:204 +msgid "" +"Whether emoji annotations can be matched with a partial string instead of " +"the exact match or not." +msgstr "" +"Si les anotacions emoji poden coincidir o no amb una cadena parcial en " +"comptes de la coincidència exacta." -#: ../data/ibus.schemas.in.h:20 ../setup/setup.ui.h:45 -msgid "Show input method name on language bar" -msgstr "Mostra el nom del mètode d'entrada a la barra d'idioma" +#: data/dconf/org.freedesktop.ibus.gschema.xml:208 +msgid "Match emoji annotations with the specified length" +msgstr "Coincidència de les anotacions emoji amb la llargada especificada" -#: ../data/ibus.schemas.in.h:21 +#: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" -"The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = " -"Always show" +"Match emoji annotations partially with more than the specified number of " +"characters instead of the exact match." msgstr "" -"El comportament del quadre d'idiomes. 0 = incrustat al menú, 1 = oculta " -"automàticament, 2 = mostra sempre" +"Coincidència parcial de les anotacions emoji amb el nombre de caràcters " +"especificat en comptes de la coincidència exacta." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:213 +msgid "Choose a condition to match emoji annotations partially" +msgstr "Trieu una condició per coincidir parcialment amb les anotacions emoji" -#: ../data/ibus.schemas.in.h:22 +#: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" -"The position of the language panel. 0 = Top left corner, 1 = Top right " -"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +"Choose one of the following conditions to match emoji annotations partially: " +"0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" -"La posició del quadre d'idiomes. 0 = cantonada superior esquerra, 1 = " -"cantonada superior dreta, 2 = cantonada inferior esquerra, 3 = cantonada " -"inferior dreta, 4 = personalitzat" +"Trieu una de les condicions següents per coincidir parcialment amb les " +"anotacions emoji: 0 == Coincidència del prefix, 1 == Coincidència del sufix, " +"2 == La coincidència conté" -#: ../data/ibus.schemas.in.h:23 -msgid "The shortcut keys for switching to the next input method in the list" -msgstr "" -"Les dreceres de teclat per commutar al mètode d'entrada següent de la llista" +#: data/dconf/org.freedesktop.ibus.gschema.xml:218 +msgid "Load the emoji data at the time of startup" +msgstr "Carrega les dades emoji en el moment de l'inici" -#: ../data/ibus.schemas.in.h:24 -msgid "The shortcut keys for switching to the previous input method" +#: data/dconf/org.freedesktop.ibus.gschema.xml:219 +msgid "" +"Load the emoji data at the time of startup if true. About 10MB memory is " +"needed to load the data. Load the emoji data when open the emoji dialog at " +"the beginning if false." msgstr "" -"Les dreceres de teclat per commutar al mètode d'entrada anterior de la " -"llista" +"Si és cert, es carregaran les dades emoji al moment de l'inici. Caldran uns " +"10 MB de memòria per a carregar les dades. Si és fals, es carregaran les " +"dades emoji quan s'obri el diàleg emoji al començament." -#: ../data/ibus.schemas.in.h:25 -msgid "The shortcut keys for turning input method off" -msgstr "Les dreceres de teclat per inhabilitar el mètode d'entrada" +#: data/dconf/org.freedesktop.ibus.gschema.xml:223 +msgid "Load the Unicode data at the time of startup" +msgstr "Carrega les dades Unicode en el moment de l'inici" -#: ../data/ibus.schemas.in.h:26 -msgid "The shortcut keys for turning input method on" -msgstr "Les dreceres de teclat per habilitar el mètode d'entrada" +#: data/dconf/org.freedesktop.ibus.gschema.xml:224 +msgid "" +"Load the Unicode data at the time of startup if true. About 15MB memory is " +"needed to load the data. Load the Unicode data when open the emoji dialog at " +"the beginning if false. The Unicode data is always loaded after the emoji " +"data is loaded even if true." +msgstr "" +"Si és cert, es carregaran les dades Unicode al moment de l'inici. Caldran " +"uns 15 MB de memòria per a carregar les dades. Si és fals, es carregaran les " +"dades Unicode quan s'obri el diàleg emoji al començament." -#: ../data/ibus.schemas.in.h:27 ../setup/setup.ui.h:51 -msgid "The shortcut keys for turning input method on or off" +#: ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." msgstr "" -"Les dreceres de teclat per habilitar o inhabilitar el mètode d'entrada" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." -#: ../data/ibus.schemas.in.h:28 -msgid "Trigger shortcut keys" -msgstr "Dreceres de teclat de l'activador" +#: ibus/lang.py:41 src/ibusutil.c:209 +msgid "Other" +msgstr "Altres" -#: ../data/ibus.schemas.in.h:29 -msgid "Use custom font" -msgstr "Utilitza un tipus de lletra personalitzat" +#: setup/emojilang.py:67 +msgid "Select a language" +msgstr "Selecciona un idioma" -#: ../data/ibus.schemas.in.h:30 -msgid "Use custom font name for language panel" -msgstr "Utilitza un tipus de lletra personalitzat per al quadre d'idiomes" +#: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 +#: setup/main.py:560 +msgid "_Cancel" +msgstr "_Cancel·la" -#: ../data/ibus.schemas.in.h:31 -msgid "Use global input method" -msgstr "Utilitza el mètode d'entrada global" +#: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 +msgid "_OK" +msgstr "D'ac_ord" -#: ../data/ibus.schemas.in.h:32 ../setup/setup.ui.h:55 -msgid "Use system keyboard (XKB) layout" -msgstr "Utilitza la disposició de teclat del sistema (XKB)" +#: setup/emojilang.py:235 setup/enginedialog.py:205 +msgid "More…" +msgstr "Més…" -#: ../data/ibus.schemas.in.h:33 ../setup/setup.ui.h:56 -msgid "Use system keyboard layout" -msgstr "Utilitza la disposició de teclat del sistema" +#: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 +msgid "About" +msgstr "Quant a" -#: ../setup/setup.ui.h:1 -msgid "..." -msgstr "..." +#: setup/engineabout.py:40 setup/setup.ui:1401 +msgid "_Close" +msgstr "_Tanca" -#: ../setup/setup.ui.h:2 -msgid "Font and Style" -msgstr "Tipus de lletra i estil" +#: setup/engineabout.py:72 +#, python-format +msgid "Language: %s\n" +msgstr "Idioma: %s\n" -#: ../setup/setup.ui.h:3 -msgid "Global input method settings" -msgstr "Paràmetres del mètode d'entrada global" +#: setup/engineabout.py:75 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "Disposició del teclat: %s\n" -#: ../setup/setup.ui.h:4 -msgid "Keyboard Layout" -msgstr "Disposició del teclat" +#: setup/engineabout.py:78 +#, python-format +msgid "Author: %s\n" +msgstr "Autor: %s\n" -#: ../setup/setup.ui.h:5 -msgid "Keyboard Shortcuts" -msgstr "Dreceres de teclat" +#: setup/engineabout.py:81 +msgid "Description:\n" +msgstr "Descripció:\n" -#: ../setup/setup.ui.h:6 -msgid "Startup" -msgstr "Inici" +#: setup/enginecombobox.py:139 setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "Seleccioneu un mètode d'entrada" -#: ../setup/setup.ui.h:7 -msgid "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" -msgstr "" -"IBus\n" -"El bus d'entrada intel·ligent\n" -"Lloc web: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" +#. add button +#: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 +msgid "_Add" +msgstr "_Afegeix" -#: ../setup/setup.ui.h:14 -msgid "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." -msgstr "" -"El mètode d'entrada predeterminat és el primer de la llista.\n" -"Podeu utilitzar els botons de pujar i baixar per canviar-lo." +#. create im name & icon column +#: setup/enginetreeview.py:69 setup/setup.ui:838 +msgid "Input Method" +msgstr "Mètode d'entrada" -#: ../setup/setup.ui.h:17 -msgid "Add the selected input method into the enabled input methods" -msgstr "" -"Afegeix el mètode d'entrada seleccionat als mètodes d'entrada habilitats" +#: setup/enginetreeview.py:96 +msgid "Kbd" +msgstr "Kbd" -#: ../setup/setup.ui.h:18 -msgid "Advanced" -msgstr "Avançat" +#: setup/ibus-setup.desktop:3 setup/setup.ui:69 +msgid "IBus Preferences" +msgstr "Preferències de l'IBus" -#: ../setup/setup.ui.h:19 -msgid "Always" -msgstr "Sempre" +#: setup/ibus-setup.desktop:4 +msgid "Set IBus Preferences" +msgstr "Establiu les preferències de l'IBus" -#: ../setup/setup.ui.h:20 -msgid "Bottom left corner" -msgstr "Cantonada inferior esquerra" +#: setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "Dreceres de teclat" -#: ../setup/setup.ui.h:21 -msgid "Bottom right corner" -msgstr "Cantonada inferior dreta" +#: setup/keyboardshortcut.py:67 +msgid "Key code:" +msgstr "Codi de la tecla:" -#: ../setup/setup.ui.h:22 -msgid "Candidates orientation:" -msgstr "Orientació dels candidats:" +#: setup/keyboardshortcut.py:82 +msgid "Modifiers:" +msgstr "Modificadors:" -#: ../setup/setup.ui.h:23 -msgid "Custom" -msgstr "Personalitzat" +#. apply button +#: setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "_Aplica" -#: ../setup/setup.ui.h:24 -msgid "Disable:" -msgstr "Inhabilita:" +#. delete button +#: setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "_Suprimeix" -#: ../setup/setup.ui.h:25 -msgid "Embed preedit text in application window" -msgstr "Incrusta el text editat prèviament en la finestra d'aplicació" +#: setup/keyboardshortcut.py:252 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "" +"Premeu una tecla (o una combinació de tecles).\n" +"El diàleg es tancarà quan es deixi anar la tecla." -#: ../setup/setup.ui.h:26 -msgid "Embed the preedit text of input method in the application window" +#: setup/keyboardshortcut.py:255 +msgid "Please press a key (or a key combination)" +msgstr "Premeu una tecla (o una combinació de tecles)" + +#: setup/main.py:121 setup/main.py:588 +msgid "Use shortcut with shift to switch to the previous input method" msgstr "" -"Incrusta el text editat prèviament del mètode d'entrada en la finestra " -"d'aplicació" +"Usa la drecera de teclat amb la tecla de majúscules per canviar a l'anterior " +"mètode d'entrada" -#: ../setup/setup.ui.h:27 -msgid "Embedded in menu" -msgstr "Incrusta al menú" +#: setup/main.py:515 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "No s'està executant el dimoni de l'IBus. El voleu iniciar?" -#: ../setup/setup.ui.h:28 -msgid "Enable or disable:" -msgstr "Habilita o inhabilita:" +#: setup/main.py:536 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "" +"S'ha iniciat l'IBus! Si no podeu usar-lo, afegiu les línies següents al " +"vostre $HOME/.bashrc; després torneu a entrar a l'escriptori.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" -#: ../setup/setup.ui.h:29 -msgid "Enable:" -msgstr "Habilita:" +#. Translators: %d == 5 currently +#: setup/main.py:550 +#, python-format +msgid "IBus daemon could not be started in %d seconds." +msgstr "El dimoni de l'IBus no s'ha pogut iniciar en %d segons." -#: ../setup/setup.ui.h:30 -msgid "General" -msgstr "General" +#: setup/main.py:562 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "Seleccioneu la drecera de teclat per a %s" + +#. Translators: Title of the window +#: setup/main.py:564 +msgid "switching input methods" +msgstr "Commutació dels mètodes d'entrada" -#: ../setup/setup.ui.h:31 +#: setup/setup.ui:11 msgid "Horizontal" msgstr "Horitzontal" -#: ../setup/setup.ui.h:34 -msgid "Language panel position:" -msgstr "Posició del quadre d'idiomes:" +#: setup/setup.ui:14 +msgid "Vertical" +msgstr "Vertical" -#: ../setup/setup.ui.h:35 -msgid "Move down the selected input method in the enabled input methods" -msgstr "" -"Baixa el mètode d'entrada seleccionat en els mètodes d'entrada habilitats" +#: setup/setup.ui:25 +msgid "Top left corner" +msgstr "Cantonada superior esquerra" -#: ../setup/setup.ui.h:36 -msgid "Move up the selected input method in the enabled input methods list" +#: setup/setup.ui:28 +msgid "Top right corner" +msgstr "Cantonada superior dreta" + +#: setup/setup.ui:31 +msgid "Bottom left corner" +msgstr "Cantonada inferior esquerra" + +#: setup/setup.ui:34 +msgid "Bottom right corner" +msgstr "Cantonada inferior dreta" + +#: setup/setup.ui:37 +msgid "Custom" +msgstr "Personalitzat" + +#: setup/setup.ui:48 +msgid "Do not show" +msgstr "No mostrar" + +#: setup/setup.ui:51 +msgid "Hide automatically" +msgstr "Ocultar automàticament" + +#: setup/setup.ui:54 +msgid "Always" +msgstr "Sempre" + +#: setup/setup.ui:113 +msgid "The shortcut keys for switching to next input method in the list" msgstr "" -"Puja el mètode d'entrada seleccionat en la llista de mètodes habilitats" +"La drecera de teclat per commutar al següent mètode d'entrada de la llista" -#: ../setup/setup.ui.h:37 +#: setup/setup.ui:115 msgid "Next input method:" -msgstr "Mètode d'entrada següent:" +msgstr "Següent mètode d'entrada:" -#: ../setup/setup.ui.h:38 +#: setup/setup.ui:127 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "" +"La drecera de teclat per canviar al mètode d'entrada anterior de la llista" + +#: setup/setup.ui:129 msgid "Previous input method:" msgstr "Mètode d'entrada anterior:" -#: ../setup/setup.ui.h:39 -msgid "Remove the selected input method from the enabled input methods" -msgstr "" -"Suprimeix el mètode d'entrada seleccionat dels mètodes d'entrada habilitats" +#: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 +#: setup/setup.ui:903 setup/setup.ui:957 +msgid "..." +msgstr "..." + +#: setup/setup.ui:226 +msgid "Enable or disable:" +msgstr "Habilita o inhabilita:" + +#: setup/setup.ui:238 +msgid "Enable:" +msgstr "Habilita:" + +#: setup/setup.ui:291 +msgid "Disable:" +msgstr "Inhabilita:" -#: ../setup/setup.ui.h:40 +#: setup/setup.ui:345 setup/setup.ui:983 +msgid "Keyboard Shortcuts" +msgstr "Dreceres de teclat" + +#: setup/setup.ui:374 +msgid "Set the orientation of candidates in lookup table" +msgstr "Estableix l'orientació dels candidats a la taula de cerca" + +#: setup/setup.ui:376 +msgid "Candidates orientation:" +msgstr "Orientació dels candidats:" + +#: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "" "Estableix el comportament de l'IBus sobre com mostrar o ocultar la barra " "d'idiomes" -#: ../setup/setup.ui.h:41 -msgid "Set the orientation of candidates in lookup table" -msgstr "Estableix l'orientació dels candidats a la taula de cerca" +#: setup/setup.ui:409 +msgid "Show property panel:" +msgstr "Mostra el quadre de propietats:" -#: ../setup/setup.ui.h:44 -msgid "Show information of the selected input method" -msgstr "Mostra la informació del mètode d'entrada seleccionat" +#: setup/setup.ui:423 +msgid "Language panel position:" +msgstr "Posició del quadre d'idiomes:" -#: ../setup/setup.ui.h:46 +#: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "" "Mostra el nom del mètode d'entrada a la barra d'idiomes quan s'activi la " "casella de selecció" -#: ../setup/setup.ui.h:47 -msgid "Show language panel:" -msgstr "Mostra el quadre d'idiomes:" +#: setup/setup.ui:508 +msgid "Embed preedit text in application window" +msgstr "Incrusta el text pre-editat en la finestra de l'aplicació" + +#: setup/setup.ui:513 +msgid "Embed the preedit text of input method in the application window" +msgstr "" +"Incrusta el text pre-editat del mètode d'entrada en la finestra de " +"l'aplicació" + +#: setup/setup.ui:527 +msgid "Use custom font:" +msgstr "Usa el tipus de lletra personalitzat:" + +#: setup/setup.ui:562 setup/setup.ui:1156 +msgid "Font and Style" +msgstr "Tipus de lletra i estil" + +#: setup/setup.ui:579 +msgid "General" +msgstr "General" + +#: setup/setup.ui:671 +msgid "Add the selected input method into the enabled input methods" +msgstr "" +"Afegeix el mètode d'entrada seleccionat als mètodes d'entrada habilitats" + +#: setup/setup.ui:682 +msgid "_Remove" +msgstr "Sup_rimeix" + +#: setup/setup.ui:689 +msgid "Remove the selected input method from the enabled input methods" +msgstr "" +"Suprimeix el mètode d'entrada seleccionat dels mètodes d'entrada habilitats" + +#: setup/setup.ui:700 +msgid "_Up" +msgstr "A_munt" + +#: setup/setup.ui:707 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "" +"Mou amunt el mètode d'entrada seleccionat en la llista de mètodes habilitats" + +#: setup/setup.ui:718 +msgid "_Down" +msgstr "A_vall" + +#: setup/setup.ui:725 +msgid "Move down the selected input method in the enabled input methods" +msgstr "" +"Mou avall el mètode d'entrada seleccionat en els mètodes d'entrada habilitats" + +#: setup/setup.ui:736 +msgid "_About" +msgstr "_Quant a" + +#: setup/setup.ui:743 +msgid "Show information of the selected input method" +msgstr "Mostra la informació del mètode d'entrada seleccionat" + +#: setup/setup.ui:754 +msgid "_Preferences" +msgstr "_Preferències" + +#: setup/setup.ui:761 +msgid "Show setup of the selected input method" +msgstr "Mostra la configuració del mètode d'entrada seleccionat" + +#: setup/setup.ui:812 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" +"El mètode d'entrada actiu pot canviar-se amb els seleccionats en " +"l'anterior llista prement les dreceres de teclat o en fer clic a la icona " +"del quadre." + +#: setup/setup.ui:873 +msgid "" +"The shortcut keys to enable conversions of emoji annotations or Unicode names" +msgstr "" +"La drecera de teclat per habilitar les conversions de les anotacions emoji o " +"els noms Unicode" + +#: setup/setup.ui:875 +msgid "Emoji annotation:" +msgstr "Anotació emoji:" + +#: setup/setup.ui:927 +msgid "The shortcut keys to enable Unicode code point conversions" +msgstr "" +"La drecera de teclat per habilitar les conversions de la posició del codi " +"Unicode" + +#: setup/setup.ui:929 +msgid "Unicode code point:" +msgstr "Posició del codi Unicode:" + +#: setup/setup.ui:1013 +msgid "Set a font of Unicode candidates on the emoji dialog" +msgstr "" +"Estableix un tipus de lletra dels candidats Unicode al diàleg dels emojis" + +#: setup/setup.ui:1015 +msgid "Unicode font:" +msgstr "Tipus de lletra Unicode:" + +#: setup/setup.ui:1038 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "Estableix l'idioma de les anotacions emoji al diàleg dels emojis" + +#: setup/setup.ui:1040 +msgid "Emoji annotation language:" +msgstr "Idioma d'anotació emoji:" + +#: setup/setup.ui:1062 +msgid "" +"Match emoji annotations partially with the following condition and more than " +"the number of characters:" +msgstr "" +"Fes coincidir parcialment les anotacions emoji amb la següent condició i més " +"que el nombre de caràcters:" + +#: setup/setup.ui:1067 +msgid "" +"If emoji annotations can be matched with a partial string instead of the " +"exact match" +msgstr "" +"Si les anotacions emoji poden coincidir amb una cadena parcial en comptes de " +"la coincidència exacta" + +#: setup/setup.ui:1101 +msgid "Prefix match" +msgstr "Coincidència del prefix" -#: ../setup/setup.ui.h:48 +#: setup/setup.ui:1115 +msgid "Suffix match" +msgstr "Coincidència del sufix" + +#: setup/setup.ui:1130 +msgid "Containing match" +msgstr "La coincidència conté" + +#: setup/setup.ui:1176 +msgid "Emoji" +msgstr "Emoji" + +#: setup/setup.ui:1230 +msgid "Keyboard Layout" +msgstr "Disposició del teclat" + +#: setup/setup.ui:1278 +msgid "Global input method settings" +msgstr "Paràmetres del mètode d'entrada global" + +#: setup/setup.ui:1298 +msgid "Advanced" +msgstr "Avançat" + +#: setup/setup.ui:1317 +msgid "" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" +msgstr "" +"IBus\n" +"El bus d'entrada intel·ligent\n" +"Lloc web: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" + +#: setup/setup.ui:1341 msgid "Start ibus on login" msgstr "Inicia l'IBus en entrar" -#: ../setup/setup.ui.h:49 -msgid "The shortcut keys for switching to next input method in the list" +#: setup/setup.ui:1358 +msgid "Startup" +msgstr "Inici" + +#: src/ibusemojigen.h:30 +msgid "Activities" +msgstr "Activitats" + +#: src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "Animals i natura" + +#: src/ibusemojigen.h:32 +msgid "Component" msgstr "" -"Les dreceres de teclat per commutar al mètode d'entrada següent de la llista" -#: ../setup/setup.ui.h:50 -msgid "The shortcut keys for switching to previous input method in the list" +#: src/ibusemojigen.h:33 +msgid "Flags" +msgstr "Banderes" + +#: src/ibusemojigen.h:34 +msgid "Food & Drink" +msgstr "Menjar i beguda" + +#: src/ibusemojigen.h:35 +msgid "Objects" +msgstr "Objectes" + +#: src/ibusemojigen.h:36 +msgid "People & Body" msgstr "" -"Les dreceres de teclat per canviar al mètode d'entrada anterior de la llista" -#: ../setup/setup.ui.h:52 -msgid "Top left corner" -msgstr "Cantonada superior esquerra" +#: src/ibusemojigen.h:37 +#, fuzzy +#| msgid "Smileys & People" +msgid "Smileys & Emotion" +msgstr "Emoticones i gent" + +#: src/ibusemojigen.h:38 +msgid "Symbols" +msgstr "Símbols" + +#: src/ibusemojigen.h:39 +msgid "Travel & Places" +msgstr "Viatges i llocs" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:33 +msgid "Basic Latin" +msgstr "Llatí bàsic" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:37 +msgid "Latin-1 Supplement" +msgstr "Llatí-1 suplementari" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:41 +msgid "Latin Extended-A" +msgstr "Llatí ampliat-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:45 +msgid "Latin Extended-B" +msgstr "Llatí ampliat-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:49 +msgid "IPA Extensions" +msgstr "Extensions IPA" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:53 +msgid "Spacing Modifier Letters" +msgstr "Modificador de l'espaiat de les lletres" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:57 +msgid "Combining Diacritical Marks" +msgstr "Combinació de les marques diacrítiques" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:61 +msgid "Greek and Coptic" +msgstr "Grec i copte" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:65 +msgid "Cyrillic" +msgstr "Ciríl·lic" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:69 +msgid "Cyrillic Supplement" +msgstr "Ciríl·lic suplementari" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:73 +msgid "Armenian" +msgstr "Armeni" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:77 +msgid "Hebrew" +msgstr "Hebreu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:81 +msgid "Arabic" +msgstr "Àrab" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:85 +msgid "Syriac" +msgstr "Siríac" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:89 +msgid "Arabic Supplement" +msgstr "Àrab suplementari" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:93 +msgid "Thaana" +msgstr "Thaana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:97 +msgid "NKo" +msgstr "NKo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:101 +msgid "Samaritan" +msgstr "Samarità" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:105 +msgid "Mandaic" +msgstr "Mandaic" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:109 +msgid "Syriac Supplement" +msgstr "Siríac suplementari" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:113 +msgid "Arabic Extended-A" +msgstr "Àrab ampliat-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:117 +msgid "Devanagari" +msgstr "Devanagari" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:121 +msgid "Bengali" +msgstr "Bengalí" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:125 +msgid "Gurmukhi" +msgstr "Gurmukhi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:129 +msgid "Gujarati" +msgstr "Gujarati" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:133 +msgid "Oriya" +msgstr "Oriya" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:137 +msgid "Tamil" +msgstr "Tàmil" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:141 +msgid "Telugu" +msgstr "Telugu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:145 +msgid "Kannada" +msgstr "Kanarès" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:149 +msgid "Malayalam" +msgstr "Malaiàlam" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:153 +msgid "Sinhala" +msgstr "Singalès" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:157 +msgid "Thai" +msgstr "Tai" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:161 +msgid "Lao" +msgstr "Laosià" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:165 +msgid "Tibetan" +msgstr "Tibetà" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:169 +msgid "Myanmar" +msgstr "Birmà" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:173 +msgid "Georgian" +msgstr "Georgià" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:177 +msgid "Hangul Jamo" +msgstr "Hangul Jamo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:181 +msgid "Ethiopic" +msgstr "Etiòpic" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:185 +msgid "Ethiopic Supplement" +msgstr "Etiòpic suplementari" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:189 +msgid "Cherokee" +msgstr "Cherokee" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:193 +msgid "Unified Canadian Aboriginal Syllabics" +msgstr "Sil·labaris aborígens unificats del Canadà" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:197 +msgid "Ogham" +msgstr "Ogham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:201 +msgid "Runic" +msgstr "Rúnic" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:205 +msgid "Tagalog" +msgstr "Tagal" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:209 +msgid "Hanunoo" +msgstr "Hanunoo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:213 +msgid "Buhid" +msgstr "Buhid" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:217 +msgid "Tagbanwa" +msgstr "Tagbanwa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:221 +msgid "Khmer" +msgstr "Khmer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:225 +msgid "Mongolian" +msgstr "Mongol" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:229 +msgid "Unified Canadian Aboriginal Syllabics Extended" +msgstr "Sil·labaris ampliats aborígens unificats del Canadà" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:233 +msgid "Limbu" +msgstr "Limbu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:237 +msgid "Tai Le" +msgstr "Tai Le" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:241 +msgid "New Tai Lue" +msgstr "Tai Lue nou" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:245 +msgid "Khmer Symbols" +msgstr "Símbols Khmer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:249 +msgid "Buginese" +msgstr "Bugui" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:253 +msgid "Tai Tham" +msgstr "Tai Tham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:257 +msgid "Combining Diacritical Marks Extended" +msgstr "Combinació ampliada de les marques diacrítiques" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:261 +msgid "Balinese" +msgstr "Balinès" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:265 +msgid "Sundanese" +msgstr "Sundanès" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:269 +msgid "Batak" +msgstr "Batak" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:273 +msgid "Lepcha" +msgstr "Lepcha" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:277 +msgid "Ol Chiki" +msgstr "Ol Chiki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:281 +msgid "Cyrillic Extended-C" +msgstr "Ciríl·lic ampliat-C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:285 +msgid "Georgian Extended" +msgstr "" -#: ../setup/setup.ui.h:53 -msgid "Top right corner" -msgstr "Cantonada superior dreta" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:289 +msgid "Sundanese Supplement" +msgstr "Sundanès suplementari" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:293 +msgid "Vedic Extensions" +msgstr "Extensions vèdiques" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:297 +msgid "Phonetic Extensions" +msgstr "Extensions fonètiques" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:301 +msgid "Phonetic Extensions Supplement" +msgstr "Extensions fonètiques suplementàries" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:305 +msgid "Combining Diacritical Marks Supplement" +msgstr "Combinació suplementària de les marques diacrítiques" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:309 +msgid "Latin Extended Additional" +msgstr "Llatí ampliat addicional" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:313 +msgid "Greek Extended" +msgstr "Grec ampliat" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:317 +msgid "General Punctuation" +msgstr "Puntuació general" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:321 +msgid "Superscripts and Subscripts" +msgstr "Superíndexs i subíndexs" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:325 +msgid "Currency Symbols" +msgstr "Símbols de moneda" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:329 +msgid "Combining Diacritical Marks for Symbols" +msgstr "Combinació de les marques diacrítiques per als símbols" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:333 +msgid "Letterlike Symbols" +msgstr "Símbols semblants a lletres" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:337 +msgid "Number Forms" +msgstr "Formes de nombres" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:341 +msgid "Arrows" +msgstr "Fletxes" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:345 +msgid "Mathematical Operators" +msgstr "Operadors matemàtics" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:349 +msgid "Miscellaneous Technical" +msgstr "Tècnics variats" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:353 +msgid "Control Pictures" +msgstr "Imatges de control" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:357 +msgid "Optical Character Recognition" +msgstr "Reconeixement òptic de caràcters" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:361 +msgid "Enclosed Alphanumerics" +msgstr "Alfanumèrics delimitats" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:365 +msgid "Box Drawing" +msgstr "Dibuixos de quadres" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:369 +msgid "Block Elements" +msgstr "Elements de blocs" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:373 +msgid "Geometric Shapes" +msgstr "Figures geomètriques" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:377 +msgid "Miscellaneous Symbols" +msgstr "Símbols variats" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:381 +msgid "Dingbats" +msgstr "Dingbats" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:385 +msgid "Miscellaneous Mathematical Symbols-A" +msgstr "Símbols-A matemàtics variats" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:389 +msgid "Supplemental Arrows-A" +msgstr "Fletxes-A suplementàries" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:393 +msgid "Braille Patterns" +msgstr "Plantilles en Braille" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:397 +msgid "Supplemental Arrows-B" +msgstr "Fletxes-B suplementàries" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:401 +msgid "Miscellaneous Mathematical Symbols-B" +msgstr "Símbols-B matemàtics variats" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:405 +msgid "Supplemental Mathematical Operators" +msgstr "Operadors matemàtics suplementaris" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:409 +msgid "Miscellaneous Symbols and Arrows" +msgstr "Símbols i fletxes variats" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:413 +msgid "Glagolitic" +msgstr "Glagolític" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:417 +msgid "Latin Extended-C" +msgstr "Llatí ampliat-C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:421 +msgid "Coptic" +msgstr "Copte" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:425 +msgid "Georgian Supplement" +msgstr "Georgià suplementari" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:429 +msgid "Tifinagh" +msgstr "Tifinagh" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:433 +msgid "Ethiopic Extended" +msgstr "Etiòpic ampliat" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:437 +msgid "Cyrillic Extended-A" +msgstr "Ciríl·lic ampliat-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:441 +msgid "Supplemental Punctuation" +msgstr "Puntuació suplementària" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:445 +msgid "CJK Radicals Supplement" +msgstr "Radicals suplementaris del CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:449 +msgid "Kangxi Radicals" +msgstr "Radicals Kangxi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:453 +msgid "Ideographic Description Characters" +msgstr "Caràcters de descripció ideogràfica" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:457 +msgid "CJK Symbols and Punctuation" +msgstr "Símbols i puntuació del CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:461 +msgid "Hiragana" +msgstr "Hiragana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:465 +msgid "Katakana" +msgstr "Katakana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:469 +msgid "Bopomofo" +msgstr "Bopomofo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:473 +msgid "Hangul Compatibility Jamo" +msgstr "Hangul compatible amb el Jamo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:477 +msgid "Kanbun" +msgstr "Kanbun" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:481 +msgid "Bopomofo Extended" +msgstr "Bopomofo ampliat" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:485 +msgid "CJK Strokes" +msgstr "Traços del CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:489 +msgid "Katakana Phonetic Extensions" +msgstr "Extensions fonètiques Katakana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:493 +msgid "Enclosed CJK Letters and Months" +msgstr "Lletres i mesos delimitats del CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:497 +msgid "CJK Compatibility" +msgstr "Compatibilitat del CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:501 +msgid "CJK Unified Ideographs Extension A" +msgstr "Extensió A d'ideogrames unificats del CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:505 +msgid "Yijing Hexagram Symbols" +msgstr "Símbols d'hexagrames Yijing" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:509 +msgid "CJK Unified Ideographs" +msgstr "Ideogrames unificats del CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:513 +msgid "Yi Syllables" +msgstr "Sil·labari Yi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:517 +msgid "Yi Radicals" +msgstr "Radicals Yi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:521 +msgid "Lisu" +msgstr "Lisu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:525 +msgid "Vai" +msgstr "Vai" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:529 +msgid "Cyrillic Extended-B" +msgstr "Ciríl·lic ampliat-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:533 +msgid "Bamum" +msgstr "Bamum" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:537 +msgid "Modifier Tone Letters" +msgstr "Lletres amb modificació del to" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:541 +msgid "Latin Extended-D" +msgstr "Llatí ampliat-D" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:545 +msgid "Syloti Nagri" +msgstr "Syloti Nagri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:549 +msgid "Common Indic Number Forms" +msgstr "Formes de nombres comuns de l'Índic" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:553 +msgid "Phags-pa" +msgstr "Phags-pa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:557 +msgid "Saurashtra" +msgstr "Saurashtra" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:561 +msgid "Devanagari Extended" +msgstr "Devanagari ampliat" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:565 +msgid "Kayah Li" +msgstr "Kayah Li" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:569 +msgid "Rejang" +msgstr "Rejang" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:573 +msgid "Hangul Jamo Extended-A" +msgstr "Hangul Jamo ampliat-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:577 +msgid "Javanese" +msgstr "Javanès" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:581 +msgid "Myanmar Extended-B" +msgstr "Myanmar ampliat-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:585 +msgid "Cham" +msgstr "Txam" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:589 +msgid "Myanmar Extended-A" +msgstr "Myanmar ampliat-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:593 +msgid "Tai Viet" +msgstr "Tai Viet" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:597 +msgid "Meetei Mayek Extensions" +msgstr "Ampliacions Meetei Mayek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:601 +msgid "Ethiopic Extended-A" +msgstr "Etiòpic ampliat-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:605 +msgid "Latin Extended-E" +msgstr "Llatí ampliat-E" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:609 +msgid "Cherokee Supplement" +msgstr "Cherokee suplementari" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:613 +msgid "Meetei Mayek" +msgstr "Meetei Mayek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:617 +msgid "Hangul Syllables" +msgstr "Sil·labari Hangul" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:621 +msgid "Hangul Jamo Extended-B" +msgstr "Hangul Jamo ampliat-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:625 +msgid "High Surrogates" +msgstr "Substitucions altes" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:629 +msgid "High Private Use Surrogates" +msgstr "Substitucions altes d'ús privat" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:633 +msgid "Low Surrogates" +msgstr "Substitucions baixes" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:637 +msgid "Private Use Area" +msgstr "Àrea d'ús privat" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:641 +msgid "CJK Compatibility Ideographs" +msgstr "Ideogrames de compatibilitat del CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:645 +msgid "Alphabetic Presentation Forms" +msgstr "Formes de presentació alfabètica" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:649 +msgid "Arabic Presentation Forms-A" +msgstr "Formes A de presentació àrab" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:653 +msgid "Variation Selectors" +msgstr "Selectors de variació" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:657 +msgid "Vertical Forms" +msgstr "Formes verticals" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:661 +msgid "Combining Half Marks" +msgstr "Combinació de mitges marques" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:665 +msgid "CJK Compatibility Forms" +msgstr "Formes de compatibilitat del CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:669 +msgid "Small Form Variants" +msgstr "Variants de formes petites" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:673 +msgid "Arabic Presentation Forms-B" +msgstr "Formes B de presentació àrab" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:677 +msgid "Halfwidth and Fullwidth Forms" +msgstr "Formes d'amplada mitjana i completa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:681 +msgid "Specials" +msgstr "Especials" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:685 +msgid "Linear B Syllabary" +msgstr "Conjunt lineal B de síl·labes" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:689 +msgid "Linear B Ideograms" +msgstr "Ideogrames B lineals" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:693 +msgid "Aegean Numbers" +msgstr "Nombres de l'egeu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:697 +msgid "Ancient Greek Numbers" +msgstr "Nombres del grec antic" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:701 +msgid "Ancient Symbols" +msgstr "Símbols antics" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:705 +msgid "Phaistos Disc" +msgstr "Disc de Phaistos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:709 +msgid "Lycian" +msgstr "Lici" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:713 +msgid "Carian" +msgstr "Cari" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:717 +msgid "Coptic Epact Numbers" +msgstr "Nombres epact coptes" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:721 +msgid "Old Italic" +msgstr "Cursiva antiga" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:725 +msgid "Gothic" +msgstr "Gòtic" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:729 +msgid "Old Permic" +msgstr "Permià antic" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:733 +msgid "Ugaritic" +msgstr "Ugarític" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:737 +msgid "Old Persian" +msgstr "Persa antic" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:741 +msgid "Deseret" +msgstr "Deseret" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:745 +msgid "Shavian" +msgstr "Shavian" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:749 +msgid "Osmanya" +msgstr "Osmanya" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:753 +msgid "Osage" +msgstr "Osage" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:757 +msgid "Elbasan" +msgstr "Elbasan" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:761 +msgid "Caucasian Albanian" +msgstr "Albanès caucasià" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:765 +msgid "Linear A" +msgstr "Lineal A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:769 +msgid "Cypriot Syllabary" +msgstr "Conjunt de síl·labes del xipriota" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:773 +msgid "Imperial Aramaic" +msgstr "Arameu imperial" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:777 +msgid "Palmyrene" +msgstr "Arameu de Palmira" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:781 +msgid "Nabataean" +msgstr "Nabateu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:785 +msgid "Hatran" +msgstr "" -#: ../setup/setup.ui.h:54 -msgid "Use custom font:" -msgstr "Utilitza un tipus de lletra personalitzat:" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:789 +msgid "Phoenician" +msgstr "Fenici" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:793 +msgid "Lydian" +msgstr "Lidi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:797 +msgid "Meroitic Hieroglyphs" +msgstr "Jeroglífics meroítics" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:801 +msgid "Meroitic Cursive" +msgstr "Formes i valors meroítics" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:805 +msgid "Kharoshthi" +msgstr "Kharoshthi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:809 +msgid "Old South Arabian" +msgstr "Àrab del sud antic" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:813 +msgid "Old North Arabian" +msgstr "Àrab del nord antic" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:817 +msgid "Manichaean" +msgstr "" -#: ../setup/setup.ui.h:57 -msgid "Vertical" -msgstr "Vertical" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:821 +msgid "Avestan" +msgstr "Avèstic" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:825 +msgid "Inscriptional Parthian" +msgstr "Inscripcions del parthià" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:829 +msgid "Inscriptional Pahlavi" +msgstr "Inscripcions del pahlavi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:833 +msgid "Psalter Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:837 +msgid "Old Turkic" +msgstr "Turc antic" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:841 +msgid "Old Hungarian" +msgstr "Hongarès antic" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:845 +msgid "Hanifi Rohingya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:849 +msgid "Rumi Numeral Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:853 +#, fuzzy +#| msgid "Old South Arabian" +msgid "Old Sogdian" +msgstr "Àrab del sud antic" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:857 +#, fuzzy +#| msgid "Lydian" +msgid "Sogdian" +msgstr "Lidi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:861 +msgid "Elymaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:865 +msgid "Brahmi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:869 +msgid "Kaithi" +msgstr "Kaithi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:873 +msgid "Sora Sompeng" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:877 +msgid "Chakma" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:881 +msgid "Mahajani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:885 +msgid "Sharada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:889 +msgid "Sinhala Archaic Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:893 +msgid "Khojki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:897 +msgid "Multani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:901 +msgid "Khudawadi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:905 +msgid "Grantha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:909 +msgid "Newa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:913 +msgid "Tirhuta" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:917 +msgid "Siddham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:921 +msgid "Modi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:925 +msgid "Mongolian Supplement" +msgstr "Mongol suplementari" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:929 +msgid "Takri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:933 +msgid "Ahom" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:937 +msgid "Dogra" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:941 +msgid "Warang Citi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:945 +msgid "Nandinagari" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:949 +msgid "Zanabazar Square" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:953 +msgid "Soyombo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:957 +msgid "Pau Cin Hau" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:961 +msgid "Bhaiksuki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:965 +msgid "Marchen" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:969 +msgid "Masaram Gondi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:973 +msgid "Gunjala Gondi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:977 +msgid "Makasar" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:981 +#, fuzzy +#| msgid "Variation Selectors Supplement" +msgid "Tamil Supplement" +msgstr "Suplement de selectors de variació" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:985 +msgid "Cuneiform" +msgstr "Cuneïforme" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:989 +msgid "Cuneiform Numbers and Punctuation" +msgstr "Nombres i puntuació cuneïforme" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:993 +msgid "Early Dynastic Cuneiform" +msgstr "Cuneïforme anterior a les dinasties" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:997 +msgid "Egyptian Hieroglyphs" +msgstr "Jeroglífics egipcis" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1001 +#, fuzzy +#| msgid "Egyptian Hieroglyphs" +msgid "Egyptian Hieroglyph Format Controls" +msgstr "Jeroglífics egipcis" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1005 +msgid "Anatolian Hieroglyphs" +msgstr "Jeroglífics d'Anatòlia" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1009 +msgid "Bamum Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1013 +msgid "Mro" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1017 +msgid "Bassa Vah" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1021 +msgid "Pahawh Hmong" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1025 +msgid "Medefaidrin" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1029 +msgid "Miao" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1033 +msgid "Ideographic Symbols and Punctuation" +msgstr "Símbols i puntuació ideogràfiques" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1037 +msgid "Tangut" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1041 +msgid "Tangut Components" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1045 +msgid "Kana Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1049 +msgid "Kana Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1053 +msgid "Small Kana Extension" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1057 +msgid "Nushu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1061 +msgid "Duployan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1065 +msgid "Shorthand Format Controls" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1069 +msgid "Byzantine Musical Symbols" +msgstr "Símbols musicals bizantins" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1073 +msgid "Musical Symbols" +msgstr "Símbols musicals" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1077 +msgid "Ancient Greek Musical Notation" +msgstr "Notació musical en grec antic" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1081 +#, fuzzy +#| msgid "Aegean Numbers" +msgid "Mayan Numerals" +msgstr "Nombres egeus" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1085 +msgid "Tai Xuan Jing Symbols" +msgstr "Símbols tai xuan jing" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1089 +msgid "Counting Rod Numerals" +msgstr "Palets xinesos per comptar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1093 +msgid "Mathematical Alphanumeric Symbols" +msgstr "Símbols matemàtics alfanumèrics" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1097 +msgid "Sutton SignWriting" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1101 +msgid "Glagolitic Supplement" +msgstr "Glagolític suplementari" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1105 +msgid "Nyiakeng Puachue Hmong" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1109 +msgid "Wancho" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1113 +msgid "Mende Kikakui" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1117 +msgid "Adlam" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1121 +msgid "Indic Siyaq Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1125 +msgid "Ottoman Siyaq Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1129 +msgid "Arabic Mathematical Alphabetic Symbols" +msgstr "Símbols alfabètics matemàtics àrabs" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1133 +msgid "Mahjong Tiles" +msgstr "Fitxes del Mahjong" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1137 +msgid "Domino Tiles" +msgstr "Fitxes del dòmino" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1141 +msgid "Playing Cards" +msgstr "Cartes de joc" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1145 +msgid "Enclosed Alphanumeric Supplement" +msgstr "Suplement alfanumèric tancat" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1149 +msgid "Enclosed Ideographic Supplement" +msgstr "Suplement ideogràfic tancat" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1153 +msgid "Miscellaneous Symbols and Pictographs" +msgstr "Símbols i pictogrames variats" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1157 +msgid "Emoticons" +msgstr "Emoticones" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1161 +msgid "Ornamental Dingbats" +msgstr "Dingbats ornamentals" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1165 +msgid "Transport and Map Symbols" +msgstr "Símbols de transports i mapes" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1169 +msgid "Alchemical Symbols" +msgstr "Símbols químics" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1173 +msgid "Geometric Shapes Extended" +msgstr "Figures geomètriques ampliades" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1177 +msgid "Supplemental Arrows-C" +msgstr "Fletxes-C suplementàries" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1181 +msgid "Supplemental Symbols and Pictographs" +msgstr "Símbols i pictogrames suplementaris" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1185 +#, fuzzy +#| msgid "Symbols" +msgid "Chess Symbols" +msgstr "Símbols" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1189 +msgid "Symbols and Pictographs Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1193 +msgid "CJK Unified Ideographs Extension B" +msgstr "Extensió B d'ideogrames unificats del CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1197 +msgid "CJK Unified Ideographs Extension C" +msgstr "Extensió C d'ideogrames unificats del CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1201 +msgid "CJK Unified Ideographs Extension D" +msgstr "Extensió D d'ideogrames unificats del CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1205 +msgid "CJK Unified Ideographs Extension E" +msgstr "Extensió E d'ideogrames unificats del CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1209 +msgid "CJK Unified Ideographs Extension F" +msgstr "Extensió F d'ideogrames unificats del CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1213 +msgid "CJK Compatibility Ideographs Supplement" +msgstr "Ideogrames suplementaris de compatibilitat del CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1217 +msgid "Tags" +msgstr "Etiquetes" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1221 +msgid "Variation Selectors Supplement" +msgstr "Suplement dels selectors de variació" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1225 +msgid "Supplementary Private Use Area-A" +msgstr "Àrea A d'ús privat suplementari" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1229 +msgid "Supplementary Private Use Area-B" +msgstr "Àrea B d'ús privat suplementari" + +#: tools/main.vala:51 +msgid "List engine name only" +msgstr "Mostra tan sols el nom del motor" + +#: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 +msgid "Can't connect to IBus.\n" +msgstr "No es pot connectar amb l'IBus.\n" + +#: tools/main.vala:93 +#, c-format +msgid "language: %s\n" +msgstr "idioma: %s\n" + +#: tools/main.vala:161 +msgid "No engine is set.\n" +msgstr "No s'ha establert cap motor.\n" + +#: tools/main.vala:169 +msgid "Set global engine failed.\n" +msgstr "S'ha produït un error en establir el motor global.\n" + +#: tools/main.vala:174 +msgid "Get global engine failed.\n" +msgstr "S'ha produït un error en obtenir el motor global.\n" + +#: tools/main.vala:217 +msgid "Read the system registry cache." +msgstr "Llegeix la memòria cau del registre del sistema." + +#: tools/main.vala:219 +msgid "Read the registry cache FILE." +msgstr "Llegeix el FITXER de la memòria cau del registre." + +#: tools/main.vala:237 tools/main.vala:242 +msgid "The registry cache is invalid.\n" +msgstr "La memòria cau del registre no és vàlida.\n" + +#: tools/main.vala:257 +msgid "Write the system registry cache." +msgstr "Escriu la memòria cau del registre del sistema." + +#: tools/main.vala:259 +msgid "Write the registry cache FILE." +msgstr "Escriu el FITXER de la memòria cau del registre." + +#: tools/main.vala:295 +msgid "" +"Use engine schema paths instead of ibus core, which can be comma-separated " +"values." +msgstr "" +"Usa els camins d'esquema del motor en comptes del nucli de l'IBus, el qual " +"pot tenir els valors separats amb comes." + +#: tools/main.vala:381 +msgid "Resetting…" +msgstr "S'està restablint…" + +#: tools/main.vala:399 +msgid "Done" +msgstr "Fet" + +#: tools/main.vala:444 +msgid "Set or get engine" +msgstr "Estableix o obté el motor" + +#: tools/main.vala:445 +msgid "Exit ibus-daemon" +msgstr "Surt de l'ibus-daemon" + +#: tools/main.vala:446 +msgid "Show available engines" +msgstr "Mostra els motors disponibles" + +#: tools/main.vala:447 +msgid "(Not implemented)" +msgstr "(No implementat)" + +#: tools/main.vala:448 +msgid "Restart ibus-daemon" +msgstr "Reinicia el dimoni de l'IBus" + +#: tools/main.vala:449 +msgid "Show version" +msgstr "Mostra la versió" + +#: tools/main.vala:450 +msgid "Show the content of registry cache" +msgstr "Mostra el contingut de la memòria cau del registre" + +#: tools/main.vala:451 +msgid "Create registry cache" +msgstr "Crea la memòria cau del registre" + +#: tools/main.vala:452 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "Mostra l'adreça D-Bus del dimoni de l'IBus" + +#: tools/main.vala:453 +msgid "Show the configuration values" +msgstr "Mostra els valors de la configuració" + +#: tools/main.vala:454 +msgid "Reset the configuration values" +msgstr "Restableix els valors de la configuració" + +#: tools/main.vala:456 +msgid "Save emoji on dialog to clipboard" +msgstr "Desa l'emoji del diàleg al porta-retalls" + +#: tools/main.vala:458 +msgid "Show this information" +msgstr "Mostra aquesta informació" + +#: tools/main.vala:464 +#, c-format +msgid "" +"Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "" +"Ús: %s ORDRE [OPCIÓ...]\n" +"\n" + +#: tools/main.vala:465 +msgid "Commands:\n" +msgstr "Ordres:\n" + +#: tools/main.vala:494 +#, c-format +msgid "%s is unknown command!\n" +msgstr "%s no és una ordre reconeguda!\n" + +#: ui/gtk3/emojier.vala:233 +msgid "Favorites" +msgstr "Preferits" + +#: ui/gtk3/emojier.vala:234 +msgid "Others" +msgstr "Altres" + +#: ui/gtk3/emojier.vala:235 +msgid "Open Unicode choice" +msgstr "Obre el selector Unicode" + +#: ui/gtk3/emojier.vala:994 +msgid "Bring back emoji choice" +msgstr "Torna a la selecció emoji" + +#: ui/gtk3/emojier.vala:1096 +msgid "Page Down" +msgstr "Av Pàg" + +#: ui/gtk3/emojier.vala:1107 +msgid "Page Up" +msgstr "Re Pàg" + +#: ui/gtk3/emojier.vala:1110 +msgid "Show emoji variants" +msgstr "Mostra les variants dels emojis" + +#: ui/gtk3/emojier.vala:1111 +msgid "Close" +msgstr "Tanca" + +#: ui/gtk3/emojier.vala:1117 +msgid "Menu" +msgstr "Menú" + +#: ui/gtk3/emojier.vala:1128 +msgid "Click to view a warning message" +msgstr "Cliqueu per a veure un missatge d'avís" + +#: ui/gtk3/emojier.vala:1172 +msgid "Loading a Unicode dictionary:" +msgstr "S'està carregant un diccionari Unicode:" + +#: ui/gtk3/emojier.vala:1418 +#, c-format +msgid "Code point: %s" +msgstr "Posició del codi: %s" + +#: ui/gtk3/emojier.vala:1424 +msgid "Has emoji variants" +msgstr "Té variants d'emoji" + +#: ui/gtk3/emojier.vala:1591 ui/gtk3/emojier.vala:1604 +#, c-format +msgid "Description: %s" +msgstr "Descripció: %s" + +#: ui/gtk3/emojier.vala:1591 +msgid "None" +msgstr "Sense" + +#: ui/gtk3/emojier.vala:1615 +#, c-format +msgid "Annotations: %s" +msgstr "Anotacions: %s" + +#: ui/gtk3/emojier.vala:1641 +#, c-format +msgid "Name: %s" +msgstr "Nom: %s" + +#: ui/gtk3/emojier.vala:1649 +#, c-format +msgid "Alias: %s" +msgstr "Àlies: %s" + +#: ui/gtk3/emojier.vala:2139 ui/gtk3/ibus-extension-gtk3.desktop.in:3 +#: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 +msgid "Emoji Choice" +msgstr "Selecciona l'emoji" + +#: ui/gtk3/emojier.vala:2141 +msgid "Unicode Choice" +msgstr "Unicode triat" + +#: ui/gtk3/emojier.vala:2429 +msgid "" +"Failed to get the current text application. Please re-focus your " +"application. E.g. Press Esc key several times to release the emoji typing " +"mode, click your desktop and click your text application again." +msgstr "" +"No s'ha pogut obtenir l'aplicació de text actual, si us plau torneu-li a " +"donar el focus, p. ex., premeu Esc diverses vegades per sortir del mode " +"escriptura emoji, cliqueu a l'escriptori i de nou en la vostra aplicació." + +#: ui/gtk3/emojierapp.vala:58 +msgid "Canceled to choose an emoji." +msgstr "S'ha cancel·lat per triar un emoji." + +#: ui/gtk3/emojierapp.vala:93 +msgid "Copied an emoji to your clipboard." +msgstr "S'ha copiat un emoji al vostre porta-retalls." + +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ui/gtk3/emojierapp.vala:114 +msgid "\"FONT\" for emoji characters on emoji dialog" +msgstr "«TIPUS DE LLETRA» per als caràcters emoji en el diàleg dels emojis" + +#: ui/gtk3/emojierapp.vala:115 +msgid "FONT" +msgstr "TIPUS DE LLETRA" + +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ui/gtk3/emojierapp.vala:120 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" +msgstr "ca" + +#: ui/gtk3/emojierapp.vala:121 +msgid "LANG" +msgstr "IDIOMA" + +#: ui/gtk3/emojierapp.vala:123 +msgid "Emoji annotations can be match partially" +msgstr "Les anotacions emoji poden coincidir parcialment" + +#: ui/gtk3/emojierapp.vala:127 +msgid "Match with the length of the specified integer" +msgstr "Coincideix amb la llargada de l'enter especificat" + +#: ui/gtk3/emojierapp.vala:131 +msgid "Match with the condition of the specified integer" +msgstr "Coincideix amb la condició de l'enter especificat" + +#: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 +msgid "IBus Panel" +msgstr "Quadre de l'IBus" + +#: ui/gtk3/panel.vala:1095 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "L'IBus és un bus d'entrada intel·ligent per a Linux/Unix." + +#: ui/gtk3/panel.vala:1099 +msgid "translator-credits" +msgstr "" +"Joan Duran \n" +"Oscar Osta Pueyo ,\n" +"Patricia Rivera Escuder ,\n" +"Robert Antoni Buj Gelonch ,\n" +"Xavier Conde Rueda ,\n" +"Antoni Bella " + +#: ui/gtk3/panel.vala:1118 +msgid "Preferences" +msgstr "Preferències" + +#: ui/gtk3/panel.vala:1144 +msgid "Restart" +msgstr "Reinicia" + +#: ui/gtk3/panel.vala:1148 +msgid "Quit" +msgstr "Surt" + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 +msgid "default:LTR" +msgstr "default:LTR" + +#~ msgid "" +#~ "The position of the language panel. 0 = Top left corner, 1 = Top right " +#~ "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +#~ msgstr "" +#~ "La posició del quadre d'idiomes. 0 = cantonada superior esquerra, 1 = " +#~ "cantonada superior dreta, 2 = cantonada inferior esquerra, 3 = cantonada " +#~ "inferior dreta, 4 = personalitzat" -#: ../setup/setup.ui.h:58 -msgid "When active" -msgstr "Quan estigui actiu" +#~ msgid "Type annotation or choose emoji" +#~ msgstr "Teclegeu l'anotació o trieu l'emoji" +#~ msgid "IBus Update" +#~ msgstr "Actualització d'IBus" +#~ msgid "Super+space is now the default hotkey." +#~ msgstr "Súper+espai ara és l'accés de teclat per defecte." diff --git a/po/cs.po b/po/cs.po new file mode 100644 index 000000000..ed8c30a75 --- /dev/null +++ b/po/cs.po @@ -0,0 +1,3083 @@ +# Czech translation of ibus. +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2018 Takao Fujiwara +# This file is distributed under the same license as the ibus package. +# +# Translators: +# Marek Suchánek , 2016. #zanata +# Zdenek , 2016. #zanata +# Josef Hruška , 2017. #zanata +# Marek Suchánek , 2017. #zanata +# Zdenek , 2017. #zanata +# fujiwara , 2017. #zanata +# Zdenek , 2018. #zanata +# fujiwara , 2018. #zanata +msgid "" +msgstr "" +"Project-Id-Version: IBus\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2018-02-20 17:31+0900\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2018-02-21 10:23-0500\n" +"Last-Translator: Zdenek \n" +"Language-Team: Czech\n" +"Language: cs\n" +"X-Generator: Zanata 3.9.6\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" + +#: ../setup/setup.ui.h:1 +msgid "Horizontal" +msgstr "Vodorovně" + +#: ../setup/setup.ui.h:2 +msgid "Vertical" +msgstr "Svisle" + +#: ../setup/setup.ui.h:3 +msgid "Top left corner" +msgstr "Levý horní roh" + +#: ../setup/setup.ui.h:4 +msgid "Top right corner" +msgstr "Pravý horní roh" + +#: ../setup/setup.ui.h:5 +msgid "Bottom left corner" +msgstr "Levý dolní roh" + +#: ../setup/setup.ui.h:6 +msgid "Bottom right corner" +msgstr "Pravý dolní roh" + +#: ../setup/setup.ui.h:7 +msgid "Custom" +msgstr "Vlastní" + +#: ../setup/setup.ui.h:8 +msgid "Do not show" +msgstr "Neukazovat" + +#: ../setup/setup.ui.h:9 +msgid "Hide automatically" +msgstr "Automaticky schovávat" + +#: ../setup/setup.ui.h:10 +msgid "Always" +msgstr "Vždy" + +#: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 +msgid "IBus Preferences" +msgstr "Předvolby IBusu" + +#: ../setup/setup.ui.h:12 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "Klávesové zkratky pro přepnutí na další vstupní metodu v řadě" + +#: ../setup/setup.ui.h:13 +msgid "Next input method:" +msgstr "Další vstupní metoda:" + +#: ../setup/setup.ui.h:14 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "Klávesové zkratky pro přepnutí na předchozí vstupní metodu v řadě" + +#: ../setup/setup.ui.h:15 +msgid "Previous input method:" +msgstr "Předchozí vstupní metoda:" + +#: ../setup/setup.ui.h:16 +msgid "..." +msgstr "…" + +#: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:16 +msgid "The shortcut keys for turning input method on or off" +msgstr "Klávesové zkratky pro zapnutí a vypnutí vstupní metody" + +#: ../setup/setup.ui.h:18 +msgid "Enable or disable:" +msgstr "Povolit či zakázat:" + +#: ../setup/setup.ui.h:19 +msgid "Enable:" +msgstr "Povolit:" + +#: ../setup/setup.ui.h:20 +msgid "Disable:" +msgstr "Zakázat:" + +#: ../setup/setup.ui.h:21 +msgid "Keyboard Shortcuts" +msgstr "Klávesové zkratky" + +#: ../setup/setup.ui.h:22 +msgid "Set the orientation of candidates in lookup table" +msgstr "Nastavení orientace kandidátů ve vyhledávací tabulce" + +#: ../setup/setup.ui.h:23 +msgid "Candidates orientation:" +msgstr "Orientace kandidátů:" + +#: ../setup/setup.ui.h:24 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "Nastavit chování ibusu, co se týče schovávání jazykového panelu" + +#: ../setup/setup.ui.h:25 +msgid "Show property panel:" +msgstr "Zobrazit panel vlastností:" + +#: ../setup/setup.ui.h:26 +msgid "Language panel position:" +msgstr "Umístění jazykového panelu:" + +#: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:36 +msgid "Show icon on system tray" +msgstr "Zobrazit ikonu v oznamovací oblasti" + +#: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:38 +msgid "Show input method name on language bar" +msgstr "Zobrazit v jazykovém panelu vstupní metodu" + +#: ../setup/setup.ui.h:29 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "" +"Pokud je zaškrtnuto, zobrazovat v jazykovém panelu název vstupní metody" + +#: ../setup/setup.ui.h:30 +msgid "Embed preedit text in application window" +msgstr "Vkládat předupravený text v okně aplikace" + +#: ../setup/setup.ui.h:31 +msgid "Embed the preedit text of input method in the application window" +msgstr "Vkládat předupravený text metody vstupu v okně aplikace" + +#: ../setup/setup.ui.h:32 +msgid "Use custom font:" +msgstr "Použít vlastní písmo:" + +#: ../setup/setup.ui.h:33 +msgid "Font and Style" +msgstr "Písmo a styl" + +#: ../setup/setup.ui.h:34 +msgid "General" +msgstr "Obecné" + +#. add button +#: ../setup/setup.ui.h:35 ../setup/enginedialog.py:61 +#: ../setup/keyboardshortcut.py:124 +msgid "_Add" +msgstr "_Přidat" + +#: ../setup/setup.ui.h:36 +msgid "Add the selected input method into the enabled input methods" +msgstr "Přidat vybranou vstupní metodu mezi povolené vstupní metody" + +#: ../setup/setup.ui.h:37 +msgid "_Remove" +msgstr "_Odebrat" + +#: ../setup/setup.ui.h:38 +msgid "Remove the selected input method from the enabled input methods" +msgstr "Odebrat vybranou vstupní metodu z povolených vstupních metod" + +#: ../setup/setup.ui.h:39 +msgid "_Up" +msgstr "_Výše" + +#: ../setup/setup.ui.h:40 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "Posunout v seznamu povolených vstupních metod vybranou metodu výše" + +#: ../setup/setup.ui.h:41 +msgid "_Down" +msgstr "_Níže" + +#: ../setup/setup.ui.h:42 +msgid "Move down the selected input method in the enabled input methods" +msgstr "Posunout v seznamu povolených vstupních metod vybranou metodu níže" + +#: ../setup/setup.ui.h:43 +msgid "_About" +msgstr "O _metodě" + +#: ../setup/setup.ui.h:44 +msgid "Show information of the selected input method" +msgstr "Ukázat podrobnosti o vybrané vstupní metodě" + +#: ../setup/setup.ui.h:45 +msgid "_Preferences" +msgstr "_Nastavení" + +#: ../setup/setup.ui.h:46 +msgid "Show setup of the selected input method" +msgstr "Ukázat nastavení vybrané vstupní metody" + +#: ../setup/setup.ui.h:47 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" +"Aktivní metodu vstupu lze přepínat z výše uvedeného seznamu výběru " +"za pomoci klávesové zkratky nebo kliknutím na ikonu panelu." + +#. create im name & icon column +#: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:68 +msgid "Input Method" +msgstr "Vstupní metoda" + +#: ../setup/setup.ui.h:49 +msgid "The shortcut keys for showing emoji dialog" +msgstr "Klávesová zkratka pro vyvolání dialogu emoji" + +#: ../setup/setup.ui.h:50 +msgid "Emoji choice:" +msgstr "Výběr emoji:" + +#: ../setup/setup.ui.h:51 +msgid "Set a font of emoji candidates on the emoji dialog" +msgstr "Nastavit písmo kandidátů emoji v dialogu emoji" + +#: ../setup/setup.ui.h:52 +msgid "Emoji font:" +msgstr "Font emoji:" + +#: ../setup/setup.ui.h:53 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "Nastavit jazyk anotací emoji v dialogu emoji" + +#: ../setup/setup.ui.h:54 +msgid "Emoji annotation language:" +msgstr "Jazyk anotací emoji:" + +#: ../setup/setup.ui.h:55 +msgid "" +"Match emoji annotations partially with the following condition and more than " +"the number of characters:" +msgstr "" +"Částečně odpovídá anotacím emoji s následujícími podmínkami a s více než " +"počtem znaků:" + +#: ../setup/setup.ui.h:56 +msgid "" +"If emoji annotations can be matched with a partial string instead of the " +"exact match" +msgstr "" +"Pokud se anotace emoji mohou shodovat s částečným řetězcem namísto přesné " +"shody" + +#: ../setup/setup.ui.h:57 +msgid "Prefix match" +msgstr "Předpona shody" + +#: ../setup/setup.ui.h:58 +msgid "Suffix match" +msgstr "Přípona shody" + +#: ../setup/setup.ui.h:59 +msgid "Containing match" +msgstr "Obsahuje shodu" + +#: ../setup/setup.ui.h:60 +msgid "Emoji" +msgstr "Emoji" + +#: ../setup/setup.ui.h:61 ../data/ibus.schemas.in.h:44 +msgid "Use system keyboard layout" +msgstr "Použít systémové rozložení klávesnice" + +#: ../setup/setup.ui.h:62 ../data/ibus.schemas.in.h:45 +msgid "Use system keyboard (XKB) layout" +msgstr "Použít systémové rozložení klávesnice (XKB)" + +#: ../setup/setup.ui.h:63 +msgid "Keyboard Layout" +msgstr "Rozložení klávesnice" + +#: ../setup/setup.ui.h:64 ../data/ibus.schemas.in.h:68 +msgid "Share the same input method among all applications" +msgstr "Používat stejnou vstupní metodu pro všechny aplikace" + +#: ../setup/setup.ui.h:65 +msgid "Global input method settings" +msgstr "Globální nastavení vstupní metody" + +#: ../setup/setup.ui.h:66 +msgid "Advanced" +msgstr "Pokročilé" + +#: ../setup/setup.ui.h:67 +msgid "" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" +msgstr "" +"IBus\n" +"Inteligentní vstupní metoda\n" +"Domovská stránka: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" + +#: ../setup/setup.ui.h:74 +msgid "Start ibus on login" +msgstr "Spustit ibus při přihlášení" + +#: ../setup/setup.ui.h:75 +msgid "Startup" +msgstr "Spouštění" + +#: ../setup/setup.ui.h:76 ../setup/engineabout.py:37 ../ui/gtk3/panel.vala:1175 +msgid "About" +msgstr "O programu" + +#: ../setup/setup.ui.h:77 ../setup/engineabout.py:40 +msgid "_Close" +msgstr "_Zavřít" + +#. Translators: Here “Preload” is a verb +#: ../data/ibus.schemas.in.h:2 +msgid "Preload engines" +msgstr "Přednačtené enginy" + +#. Translators: Tooltip for the button “Preload Engines” +#: ../data/ibus.schemas.in.h:4 +msgid "Preload engines during ibus starts up" +msgstr "Přednačtené enginy v průběhu startu IBus" + +#: ../data/ibus.schemas.in.h:5 +msgid "Engines order" +msgstr "Pořadí enginů" + +#: ../data/ibus.schemas.in.h:6 +msgid "Saved engines order in input method list" +msgstr "Uložené pořadí enginů v seznamu vstupní metody" + +#: ../data/ibus.schemas.in.h:7 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "" +"Počet milisekund pro zpoždění automaticky otevřeného okna IME přepínače" + +#: ../data/ibus.schemas.in.h:8 +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is 400." +" 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " +"show the window and switch prev/next engines." +msgstr "" +"Nastavit počet milisekund pro zpoždění automaticky otevřeného okna " +"zobrazujícího IME přepínač. Výchozí hodnota je 400. 0 = Zobrazit okno " +"okamžitě. 0 & lt; Milisekundové zpoždění. 0 & gt; Nezobrazit okno a přejít k " +"předchozímu / dalšímu enginu." + +#: ../data/ibus.schemas.in.h:9 +msgid "Saved version number" +msgstr "Uložené číslo verze" + +#: ../data/ibus.schemas.in.h:10 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" +"Uložené číslo verze bude použito ke kontrole rozdílu mezi předchozí verzí " +"nainstalovaného IBusu a verzí aktuálního IBusu." + +#: ../data/ibus.schemas.in.h:11 +msgid "Latin layouts which have no ASCII" +msgstr "Rozložení latinky, které nemá ASCII" + +#: ../data/ibus.schemas.in.h:12 +msgid "US layout is appended to the Latin layouts. variant can be omitted." +msgstr "" +"Americké rozvržení je připojeno k Latinskému. Varianta může být vynechána." + +#: ../data/ibus.schemas.in.h:13 +msgid "Use xmodmap" +msgstr "Použít xmodmap" + +#: ../data/ibus.schemas.in.h:14 +msgid "" +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." +msgstr "" +"Spustit xmodmap, pokud .xmodmap nebo .Xmodmap existuje, jsou-li enginy ibus " +"zapnuty." + +#: ../data/ibus.schemas.in.h:15 +msgid "Trigger shortcut keys" +msgstr "Spouštěcí klávesové zkratky" + +#: ../data/ibus.schemas.in.h:17 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "Spouštěcí klávesové zkratky pro gtk_accelerator_parse" + +#: ../data/ibus.schemas.in.h:18 +msgid "Enable shortcut keys" +msgstr "Povolit klávesové zkratky" + +#: ../data/ibus.schemas.in.h:19 +msgid "The shortcut keys for turning input method on" +msgstr "Klávesové zkratky pro zapnutí vstupní metody" + +#: ../data/ibus.schemas.in.h:20 +msgid "Disable shortcut keys" +msgstr "Zakázat klávesové zkratky" + +#: ../data/ibus.schemas.in.h:21 +msgid "The shortcut keys for turning input method off" +msgstr "Klávesové zkratky pro vypnutí vstupní metody" + +#: ../data/ibus.schemas.in.h:22 +msgid "Next engine shortcut keys" +msgstr "Klávesové zkratky dalšího enginu" + +#: ../data/ibus.schemas.in.h:23 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "Klávesové zkratky pro přechod na další metodu vstupu v seznamu" + +#: ../data/ibus.schemas.in.h:24 +msgid "Prev engine shortcut keys" +msgstr "Klávesové zkratky předchozího enginu" + +#: ../data/ibus.schemas.in.h:25 +msgid "The shortcut keys for switching to the previous input method" +msgstr "Klávesové zkratky pro přechod na předchozí metodu vstupu" + +#: ../data/ibus.schemas.in.h:26 +msgid "Auto hide" +msgstr "Automaticky skrýt" + +#: ../data/ibus.schemas.in.h:27 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "" +"Chování panelu vlastností. 0 = Nezobrazovat, 1 = Automaticky skrýt, 2 = Vždy " +"zobrazovat" + +#: ../data/ibus.schemas.in.h:28 +msgid "Language panel position" +msgstr "Umístění jazykového panelu" + +#: ../data/ibus.schemas.in.h:29 +msgid "" +"The position of the language panel. 0 = Top left corner, 1 = Top right " +"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +msgstr "" +"Umístění jazykového panelu. 0 = Levý horní roh, 1 = Pravý horní roh, 2 = " +"Levý dolní roh, 3 = Pravý dolní roh, 4 = Vlastní" + +#: ../data/ibus.schemas.in.h:30 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "Následovat vstupní kurzor v případě, že je panel vždy zobrazen" + +#: ../data/ibus.schemas.in.h:31 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" +"Pokud je to pravda, panel následuje vstupní kurzor v případě, že je panel " +"vždy zobrazen. Pokud to neplatí, je panel zobrazen na pevném místě." + +#: ../data/ibus.schemas.in.h:32 +msgid "The milliseconds to show property panel" +msgstr "Počet milisekund pro zobrazení panelu vlastností" + +#: ../data/ibus.schemas.in.h:33 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" +"Počet milisekund pro zobrazení panelu vlastností poté, co je změněno " +"zaměření nebo vlastnosti." + +#: ../data/ibus.schemas.in.h:34 +msgid "Orientation of lookup table" +msgstr "Orientace vyhledávací tabulky" + +#: ../data/ibus.schemas.in.h:35 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "Orientace vyhledávací tabulky. 0 = Horizontální, 1 = Vertikální" + +#: ../data/ibus.schemas.in.h:37 +msgid "Show input method name" +msgstr "Zobrazit název vstupní metody" + +#: ../data/ibus.schemas.in.h:39 +msgid "RGBA value of XKB icon" +msgstr "Hodnota RGBA ikony XKB" + +#: ../data/ibus.schemas.in.h:41 +#, no-c-format +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " +"'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " +"to 255 or percentage values in the range 0% to 100%, and 'a' is a floating " +"point value in the range 0 to 1 of the alpha." +msgstr "" +"Ikona XKB zobrazuje řetězec rozložení a řetězec je vykreslen hodnotou RGBA. " +"Hodnota RGBA může být 1. jméno barvy z X11, 2. hexadecimální hodnota ve " +"tvaru \"#rrggbb\" kde \"r\", \"g\" a \"b\" jsou hexadecimální číslice pro " +"červenou, zelenou a modrou, 3. RGB barva ve formě \"rgb (r, g, b)\" nebo 4. " +"RGBA barva ve formě \"rgba(r,g,b,a)\", kde \"r\", \"g\" a \"b\" jsou buď " +"celá čísla v rozsahu od 0 do 255 nebo procentuální hodnoty v rozsahu od 0% " +"do 100% a \"a\" je plovoucí bodová hodnota v rozsahu 0 až 1 z alfa." + +#: ../data/ibus.schemas.in.h:42 +msgid "The milliseconds to show the panel icon for a property" +msgstr "Počet milisekund pro zobrazení ikony panelu pro vlastnost" + +#: ../data/ibus.schemas.in.h:43 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" +"Počet milisekund pro zobrazení ikony panelu z ikony enginu na ikonu " +"vlastnosti, kdykoli jsou enginy zapnuté, pokud je vlastnost určená hodnotou " +"icon-prop-key v IBusEngineDesc. Pokud je hodnota 0, není žádná časová " +"prodleva a ikona vlastnosti je zobrazena okamžitě." + +#: ../data/ibus.schemas.in.h:46 +msgid "Use custom font" +msgstr "Použít vlastní font" + +#: ../data/ibus.schemas.in.h:47 +msgid "Use custom font name for language panel" +msgstr "Použít vlastní název fontu pro panel jazyku" + +#: ../data/ibus.schemas.in.h:48 +msgid "Custom font" +msgstr "Vlastní font" + +#: ../data/ibus.schemas.in.h:49 +msgid "Custom font name for language panel" +msgstr "Vlastní název fontu pro panel jazyku" + +#: ../data/ibus.schemas.in.h:50 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "Klávesová zkratka emoji pro gtk_accelerator_parse" + +#: ../data/ibus.schemas.in.h:51 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "Klávesová zkratka pro zapínání a vypínání psaní emoji" + +#: ../data/ibus.schemas.in.h:52 +msgid "Custom font name for emoji characters on emoji dialog" +msgstr "Vlastní jméno písma pro znaky emoji v dialogu emoji" + +#: ../data/ibus.schemas.in.h:53 +msgid "Default language for emoji dictionary" +msgstr "Předvolený jazyk pro slovník emoji" + +#: ../data/ibus.schemas.in.h:54 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict ." +msgstr "" +"Zvolte výchozí jazyk slovníků emoji v dialogovém okně emoji. Hodnota $lang " +"je aplikována na /usr/share/ibus/dicts/emoji-$lang.dict ." + +#: ../data/ibus.schemas.in.h:55 +msgid "favorite emoji list on emoji dialog" +msgstr "seznam oblíbených emoji v dialogu emoji" + +#: ../data/ibus.schemas.in.h:56 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "" +"Pokud tento seznam obsahuje nějaké znaky, můžete si v seznamu emoji zobrazit " +"oblíbené emoji." + +#: ../data/ibus.schemas.in.h:57 +msgid "favorite emoji annotation list on emoji dialog" +msgstr "seznam oblíbených emoji anotací v dialogu emoji" + +#: ../data/ibus.schemas.in.h:58 +msgid "You can assign an annotation for a favorite emoji in this list." +msgstr "Můžete přiřadit anotaci k oblíbenému emoji v tomto seznamu" + +#: ../data/ibus.schemas.in.h:59 +msgid "Whether emoji annotations can be match partially or not" +msgstr "Zda se anotace emoji mohou částečně shodovat nebo ne" + +#: ../data/ibus.schemas.in.h:60 +msgid "" +"Whether emoji annotations can be matched with a partial string instead of " +"the exact match or not." +msgstr "" +"Zda anotace emoji mohou být porovnány s částečným řetězcem namísto přesné " +"shody nebo ne." + +#: ../data/ibus.schemas.in.h:61 +msgid "Match emoji annotations with the specified length" +msgstr "Shoda anotací emoji se zadanou délkou" + +#: ../data/ibus.schemas.in.h:62 +msgid "" +"Match emoji annotations partially with more than the specified number of " +"characters instead of the exact match." +msgstr "" +"Částečně odpovídá anotacím emoji s více než zadaným počtem znaků místo " +"přesné shody." + +#: ../data/ibus.schemas.in.h:63 +msgid "Choose a condition to match emoji annotations partially" +msgstr "Vyberat podmínku částečně odpovídající anotaci emoji" + +#: ../data/ibus.schemas.in.h:64 +msgid "" +"Choose one of the following conditions to match emoji annotations partially: " +"0 == Prefix match, 1 == Suffix match, 2 == Containing match" +msgstr "" +"Zvolte jednu z následujících podmínek, která částečně odpovídá anotaci emoji:" +" 0 == Předpona shody, 1 == Přípona shody, 2 == Obsahuje shodu" + +#: ../data/ibus.schemas.in.h:65 +msgid "Embed Preedit Text" +msgstr "Vložený přededitovaný text" + +#: ../data/ibus.schemas.in.h:66 +msgid "Embed Preedit Text in Application Window" +msgstr "Vložený přededitovaný text v okně aplikace" + +#: ../data/ibus.schemas.in.h:67 +msgid "Use global input method" +msgstr "Použít globální vstupní metodu" + +#: ../data/ibus.schemas.in.h:69 +msgid "Enable input method by default" +msgstr "Povolit metodu vstupu ve výchozím nastavení" + +#: ../data/ibus.schemas.in.h:70 +msgid "Enable input method by default when the application gets input focus" +msgstr "" +"Povolit metodu vstupu ve výchozím nastavení, pokud aplikace dostane vstupní " +"fokus" + +#: ../data/ibus.schemas.in.h:71 +msgid "DConf preserve name prefixes" +msgstr "Zachovat jméno prefixu DConf " + +#: ../data/ibus.schemas.in.h:72 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "Prefix kláves DConf pro zastavení konverze jména" + +#: ../ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." + +#: ../ibus/lang.py:41 ../src/ibusutil.c:158 +msgid "Other" +msgstr "Ostatní" + +#: ../setup/emojilang.py:67 +msgid "Select a language" +msgstr "Vybrat jazyk" + +#: ../setup/emojilang.py:70 ../setup/enginedialog.py:60 +#: ../setup/keyboardshortcut.py:339 ../setup/main.py:552 +msgid "_Cancel" +msgstr "_Zrušit" + +#: ../setup/emojilang.py:71 ../setup/keyboardshortcut.py:340 +#: ../setup/main.py:553 +msgid "_OK" +msgstr "_OK" + +#: ../setup/emojilang.py:235 ../setup/enginedialog.py:205 +msgid "More…" +msgstr "Více…" + +#: ../setup/engineabout.py:72 +#, python-format +msgid "Language: %s\n" +msgstr " Jazyk: %s\n" + +#: ../setup/engineabout.py:75 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "Rozvržení klávesnice: %s\n" + +#: ../setup/engineabout.py:78 +#, python-format +msgid "Author: %s\n" +msgstr "Autor: %s\n" + +#: ../setup/engineabout.py:81 +msgid "Description:\n" +msgstr "Popis:\n" + +#: ../setup/enginecombobox.py:139 ../setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "Vybrat metodu vstupu" + +#: ../setup/enginetreeview.py:96 +msgid "Kbd" +msgstr "Kbd" + +#: ../setup/ibus-setup.desktop.in.h:2 +msgid "Set IBus Preferences" +msgstr "Nastavit předvolby IBusu" + +#: ../setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "Klávesové zkratky" + +#: ../setup/keyboardshortcut.py:67 +msgid "Key code:" +msgstr "Klávesa:" + +#: ../setup/keyboardshortcut.py:82 +msgid "Modifiers:" +msgstr "Modifikátory:" + +#. apply button +#: ../setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "_Použít" + +#. delete button +#: ../setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "O_dstranit" + +#: ../setup/keyboardshortcut.py:252 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "" +"Stiskněte prosím klávesu (či kombinaci kláves).\n" +"Dialog se zavře, až klávesy uvolníte." + +#: ../setup/keyboardshortcut.py:255 +msgid "Please press a key (or a key combination)" +msgstr "Stiskněte prosím klávesu (či kombinaci kláves)." + +#: ../setup/main.py:121 ../setup/main.py:580 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "" +"Použít klávesovou zkratku s posunem k přepnutí na předchozí vstupní metodu" + +#: ../setup/main.py:507 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "Démon IBus neběží. Přejete si jej spustit?" + +#: ../setup/main.py:528 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "" +"IBus byl spuštěn! Pokud nemůžete použít IBus, přidejte následující řádky do " +"souboru $HOME/.bashrc. Poté se přihlaste na váš počítač.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" + +#. Translators: %d == 5 currently +#: ../setup/main.py:542 +#, python-format +msgid "IBus daemon could not be started in %d seconds." +msgstr "Démon IBus nemohl být spuštěn během %d sekund." + +#: ../setup/main.py:554 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "Vybrat klávesovou zkratku pro %s" + +#. Translators: Title of the window +#: ../setup/main.py:556 +msgid "switching input methods" +msgstr "přepínání vstupní metody" + +#: ../src/ibusemojigen.h:30 +msgid "Activities" +msgstr "Aktivity" + +#: ../src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "Zvířata & příroda" + +#: ../src/ibusemojigen.h:32 +msgid "Flags" +msgstr "Vlajky" + +#: ../src/ibusemojigen.h:33 +msgid "Food & Drink" +msgstr "Jídlo & nápoje" + +#: ../src/ibusemojigen.h:34 +msgid "Objects" +msgstr "Objekty" + +#: ../src/ibusemojigen.h:35 +msgid "Smileys & People" +msgstr "Smajlíci & lidé" + +#: ../src/ibusemojigen.h:36 +msgid "Symbols" +msgstr "Symboly" + +#: ../src/ibusemojigen.h:37 +msgid "Travel & Places" +msgstr "Cestování & místa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:33 +msgid "Basic Latin" +msgstr "Základní latinka" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:37 +msgid "Latin-1 Supplement" +msgstr "Doplněk latinky-1" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:41 +msgid "Latin Extended-A" +msgstr "Rozšířená latinka-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:45 +msgid "Latin Extended-B" +msgstr "Rozšířená latinka-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:49 +msgid "IPA Extensions" +msgstr "Rozšíření IPA" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:53 +msgid "Spacing Modifier Letters" +msgstr "Distanční modifikační písmena" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:57 +msgid "Combining Diacritical Marks" +msgstr "Kombinace diakritických znamének" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:61 +msgid "Greek and Coptic" +msgstr "Řečtina a koptština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:65 +msgid "Cyrillic" +msgstr "Cyrilice" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:69 +msgid "Cyrillic Supplement" +msgstr "Doplněk cyrilice" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:73 +msgid "Armenian" +msgstr "Arménština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:77 +msgid "Hebrew" +msgstr "Hebrejština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:81 +msgid "Arabic" +msgstr "Arabština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:85 +msgid "Syriac" +msgstr "Syrština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:89 +msgid "Arabic Supplement" +msgstr "Doplněk arabštiny" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:93 +msgid "Thaana" +msgstr "Thaanaština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:97 +msgid "NKo" +msgstr "NKo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:101 +msgid "Samaritan" +msgstr "Samaritánština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:105 +msgid "Mandaic" +msgstr "Mandaic" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:109 +msgid "Syriac Supplement" +msgstr "Doplněk syrštiny" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:113 +msgid "Arabic Extended-A" +msgstr "Rozšířená arabština-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:117 +msgid "Devanagari" +msgstr "Devanagari" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:121 +msgid "Bengali" +msgstr "Bengálština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:125 +msgid "Gurmukhi" +msgstr "Gurmukhština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:129 +msgid "Gujarati" +msgstr "Gudžarátština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:133 +msgid "Oriya" +msgstr "Urijština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:137 +msgid "Tamil" +msgstr "Tamilština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:141 +msgid "Telugu" +msgstr "Telugština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:145 +msgid "Kannada" +msgstr "Kannadština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:149 +msgid "Malayalam" +msgstr "Malajálamština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:153 +msgid "Sinhala" +msgstr "Sinhálština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:157 +msgid "Thai" +msgstr "Thajština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:161 +msgid "Lao" +msgstr "Laoština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:165 +msgid "Tibetan" +msgstr "Tibetština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:169 +msgid "Myanmar" +msgstr "Barmština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:173 +msgid "Georgian" +msgstr "Gruzínština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:177 +msgid "Hangul Jamo" +msgstr "Hangul Jamo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:181 +msgid "Ethiopic" +msgstr "Etiopština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:185 +msgid "Ethiopic Supplement" +msgstr "Doplněk etiopštiny" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:189 +msgid "Cherokee" +msgstr "Cherokéština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:193 +msgid "Unified Canadian Aboriginal Syllabics" +msgstr "Slabičné písmo kanadských domorodců" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:197 +msgid "Ogham" +msgstr "Ogham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:201 +msgid "Runic" +msgstr "Runy" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:205 +msgid "Tagalog" +msgstr "Tagalština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:209 +msgid "Hanunoo" +msgstr "Hanunoo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:213 +msgid "Buhid" +msgstr "Buhidština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:217 +msgid "Tagbanwa" +msgstr "Tagbanwanština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:221 +msgid "Khmer" +msgstr "Khmerština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:225 +msgid "Mongolian" +msgstr "Mongolština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:229 +msgid "Unified Canadian Aboriginal Syllabics Extended" +msgstr "Rozšířené slabičné písmo kanadských domorodců" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:233 +msgid "Limbu" +msgstr "Limbu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:237 +msgid "Tai Le" +msgstr "Tai Le" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:241 +msgid "New Tai Lue" +msgstr "Nové Tai Lue" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:245 +msgid "Khmer Symbols" +msgstr "Khmerské symboly" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:249 +msgid "Buginese" +msgstr "Bugiština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:253 +msgid "Tai Tham" +msgstr "Tai Tham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:257 +msgid "Combining Diacritical Marks Extended" +msgstr "Kombinace rozšířených diakritických značek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:261 +msgid "Balinese" +msgstr "Balinéština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:265 +msgid "Sundanese" +msgstr "Sundanština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:269 +msgid "Batak" +msgstr "Batakština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:273 +msgid "Lepcha" +msgstr "Lepčština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:277 +msgid "Ol Chiki" +msgstr "Ol Chiki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:281 +msgid "Cyrillic Extended-C" +msgstr "Rozšířená cyrilice" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:285 +msgid "Sundanese Supplement" +msgstr "Doplněk sundanštiny" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:289 +msgid "Vedic Extensions" +msgstr "Rozšíření pro védy" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:293 +msgid "Phonetic Extensions" +msgstr "Fonetické rozšíření" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:297 +msgid "Phonetic Extensions Supplement" +msgstr "Doplněk fonetického rozšíření" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:301 +msgid "Combining Diacritical Marks Supplement" +msgstr "Kombinace doplňku s diakritickými značkami" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:305 +msgid "Latin Extended Additional" +msgstr "Další rozšířená latinka" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:309 +msgid "Greek Extended" +msgstr "Rozšířená řečtina" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:313 +msgid "General Punctuation" +msgstr "Obecná interpunkční znaménka" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:317 +msgid "Superscripts and Subscripts" +msgstr "Horní a dolní indexy" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:321 +msgid "Currency Symbols" +msgstr "Symboly měn" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:325 +msgid "Combining Diacritical Marks for Symbols" +msgstr "Kombinace diakritických značek pro symboly" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:329 +msgid "Letterlike Symbols" +msgstr "Symboly podobné písmenům" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:333 +msgid "Number Forms" +msgstr "Formy čísel" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:337 +msgid "Arrows" +msgstr "Šipky" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:341 +msgid "Mathematical Operators" +msgstr "Matematické operátory" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:345 +msgid "Miscellaneous Technical" +msgstr "Různé technické znaky" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:349 +msgid "Control Pictures" +msgstr "Ovládací obrázky" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:353 +msgid "Optical Character Recognition" +msgstr "Optické rozpoznávání znaků" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:357 +msgid "Enclosed Alphanumerics" +msgstr "Uzavřené alfanumerické znaky" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:361 +msgid "Box Drawing" +msgstr "Vykreslování rámečku" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:365 +msgid "Block Elements" +msgstr "Blokové prvky" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:369 +msgid "Geometric Shapes" +msgstr "Geometrické tvary" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:373 +msgid "Miscellaneous Symbols" +msgstr "Různé symboly" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:377 +msgid "Dingbats" +msgstr "Dingbats" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:381 +msgid "Miscellaneous Mathematical Symbols-A" +msgstr "Různé matematické symboly-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:385 +msgid "Supplemental Arrows-A" +msgstr "Doplňkové šipky-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:389 +msgid "Braille Patterns" +msgstr "Braillské vzory" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:393 +msgid "Supplemental Arrows-B" +msgstr "Doplňkové šipky-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:397 +msgid "Miscellaneous Mathematical Symbols-B" +msgstr "Různé matematické symboly-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:401 +msgid "Supplemental Mathematical Operators" +msgstr "Doplňkové matematické operátory" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:405 +msgid "Miscellaneous Symbols and Arrows" +msgstr "Různé symboly a šipky" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:409 +msgid "Glagolitic" +msgstr "Glagolitičtina" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:413 +msgid "Latin Extended-C" +msgstr "Rozšířená latinka-C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:417 +msgid "Coptic" +msgstr "Koptština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:421 +msgid "Georgian Supplement" +msgstr "Doplněk gruzínštiny" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:425 +msgid "Tifinagh" +msgstr "Tifinagh" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:429 +msgid "Ethiopic Extended" +msgstr "Rozšířená etiopština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:433 +msgid "Cyrillic Extended-A" +msgstr "Rozšířená cyrilice-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:437 +msgid "Supplemental Punctuation" +msgstr "Doplňkové interpunkce" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:441 +msgid "CJK Radicals Supplement" +msgstr "Doplňkové radikály CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:445 +msgid "Kangxi Radicals" +msgstr "Radikály Kangxi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:449 +msgid "Ideographic Description Characters" +msgstr "Znaky ideografického popisu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:453 +msgid "CJK Symbols and Punctuation" +msgstr "Symboly a interpunkce CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:457 +msgid "Hiragana" +msgstr "Hiragana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:461 +msgid "Katakana" +msgstr "Katakana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:465 +msgid "Bopomofo" +msgstr "Bopomofo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:469 +msgid "Hangul Compatibility Jamo" +msgstr "Hangul Jamo kompatibilní" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:473 +msgid "Kanbun" +msgstr "Kanbun" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:477 +msgid "Bopomofo Extended" +msgstr "Rozšířené bopomofo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:481 +msgid "CJK Strokes" +msgstr "CJK tahy" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:485 +msgid "Katakana Phonetic Extensions" +msgstr "Fonetické rozšíření katakany" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:489 +msgid "Enclosed CJK Letters and Months" +msgstr "Uzavřené písmo CJK a měsíce" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:493 +msgid "CJK Compatibility" +msgstr "CJK kompatibilní" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:497 +msgid "CJK Unified Ideographs Extension A" +msgstr "CJK rozšíření sdružených ideogramů A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:501 +msgid "Yijing Hexagram Symbols" +msgstr "Hexagramové symboly Yijing" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:505 +msgid "CJK Unified Ideographs" +msgstr "Jednotné ideografie CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:509 +msgid "Yi Syllables" +msgstr "Slabiky Yi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:513 +msgid "Yi Radicals" +msgstr "Radikály Yi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:517 +msgid "Lisu" +msgstr "Lisu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:521 +msgid "Vai" +msgstr "Vai" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:525 +msgid "Cyrillic Extended-B" +msgstr "Rozšířená cyrilice-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:529 +msgid "Bamum" +msgstr "Bamumština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:533 +msgid "Modifier Tone Letters" +msgstr "Modifikátory tónových písmen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:537 +msgid "Latin Extended-D" +msgstr "Rozšířená latinka-D" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:541 +msgid "Syloti Nagri" +msgstr "Syloti Nagri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:545 +msgid "Common Indic Number Forms" +msgstr "Formy běžných indických čísel" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:549 +msgid "Phags-pa" +msgstr "Phags-pa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:553 +msgid "Saurashtra" +msgstr "Saurashtra" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:557 +msgid "Devanagari Extended" +msgstr "Rozšířené devanagari" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:561 +msgid "Kayah Li" +msgstr "Kayah Li" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:565 +msgid "Rejang" +msgstr "Rejang" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:569 +msgid "Hangul Jamo Extended-A" +msgstr "Rozšířené Hangul Jamo A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:573 +msgid "Javanese" +msgstr "Jávština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:577 +msgid "Myanmar Extended-B" +msgstr "Rozšířená barmština B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:581 +msgid "Cham" +msgstr "Chamština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:585 +msgid "Myanmar Extended-A" +msgstr "Rozšířená barmština A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:589 +msgid "Tai Viet" +msgstr "Tai Viet" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:593 +msgid "Meetei Mayek Extensions" +msgstr "Rozšíření Meetei Mayek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:597 +msgid "Ethiopic Extended-A" +msgstr "Rozšířená etiopština A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:601 +msgid "Latin Extended-E" +msgstr "Rozšířená latinka-E" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:605 +msgid "Cherokee Supplement" +msgstr "Doplněk cherokéštiny" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:609 +msgid "Meetei Mayek" +msgstr "Meetei Mayek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:613 +msgid "Hangul Syllables" +msgstr "Slabiky Hangul" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:617 +msgid "Hangul Jamo Extended-B" +msgstr "Rozšířené Hangul Jamo B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:621 +msgid "High Surrogates" +msgstr "Vysoké náhrady" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:625 +msgid "High Private Use Surrogates" +msgstr "Vysoké soukromé použití náhrad" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:629 +msgid "Low Surrogates" +msgstr "Nízké náhrady" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:633 +msgid "Private Use Area" +msgstr "Oblast soukromého užití" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:637 +msgid "CJK Compatibility Ideographs" +msgstr "Ideologie kompatibility CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:641 +msgid "Alphabetic Presentation Forms" +msgstr "Abecední prezentační formy" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:645 +msgid "Arabic Presentation Forms-A" +msgstr "Arabská prezentační forma-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:649 +msgid "Variation Selectors" +msgstr "Variátory výběru" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:653 +msgid "Vertical Forms" +msgstr "Vertikální formy" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:657 +msgid "Combining Half Marks" +msgstr "Kombinace poločasů" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:661 +msgid "CJK Compatibility Forms" +msgstr "Formy kompatibilit CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:665 +msgid "Small Form Variants" +msgstr "Malé varianty forem" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:669 +msgid "Arabic Presentation Forms-B" +msgstr "Arabská prezentační forma-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:673 +msgid "Halfwidth and Fullwidth Forms" +msgstr "Formy s poloviční a plnou šířkou" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:677 +msgid "Specials" +msgstr "Speciály" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:681 +msgid "Linear B Syllabary" +msgstr "Lineární B syllabary" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:685 +msgid "Linear B Ideograms" +msgstr "Lineární B ideogramy" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:689 +msgid "Aegean Numbers" +msgstr "Egejské číslice" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:693 +msgid "Ancient Greek Numbers" +msgstr "Starověké řecké číslice" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:697 +msgid "Ancient Symbols" +msgstr "Starověké symboly" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:701 +msgid "Phaistos Disc" +msgstr "Disk z Faistu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:705 +msgid "Lycian" +msgstr "Likijské písmo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:709 +msgid "Carian" +msgstr "Kárské písmo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:713 +msgid "Coptic Epact Numbers" +msgstr "Koptské číslice" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:717 +msgid "Old Italic" +msgstr "Staré italické písmo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:721 +msgid "Gothic" +msgstr "Gotické písmo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:725 +msgid "Old Permic" +msgstr "Staré permské písmo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:729 +msgid "Ugaritic" +msgstr "Ugaritské písmo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:733 +msgid "Old Persian" +msgstr "Staré perské písmo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:737 +msgid "Deseret" +msgstr "Deseret" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:741 +msgid "Shavian" +msgstr "Shavian" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:745 +msgid "Osmanya" +msgstr "Osmanya" + +# auto translated by TM merge from project: Fedora Release Notes, version: f25, DocId: Development_Tools +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:749 +msgid "Osage" +msgstr "Osage" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:753 +msgid "Elbasan" +msgstr "Elbasan" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:757 +msgid "Caucasian Albanian" +msgstr "Kavkazská albánština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:761 +msgid "Linear A" +msgstr "Lineární A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:765 +msgid "Cypriot Syllabary" +msgstr "Kyperské syllabary" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:769 +msgid "Imperial Aramaic" +msgstr "Císařská aramejština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:773 +msgid "Palmyrene" +msgstr "Palmyrene" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:777 +msgid "Nabataean" +msgstr "Nabataean" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:781 +msgid "Hatran" +msgstr "Hatran" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:785 +msgid "Phoenician" +msgstr "Féničtina" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:789 +msgid "Lydian" +msgstr "Lidijščina" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:793 +msgid "Meroitic Hieroglyphs" +msgstr "Meroitické hieroglyfy" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:797 +msgid "Meroitic Cursive" +msgstr "Meroitická kurzíva" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:801 +msgid "Kharoshthi" +msgstr "Kharóšthí" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:805 +msgid "Old South Arabian" +msgstr "Stará jihoarabština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:809 +msgid "Old North Arabian" +msgstr "Stará severoarabština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:813 +msgid "Manichaean" +msgstr "Manichaean" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:817 +msgid "Avestan" +msgstr "Avestánština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:821 +msgid "Inscriptional Parthian" +msgstr "Parthské nápisy" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:825 +msgid "Inscriptional Pahlavi" +msgstr "Nápisy Pahlaví" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:829 +msgid "Psalter Pahlavi" +msgstr "Psalter Pahlavi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:833 +msgid "Old Turkic" +msgstr "Staroturečtina" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:837 +msgid "Old Hungarian" +msgstr "Staromaďarština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:841 +msgid "Rumi Numeral Symbols" +msgstr "Číselné symboly Rumi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:845 +msgid "Brahmi" +msgstr "Bráhmí" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:849 +msgid "Kaithi" +msgstr "Kaithi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:853 +msgid "Sora Sompeng" +msgstr "Sora Sompeng" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:857 +msgid "Chakma" +msgstr "Čakmovština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:861 +msgid "Mahajani" +msgstr "Mahajánština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:865 +msgid "Sharada" +msgstr "Sharada" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:869 +msgid "Sinhala Archaic Numbers" +msgstr "Archaické čísla sinhálštiny" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:873 +msgid "Khojki" +msgstr "Khojki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:877 +msgid "Multani" +msgstr "Multani" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:881 +msgid "Khudawadi" +msgstr "Khudawadi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:885 +msgid "Grantha" +msgstr "Grantha" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:889 +msgid "Newa" +msgstr "Névárština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:893 +msgid "Tirhuta" +msgstr "Tirhuta" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:897 +msgid "Siddham" +msgstr "Siddham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:901 +msgid "Modi" +msgstr "Modi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:905 +msgid "Mongolian Supplement" +msgstr "Doplněk mongolštiny" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:909 +msgid "Takri" +msgstr "Takri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:913 +msgid "Ahom" +msgstr "Ahom" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:917 +msgid "Warang Citi" +msgstr "Warang Citi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:921 +msgid "Zanabazar Square" +msgstr "Zanzibarské čtverce" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:925 +msgid "Soyombo" +msgstr "Soyombo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:929 +msgid "Pau Cin Hau" +msgstr "Pau Cin Hau" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:933 +msgid "Bhaiksuki" +msgstr "Bhaiksuki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:937 +msgid "Marchen" +msgstr "Marchen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:941 +msgid "Masaram Gondi" +msgstr "Masaram Gondi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:945 +msgid "Cuneiform" +msgstr "Klínové písmo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:949 +msgid "Cuneiform Numbers and Punctuation" +msgstr "Číslice a interpunkce klínového písma" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:953 +msgid "Early Dynastic Cuneiform" +msgstr "Klínové písmo rané dynastie" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:957 +msgid "Egyptian Hieroglyphs" +msgstr "Egyptské hieroglyfy" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:961 +msgid "Anatolian Hieroglyphs" +msgstr "Anatolské hieroglyfy" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:965 +msgid "Bamum Supplement" +msgstr "Doplněk Bamum" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:969 +msgid "Mro" +msgstr "Mro" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:973 +msgid "Bassa Vah" +msgstr "Bassa Vah" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:977 +msgid "Pahawh Hmong" +msgstr "Pahawh Hmong" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:981 +msgid "Miao" +msgstr "Miao" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:985 +msgid "Ideographic Symbols and Punctuation" +msgstr "Ideografické symboly a interpunkce" + +# auto translated by TM merge from project: Fedora Release Notes, version: f25, DocId: Development_Tools +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:989 +msgid "Tangut" +msgstr "Tangutština" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:993 +msgid "Tangut Components" +msgstr "Komponenty tangutštiny" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:997 +msgid "Kana Supplement" +msgstr "Doplněk kana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1001 +msgid "Kana Extended-A" +msgstr "Rozšířená kana A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1005 +msgid "Nushu" +msgstr "Nushu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1009 +msgid "Duployan" +msgstr "Duployan" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1013 +msgid "Shorthand Format Controls" +msgstr "Kontroly zkratkového formátu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1017 +msgid "Byzantine Musical Symbols" +msgstr "Byzantské hudební symboly" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1021 +msgid "Musical Symbols" +msgstr "Hudební symboly" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1025 +msgid "Ancient Greek Musical Notation" +msgstr "Starověká řecká hudební notace" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1029 +msgid "Tai Xuan Jing Symbols" +msgstr "Tai Xuan Jing symboly" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1033 +msgid "Counting Rod Numerals" +msgstr "Čínské početní tyčky" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1037 +msgid "Mathematical Alphanumeric Symbols" +msgstr "Matematické alfanumerické symboly" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1041 +msgid "Sutton SignWriting" +msgstr "Znakopis Sutonové" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1045 +msgid "Glagolitic Supplement" +msgstr "Doplněk glagolitičtiny" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1049 +msgid "Mende Kikakui" +msgstr "Mende Kikakui" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1053 +msgid "Adlam" +msgstr "Adlam" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1057 +msgid "Arabic Mathematical Alphabetic Symbols" +msgstr "Arabské matematické abecední symboly" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1061 +msgid "Mahjong Tiles" +msgstr "Mahjongské dlaždice" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1065 +msgid "Domino Tiles" +msgstr "Domino dlaždice" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1069 +msgid "Playing Cards" +msgstr "Hrací karty" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1073 +msgid "Enclosed Alphanumeric Supplement" +msgstr "Uzavřený alfanumerický doplněk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1077 +msgid "Enclosed Ideographic Supplement" +msgstr "Uzavřený ideografický doplněk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1081 +msgid "Miscellaneous Symbols and Pictographs" +msgstr "Různé symboly a piktogramy" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1085 +msgid "Emoticons" +msgstr "Emotikony" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1089 +msgid "Ornamental Dingbats" +msgstr "Ozdobné Dingbats" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1093 +msgid "Transport and Map Symbols" +msgstr "Symboly dopravy a map" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1097 +msgid "Alchemical Symbols" +msgstr "Alchymistické symboly" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1101 +msgid "Geometric Shapes Extended" +msgstr "Geometrické tvary rozšířené" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1105 +msgid "Supplemental Arrows-C" +msgstr "Doplňkové šipky-C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1109 +msgid "Supplemental Symbols and Pictographs" +msgstr "Doplňkové symboly a piktogramy" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1113 +msgid "CJK Unified Ideographs Extension B" +msgstr "CJK rozšíření sdružených ideogramů B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1117 +msgid "CJK Unified Ideographs Extension C" +msgstr "CJK rozšíření sdružených ideogramů C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1121 +msgid "CJK Unified Ideographs Extension D" +msgstr "CJK rozšíření sdružených ideogramů D" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1125 +msgid "CJK Unified Ideographs Extension E" +msgstr "CJK rozšíření sdružených ideogramů E" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1129 +msgid "CJK Unified Ideographs Extension F" +msgstr "CJK rozšíření sdružených ideogramů F" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1133 +msgid "CJK Compatibility Ideographs Supplement" +msgstr "Doplněk Ideologie kompatibility CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1137 +msgid "Tags" +msgstr "Tagy" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1141 +msgid "Variation Selectors Supplement" +msgstr "Dodatek výběru variant" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1145 +msgid "Supplementary Private Use Area-A" +msgstr "Doplňková oblast pro soukromé použití A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1149 +msgid "Supplementary Private Use Area-B" +msgstr "Doplňková oblast pro soukromé použití B" + +#: ../tools/main.vala:54 +msgid "List engine name only" +msgstr "Vypsat pouze název enginu" + +#: ../tools/main.vala:70 ../tools/main.vala:195 ../tools/main.vala:205 +msgid "Can't connect to IBus.\n" +msgstr "Nelze se připojit k IBusu.\n" + +#: ../tools/main.vala:96 +#, c-format +msgid "language: %s\n" +msgstr "jazyk: %s\n" + +#: ../tools/main.vala:164 +msgid "No engine is set.\n" +msgstr "Engine není nastaven.\n" + +#: ../tools/main.vala:172 +msgid "Set global engine failed.\n" +msgstr "Nepodařilo se nastavit globální engine.\n" + +#: ../tools/main.vala:177 +msgid "Get global engine failed.\n" +msgstr "Nepodařilo se získat globální engine.\n" + +#: ../tools/main.vala:220 +msgid "Read the system registry cache." +msgstr "Číst mezipaměť systémového registru." + +#: ../tools/main.vala:222 +msgid "Read the registry cache FILE." +msgstr "Číst mezipaměť souboru registru." + +#: ../tools/main.vala:240 ../tools/main.vala:245 +msgid "The registry cache is invalid.\n" +msgstr "Neplatná mezipaměť registru.\n" + +#: ../tools/main.vala:260 +msgid "Write the system registry cache." +msgstr "Zapsat mezipaměť systémového registru." + +#: ../tools/main.vala:262 +msgid "Write the registry cache FILE." +msgstr "Zapsat mezipaměť souboru registru." + +#: ../tools/main.vala:314 +msgid "Resetting…" +msgstr "Obnovení..." + +#: ../tools/main.vala:328 +msgid "Done" +msgstr "Hotovo" + +#: ../tools/main.vala:373 +msgid "Set or get engine" +msgstr "Nastavit nebo získat engine" + +#: ../tools/main.vala:374 +msgid "Exit ibus-daemon" +msgstr "Ukončit démona IBusu" + +#: ../tools/main.vala:375 +msgid "Show available engines" +msgstr "Zobrazit dostupné enginy" + +#: ../tools/main.vala:376 +msgid "(Not implemented)" +msgstr "(Není implementováno)" + +#: ../tools/main.vala:377 +msgid "Restart ibus-daemon" +msgstr "Restartovat démona IBusu" + +#: ../tools/main.vala:378 +msgid "Show version" +msgstr "Zobrazit verzi" + +#: ../tools/main.vala:379 +msgid "Show the content of registry cache" +msgstr "Zobrazit obsah mezipaměti registru" + +#: ../tools/main.vala:380 +msgid "Create registry cache" +msgstr "Vytvořit mezipaměti registru" + +#: ../tools/main.vala:381 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "Vypsat adresu D-Bus démona IBusu" + +#: ../tools/main.vala:382 +msgid "Show the configuration values" +msgstr "Zobrazit konfigurační hodnoty" + +#: ../tools/main.vala:383 +msgid "Reset the configuration values" +msgstr "Obnovit konfigurační hodnoty" + +#: ../tools/main.vala:385 +msgid "Save emoji on dialog to clipboard" +msgstr "Uložit emoji z dialogu do schránky" + +#: ../tools/main.vala:387 +msgid "Show this information" +msgstr "Zobrazit tuto informaci" + +#: ../tools/main.vala:393 +#, c-format +msgid "Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "Použití: %s PŘÍKAZ [VOLBY...]\n" +"\n" + +#: ../tools/main.vala:394 +msgid "Commands:\n" +msgstr "Příkazy:\n" + +#: ../tools/main.vala:423 +#, c-format +msgid "%s is unknown command!\n" +msgstr "%s je neznámý příkaz!\n" + +#: ../ui/gtk3/emojier.vala:245 +msgid "Show emoji variants" +msgstr "Zobrazit varianty emoji" + +#: ../ui/gtk3/emojier.vala:250 +msgid "Menu" +msgstr "Nabídka" + +#: ../ui/gtk3/emojier.vala:273 +msgid "Favorites" +msgstr "Oblíbené" + +#: ../ui/gtk3/emojier.vala:274 +msgid "Others" +msgstr "Ostatní" + +#: ../ui/gtk3/emojier.vala:275 +msgid "Open Unicode choice" +msgstr "Otevřít volbu Unicode" + +#: ../ui/gtk3/emojier.vala:445 ../ui/gtk3/emojier.vala:826 +#: ../ui/gtk3/panel.vala:1149 +msgid "Emoji Choice" +msgstr "Výběr emoji:" + +#: ../ui/gtk3/emojier.vala:451 +msgid "Type annotation or choose emoji" +msgstr "Napište anotaci nebo vyberte emoji" + +#: ../ui/gtk3/emojier.vala:948 +msgid "Unicode Choice" +msgstr "Volba Unicode" + +#: ../ui/gtk3/emojier.vala:950 +msgid "Bring back emoji choice" +msgstr "Přivést zpět na výběr emoji" + +#: ../ui/gtk3/emojier.vala:1016 +msgid "Loading a Unicode dictionary:" +msgstr "Načítání slovníku Unicode:" + +#: ../ui/gtk3/emojier.vala:1071 +msgid "Page Down" +msgstr "Další strana" + +#: ../ui/gtk3/emojier.vala:1082 +msgid "Page Up" +msgstr "Předchozí strana" + +#: ../ui/gtk3/emojier.vala:1236 +#, c-format +msgid "Code point: %s" +msgstr "Kódový bod: %s" + +#: ../ui/gtk3/emojier.vala:1242 +msgid "Has emoji variants" +msgstr "Obsahuje varianty emoji" + +#: ../ui/gtk3/emojier.vala:1377 ../ui/gtk3/emojier.vala:1391 +#, c-format +msgid "Description: %s" +msgstr "Popis: %s" + +#: ../ui/gtk3/emojier.vala:1377 +msgid "None" +msgstr "Žádný" + +#: ../ui/gtk3/emojier.vala:1402 +#, c-format +msgid "Annotations: %s" +msgstr "Anotace: %s" + +#: ../ui/gtk3/emojier.vala:1428 +#, c-format +msgid "Name: %s" +msgstr "Název: %s" + +#: ../ui/gtk3/emojier.vala:1436 +#, c-format +msgid "Alias: %s" +msgstr "Alias: %s" + +#: ../ui/gtk3/emojierapp.vala:56 +msgid "Canceled to choose an emoji." +msgstr "Vybírání emoji zrušeno." + +#: ../ui/gtk3/emojierapp.vala:77 +msgid "Copied an emoji to your clipboard." +msgstr "Emoji zkopírováno do schránky." + +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ../ui/gtk3/emojierapp.vala:97 +msgid "\"FONT\" for emoji characters on emoji dialog" +msgstr "\"PÍSMO\" pro znaky emoji v dialogu emoji." + +#: ../ui/gtk3/emojierapp.vala:98 +msgid "FONT" +msgstr "PÍSMO" + +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ../ui/gtk3/emojierapp.vala:103 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" +msgstr "\"JAZYK\" pro anotace v dialogu emoji. Např. \"cs\"" + +#: ../ui/gtk3/emojierapp.vala:104 +msgid "LANG" +msgstr "JAZYK" + +#: ../ui/gtk3/emojierapp.vala:106 +msgid "Emoji annotations can be match partially" +msgstr "Anotace emoji se mohou částečně shodovat" + +#: ../ui/gtk3/emojierapp.vala:110 +msgid "Match with the length of the specified integer" +msgstr "Odpovídá délce zadaného celku" + +#: ../ui/gtk3/emojierapp.vala:114 +msgid "Match with the condition of the specified integer" +msgstr "Odpovídá podmínce zadaného celku" + +#: ../ui/gtk3/panel.vala:282 ../ui/gtk3/panel.vala:313 +msgid "IBus Panel" +msgstr "Panel IBus" + +#: ../ui/gtk3/panel.vala:710 +msgid "IBus Update" +msgstr "Aktualizace IBus" + +#: ../ui/gtk3/panel.vala:711 ../ui/gtk3/panel.vala:722 +msgid "Super+space is now the default hotkey." +msgstr "Klávesa super+mezerník je nyní výchozí klávesovou zkratkou." + +#: ../ui/gtk3/panel.vala:1121 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus je inteligentní vstupní sběrnice pro Linux / Unix." + +#: ../ui/gtk3/panel.vala:1125 +msgid "translator-credits" +msgstr "Kredit-překladatelům" + +#: ../ui/gtk3/panel.vala:1144 +msgid "Preferences" +msgstr "Předvolby" + +#: ../ui/gtk3/panel.vala:1181 +msgid "Restart" +msgstr "Restartovat" + +#: ../ui/gtk3/panel.vala:1185 +msgid "Quit" +msgstr "Ukončit" + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ../ui/gtk3/propertypanel.vala:368 ../ui/gtk3/propertypanel.vala:376 +msgid "default:LTR" +msgstr "implicitně:LTR" diff --git a/po/da.po b/po/da.po index c1c387383..be085eec4 100644 --- a/po/da.po +++ b/po/da.po @@ -1,194 +1,534 @@ -# translation of ibus.pot to Danish # Danish translation of ibus. -# Copyright (C) 2008 Peng Huang +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2021 Takao Fujiwara # This file is distributed under the same license as the ibus package. -# +# # Translators: -# Kris Thomsen , 2009, 2011. +# Kris Thomsen , 2009,2011 +# scootergrisen , 2017. #zanata, 2020. +# fujiwara , 2018. #zanata +# scootergrisen , 2018. #zanata, 2020. +# scootergrisen , 2019. #zanata, 2020. msgid "" msgstr "" -"Project-Id-Version: IBus\n" -"Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/list\n" -"POT-Creation-Date: 2011-05-13 11:21+0900\n" -"PO-Revision-Date: 2011-07-18 20:16+0000\n" -"Last-Translator: kristho \n" -"Language-Team: Danish \n" +"Project-Id-Version: ibus 1.5.20\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2020-09-03 21:21+0900\n" +"PO-Revision-Date: 2020-10-01 11:30+0000\n" +"Last-Translator: scootergrisen \n" +"Language-Team: Danish \n" +"Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: da\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.2.2\n" -#: ../bus/ibus.desktop.in.h:1 -msgid "IBus" -msgstr "IBus" +#. Translators: Here “Preload” is a verb +#: data/dconf/org.freedesktop.ibus.gschema.xml:11 +msgid "Preload engines" +msgstr "Forindlæs motorer" + +#. Translators: Tooltip for the button “Preload Engines” +#: data/dconf/org.freedesktop.ibus.gschema.xml:13 +msgid "Preload engines during ibus starts up" +msgstr "Forindlæs motorer under opstarten af IBus" -#: ../bus/ibus.desktop.in.h:2 -msgid "Input Method Framework" -msgstr "Framework for inputmetode" +#: data/dconf/org.freedesktop.ibus.gschema.xml:17 +msgid "Engines order" +msgstr "Rækkefølge for motorer" -#: ../bus/ibus.desktop.in.h:3 -msgid "Start IBus Input Method Framework" -msgstr "Start IBus, framework for inputmetode" +#: data/dconf/org.freedesktop.ibus.gschema.xml:18 +msgid "Saved engines order in input method list" +msgstr "Gemte rækkefølge på motorer i indtastningsmetodeliste" -#: ../ibus/_config.py.in:40 +#: data/dconf/org.freedesktop.ibus.gschema.xml:22 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "Pop op-forsinkelse i millisekunder for IME-skifter-vindue" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:23 msgid "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +"Set popup delay milliseconds to show IME switcher window. The default is " +"400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " +"show the window and switch prev/next engines." msgstr "" -"Ophavsret (c) 2007-2010 Peng Huang\n" -"Ophavsret (c) 2007-2010 Red Hat, Inc." +"Sæt pop op-forsinkelse millisekunder som IME-skifter-vindue skal vises. " +"Standarden er 400. 0 = Vis vinduet med det samme. 0 < Forsinkelse " +"millisekunder. 0 > Vis ikke vinduet og skift til forrige/næste motorer." -#: ../ibus/lang.py:41 -msgid "Other" -msgstr "Andre" +#: data/dconf/org.freedesktop.ibus.gschema.xml:27 +msgid "Saved version number" +msgstr "Gemt versionsnummer" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:28 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" +"Det gemte versionnummer vil blive brugt til at tjekke forskellen mellem " +"versionen af den tidligere installerede ibus og en af den nuværende ibus." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:32 +msgid "Latin layouts which have no ASCII" +msgstr "Latinske layout som ikke har nogen ASCII" -#: ../ui/gtk/candidatepanel.py:264 -msgid "Previous page" -msgstr "Forrige side" +#: data/dconf/org.freedesktop.ibus.gschema.xml:33 +msgid "US layout is appended to the Latin layouts. variant can be omitted." +msgstr "US-layout tilføjes til de Latinske layouts. Variant kan udelades." -#: ../ui/gtk/candidatepanel.py:269 -msgid "Next page" -msgstr "Næste side" +#: data/dconf/org.freedesktop.ibus.gschema.xml:37 +msgid "Use xmodmap" +msgstr "Brug xmodmap" -#: ../ui/gtk/main.py:62 +#: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" -"Some input methods have been installed, removed or updated. Please restart " -"ibus input platform." +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" -"Nogen inputmetoder er blevet installeret, fjernet eller opdateret. Genstart " -"inputplatformen IBus." +"Kør xmodmap hvis .xmodmap eller .Xmodmap findes når der skiftes ibus-motorer." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 +msgid "Use system keyboard layout" +msgstr "Brug systemets tastaturlayout" -#: ../ui/gtk/main.py:66 -msgid "Restart Now" -msgstr "Genstart nu" +#: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 +msgid "Use system keyboard (XKB) layout" +msgstr "Brug systemets tastaturlayout (XKB)" -#: ../ui/gtk/main.py:67 -msgid "Later" -msgstr "Senere" +#: data/dconf/org.freedesktop.ibus.gschema.xml:47 +msgid "Embed Preedit Text" +msgstr "Indbyg forudredigeret tekst" -#: ../ui/gtk/panel.py:116 -msgid "IBus Panel" -msgstr "IBus-panel" +#: data/dconf/org.freedesktop.ibus.gschema.xml:48 +msgid "Embed Preedit Text in Application Window" +msgstr "Indlejr forudredigeret tekst i programvindue" -#: ../ui/gtk/panel.py:122 -msgid "IBus input method framework" -msgstr "IBus-ramme for inddatametode" +#: data/dconf/org.freedesktop.ibus.gschema.xml:52 +msgid "Use global input method" +msgstr "Brug global indtastningsmetode" -#: ../ui/gtk/panel.py:352 -msgid "Restart" -msgstr "Genstart" +#: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 +msgid "Share the same input method among all applications" +msgstr "Brug den samme indtastningsmetode i alle programmer" -#: ../ui/gtk/panel.py:439 -msgid "Turn off input method" -msgstr "Sluk for inputmetode" +#: data/dconf/org.freedesktop.ibus.gschema.xml:57 +msgid "Enable input method by default" +msgstr "Aktivér indtastningsmetode som standard" -#: ../ui/gtk/panel.py:478 -msgid "No input window" -msgstr "Intet inputvindue" +#: data/dconf/org.freedesktop.ibus.gschema.xml:58 +msgid "Enable input method by default when the application gets input focus" +msgstr "" +"Aktivér indtastningsmetode som standard når programmet modtager " +"indtastningsfokus" -#: ../ui/gtk/panel.py:509 -msgid "IBus is an intelligent input bus for Linux/Unix." -msgstr "IBus er en intelligent inddatabus til Linux/Unix." +#: data/dconf/org.freedesktop.ibus.gschema.xml:62 +msgid "DConf preserve name prefixes" +msgstr "DConf bevar navnepræfiks" -#: ../ui/gtk/panel.py:513 -msgid "translator-credits" +#: data/dconf/org.freedesktop.ibus.gschema.xml:63 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "Præfiks af DConf-taster til stop af navnekonvertering" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:70 +msgid "Trigger shortcut keys" +msgstr "Udløs tastaturgenveje" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:71 +#: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 +msgid "The shortcut keys for turning input method on or off" +msgstr "Genvejstasterne for at tænde og slukke indtastningsmetode" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:75 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "Udløs tastaturgenveje for gtk_accelerator_parse" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:80 +msgid "Enable shortcut keys" +msgstr "Aktivér genvejstaster" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:81 +msgid "The shortcut keys for turning input method on" +msgstr "Genvejstasterne for at tænde indtastningsmetode" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:85 +msgid "Disable shortcut keys" +msgstr "Deaktivér genvejstaster" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:86 +msgid "The shortcut keys for turning input method off" +msgstr "Genvejstasterne for slukning af indtastningsmetode" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:90 +#: data/dconf/org.freedesktop.ibus.gschema.xml:95 +msgid "Next engine shortcut keys" +msgstr "Genvejstaster for næste motor" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:91 +#: data/dconf/org.freedesktop.ibus.gschema.xml:96 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "Genvejstasterne for at skrive til næste indtastningsmetode i listen" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:100 +#: data/dconf/org.freedesktop.ibus.gschema.xml:105 +msgid "Prev engine shortcut keys" +msgstr "Genvejstaster for forrige motor" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:101 +#: data/dconf/org.freedesktop.ibus.gschema.xml:106 +msgid "The shortcut keys for switching to the previous input method" +msgstr "Genvejstasterne for at skifte til forrige indtastningsmetode" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:112 +msgid "Auto hide" +msgstr "Skjul automatisk" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:113 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" msgstr "" -"Kris Thomsen\n" -"\n" -"Dansk-gruppen \n" -"Mere info: http://www.dansk-gruppen.dk" +"Opførsel for egenskabspanelet. 0 = Vis ikke, 1 = Skjul automatisk, 2 = Vis " +"altid" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:117 +#: data/dconf/org.freedesktop.ibus.gschema.xml:121 +msgid "Language panel position" +msgstr "Placering for sprogpanel" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:125 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "Følg inputmarkøren hvis panelet altid vises" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:126 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" +"Hvis sand, følger panelet inputmarkøren hvis panelet altid vises. Hvis " +"falsk, vises panelet på en fastsat placering." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:130 +msgid "The milliseconds to show property panel" +msgstr "Millisekunder som egenskabspanelet skal vises i" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:131 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" +"Millisekunderne som egenskabspanelet skal vises i efter fokus-ind eller " +"egenskaber ændres." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:135 +msgid "Orientation of lookup table" +msgstr "Orientering af opslagstabel" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:136 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "Orientering af opslagstabel. 0 = Horisontal, 1 = Vertikal" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:140 +#: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 +#: setup/setup.ui:475 +msgid "Show icon on system tray" +msgstr "Vis ikon i systembakke" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:145 +msgid "Show input method name" +msgstr "Vis navn på indtastningsmetode" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 +msgid "Show input method name on language bar" +msgstr "Vis navn på indtastningsmetode i sprogpanel" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:150 +msgid "RGBA value of XKB icon" +msgstr "RGBA-værdi for XKB-ikon" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:151 +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form 'rgba(r," +"g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 to 255 or " +"percentage values in the range 0% to 100%, and 'a' is a floating point value " +"in the range 0 to 1 of the alpha." +msgstr "" +"XKB-ikon viser layoutstrengen og strengen gengives med RGBA-værdien. RGBA-" +"værdien kan være 1. Et farvenavn fra X11, 2. En heksadecimalværdi i formatet " +"'#rrggbb' hvor 'r', 'g' og 'b' er heksadecimale cifre af den røde, grønne og " +"blå, 3. En RGB-farve i formatet 'rgb(r,g,b)' eller 4. En RGBA-farve i " +"formatet 'rgba(r,g,b,a)' hvor 'r', 'g', og 'b' enten er heltal fra 0 til 255 " +"eller procentværdier fra 0% til 100%, og 'a' hvis det er en kommatalværdi " +"fra 0 til 1 af alfaen." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:155 +msgid "The milliseconds to show the panel icon for a property" +msgstr "Millisekunder som panelikonet for en egenskab skal vises i" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:156 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" +"Millisekunder som panelikonet vises fra motorikonet til et egenskabsikon når " +"motorer skiftes hvis egenskaben er angivet af værdien af icon-prop-key i " +"IBusEngineDesc. Hvis værdien er 0, er der ingen forsinkelsestid og " +"egenskabsikonet vises med det samme." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:160 +msgid "Use custom font" +msgstr "Brug tilpasset skrifttype" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:161 +msgid "Use custom font name for language panel" +msgstr "Brug tilpasset skrifttypenavn til sprogpanel" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:165 +#: data/dconf/org.freedesktop.ibus.gschema.xml:192 +msgid "Custom font" +msgstr "Tilpasset skrifttype" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:166 +msgid "Custom font name for language panel" +msgstr "Tilpasset skrifttypenavn til sprogpanel" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:170 setup/setup.ui:1305 +msgid "Choose glyphs with input method's language on candidate window" +msgstr "Vælg glyffer med inputmetodens sprog i kandidatvinduet" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:171 +msgid "" +"Some code points have the different glyphs and Pango determines the glyphs " +"from the language attribute. Pango chooses glyphs from the IBus engine's " +"language if the value is true and choose them from the desktop locale if the " +"value is false." +msgstr "" +"Nogle kodepunkter beslutter glyffer for de forskellige glyffer og Pango fra " +"sprogattributten. Pango vælger glyffer fra IBus-motorens sprog hvis værdien " +"er sand og vælger dem fra skrivebordets lokalitet hvis værdien er falsk." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:182 +msgid "Unicode shortcut keys for gtk_accelerator_parse" +msgstr "Unicode-genvejstaster til gtk_accelerator_parse" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:183 +msgid "The shortcut keys for turning Unicode typing on or off" +msgstr "Genvejstasterne til at slå Unicode-skrivning til eller fra" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:187 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "Emoji-genvejstaster for gtk_accelerator_parse" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:188 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "Genvejstasterne til at slå emoji-indtastning til eller fra" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:193 +msgid "Custom font name for emoji characters on emoji dialog" +msgstr "Tilpasset skrifttypenavn for emoji-tegn i emoji-dialog" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:197 +msgid "Default language for emoji dictionary" +msgstr "Standardsprog for emojiordbog" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:198 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict ." +msgstr "" +"Vælg et standardsprog af emoji-ordbøger i emoji-dialogen. Værdien $lang " +"anvendes på /usr/share/ibus/dicts/emoji-$lang.dict ." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:202 +msgid "favorite emoji list on emoji dialog" +msgstr "favorit emojiliste i emoji-dialog" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:203 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "" +"Du kan vise favorit emojierne i emojiliste hvis denne liste har nogen tegn." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:207 +msgid "favorite emoji annotation list on emoji dialog" +msgstr "favorit emoji-annonteringsliste i emoji-dialog" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:208 +msgid "You can assign an annotation for a favorite emoji in this list." +msgstr "Du kan tildele en annotering til en favorit-emoji i denne liste." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:212 +msgid "Whether emoji annotations can be match partially or not" +msgstr "Hvorvidt emoji-annonteringer kan matches delvist eller ej" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:213 +msgid "" +"Whether emoji annotations can be matched with a partial string instead of " +"the exact match or not." +msgstr "" +"Hvorvidt emoji-annoteringer kan matches med en delvis streng i stedet for " +"det præcise match eller ej." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:217 +msgid "Match emoji annotations with the specified length" +msgstr "Match emoji-annoteringer med den angivne længde" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:218 +msgid "" +"Match emoji annotations partially with more than the specified number of " +"characters instead of the exact match." +msgstr "" +"Match emoji-annoteringer delvist med flere end det angivne antal tegn i " +"stedet for det præcise match." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:222 +msgid "Choose a condition to match emoji annotations partially" +msgstr "Vælg en betingelse til delvist at matche emoji-annonteringer" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:223 +msgid "" +"Choose one of the following conditions to match emoji annotations partially: " +"0 == Prefix match, 1 == Suffix match, 2 == Containing match" +msgstr "" +"Vælg en af følgende betingelser for at matche emoji-annoteringer delvist: 0 " +"== Præfiks match, 1 == Suffiks match, 2 == Indeholdende match" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:227 +msgid "Load the emoji data at the time of startup" +msgstr "Indlæs emoji-dataene ved opstart" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:228 +msgid "" +"Load the emoji data at the time of startup if true. About 10MB memory is " +"needed to load the data. Load the emoji data when open the emoji dialog at " +"the beginning if false." +msgstr "" +"Indlæs emoji-dataene ved opstart hvis sand. Det behøves omkring 10 MB " +"hukommelse for at indlæse dataene. Indlæs emoji-dataene når emoji-dialogen " +"åbnes ved begyndelsen hvis falsk." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:232 +msgid "Load the Unicode data at the time of startup" +msgstr "Indlæs unicode-dataene ved opstart" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:233 +msgid "" +"Load the Unicode data at the time of startup if true. About 15MB memory is " +"needed to load the data. Load the Unicode data when open the emoji dialog at " +"the beginning if false. The Unicode data is always loaded after the emoji " +"data is loaded even if true." +msgstr "" +"Indlæs unicode-dataene ved opstart hvis sand. Det behøves omkring 15 MB " +"hukommelse for at indlæse dataene. Indlæs unicode-dataene når emoji-dialogen " +"åbnes ved begyndelsen hvis falsk. Unicode-dataene indlæses altid efter emoji-" +"dataene indlæses selv hvis sand." + +#: ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "" +"Ophavsret (c) 2007-2010 Peng Huang\n" +"Ophavsret (c) 2007-2010 Red Hat, Inc." -#: ../ui/gtk/languagebar.py:106 -msgid "About the input method" -msgstr "Om inputmetoden" +#: ibus/lang.py:41 src/ibusutil.c:209 +msgid "Other" +msgstr "Andre" -#: ../ui/gtk/languagebar.py:214 -msgid "Switch input method" -msgstr "Skift inddatametode" +#: setup/emojilang.py:67 +msgid "Select a language" +msgstr "Vælg et sprog" -#: ../ui/gtk/languagebar.py:357 ../ui/gtk/engineabout.py:33 -#: ../setup/engineabout.py:33 ../setup/setup.ui.h:16 +#: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 +#: setup/main.py:560 +msgid "_Cancel" +msgstr "_Annuller" + +#: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 +msgid "_OK" +msgstr "_OK" + +#: setup/emojilang.py:235 setup/enginedialog.py:205 +msgid "More…" +msgstr "Mere…" + +#: setup/engineabout.py:37 setup/setup.ui:1368 ui/gtk3/panel.vala:1162 msgid "About" msgstr "Om" -#: ../ui/gtk/languagebar.py:361 -msgid "About the Input Method" -msgstr "Om inputmetoden" +#: setup/engineabout.py:40 setup/setup.ui:1391 +msgid "_Close" +msgstr "_Luk" -#: ../ui/gtk/engineabout.py:61 ../setup/engineabout.py:61 +#: setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "Sprog: %s\n" -#: ../ui/gtk/engineabout.py:63 ../setup/engineabout.py:63 +#: setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "Tastaturlayout: %s\n" -#: ../ui/gtk/engineabout.py:65 ../setup/engineabout.py:65 +#: setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "Forfatter: %s\n" -#: ../ui/gtk/engineabout.py:67 ../setup/engineabout.py:67 +#: setup/engineabout.py:81 msgid "Description:\n" msgstr "Beskrivelse:\n" -#: ../setup/main.py:102 -msgid "trigger" -msgstr "udløser" - -#: ../setup/main.py:113 -msgid "enable" -msgstr "aktivér" - -#: ../setup/main.py:124 -msgid "disable" -msgstr "deaktivér" - -#: ../setup/main.py:135 -msgid "next input method" -msgstr "næste inddatametode" +#: setup/enginecombobox.py:139 setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "Vælg en indtastningsmetode" -#: ../setup/main.py:146 -msgid "previous input method" -msgstr "forrige inddatametode" +#. add button +#: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 +msgid "_Add" +msgstr "_Tilføj" -#: ../setup/main.py:286 -msgid "IBus daemon is not started. Do you want to start it now?" -msgstr "IBus-dæmonen er ikke startet. Vil du starte den nu?" +#. create im name & icon column +#: setup/enginetreeview.py:69 setup/setup.ui:838 +msgid "Input Method" +msgstr "Indtastningsmetode" -#: ../setup/main.py:301 -msgid "" -"IBus has been started! If you can not use IBus, please add below lines in $HOME/.bashrc, and relogin your desktop.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" -msgstr "" -"IBus er blevet startet! Hvis du ikke kan bruge IBus, skal du tilføje disse linjer i $HOME/.bashrc, og logge ind og ud igen til dit skrivebord.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +#: setup/ibus-setup.desktop:3 setup/setup.ui:69 +msgid "IBus Preferences" +msgstr "IBus-præferencer" -#: ../setup/main.py:316 -#, python-format -msgid "Select keyboard shortcut for %s" -msgstr "Vælg tastaturgenveje til %s" +#: setup/ibus-setup.desktop:4 +msgid "Set IBus Preferences" +msgstr "Angiv IBus-præferencer" -#: ../setup/keyboardshortcut.py:52 +#: setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Tastaturgenveje" -#: ../setup/keyboardshortcut.py:63 +#: setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "Nøglekode:" -#: ../setup/keyboardshortcut.py:78 +#: setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "Kombinationstaster:" -#: ../setup/keyboardshortcut.py:231 +#. apply button +#: setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "_Anvend" + +#. delete button +#: setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "_Slet" + +#: setup/keyboardshortcut.py:252 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." @@ -196,354 +536,2840 @@ msgstr "" "Tryk venligst på en tast (eller en tastekombination).\n" "Dialogen bliver lukket, når tasten slippes." -#: ../setup/keyboardshortcut.py:233 +#: setup/keyboardshortcut.py:255 msgid "Please press a key (or a key combination)" msgstr "Tryk venligst på en tast (eller en tastekombination)" -#: ../setup/enginecombobox.py:120 -msgid "Select an input method" -msgstr "Vælg en inddatametode" +#: setup/main.py:121 setup/main.py:588 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "Brug genvej med skift for at skifte til forrige indtastningsmetode" -#. create im name & icon column -#: ../setup/enginetreeview.py:64 ../setup/setup.ui.h:33 -msgid "Input Method" -msgstr "Inputmetode" +#: setup/main.py:515 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "IBus-dæmonen kører. Vil du starte den?" -#: ../setup/enginetreeview.py:92 -msgid "Kbd" -msgstr "Kbd" +#: setup/main.py:536 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "" +"IBus er blevet startet! Hvis du ikke kan bruge IBus, så tilføj følgende " +"linjer til din $HOME/.bashrc; og så log ind på dit skrivebord igen.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" -#: ../setup/ibus-setup.desktop.in.h:1 ../setup/setup.ui.h:32 -msgid "IBus Preferences" -msgstr "Indstillinger for IBus" +#. Translators: %d == 5 currently +#: setup/main.py:550 +#, python-format +msgid "IBus daemon could not be started in %d seconds." +msgstr "IBus-dæmon kunne ikke startes på %d sekunder." -#: ../setup/ibus-setup.desktop.in.h:2 -msgid "Set IBus Preferences" -msgstr "Angiv indstillinger for IBus" +#: setup/main.py:562 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "Vælg tastaturgenveje til %s" -#: ../data/ibus.schemas.in.h:1 -msgid "Auto hide" +#. Translators: Title of the window +#: setup/main.py:564 +msgid "switching input methods" +msgstr "skifter indtastningsmetoder" + +#: setup/setup.ui:11 +msgid "Horizontal" +msgstr "Vandret" + +#: setup/setup.ui:14 +msgid "Vertical" +msgstr "Lodret" + +#: setup/setup.ui:25 +msgid "Top left corner" +msgstr "Øverste venstre hjørne" + +#: setup/setup.ui:28 +msgid "Top right corner" +msgstr "Øverste højre hjørne" + +#: setup/setup.ui:31 +msgid "Bottom left corner" +msgstr "Nederste venstre hjørne" + +#: setup/setup.ui:34 +msgid "Bottom right corner" +msgstr "Nederste højre hjørne" + +#: setup/setup.ui:37 +msgid "Custom" +msgstr "Tilpasset" + +#: setup/setup.ui:48 +msgid "Do not show" +msgstr "Vis ikke" + +#: setup/setup.ui:51 +msgid "Hide automatically" msgstr "Skjul automatisk" -#: ../data/ibus.schemas.in.h:2 -msgid "Custom font" -msgstr "Brugertilpasset skrifttype" +#: setup/setup.ui:54 +msgid "Always" +msgstr "Altid" -#: ../data/ibus.schemas.in.h:3 -msgid "Custom font name for language panel" -msgstr "Tilpasset skrifttypenavn til sprogpanel" +#: setup/setup.ui:113 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "Genvejstaster for skift til den næste indtastningsmetode i listen" -#: ../data/ibus.schemas.in.h:4 -msgid "Disable shortcut keys" -msgstr "Deaktivér genvejstaster" +#: setup/setup.ui:115 +msgid "Next input method:" +msgstr "Næste indtastningsmetode:" -#: ../data/ibus.schemas.in.h:5 -msgid "Embed Preedit Text" -msgstr "Indbyg forudredigeret tekst" +#: setup/setup.ui:127 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "Genvejstaster for skift til den forrige indtastningsmetode i listen" -#: ../data/ibus.schemas.in.h:6 -msgid "Embed Preedit Text in Application Window" -msgstr "Indlejr forudredigeret tekst i programvindue" +#: setup/setup.ui:129 +msgid "Previous input method:" +msgstr "Forrige indtastningsmetode:" -#: ../data/ibus.schemas.in.h:7 -msgid "Enable input method by default" -msgstr "Aktivér inputmetode som standard" +#: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 +#: setup/setup.ui:903 setup/setup.ui:957 +msgid "..." +msgstr "..." -#: ../data/ibus.schemas.in.h:8 -msgid "Enable input method by default when the application gets input focus" -msgstr "" -"Aktivér inputmetoder som standard når programmerne modtaget inputfokus" +#: setup/setup.ui:226 +msgid "Enable or disable:" +msgstr "Aktivér eller deaktivér:" -#: ../data/ibus.schemas.in.h:9 -msgid "Enable shortcut keys" -msgstr "Aktivér genvejstaster" +#: setup/setup.ui:238 +msgid "Enable:" +msgstr "Aktivér:" -#: ../data/ibus.schemas.in.h:10 -msgid "Language panel position" -msgstr "Placering for sprogpanel" +#: setup/setup.ui:291 +msgid "Disable:" +msgstr "Deaktivér:" -#: ../data/ibus.schemas.in.h:11 -msgid "Next engine shortcut keys" -msgstr "Genvejstaster for næste motor" +#: setup/setup.ui:345 setup/setup.ui:983 +msgid "Keyboard Shortcuts" +msgstr "Tastaturgenveje" -#: ../data/ibus.schemas.in.h:12 -msgid "Orientation of lookup table" -msgstr "Orientering af opslagstabel" +#: setup/setup.ui:374 +msgid "Set the orientation of candidates in lookup table" +msgstr "Angiv orientering af kandidater i opslagstabel" -#: ../data/ibus.schemas.in.h:13 -msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" -msgstr "Orientering af opslagstabel. 0 = Horisontal, 1 = Vertikal" +#: setup/setup.ui:376 +msgid "Candidates orientation:" +msgstr "Orientering for kandidater:" -#: ../data/ibus.schemas.in.h:14 -msgid "Preload engines" -msgstr "Forindlæs motorer" +#: setup/setup.ui:407 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "Angiv opførsel for hvordan IBus skal vises eller sprogpanelet" -#: ../data/ibus.schemas.in.h:15 -msgid "Preload engines during ibus starts up" -msgstr "Forindlæs motorer under opstarten af IBus" +#: setup/setup.ui:409 +msgid "Show property panel:" +msgstr "Vis egenskabspanel:" -#: ../data/ibus.schemas.in.h:16 -msgid "Prev engine shortcut keys" -msgstr "Genvejstaster for forrige motor" +#: setup/setup.ui:423 +msgid "Language panel position:" +msgstr "Placering af sprogpanel:" -#: ../data/ibus.schemas.in.h:17 ../setup/setup.ui.h:42 -msgid "Share the same input method among all applications" -msgstr "Del den samme inputmetode i alle programmer" +#: setup/setup.ui:494 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "" +"Vis indtastningsmetodens navn i sprogpanelet når tjek-boksen er vinget af" -#: ../data/ibus.schemas.in.h:18 ../setup/setup.ui.h:43 -msgid "Show icon on system tray" -msgstr "Vis ikon i statusfelt" +#: setup/setup.ui:508 +msgid "Embed preedit text in application window" +msgstr "Indlejr forudredigeret tekst i programvindue" -#: ../data/ibus.schemas.in.h:19 -msgid "Show input method name" -msgstr "Vis navn på inputmetode" +#: setup/setup.ui:513 +msgid "Embed the preedit text of input method in the application window" +msgstr "Indlejr forudredigeret tekst for indtastningsmetode i programvinduet" -#: ../data/ibus.schemas.in.h:20 ../setup/setup.ui.h:45 -msgid "Show input method name on language bar" -msgstr "Vis navn på inputmetode i sprogpanel" +#: setup/setup.ui:527 +msgid "Use custom font:" +msgstr "Brug tilpasset skrifttype:" -#: ../data/ibus.schemas.in.h:21 -msgid "" -"The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = " -"Always show" +#: setup/setup.ui:562 setup/setup.ui:1156 +msgid "Font and Style" +msgstr "Skrifttype og stil" + +#: setup/setup.ui:579 +msgid "General" +msgstr "Generelt" + +#: setup/setup.ui:671 +msgid "Add the selected input method into the enabled input methods" msgstr "" -"Sprogpanelets opførsel. 0 = Indlejret i menu, 1 = Skjul automatisk, 2 = Vis " -"altid" +"Tilføj den valgte indtastningsmetode i de aktiverede indtastningsmetoder" -#: ../data/ibus.schemas.in.h:22 -msgid "" -"The position of the language panel. 0 = Top left corner, 1 = Top right " -"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +#: setup/setup.ui:682 +msgid "_Remove" +msgstr "_Fjern" + +#: setup/setup.ui:689 +msgid "Remove the selected input method from the enabled input methods" msgstr "" -"Placering af sprogpanelet. 0 = Øverste venstre hjørne, 1 = Øverste højre " -"hjørne, 2 = Nederste venstre hjørne, 3 = Nederste højre hjørne, 4 = " -"Brugertilpasset" +"Fjern den valgte indtastningsmetode fra de aktiverede indtastningsmetoder" -#: ../data/ibus.schemas.in.h:23 -msgid "The shortcut keys for switching to the next input method in the list" -msgstr "Genvejstasterne for at skrive til næste inputmetode i listen" +#: setup/setup.ui:700 +msgid "_Up" +msgstr "_Op" -#: ../data/ibus.schemas.in.h:24 -msgid "The shortcut keys for switching to the previous input method" -msgstr "Genvejstasterne for at skifte til forrige inputmetode" +#: setup/setup.ui:707 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "" +"Flyt den valgte indtastningsmetode op i listen over aktiverede " +"indtastningsmetoder" -#: ../data/ibus.schemas.in.h:25 -msgid "The shortcut keys for turning input method off" -msgstr "Genvejstasterne for slukning af inputmetode" +#: setup/setup.ui:718 +msgid "_Down" +msgstr "_Ned" -#: ../data/ibus.schemas.in.h:26 -msgid "The shortcut keys for turning input method on" -msgstr "Genvejstasterne for at tænde inputmetode" +#: setup/setup.ui:725 +msgid "Move down the selected input method in the enabled input methods" +msgstr "" +"Flyt den valgte indtastningsmetode ned i listen over aktiverede " +"indtastningsmetoder" -#: ../data/ibus.schemas.in.h:27 ../setup/setup.ui.h:51 -msgid "The shortcut keys for turning input method on or off" -msgstr "Genvejstasterne for at tænde og slukke inputmetode" +#: setup/setup.ui:736 +msgid "_About" +msgstr "_Om" -#: ../data/ibus.schemas.in.h:28 -msgid "Trigger shortcut keys" -msgstr "Udløser tastaturgenveje" +#: setup/setup.ui:743 +msgid "Show information of the selected input method" +msgstr "Vis information om den valgte indtastningsmetode" -#: ../data/ibus.schemas.in.h:29 -msgid "Use custom font" -msgstr "Brug tilpasset skrifttype" +#: setup/setup.ui:754 +msgid "_Preferences" +msgstr "_Præferencer" -#: ../data/ibus.schemas.in.h:30 -msgid "Use custom font name for language panel" -msgstr "Brug tilpasset skrifttypenavn til sprogpanel" +#: setup/setup.ui:761 +msgid "Show setup of the selected input method" +msgstr "Vis opsætning for den valgte indtastningsmetode" -#: ../data/ibus.schemas.in.h:31 -msgid "Use global input method" -msgstr "Brug global inputmetode" +#: setup/setup.ui:812 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" +"Den aktive indtastningsmetode kan skiftes til en anden i listen " +"ovenfor, ved at trykke på tastaturgenvejene eller ved at klikke på " +"panelikonet." -#: ../data/ibus.schemas.in.h:32 ../setup/setup.ui.h:55 -msgid "Use system keyboard (XKB) layout" -msgstr "Brug systemttastaturlayout (XKB)" +#: setup/setup.ui:873 +msgid "" +"The shortcut keys to enable conversions of emoji annotations or Unicode names" +msgstr "" +"Genvejstasterne til at aktivere samtaler med emoji-annoteringer eller " +"unicode-navne" -#: ../data/ibus.schemas.in.h:33 ../setup/setup.ui.h:56 -msgid "Use system keyboard layout" -msgstr "Brug tastaturlayout for system" +#: setup/setup.ui:875 +msgid "Emoji annotation:" +msgstr "Emoji-annotering:" -#: ../setup/setup.ui.h:1 -msgid "..." -msgstr "..." +#: setup/setup.ui:927 +msgid "The shortcut keys to enable Unicode code point conversions" +msgstr "Genvejstasterne til at aktivere konvertering af unicode-kodepunkt" -#: ../setup/setup.ui.h:2 -msgid "Font and Style" -msgstr "Skrifttype og stil" +#: setup/setup.ui:929 +msgid "Unicode code point:" +msgstr "Unicode-kodepunkt:" -#: ../setup/setup.ui.h:3 -msgid "Global input method settings" -msgstr "Indstillinger for global inputmetode" +#: setup/setup.ui:1013 +msgid "Set a font of Unicode candidates on the emoji dialog" +msgstr "Sæt en skrifttype af unicode-kandidater i emoji-dialogen" -#: ../setup/setup.ui.h:4 -msgid "Keyboard Layout" -msgstr "Tastaturlayout" +#: setup/setup.ui:1015 +msgid "Unicode font:" +msgstr "Unicode-skrifttype:" -#: ../setup/setup.ui.h:5 -msgid "Keyboard Shortcuts" -msgstr "Tastaturgenveje" +#: setup/setup.ui:1038 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "Sæt et sprog af emoji-kandidater i emoji-dialogen" -#: ../setup/setup.ui.h:6 -msgid "Startup" -msgstr "Opstart" +#: setup/setup.ui:1040 +msgid "Emoji annotation language:" +msgstr "Emoji-annoteringssprog:" -#: ../setup/setup.ui.h:7 +#: setup/setup.ui:1062 msgid "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" +"Match emoji annotations partially with the following condition and more than " +"the number of characters:" msgstr "" -"IBus\n" -"Den intelligente inddatabus\n" -"Netsted: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" +"Match emoji-annoteringer delvist med følgende betingelse og flere end " +"antallet af tegn:" -#: ../setup/setup.ui.h:14 +#: setup/setup.ui:1067 msgid "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." +"If emoji annotations can be matched with a partial string instead of the " +"exact match" msgstr "" -"Standard inputmetoden er den øverste i listen.\n" -"Du kan bruge op/ned-knapperne for at ændre det." +"Hvorvidt emoji-annonteringer kan matches med en delvis streng i stedet for " +"det præcise match" -#: ../setup/setup.ui.h:17 -msgid "Add the selected input method into the enabled input methods" -msgstr "Tilføj de valgte inputmetoder i de aktiverede inputmetoder" +#: setup/setup.ui:1101 +msgid "Prefix match" +msgstr "Præfiks match" -#: ../setup/setup.ui.h:18 -msgid "Advanced" -msgstr "Avanceret" +#: setup/setup.ui:1115 +msgid "Suffix match" +msgstr "Suffiks match" -#: ../setup/setup.ui.h:19 -msgid "Always" -msgstr "Altid" +#: setup/setup.ui:1130 +msgid "Containing match" +msgstr "Indeholdende match" -#: ../setup/setup.ui.h:20 -msgid "Bottom left corner" -msgstr "Nederste venstre hjørne" +#: setup/setup.ui:1176 +msgid "Emoji" +msgstr "Emoji" -#: ../setup/setup.ui.h:21 -msgid "Bottom right corner" -msgstr "Nederste højre hjørne" +#: setup/setup.ui:1230 +msgid "Keyboard Layout" +msgstr "Tastaturlayout" -#: ../setup/setup.ui.h:22 -msgid "Candidates orientation:" -msgstr "Orientering for kandidater:" +#: setup/setup.ui:1278 +msgid "Global input method settings" +msgstr "Indstillinger for global indtastningsmetode" -#: ../setup/setup.ui.h:23 -msgid "Custom" -msgstr "Brugertilpasset" +#: setup/setup.ui:1310 +msgid "" +"Choose glyphs with the input method's language on the candidate window for " +"the duplicated code points" +msgstr "" +"Vælg glyffer med inputmetodens sprog i kandidatvinduet for de duplikerede " +"kodepunkter" -#: ../setup/setup.ui.h:24 -msgid "Disable:" -msgstr "Deaktivér:" +#: setup/setup.ui:1327 +msgid "Fonts" +msgstr "Skrifttyper" -#: ../setup/setup.ui.h:25 -msgid "Embed preedit text in application window" -msgstr "Indlejr forudredigeret tekst i programvindue" +#: setup/setup.ui:1347 +msgid "Advanced" +msgstr "Avanceret" -#: ../setup/setup.ui.h:26 -msgid "Embed the preedit text of input method in the application window" -msgstr "Indlejr forudredigeret tekst for inputmetode i programvinduet" +#: src/ibusemojigen.h:30 +msgid "Activities" +msgstr "Aktiviteter" + +#: src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "Dyr og natur" + +#: src/ibusemojigen.h:32 +msgid "Component" +msgstr "Komponent" + +#: src/ibusemojigen.h:33 +msgid "Flags" +msgstr "Flag" + +#: src/ibusemojigen.h:34 +msgid "Food & Drink" +msgstr "Mad og drikke" + +#: src/ibusemojigen.h:35 +msgid "Objects" +msgstr "Objekter" + +#: src/ibusemojigen.h:36 +msgid "People & Body" +msgstr "Personer og kroppe" + +#: src/ibusemojigen.h:37 +msgid "Smileys & Emotion" +msgstr "Smileyer og emotikoner" + +#: src/ibusemojigen.h:38 +msgid "Symbols" +msgstr "Symboler" + +#: src/ibusemojigen.h:39 +msgid "Travel & Places" +msgstr "Rejser og steder" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:33 +msgid "Basic Latin" +msgstr "Grundlæggende latinsk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:37 +msgid "Latin-1 Supplement" +msgstr "Latin-1 supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:41 +msgid "Latin Extended-A" +msgstr "Latinsk udvidet-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:45 +msgid "Latin Extended-B" +msgstr "Latinsk udvidet-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:49 +msgid "IPA Extensions" +msgstr "IPA-udvidelser" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:53 +msgid "Spacing Modifier Letters" +msgstr "Mellemrumsændringer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:57 +msgid "Combining Diacritical Marks" +msgstr "Kombinerende diakritiske tegn" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:61 +msgid "Greek and Coptic" +msgstr "Græsk og koptisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:65 +msgid "Cyrillic" +msgstr "Kyrillisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:69 +msgid "Cyrillic Supplement" +msgstr "Kyrillisk supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:73 +msgid "Armenian" +msgstr "Armensk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:77 +msgid "Hebrew" +msgstr "Hebraisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:81 +msgid "Arabic" +msgstr "Arabisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:85 +msgid "Syriac" +msgstr "Syrisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:89 +msgid "Arabic Supplement" +msgstr "Arabisk supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:93 +msgid "Thaana" +msgstr "Thaana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:97 +msgid "NKo" +msgstr "NKo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:101 +msgid "Samaritan" +msgstr "Samaritansk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:105 +msgid "Mandaic" +msgstr "Mandæisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:109 +msgid "Syriac Supplement" +msgstr "Syrisk supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:113 +msgid "Arabic Extended-A" +msgstr "Arabisk udvidet-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:117 +msgid "Devanagari" +msgstr "Devanagari" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:121 +msgid "Bengali" +msgstr "Bengali" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:125 +msgid "Gurmukhi" +msgstr "Gurmukhi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:129 +msgid "Gujarati" +msgstr "Gujarati" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:133 +msgid "Oriya" +msgstr "Oriya" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:137 +msgid "Tamil" +msgstr "Tamilsk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:141 +msgid "Telugu" +msgstr "Telugu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:145 +msgid "Kannada" +msgstr "Kannada" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:149 +msgid "Malayalam" +msgstr "Malayalam" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:153 +msgid "Sinhala" +msgstr "Sinhala" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:157 +msgid "Thai" +msgstr "Thai" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:161 +msgid "Lao" +msgstr "Lao" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:165 +msgid "Tibetan" +msgstr "Tibetansk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:169 +msgid "Myanmar" +msgstr "Myanmar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:173 +msgid "Georgian" +msgstr "Georgisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:177 +msgid "Hangul Jamo" +msgstr "Hangul Jamo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:181 +msgid "Ethiopic" +msgstr "Ethiopisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:185 +msgid "Ethiopic Supplement" +msgstr "Etiopisk supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:189 +msgid "Cherokee" +msgstr "Cherokee" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:193 +msgid "Unified Canadian Aboriginal Syllabics" +msgstr "Forenede canadisk-indiansk stavelser" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:197 +msgid "Ogham" +msgstr "Ogham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:201 +msgid "Runic" +msgstr "Runer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:205 +msgid "Tagalog" +msgstr "Tagalog" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:209 +msgid "Hanunoo" +msgstr "Hanunoo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:213 +msgid "Buhid" +msgstr "Buhid" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:217 +msgid "Tagbanwa" +msgstr "Tagbanwa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:221 +msgid "Khmer" +msgstr "Khmer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:225 +msgid "Mongolian" +msgstr "Mongolsk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:229 +msgid "Unified Canadian Aboriginal Syllabics Extended" +msgstr "Forenede canadisk-indianske stavelser, udvidet" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:233 +msgid "Limbu" +msgstr "Limbu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:237 +msgid "Tai Le" +msgstr "Tai Le" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:241 +msgid "New Tai Lue" +msgstr "Ny Tai Lue" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:245 +msgid "Khmer Symbols" +msgstr "Khmer-symboler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:249 +msgid "Buginese" +msgstr "Buginesisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:253 +msgid "Tai Tham" +msgstr "Tai Tham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:257 +msgid "Combining Diacritical Marks Extended" +msgstr "Kombinerede diakritiske tegn udvidet" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:261 +msgid "Balinese" +msgstr "Balinesisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:265 +msgid "Sundanese" +msgstr "Sundanesisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:269 +msgid "Batak" +msgstr "Batak" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:273 +msgid "Lepcha" +msgstr "Lepcha" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:277 +msgid "Ol Chiki" +msgstr "Ol Chiki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:281 +msgid "Cyrillic Extended-C" +msgstr "Kyrillisk udvidet-C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:285 +msgid "Georgian Extended" +msgstr "Georgisk udvidet" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:289 +msgid "Sundanese Supplement" +msgstr "Sudanesisk supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:293 +msgid "Vedic Extensions" +msgstr "Vediske udvidelser" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:297 +msgid "Phonetic Extensions" +msgstr "Fonetiske udvidelser" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:301 +msgid "Phonetic Extensions Supplement" +msgstr "Supplement til fonetiske udvidelser" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:305 +msgid "Combining Diacritical Marks Supplement" +msgstr "Supplement til kombination af diakritiske tegn" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:309 +msgid "Latin Extended Additional" +msgstr "Latisk ekstra udvidet" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:313 +msgid "Greek Extended" +msgstr "Græsk udvidet" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:317 +msgid "General Punctuation" +msgstr "Generel tegnsætning" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:321 +msgid "Superscripts and Subscripts" +msgstr "Hævede og sænkede tegn" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:325 +msgid "Currency Symbols" +msgstr "Valutasymboler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:329 +msgid "Combining Diacritical Marks for Symbols" +msgstr "Kombinerende diakritiske tegn til symboler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:333 +msgid "Letterlike Symbols" +msgstr "Bogstavlignende symboler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:337 +msgid "Number Forms" +msgstr "Talformer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:341 +msgid "Arrows" +msgstr "Pile" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:345 +msgid "Mathematical Operators" +msgstr "Matematiske operatorer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:349 +msgid "Miscellaneous Technical" +msgstr "Diverse teknisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:353 +msgid "Control Pictures" +msgstr "Kontrolbilleder" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:357 +msgid "Optical Character Recognition" +msgstr "Optisk tegngenkendelse" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:361 +msgid "Enclosed Alphanumerics" +msgstr "Indrammede alfanumeriske" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:365 +msgid "Box Drawing" +msgstr "Rammetegning" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:369 +msgid "Block Elements" +msgstr "Blokelementer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:373 +msgid "Geometric Shapes" +msgstr "Geometriske former" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:377 +msgid "Miscellaneous Symbols" +msgstr "Diverse symboler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:381 +msgid "Dingbats" +msgstr "Tingester" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:385 +msgid "Miscellaneous Mathematical Symbols-A" +msgstr "Diverse matematiske symboler-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:389 +msgid "Supplemental Arrows-A" +msgstr "Ekstra pile-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:393 +msgid "Braille Patterns" +msgstr "Braille-mønstre" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:397 +msgid "Supplemental Arrows-B" +msgstr "Ekstra pile-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:401 +msgid "Miscellaneous Mathematical Symbols-B" +msgstr "Diverse matematiske symboler-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:405 +msgid "Supplemental Mathematical Operators" +msgstr "Ekstra matematiske operatorer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:409 +msgid "Miscellaneous Symbols and Arrows" +msgstr "Diverse symboler og pile" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:413 +msgid "Glagolitic" +msgstr "Glagolitisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:417 +msgid "Latin Extended-C" +msgstr "Latinsk udvidet-C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:421 +msgid "Coptic" +msgstr "Koptisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:425 +msgid "Georgian Supplement" +msgstr "Georgisk supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:429 +msgid "Tifinagh" +msgstr "Tifinagh" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:433 +msgid "Ethiopic Extended" +msgstr "Etiopisk udvidet" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:437 +msgid "Cyrillic Extended-A" +msgstr "Kyrillisk udvidet-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:441 +msgid "Supplemental Punctuation" +msgstr "Supplerende tegnsætning" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:445 +msgid "CJK Radicals Supplement" +msgstr "CJK-radikaler-supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:449 +msgid "Kangxi Radicals" +msgstr "Kangxi-radikaler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:453 +msgid "Ideographic Description Characters" +msgstr "Ideografiske beskrivelsestegn" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:457 +msgid "CJK Symbols and Punctuation" +msgstr "CJK-symboler og punktueringer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:461 +msgid "Hiragana" +msgstr "Hiragana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:465 +msgid "Katakana" +msgstr "Katakana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:469 +msgid "Bopomofo" +msgstr "Bopomofo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:473 +msgid "Hangul Compatibility Jamo" +msgstr "Hangul kompatibilitets-Jamo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:477 +msgid "Kanbun" +msgstr "Kanbun" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:481 +msgid "Bopomofo Extended" +msgstr "Bopomofo udvidet" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:485 +msgid "CJK Strokes" +msgstr "CJK-streger" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:489 +msgid "Katakana Phonetic Extensions" +msgstr "Katakana-fonetiske udvidelser" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:493 +msgid "Enclosed CJK Letters and Months" +msgstr "Indrammede CJK-bogstaver og -måneder" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:497 +msgid "CJK Compatibility" +msgstr "CJK-kompatibilitet" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:501 +msgid "CJK Unified Ideographs Extension A" +msgstr "CJK-forenede ideografer-udvidelse A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:505 +msgid "Yijing Hexagram Symbols" +msgstr "Yijing-hexagramsymboler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:509 +msgid "CJK Unified Ideographs" +msgstr "CJK-forenede ideografer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:513 +msgid "Yi Syllables" +msgstr "Yi-stavelser" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:517 +msgid "Yi Radicals" +msgstr "Yi-radikaler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:521 +msgid "Lisu" +msgstr "Lisu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:525 +msgid "Vai" +msgstr "Vai" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:529 +msgid "Cyrillic Extended-B" +msgstr "Kyrillisk udvidet-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:533 +msgid "Bamum" +msgstr "Bamum" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:537 +msgid "Modifier Tone Letters" +msgstr "Toneændringstegn" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:541 +msgid "Latin Extended-D" +msgstr "Latinsk udvidet-D" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:545 +msgid "Syloti Nagri" +msgstr "Syloti Nagri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:549 +msgid "Common Indic Number Forms" +msgstr "Almindelige indiske talformer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:553 +msgid "Phags-pa" +msgstr "Phags-pa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:557 +msgid "Saurashtra" +msgstr "Saurashtra" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:561 +msgid "Devanagari Extended" +msgstr "Devanagari udvidet" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:565 +msgid "Kayah Li" +msgstr "Kayah Li" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:569 +msgid "Rejang" +msgstr "Rejang" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:573 +msgid "Hangul Jamo Extended-A" +msgstr "Hangul Jamo udvidet-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:577 +msgid "Javanese" +msgstr "Javanesisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:581 +msgid "Myanmar Extended-B" +msgstr "Myanmar udvidet-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:585 +msgid "Cham" +msgstr "Cham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:589 +msgid "Myanmar Extended-A" +msgstr "Myanmar udvidet-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:593 +msgid "Tai Viet" +msgstr "Tai Viet" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:597 +msgid "Meetei Mayek Extensions" +msgstr "Meetei Mayek udvidelser" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:601 +msgid "Ethiopic Extended-A" +msgstr "Etiopisk udvidet-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:605 +msgid "Latin Extended-E" +msgstr "Latinsk udvidet-E" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:609 +msgid "Cherokee Supplement" +msgstr "Cherokee-supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:613 +msgid "Meetei Mayek" +msgstr "Meetei Mayek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:617 +msgid "Hangul Syllables" +msgstr "Hangul-stavelser" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:621 +msgid "Hangul Jamo Extended-B" +msgstr "Hangul Jamo udvidet-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:625 +msgid "High Surrogates" +msgstr "Høje surrogater" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:629 +msgid "High Private Use Surrogates" +msgstr "Høje surrogater til privat brug" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:633 +msgid "Low Surrogates" +msgstr "Lave surrogater" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:637 +msgid "Private Use Area" +msgstr "Område til privat brug" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:641 +msgid "CJK Compatibility Ideographs" +msgstr "CJK-kompatibilitetsideografer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:645 +msgid "Alphabetic Presentation Forms" +msgstr "Alfabetiske præsentationsformer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:649 +msgid "Arabic Presentation Forms-A" +msgstr "Arabiske præsentationsformer-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:653 +msgid "Variation Selectors" +msgstr "Variationsvælgere" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:657 +msgid "Vertical Forms" +msgstr "Vertikale former" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:661 +msgid "Combining Half Marks" +msgstr "Kombinerende halvtegn" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:665 +msgid "CJK Compatibility Forms" +msgstr "CJK-kombatibilitetsformer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:669 +msgid "Small Form Variants" +msgstr "Små former-varianter" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:673 +msgid "Arabic Presentation Forms-B" +msgstr "Arabiske præsentationsformer-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:677 +msgid "Halfwidth and Fullwidth Forms" +msgstr "Halvbredde og fuldbredde former" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:681 +msgid "Specials" +msgstr "Specialtegn" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:685 +msgid "Linear B Syllabary" +msgstr "Linear B-stavelser" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:689 +msgid "Linear B Ideograms" +msgstr "Linear B-ideogrammer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:693 +msgid "Aegean Numbers" +msgstr "Aegæiske tal" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:697 +msgid "Ancient Greek Numbers" +msgstr "Oldgræske tal" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:701 +msgid "Ancient Symbols" +msgstr "Oldtidssymboler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:705 +msgid "Phaistos Disc" +msgstr "Festosdiskossen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:709 +msgid "Lycian" +msgstr "Lykisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:713 +msgid "Carian" +msgstr "Karisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:717 +msgid "Coptic Epact Numbers" +msgstr "Koptisk epact tal" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:721 +msgid "Old Italic" +msgstr "Olditalisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:725 +msgid "Gothic" +msgstr "Gotisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:729 +msgid "Old Permic" +msgstr "Oldpermisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:733 +msgid "Ugaritic" +msgstr "Ugaritisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:737 +msgid "Old Persian" +msgstr "Oldpersisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:741 +msgid "Deseret" +msgstr "Deseret" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:745 +msgid "Shavian" +msgstr "Shaviansk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:749 +msgid "Osmanya" +msgstr "Osmanya" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:753 +msgid "Osage" +msgstr "Osage" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:757 +msgid "Elbasan" +msgstr "Elbasan" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:761 +msgid "Caucasian Albanian" +msgstr "Kaukasisk Albansk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:765 +msgid "Linear A" +msgstr "Linear A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:769 +msgid "Cypriot Syllabary" +msgstr "Cypriske stavelser" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:773 +msgid "Imperial Aramaic" +msgstr "Fyrstetidsaramæisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:777 +msgid "Palmyrene" +msgstr "Palmyrisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:781 +msgid "Nabataean" +msgstr "Nabatæisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:785 +msgid "Hatran" +msgstr "Hatran" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:789 +msgid "Phoenician" +msgstr "Fønikisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:793 +msgid "Lydian" +msgstr "Lydisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:797 +msgid "Meroitic Hieroglyphs" +msgstr "Meroitiske hieroglyffer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:801 +msgid "Meroitic Cursive" +msgstr "Meroitisk skrift" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:805 +msgid "Kharoshthi" +msgstr "Kharoshthi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:809 +msgid "Old South Arabian" +msgstr "Oldsydarabisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:813 +msgid "Old North Arabian" +msgstr "Oldnordarabisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:817 +msgid "Manichaean" +msgstr "Manikæisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:821 +msgid "Avestan" +msgstr "Avestisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:825 +msgid "Inscriptional Parthian" +msgstr "Inskriptions-parthisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:829 +msgid "Inscriptional Pahlavi" +msgstr "Inskriptions-pahlavi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:833 +msgid "Psalter Pahlavi" +msgstr "Psalter Pahlavi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:837 +msgid "Old Turkic" +msgstr "Oldtyrkisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:841 +msgid "Old Hungarian" +msgstr "Oldungarsk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:845 +msgid "Hanifi Rohingya" +msgstr "Hanifi rohingya" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:849 +msgid "Rumi Numeral Symbols" +msgstr "Rumi numeriske symboler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:853 +msgid "Yezidi" +msgstr "Yezidi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:857 +msgid "Old Sogdian" +msgstr "Oldsogdian" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:861 +msgid "Sogdian" +msgstr "Sogdian" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:865 +msgid "Chorasmian" +msgstr "Chorasmian" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:869 +msgid "Elymaic" +msgstr "Elym" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:873 +msgid "Brahmi" +msgstr "Bramisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:877 +msgid "Kaithi" +msgstr "Kaithi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:881 +msgid "Sora Sompeng" +msgstr "Sora Sompeng" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:885 +msgid "Chakma" +msgstr "Chakma" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:889 +msgid "Mahajani" +msgstr "Mahajani" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:893 +msgid "Sharada" +msgstr "Sharada" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:897 +msgid "Sinhala Archaic Numbers" +msgstr "Sinhala-arkaiske tal" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:901 +msgid "Khojki" +msgstr "Khojki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:905 +msgid "Multani" +msgstr "Multani" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:909 +msgid "Khudawadi" +msgstr "Khudawadi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:913 +msgid "Grantha" +msgstr "Grantha" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:917 +msgid "Newa" +msgstr "Newa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:921 +msgid "Tirhuta" +msgstr "Tirhuta" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:925 +msgid "Siddham" +msgstr "Siddham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:929 +msgid "Modi" +msgstr "Modi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:933 +msgid "Mongolian Supplement" +msgstr "Mongolsk supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:937 +msgid "Takri" +msgstr "Takri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:941 +msgid "Ahom" +msgstr "Ahom" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:945 +msgid "Dogra" +msgstr "Dogra" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:949 +msgid "Warang Citi" +msgstr "Warang Citi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:953 +msgid "Dives Akuru" +msgstr "Dives Akuru" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:957 +msgid "Nandinagari" +msgstr "Nand" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:961 +msgid "Zanabazar Square" +msgstr "Zanabazar kvadratisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:965 +msgid "Soyombo" +msgstr "Soyombo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:969 +msgid "Pau Cin Hau" +msgstr "Pau Cin Hau" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:973 +msgid "Bhaiksuki" +msgstr "Bhaiksuki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:977 +msgid "Marchen" +msgstr "Marchen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:981 +msgid "Masaram Gondi" +msgstr "Masaram Gondi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:985 +msgid "Gunjala Gondi" +msgstr "Gunjala gondi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:989 +msgid "Makasar" +msgstr "Makasar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:993 +msgid "Lisu Supplement" +msgstr "Lisu supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:997 +msgid "Tamil Supplement" +msgstr "Tamilsk supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1001 +msgid "Cuneiform" +msgstr "Kileskrift" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1005 +msgid "Cuneiform Numbers and Punctuation" +msgstr "Kileskriftstal og -tegnsætning" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1009 +msgid "Early Dynastic Cuneiform" +msgstr "Tidlig dynastisk kileskrift" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1013 +msgid "Egyptian Hieroglyphs" +msgstr "Ægyptiske hieroglyffer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1017 +msgid "Egyptian Hieroglyph Format Controls" +msgstr "Ægyptiske hieroglyffer formatteringskontroltegn" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1021 +msgid "Anatolian Hieroglyphs" +msgstr "Anatoliske hieroglyffer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1025 +msgid "Bamum Supplement" +msgstr "Bamum-supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1029 +msgid "Mro" +msgstr "Mro" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1033 +msgid "Bassa Vah" +msgstr "Bassa Vah" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1037 +msgid "Pahawh Hmong" +msgstr "Pahawh Hmong" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1041 +msgid "Medefaidrin" +msgstr "Medefaidrin" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1045 +msgid "Miao" +msgstr "Miao" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1049 +msgid "Ideographic Symbols and Punctuation" +msgstr "Ideografiske symboler og tegn" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1053 +msgid "Tangut" +msgstr "Tangut" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1057 +msgid "Tangut Components" +msgstr "Tangut-komponenter" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1061 +msgid "Khitan Small Script" +msgstr "Khitan lille skrift" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1065 +msgid "Tangut Supplement" +msgstr "Tangut supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1069 +msgid "Kana Supplement" +msgstr "Kana-supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1073 +msgid "Kana Extended-A" +msgstr "Kana udvidet-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1077 +msgid "Small Kana Extension" +msgstr "Små kana udvidelse" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1081 +msgid "Nushu" +msgstr "Nushu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1085 +msgid "Duployan" +msgstr "Duployan" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1089 +msgid "Shorthand Format Controls" +msgstr "Forkortede formatteringskontroltegn" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1093 +msgid "Byzantine Musical Symbols" +msgstr "Byzantiske musiske symboler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1097 +msgid "Musical Symbols" +msgstr "Musiske symboler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1101 +msgid "Ancient Greek Musical Notation" +msgstr "Oldgræsk musiknotation" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1105 +msgid "Mayan Numerals" +msgstr "Maya talsystem" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1109 +msgid "Tai Xuan Jing Symbols" +msgstr "Tai Xuan Jing-symboler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1113 +msgid "Counting Rod Numerals" +msgstr "Kinesisk stregtalsystem" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1117 +msgid "Mathematical Alphanumeric Symbols" +msgstr "Matematiske alfanumeriske symboler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1121 +msgid "Sutton SignWriting" +msgstr "Sutton tegnsprogskrift" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1125 +msgid "Glagolitic Supplement" +msgstr "Glagolitisk supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1129 +msgid "Nyiakeng Puachue Hmong" +msgstr "Nyiakeng Puachue Hmong" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1133 +msgid "Wancho" +msgstr "Wancho" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1137 +msgid "Mende Kikakui" +msgstr "Mende Kikakui" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1141 +msgid "Adlam" +msgstr "Adlam" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1145 +msgid "Indic Siyaq Numbers" +msgstr "Indisk siyaq tal" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1149 +msgid "Ottoman Siyaq Numbers" +msgstr "Ottomanske siyaq tal" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1153 +msgid "Arabic Mathematical Alphabetic Symbols" +msgstr "Arabiske matematiske alfabetiske symboler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1157 +msgid "Mahjong Tiles" +msgstr "Mahjong-brikker" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1161 +msgid "Domino Tiles" +msgstr "Domino-brikker" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1165 +msgid "Playing Cards" +msgstr "Spillekort" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1169 +msgid "Enclosed Alphanumeric Supplement" +msgstr "Indrammet alfanumerisk supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1173 +msgid "Enclosed Ideographic Supplement" +msgstr "Indrammet ideografisk supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1177 +msgid "Miscellaneous Symbols and Pictographs" +msgstr "Diverse symboler og piktogrammer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1181 +msgid "Emoticons" +msgstr "Emotikoner" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1185 +msgid "Ornamental Dingbats" +msgstr "Pyntedingbatter" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1189 +msgid "Transport and Map Symbols" +msgstr "Transport- og kortsymboler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1193 +msgid "Alchemical Symbols" +msgstr "Alkymisymboler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1197 +msgid "Geometric Shapes Extended" +msgstr "Geometriske former udvidet" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1201 +msgid "Supplemental Arrows-C" +msgstr "Ekstra pile-C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1205 +msgid "Supplemental Symbols and Pictographs" +msgstr "Supplerende symboler og piktogrammer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1209 +msgid "Chess Symbols" +msgstr "Skaksymboler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1213 +msgid "Symbols and Pictographs Extended-A" +msgstr "Symboler og piktogrammer udvidet-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1217 +msgid "Symbols for Legacy Computing" +msgstr "Symboler for udgået computer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1221 +msgid "CJK Unified Ideographs Extension B" +msgstr "Forenede CJK-ideografer, udvidelse B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1225 +msgid "CJK Unified Ideographs Extension C" +msgstr "Forenede CJK-ideografer, udvidelse C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1229 +msgid "CJK Unified Ideographs Extension D" +msgstr "Forenede CJK-ideografer, udvidelse D" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1233 +msgid "CJK Unified Ideographs Extension E" +msgstr "Forenede CJK-ideografer, udvidelse E" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1237 +msgid "CJK Unified Ideographs Extension F" +msgstr "CJK-forenede ideografer-udvidelse F" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1241 +msgid "CJK Compatibility Ideographs Supplement" +msgstr "Supplerende CJK-kompatibilitetsideografer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1245 +msgid "CJK Unified Ideographs Extension G" +msgstr "CJK-forenede ideografer-udvidelse G" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1249 +msgid "Tags" +msgstr "Mærkater" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1253 +msgid "Variation Selectors Supplement" +msgstr "Variationsvælgere-supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1257 +msgid "Supplementary Private Use Area-A" +msgstr "Ekstra privat brug-område-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1261 +msgid "Supplementary Private Use Area-B" +msgstr "Ekstra privat brug-område-B" + +#: tools/main.vala:51 +msgid "List engine name only" +msgstr "Vis kun motornavn" + +#: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 +msgid "Can't connect to IBus.\n" +msgstr "Kan ikke oprette forbindelse til IBus.\n" + +#: tools/main.vala:93 +#, c-format +msgid "language: %s\n" +msgstr "sprog: %s\n" + +#: tools/main.vala:161 +msgid "No engine is set.\n" +msgstr "Ingen motor er sat.\n" + +#: tools/main.vala:169 +msgid "Set global engine failed.\n" +msgstr "Sætning af global motor mislykkedes.\n" + +#: tools/main.vala:174 +msgid "Get global engine failed.\n" +msgstr "Hentning af global motor mislykkedes.\n" + +#: tools/main.vala:217 +msgid "Read the system registry cache." +msgstr "Læs systemets registreringsmellemlager." + +#: tools/main.vala:219 +msgid "Read the registry cache FILE." +msgstr "Læs den registreringsmellemlageret FIL." + +#: tools/main.vala:237 tools/main.vala:242 +msgid "The registry cache is invalid.\n" +msgstr "Registreringsmellemlageret er ugyldigt.\n" + +#: tools/main.vala:257 +msgid "Write the system registry cache." +msgstr "Skriv systemets registreringsmellemlager." + +#: tools/main.vala:259 +msgid "Write the registry cache FILE." +msgstr "Skriv den registreringsmellemlageret FIL." + +#: tools/main.vala:295 +msgid "" +"Use engine schema paths instead of ibus core, which can be comma-separated " +"values." +msgstr "" +"Brug motorskema-stier i stedet for ibus-kerne, hvilket kan være " +"kommaseparerede værdier." -#: ../setup/setup.ui.h:27 -msgid "Embedded in menu" -msgstr "Indlejret i menu" +#: tools/main.vala:381 +msgid "Resetting…" +msgstr "Nulstiller…" -#: ../setup/setup.ui.h:28 -msgid "Enable or disable:" -msgstr "Aktivér eller deaktivér:" +#: tools/main.vala:399 +msgid "Done" +msgstr "Færdig" -#: ../setup/setup.ui.h:29 -msgid "Enable:" -msgstr "Aktivér" +#: tools/main.vala:444 +msgid "Set or get engine" +msgstr "Sæt eller hent motor" -#: ../setup/setup.ui.h:30 -msgid "General" -msgstr "Generelt" +#: tools/main.vala:445 +msgid "Exit ibus-daemon" +msgstr "Forlad ibus-daemon" -#: ../setup/setup.ui.h:31 -msgid "Horizontal" -msgstr "Horisontal" +#: tools/main.vala:446 +msgid "Show available engines" +msgstr "Vis tilgængelige motorer" -#: ../setup/setup.ui.h:34 -msgid "Language panel position:" -msgstr "Placering af sprogpanel:" +#: tools/main.vala:447 +msgid "(Not implemented)" +msgstr "(ikke implementeret)" -#: ../setup/setup.ui.h:35 -msgid "Move down the selected input method in the enabled input methods" -msgstr "Flyt den valgte inputmetode i de aktiverede inputmetoder ned" +#: tools/main.vala:448 +msgid "Restart ibus-daemon" +msgstr "Genstart ibus-daemon" -#: ../setup/setup.ui.h:36 -msgid "Move up the selected input method in the enabled input methods list" -msgstr "Flyt den valgte inputmetode op i listen over aktiverede inputmetode" +#: tools/main.vala:449 +msgid "Show version" +msgstr "Vis version" -#: ../setup/setup.ui.h:37 -msgid "Next input method:" -msgstr "Næste inddatametode:" +#: tools/main.vala:450 +msgid "Show the content of registry cache" +msgstr "Vis indholdet af registreringsmellemlager" -#: ../setup/setup.ui.h:38 -msgid "Previous input method:" -msgstr "Forrige inddatametode:" +#: tools/main.vala:451 +msgid "Create registry cache" +msgstr "Opret registreringsmellemlager" -#: ../setup/setup.ui.h:39 -msgid "Remove the selected input method from the enabled input methods" -msgstr "Fjern den valgte inputmetode fra de aktiverede inputmetoder" +#: tools/main.vala:452 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "Print D-Bus-adressen af ibus-daemon" -#: ../setup/setup.ui.h:40 -msgid "Set the behavior of ibus how to show or hide language bar" -msgstr "" -"Angiv adfæren for hvordan IBus skal vises eller skjules i sprogpanelet" +#: tools/main.vala:453 +msgid "Show the configuration values" +msgstr "Vis konfigurationsværdierne" -#: ../setup/setup.ui.h:41 -msgid "Set the orientation of candidates in lookup table" -msgstr "Angiv orientering af kandidater i opslagstabel" +#: tools/main.vala:454 +msgid "Reset the configuration values" +msgstr "Nulstil konfigurationsværdierne" -#: ../setup/setup.ui.h:44 -msgid "Show information of the selected input method" -msgstr "Vis information om den valgte inputmetode" +#: tools/main.vala:456 +msgid "Save emoji on dialog to clipboard" +msgstr "Gem emoji i dialog til udklipsholder" -#: ../setup/setup.ui.h:46 -msgid "Show input method's name on language bar when check the checkbox" -msgstr "Vis inputmetodens navn i sprogpanelet når tjek-boksen er vinget af" +#: tools/main.vala:458 +msgid "Show this information" +msgstr "Vis denne information" -#: ../setup/setup.ui.h:47 -msgid "Show language panel:" -msgstr "Vis sprogpanel:" +#: tools/main.vala:464 +#, c-format +msgid "" +"Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "" +"Anvendelse: %s KOMMANDO [TILVALG...]\n" +"\n" -#: ../setup/setup.ui.h:48 -msgid "Start ibus on login" -msgstr "Start ibus ved logind" +#: tools/main.vala:465 +msgid "Commands:\n" +msgstr "Kommandoer:\n" -#: ../setup/setup.ui.h:49 -msgid "The shortcut keys for switching to next input method in the list" -msgstr "Genvejstaster for skift til den næste inputmetode i listen" +#: tools/main.vala:494 +#, c-format +msgid "%s is unknown command!\n" +msgstr "%s er ukendt kommando!\n" -#: ../setup/setup.ui.h:50 -msgid "The shortcut keys for switching to previous input method in the list" -msgstr "Genvejstaster for skift til den forrige inputmetode i listen" +#: ui/gtk3/emojier.vala:233 +msgid "Favorites" +msgstr "Favoritter" -#: ../setup/setup.ui.h:52 -msgid "Top left corner" -msgstr "Øverste venstre hjørne" +#: ui/gtk3/emojier.vala:234 +msgid "Others" +msgstr "Andre" -#: ../setup/setup.ui.h:53 -msgid "Top right corner" -msgstr "Øverste højre hjørne" +#: ui/gtk3/emojier.vala:235 +msgid "Open Unicode choice" +msgstr "Åbn valg af unicode" + +#: ui/gtk3/emojier.vala:995 +msgid "Bring back emoji choice" +msgstr "Tilbage til valg af emoji" + +#: ui/gtk3/emojier.vala:1097 +msgid "Page Down" +msgstr "Page Down" + +#: ui/gtk3/emojier.vala:1108 +msgid "Page Up" +msgstr "Page Up" + +#: ui/gtk3/emojier.vala:1111 +msgid "Show emoji variants" +msgstr "Vis emoji-varianter" + +#: ui/gtk3/emojier.vala:1112 +msgid "Close" +msgstr "Luk" + +#: ui/gtk3/emojier.vala:1118 +msgid "Menu" +msgstr "Menu" + +#: ui/gtk3/emojier.vala:1129 +msgid "Click to view a warning message" +msgstr "Klik for at vise en advarselsmeddelelse" + +#: ui/gtk3/emojier.vala:1173 +msgid "Loading a Unicode dictionary:" +msgstr "Indlæser en unicode-ordbog:" + +#: ui/gtk3/emojier.vala:1419 +#, c-format +msgid "Code point: %s" +msgstr "Kodepunkt: %s" + +#: ui/gtk3/emojier.vala:1425 +msgid "Has emoji variants" +msgstr "Har emoji-varianter" + +#: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 +#, c-format +msgid "Description: %s" +msgstr "Beskrivelse: %s" + +#: ui/gtk3/emojier.vala:1592 +msgid "None" +msgstr "Ingen" + +#: ui/gtk3/emojier.vala:1616 +#, c-format +msgid "Annotations: %s" +msgstr "Annoteringer: %s" + +#: ui/gtk3/emojier.vala:1642 +#, c-format +msgid "Name: %s" +msgstr "Navn: %s" + +#: ui/gtk3/emojier.vala:1650 +#, c-format +msgid "Alias: %s" +msgstr "Alias: %s" + +#: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 +#: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1147 +msgid "Emoji Choice" +msgstr "Valg af emoji" + +#: ui/gtk3/emojier.vala:2142 +msgid "Unicode Choice" +msgstr "Valg af unicode" + +#: ui/gtk3/emojier.vala:2432 +msgid "" +"Failed to get the current text application. Please re-focus your " +"application. E.g. Press Esc key several times to release the emoji typing " +"mode, click your desktop and click your text application again." +msgstr "" +"Kunne ikke hente det nuværende tekstprogram. Giv venligst fokus til dit " +"program igen. Tryk f.eks. på Esc-tasten flere gange for at slippe fri fra " +"emoji-indtastningstilstanden, klik på dit skrivebord og klik på " +"tekstprogrammet igen." + +#: ui/gtk3/emojierapp.vala:47 +msgid "Canceled to choose an emoji." +msgstr "Annulleret for at vælge en emoji." + +#: ui/gtk3/emojierapp.vala:67 +msgid "Copied an emoji to your clipboard." +msgstr "Kopierede en emoji til dit skrivebord." + +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ui/gtk3/emojierapp.vala:126 +msgid "\"FONT\" for emoji characters on emoji dialog" +msgstr "\"SKRIFTTYPE\" for emoji-tegn i emoji-dialog" + +#: ui/gtk3/emojierapp.vala:127 +msgid "FONT" +msgstr "SKRIFTTYPE" + +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ui/gtk3/emojierapp.vala:132 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" +msgstr "\"SPROG\" for annoteringer i emoji-dialog. F.eks. \"en\"" + +#: ui/gtk3/emojierapp.vala:133 +msgid "LANG" +msgstr "SPROG" + +#: ui/gtk3/emojierapp.vala:135 +msgid "Emoji annotations can be match partially" +msgstr "Emoji-annoteringer kan matches delvist" + +#: ui/gtk3/emojierapp.vala:139 +msgid "Match with the length of the specified integer" +msgstr "Match med længen af det angive heltal" + +#: ui/gtk3/emojierapp.vala:143 +msgid "Match with the condition of the specified integer" +msgstr "Match med betingelsen af det angive heltal" + +#: ui/gtk3/panel.vala:292 ui/gtk3/panel.vala:323 +msgid "IBus Panel" +msgstr "IBus-panel" -#: ../setup/setup.ui.h:54 -msgid "Use custom font:" -msgstr "Brug brugertilpasset skrifttype:" +#: ui/gtk3/panel.vala:1119 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus er en intelligent indtastningsbus til Linux/Unix." -#: ../setup/setup.ui.h:57 -msgid "Vertical" -msgstr "Vertikal" +#: ui/gtk3/panel.vala:1123 +msgid "translator-credits" +msgstr "" +"Kris Thomsen\n" +"scootergrisen\n" +"\n" +"Dansk-gruppen\n" +"Websted http://dansk-gruppen.dk\n" +"E-mail " + +#: ui/gtk3/panel.vala:1142 +msgid "Preferences" +msgstr "Præferencer" + +#: ui/gtk3/panel.vala:1168 +msgid "Restart" +msgstr "Genstart" -#: ../setup/setup.ui.h:58 -msgid "When active" -msgstr "Når aktiv" +#: ui/gtk3/panel.vala:1172 +msgid "Quit" +msgstr "Afslut" + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 +msgid "default:LTR" +msgstr "default:LTR" + +#~ msgid "" +#~ "IBus\n" +#~ "The intelligent input bus\n" +#~ "Homepage: https://github.com/ibus/ibus/wiki\n" +#~ "\n" +#~ "\n" +#~ "\n" +#~ msgstr "" +#~ "IBus\n" +#~ "Den intelligente indtastningsbus\n" +#~ "Hjemmeside: https://github.com/ibus/ibus/wiki\n" +#~ "\n" +#~ "\n" +#~ "\n" + +#~ msgid "Start ibus on login" +#~ msgstr "Start ibus ved login" + +#~ msgid "Startup" +#~ msgstr "Opstart" diff --git a/po/de.po b/po/de.po index 1161a681d..34321614b 100644 --- a/po/de.po +++ b/po/de.po @@ -1,565 +1,3456 @@ -# translation of ibus.pot to German # German translation of ibus. -# Copyright (C) 2008 Peng Huang +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2021 Takao Fujiwara # This file is distributed under the same license as the ibus package. -# +# # Translators: -# Fabian Affolter , 2009. -# Hedda Peters , 2009. -# Mario Blättermann , 2011. +# Fabian Affolter , 2009 +# hpeters , 2009 +# hpeters , 2009 +# Mario Blättermann , 2011 +# Mario Blättermann , 2011 +# Rainer , 2013 +# Rainer , 2013 +# Roman Spirgi , 2012 +# fujiwara , 2015, 2018. #zanata +# Florian H. , 2016. #zanata +# Roman Spirgi , 2017. #zanata +# Thomas Eichhorn , 2017. #zanata +# Tobias Weise , 2017. #zanata +# Mike FABIAN , 2020, 2021. msgid "" msgstr "" "Project-Id-Version: IBus\n" -"Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/list\n" -"POT-Creation-Date: 2011-05-13 11:21+0900\n" -"PO-Revision-Date: 2011-06-23 14:37+0000\n" -"Last-Translator: mariobl \n" -"Language-Team: German \n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2020-12-11 16:21+0900\n" +"PO-Revision-Date: 2021-01-28 17:40+0000\n" +"Last-Translator: Mike FABIAN \n" +"Language-Team: German \n" +"Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: de\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Poedit-Language: German\n" -"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.4.2\n" + +#. Translators: Here “Preload” is a verb +#: data/dconf/org.freedesktop.ibus.gschema.xml:11 +msgid "Preload engines" +msgstr "Engines vorladen" + +#. Translators: Tooltip for the button “Preload Engines” +#: data/dconf/org.freedesktop.ibus.gschema.xml:13 +msgid "Preload engines during ibus starts up" +msgstr "Engines vorladen, während IBus startet" -#: ../bus/ibus.desktop.in.h:1 -msgid "IBus" -msgstr "IBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:17 +msgid "Engines order" +msgstr "Engine-Reihenfolge" -#: ../bus/ibus.desktop.in.h:2 -msgid "Input Method Framework" -msgstr "Eingabemethode-Framework" +#: data/dconf/org.freedesktop.ibus.gschema.xml:18 +msgid "Saved engines order in input method list" +msgstr "Gespeicherte Engine-Reihenfolge in der Eingabemethoden-Liste" -#: ../bus/ibus.desktop.in.h:3 -msgid "Start IBus Input Method Framework" -msgstr "IBus-Eingabemethode-Framework starten" +#: data/dconf/org.freedesktop.ibus.gschema.xml:22 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "Popup-Verzögerung für IME-Wechsel-Fenster in Millisekunden" -#: ../ibus/_config.py.in:40 +#: data/dconf/org.freedesktop.ibus.gschema.xml:23 msgid "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +"Set popup delay milliseconds to show IME switcher window. The default is " +"400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " +"show the window and switch prev/next engines." msgstr "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +"Popup-Verzögerung für IME-Wechsel-Fenster setzen. Standardmäßig ist der Wert " +"von 400 gesetzt. 0 = Fenster sofort anzeigen. 0 < Verzögerung in " +"Millisekunden. 0 > Fenster nicht anzeigen und zur vorhergehenden/ " +"nachfolgenden Engine wechseln." -#: ../ibus/lang.py:41 -msgid "Other" -msgstr "Sonstige" +#: data/dconf/org.freedesktop.ibus.gschema.xml:27 +msgid "Saved version number" +msgstr "Gespeicherte Versions-Numnner" -#: ../ui/gtk/candidatepanel.py:264 -msgid "Previous page" -msgstr "Vorherige Seite" +#: data/dconf/org.freedesktop.ibus.gschema.xml:28 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" +"Die gespeicherte Versions-Nummer wird verwendet, um den Unterschied zwischen " +"der Version der zuvor installierten ibus und der aktuellen ibus zu " +"überprüfen." -#: ../ui/gtk/candidatepanel.py:269 -msgid "Next page" -msgstr "Nächste Seite" +#: data/dconf/org.freedesktop.ibus.gschema.xml:32 +msgid "Latin layouts which have no ASCII" +msgstr "Latin Tastaturbelegungen ohne ASCII" -#: ../ui/gtk/main.py:62 -msgid "" -"Some input methods have been installed, removed or updated. Please restart " -"ibus input platform." +#: data/dconf/org.freedesktop.ibus.gschema.xml:33 +msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" -"Einige Eingabemethoden wurden installiert, entfernt oder aktualisiert. Bitte" -" starten Sie die IBus-Eingabe-Plattform erneut." +"US Tastaturbelegung wird den Latin Tastaturbelegungen angefügt. Varianten " +"können vernachlässigt werden." -#: ../ui/gtk/main.py:66 -msgid "Restart Now" -msgstr "Jetzt neu starten" +#: data/dconf/org.freedesktop.ibus.gschema.xml:37 +msgid "Use xmodmap" +msgstr "Verwenden von xmodmap" -#: ../ui/gtk/main.py:67 -msgid "Later" -msgstr "Später" +#: data/dconf/org.freedesktop.ibus.gschema.xml:38 +msgid "" +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." +msgstr "" +"xmodmap ausführen wenn .xmodmap oder .Xmodmap vorhanden ist wenn ibus " +"Engines gewechselt werden." -#: ../ui/gtk/panel.py:116 -msgid "IBus Panel" -msgstr "IBus-Panel" +#: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 +msgid "Use system keyboard layout" +msgstr "System-Tastaturbelegung verwenden" -#: ../ui/gtk/panel.py:122 -msgid "IBus input method framework" -msgstr "IBus-Eingabemethode-Framework" +#: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 +msgid "Use system keyboard (XKB) layout" +msgstr "System-Tastatur (XKB) Belegung verwenden" -#: ../ui/gtk/panel.py:352 -msgid "Restart" -msgstr "Neustart" +#: data/dconf/org.freedesktop.ibus.gschema.xml:47 +msgid "Embed Preedit Text" +msgstr "Preedit-Text einbetten" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:48 +msgid "Embed Preedit Text in Application Window" +msgstr "Preedit-Text in Anwendungsfenster einbetten" -#: ../ui/gtk/panel.py:439 -msgid "Turn off input method" -msgstr "Eingabemethode ausschalten" +#: data/dconf/org.freedesktop.ibus.gschema.xml:52 +msgid "Use global input method" +msgstr "Globale Eingabemethode wählen" -#: ../ui/gtk/panel.py:478 -msgid "No input window" -msgstr "Kein Eingabefenster" +#: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 +msgid "Share the same input method among all applications" +msgstr "Dieselbe Eingabemethode für alle Anwendungen verwenden" -#: ../ui/gtk/panel.py:509 -msgid "IBus is an intelligent input bus for Linux/Unix." -msgstr "IBus ist ein intelligenter Eingabe-Bus für Linux/Unix." +#: data/dconf/org.freedesktop.ibus.gschema.xml:57 +msgid "Enable input method by default" +msgstr "Eingabemethode standardmäßig aktivieren" -#: ../ui/gtk/panel.py:513 -msgid "translator-credits" +#: data/dconf/org.freedesktop.ibus.gschema.xml:58 +msgid "Enable input method by default when the application gets input focus" msgstr "" -"Fabian Affolter , 2009.\n" -"Hedda Peters , 2009." +"Eingabemethode standardmäßig aktivieren, wenn die Anwendung Eingabefokus " +"erlangt" -#: ../ui/gtk/languagebar.py:106 -msgid "About the input method" -msgstr "Über die Eingabemethode" +#: data/dconf/org.freedesktop.ibus.gschema.xml:62 +msgid "DConf preserve name prefixes" +msgstr "Dconf bewahrt Namenspräfixe" -#: ../ui/gtk/languagebar.py:214 -msgid "Switch input method" -msgstr "Eingabemethode wechseln" +#: data/dconf/org.freedesktop.ibus.gschema.xml:63 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "Namenspräfixe von Dconf-Schlüsseln, um Namenskonvertierung anzuhalten" -#: ../ui/gtk/languagebar.py:357 ../ui/gtk/engineabout.py:33 -#: ../setup/engineabout.py:33 ../setup/setup.ui.h:16 -msgid "About" -msgstr "Info" +#: data/dconf/org.freedesktop.ibus.gschema.xml:70 +msgid "Trigger shortcut keys" +msgstr "Auslöser-Tastenkombination" -#: ../ui/gtk/languagebar.py:361 -msgid "About the Input Method" -msgstr "Info zu Eingabemethoden" +#: data/dconf/org.freedesktop.ibus.gschema.xml:71 +#: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 +msgid "The shortcut keys for turning input method on or off" +msgstr "Tastenkombination zum An- oder Ausschalten der Eingabemethode" -#: ../ui/gtk/engineabout.py:61 ../setup/engineabout.py:61 -#, python-format -msgid "Language: %s\n" -msgstr "Sprache: %s\n" +#: data/dconf/org.freedesktop.ibus.gschema.xml:75 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "Tastenkombinationen auslösen für gtk_accelerator_parse" -#: ../ui/gtk/engineabout.py:63 ../setup/engineabout.py:63 -#, python-format -msgid "Keyboard layout: %s\n" -msgstr "Tastaturbelegung: %s\n" +#: data/dconf/org.freedesktop.ibus.gschema.xml:80 +msgid "Enable shortcut keys" +msgstr "Tastenkürzel aktivieren" -#: ../ui/gtk/engineabout.py:65 ../setup/engineabout.py:65 -#, python-format -msgid "Author: %s\n" -msgstr "Autor: %s\n" +#: data/dconf/org.freedesktop.ibus.gschema.xml:81 +msgid "The shortcut keys for turning input method on" +msgstr "Tastenkürzel zum Einschalten der Eingabemethoden" -#: ../ui/gtk/engineabout.py:67 ../setup/engineabout.py:67 -msgid "Description:\n" -msgstr "Beschreibung:\n" +#: data/dconf/org.freedesktop.ibus.gschema.xml:85 +msgid "Disable shortcut keys" +msgstr "Tastenkürzel deaktivieren" -#: ../setup/main.py:102 -msgid "trigger" -msgstr "Auslöser" +#: data/dconf/org.freedesktop.ibus.gschema.xml:86 +msgid "The shortcut keys for turning input method off" +msgstr "Tastenkürzel zum Ausschalten der Eingabemethoden" -#: ../setup/main.py:113 -msgid "enable" -msgstr "aktivieren" +#: data/dconf/org.freedesktop.ibus.gschema.xml:90 +#: data/dconf/org.freedesktop.ibus.gschema.xml:95 +msgid "Next engine shortcut keys" +msgstr "Nächste Engine-Tastenkombination" -#: ../setup/main.py:124 -msgid "disable" -msgstr "deaktivieren" +#: data/dconf/org.freedesktop.ibus.gschema.xml:91 +#: data/dconf/org.freedesktop.ibus.gschema.xml:96 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "" +"Tastenkombination zum Wechseln zur nächsten Eingabemethode in der Liste" -#: ../setup/main.py:135 -msgid "next input method" -msgstr "Nächste Eingabemethode" +#: data/dconf/org.freedesktop.ibus.gschema.xml:100 +#: data/dconf/org.freedesktop.ibus.gschema.xml:105 +msgid "Prev engine shortcut keys" +msgstr "Vorherige Engine-Tastenkombination" -#: ../setup/main.py:146 -msgid "previous input method" -msgstr "Vorherige Eingabemethode" +#: data/dconf/org.freedesktop.ibus.gschema.xml:101 +#: data/dconf/org.freedesktop.ibus.gschema.xml:106 +msgid "The shortcut keys for switching to the previous input method" +msgstr "Tastenkombination zum Wechseln zur vorherigen Eingabemethode" -#: ../setup/main.py:286 -msgid "IBus daemon is not started. Do you want to start it now?" -msgstr "IBus-Daemon wurde nicht gestartet. Möchten Sie ihn jetzt starten?" +#: data/dconf/org.freedesktop.ibus.gschema.xml:112 +msgid "Auto hide" +msgstr "Automatisch verstecken" -#: ../setup/main.py:301 +#: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" -"IBus has been started! If you can not use IBus, please add below lines in $HOME/.bashrc, and relogin your desktop.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" msgstr "" -"IBus wurde gestartet! Falls Sie IBus nicht nutzen können, fügen Sie bitte folgende Zeilen in $HOME/.bashrc hinzu und melden sich neu am Desktop an.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +"Verhalten des Eigenschaften-Panels. 0 = nicht anzeigen, 1 = automatisch " +"verstecken, 2 = immer anzeigen" -#: ../setup/main.py:316 -#, python-format -msgid "Select keyboard shortcut for %s" -msgstr "Wählen Sie eine Tastenkombination für %s" +#: data/dconf/org.freedesktop.ibus.gschema.xml:117 +#: data/dconf/org.freedesktop.ibus.gschema.xml:121 +msgid "Language panel position" +msgstr "Position des Sprach-Panels" -#: ../setup/keyboardshortcut.py:52 -msgid "Keyboard shortcuts" -msgstr "Tastenkombinationen" +#: data/dconf/org.freedesktop.ibus.gschema.xml:125 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "Den Input-Cursor verfolgen falls das Panel immer angezeigt wird" -#: ../setup/keyboardshortcut.py:63 -msgid "Key code:" -msgstr "Tasten-Code:" +#: data/dconf/org.freedesktop.ibus.gschema.xml:126 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" +"Wenn wahr folgt das Panel dem Input-Cursor wenn das Panel immer angezeigt " +"wird. Wenn falsch wird das Panel an einer festen Position angezeigt." -#: ../setup/keyboardshortcut.py:78 -msgid "Modifiers:" -msgstr "Hilfstasten:" +#: data/dconf/org.freedesktop.ibus.gschema.xml:130 +msgid "The milliseconds to show property panel" +msgstr "Millisekunden bis die Einstellungsleiste angezeigt wird" -#: ../setup/keyboardshortcut.py:231 +#: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" -"Please press a key (or a key combination).\n" -"The dialog will be closed when the key is released." +"The milliseconds to show property panel after focus-in or properties are " +"changed." msgstr "" -"Bitte eine Taste (oder eine Tastenkombination drücken).\n" -"Der Dialog wird geschlossen, wenn die Taste losgelassen wird." +"Millisekunden bis zum Anzeigen der Eigenschaftenleiste nach Fokuswechsel " +"oder Eigenschaftenwechsel." -#: ../setup/keyboardshortcut.py:233 -msgid "Please press a key (or a key combination)" -msgstr "Bitte eine Taste (oder eine Tastenkombination drücken)" +#: data/dconf/org.freedesktop.ibus.gschema.xml:135 +msgid "Orientation of lookup table" +msgstr "Ausrichtung der Lookup-Tabelle" -#: ../setup/enginecombobox.py:120 -msgid "Select an input method" -msgstr "Eingabemethode wählen" +#: data/dconf/org.freedesktop.ibus.gschema.xml:136 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "Ausrichtung der Lookup-Tabelle. 0 = Horizontal, 1 = Vertikal" -#. create im name & icon column -#: ../setup/enginetreeview.py:64 ../setup/setup.ui.h:33 -msgid "Input Method" -msgstr "Eingabemethode" +#: data/dconf/org.freedesktop.ibus.gschema.xml:140 +#: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 +#: setup/setup.ui:475 +msgid "Show icon on system tray" +msgstr "Symbol im Benachrichtigungsfeld anzeigen" -#: ../setup/enginetreeview.py:92 -msgid "Kbd" -msgstr "Kbd" +#: data/dconf/org.freedesktop.ibus.gschema.xml:145 +msgid "Show input method name" +msgstr "Name der Eingabemethode anzeigen" -#: ../setup/ibus-setup.desktop.in.h:1 ../setup/setup.ui.h:32 -msgid "IBus Preferences" -msgstr "IBus-Einstellungen" +#: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 +msgid "Show input method name on language bar" +msgstr "Name der Eingabemethode auf Sprachleiste anzeigen" -#: ../setup/ibus-setup.desktop.in.h:2 -msgid "Set IBus Preferences" -msgstr "IBus-Einstellungen konfigurieren" +#: data/dconf/org.freedesktop.ibus.gschema.xml:150 +msgid "RGBA value of XKB icon" +msgstr "RGBA Werte des XKB Icons" -#: ../data/ibus.schemas.in.h:1 -msgid "Auto hide" -msgstr "Automatisch verstecken" +#: data/dconf/org.freedesktop.ibus.gschema.xml:151 +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form 'rgba(r," +"g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 to 255 or " +"percentage values in the range 0% to 100%, and 'a' is a floating point value " +"in the range 0 to 1 of the alpha." +msgstr "" +"Das XKB Icon zeigt den Layout-String und der String wird mit dem RGBA Wert " +"gerendert. Der RGBA Wert kann sein 1. eine X11-Farbe , 2. ein Hex-Wert in " +"der Form '#rrggbb' wobei 'r', 'g' und 'b' HEX-Werte für Rot, Grün und Blau " +"sind, 3. eine RGB-Farbe in der Form 'rgb(r,g,b)' oder 4. eine RGBA-Farbe in " +"der Form 'rgba(r,g,b,a)' wobei 'r', 'g', und 'b' entweder Integer im Bereich " +"0 bis 255 oder Prozentwerte von 0-100% sind und 'a' ein Gleitkommawert im " +"Bereich 0 bis 1 für das Alpha ist." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:155 +msgid "The milliseconds to show the panel icon for a property" +msgstr "Millisekunden bis zum Anzeigen der Panel-Icons einer Eigenschaft" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:156 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" +"Millisekunden, die es dauert bevor das Panel-Icon vom Engine-Icon zum " +"Property-Icon wechselt wenn Engines gewechselt werden wenn die Property " +"durch den Wert von icon-prop-key in IBusEngineDesc spezifiziert ist. Wenn " +"der Wert 0 ist, gibt es keine Verzögerungszeit und das Property-Icon wird " +"sofort gezeigt." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:160 +msgid "Use custom font" +msgstr "Benutzerdefinierte Schriftart verwenden" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:161 +msgid "Use custom font name for language panel" +msgstr "Benutzerdefinierte Schriftart für Sprach-Panel verwenden" -#: ../data/ibus.schemas.in.h:2 +#: data/dconf/org.freedesktop.ibus.gschema.xml:165 +#: data/dconf/org.freedesktop.ibus.gschema.xml:192 msgid "Custom font" msgstr "Benutzerdefinierte Schriftart" -#: ../data/ibus.schemas.in.h:3 +#: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "Name der benutzerdefinierten Schriftart für Sprach-Panel" -#: ../data/ibus.schemas.in.h:4 -msgid "Disable shortcut keys" -msgstr "Tastenkürzel deaktivieren" +#: data/dconf/org.freedesktop.ibus.gschema.xml:170 setup/setup.ui:1305 +msgid "Choose glyphs with input method's language on candidate window" +msgstr "Wähle Glyphen in der Sprache der Eingabemethode im Kandidatenfenster" -#: ../data/ibus.schemas.in.h:5 -msgid "Embed Preedit Text" -msgstr "Preedit-Text einbetten" +#: data/dconf/org.freedesktop.ibus.gschema.xml:171 +msgid "" +"Some code points have the different glyphs and Pango determines the glyphs " +"from the language attribute. Pango chooses glyphs from the IBus engine's " +"language if the value is true and choose them from the desktop locale if the " +"value is false." +msgstr "" +"Zu manchen Unicodenummern gibt es unterschiedliche Glyphen je nach Sprache " +"und Pango bestimmt die korrekten Glyphen anhand des Sprachattributs. Pango " +"wählt Glyphen passend zur Sprache des IBus engines wenn dieser Wert true ist " +"und von der Lokale des Desktops wenn dieser Wert false ist." -#: ../data/ibus.schemas.in.h:6 -msgid "Embed Preedit Text in Application Window" -msgstr "Preedit-Text in Anwendungsfenster einbetten" +#: data/dconf/org.freedesktop.ibus.gschema.xml:182 +msgid "Unicode shortcut keys for gtk_accelerator_parse" +msgstr "Unicode-Tastenkombinationen für gtk_accelerator_parse" -#: ../data/ibus.schemas.in.h:7 -msgid "Enable input method by default" -msgstr "Eingabemethode standardmäßig aktivieren" +#: data/dconf/org.freedesktop.ibus.gschema.xml:183 +msgid "The shortcut keys for turning Unicode typing on or off" +msgstr "Die Tastenkombinationen zum Ein- und Ausschalten der Unicode-Eingabe" -#: ../data/ibus.schemas.in.h:8 -msgid "Enable input method by default when the application gets input focus" -msgstr "" -"Eingabemethode standardmäßig aktivieren, wenn die Anwendung Eingabefokus " -"erlangt" +#: data/dconf/org.freedesktop.ibus.gschema.xml:187 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "Emoji Tastenkombination für gtk_accelerator_parse" -#: ../data/ibus.schemas.in.h:9 -msgid "Enable shortcut keys" -msgstr "Tastenkürzel aktivieren" +#: data/dconf/org.freedesktop.ibus.gschema.xml:188 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "Tastenkombination zum Ein- und Ausschalten der Emoji-Eingabe" -#: ../data/ibus.schemas.in.h:10 -msgid "Language panel position" -msgstr "Position des Sprach-Panels" +#: data/dconf/org.freedesktop.ibus.gschema.xml:193 +msgid "Custom font name for emoji characters on emoji dialog" +msgstr "Benutzerdefinierter Font-Name für Emoji-Zeichen im Emoji-Dialog" -#: ../data/ibus.schemas.in.h:11 -msgid "Next engine shortcut keys" -msgstr "Nächste Engine-Tastenkombination" +#: data/dconf/org.freedesktop.ibus.gschema.xml:197 +msgid "Default language for emoji dictionary" +msgstr "Standard-Sprache für das Emoji-Wörterbuch" -#: ../data/ibus.schemas.in.h:12 -msgid "Orientation of lookup table" -msgstr "Ausrichtung der Lookup-Tabelle" +#: data/dconf/org.freedesktop.ibus.gschema.xml:198 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict ." +msgstr "" +"Auswahl einer Standard-Sprache der Emoji-Wörterbücher im Emoji-Dialog. Der " +"Wert $lang wird auf /usr/share/ibus/dicts/emoji-$lang.dict angewendet." -#: ../data/ibus.schemas.in.h:13 -msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" -msgstr "Ausrichtung der Lookup-Tabelle. 0 = Horizontal, 1 = Vertikal" +#: data/dconf/org.freedesktop.ibus.gschema.xml:202 +msgid "favorite emoji list on emoji dialog" +msgstr "Emoji-Favoriteneliste im Emoji-Dialog" -#: ../data/ibus.schemas.in.h:14 -msgid "Preload engines" -msgstr "Engines vorladen" +#: data/dconf/org.freedesktop.ibus.gschema.xml:203 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "" +"Sie können die favorisierten Emoji in der Emoji-Liste anzeigen wenn die " +"Liste Zeichen enthält." -#: ../data/ibus.schemas.in.h:15 -msgid "Preload engines during ibus starts up" -msgstr "Engines vorladen, während IBus startet" +#: data/dconf/org.freedesktop.ibus.gschema.xml:207 +msgid "favorite emoji annotation list on emoji dialog" +msgstr "Anmerkungsliste für bevorzugte Emoji im Emojidialog" -#: ../data/ibus.schemas.in.h:16 -msgid "Prev engine shortcut keys" -msgstr "Vorherige Engine-Tastenkombination" +#: data/dconf/org.freedesktop.ibus.gschema.xml:208 +msgid "You can assign an annotation for a favorite emoji in this list." +msgstr "" +"In dieser Liste kann man eine Anmerkung für bevorzugte Emoji definieren." -#: ../data/ibus.schemas.in.h:17 ../setup/setup.ui.h:42 -msgid "Share the same input method among all applications" -msgstr "Dieselbe Eingabemethode für alle Anwendungen verwenden" +#: data/dconf/org.freedesktop.ibus.gschema.xml:212 +msgid "Whether emoji annotations can be match partially or not" +msgstr "" +"Ob in Emojianmerkungen mit teilweiser Übereinstimmung gesucht wird oder nicht" -#: ../data/ibus.schemas.in.h:18 ../setup/setup.ui.h:43 -msgid "Show icon on system tray" -msgstr "Symbol im Benachrichtigungsfeld anzeigen" +#: data/dconf/org.freedesktop.ibus.gschema.xml:213 +msgid "" +"Whether emoji annotations can be matched with a partial string instead of " +"the exact match or not." +msgstr "" +"Ob Emojianmerkungen nur mit einem Teil der Zeichenfolge übereinstimmen " +"müssen anstatt mit kompletten Zeichenfolge." -#: ../data/ibus.schemas.in.h:19 -msgid "Show input method name" -msgstr "Name der Eingabemethode anzeigen" +#: data/dconf/org.freedesktop.ibus.gschema.xml:217 +msgid "Match emoji annotations with the specified length" +msgstr "Finde Emojianmerkungen mit der angegebenen Länge" -#: ../data/ibus.schemas.in.h:20 ../setup/setup.ui.h:45 -msgid "Show input method name on language bar" -msgstr "Name der Eingabemethode auf Sprachleiste anzeigen" +#: data/dconf/org.freedesktop.ibus.gschema.xml:218 +msgid "" +"Match emoji annotations partially with more than the specified number of " +"characters instead of the exact match." +msgstr "" +"Finde Emojianmerkungen mit teilweiser Übereinstimmung mit mehr als der " +"angegebenen Zahl von Zeichen anstelle von exakter Übereinstimmung." -#: ../data/ibus.schemas.in.h:21 +#: data/dconf/org.freedesktop.ibus.gschema.xml:222 +msgid "Choose a condition to match emoji annotations partially" +msgstr "" +"Wähle eine Bedingung um nach teilweisen Übereinstimmungen in " +"Emojianmerkungen zu suchen" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "" -"The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = " -"Always show" +"Choose one of the following conditions to match emoji annotations partially: " +"0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" -"Verhalten des Sprach-Panels: 0 = Im Menü einbetten, 1 = Automatisch " -"verstecken, 2 = Immer anzeigen" +"Wähle eine der folgenden Bedingungen um nach teilweisen Übereinstimmungen in " +"Emojianmerkungen zu suchen: 0 == Präfix, 1 == Suffix, 2 == Mittendrin" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:227 +msgid "Load the emoji data at the time of startup" +msgstr "Emojidaten beim Starten laden" -#: ../data/ibus.schemas.in.h:22 +#: data/dconf/org.freedesktop.ibus.gschema.xml:228 msgid "" -"The position of the language panel. 0 = Top left corner, 1 = Top right " -"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +"Load the emoji data at the time of startup if true. About 10MB memory is " +"needed to load the data. Load the emoji data when open the emoji dialog at " +"the beginning if false." msgstr "" -"Die Position des Sprach-Panels: 0 = Ecke oben links, 1 = Ecke oben rechts, 2" -" = Ecke unten links, 3 = Ecke unten rechts, 4 = Benutzerdefiniert" +"Wenn \"true\", dann werden die Emojidaten beim Starten geladen. Ungefähr " +"10MB werden benötigt um diese Daten zu laden. Wenn \"false\", dann werden " +"die Emojidaten erst geladen, wenn der Emojidialog zum ersten Mal geöffnet " +"wird." -#: ../data/ibus.schemas.in.h:23 -msgid "The shortcut keys for switching to the next input method in the list" +#: data/dconf/org.freedesktop.ibus.gschema.xml:232 +msgid "Load the Unicode data at the time of startup" +msgstr "Unicodedaten beim Starten laden" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:233 +msgid "" +"Load the Unicode data at the time of startup if true. About 15MB memory is " +"needed to load the data. Load the Unicode data when open the emoji dialog at " +"the beginning if false. The Unicode data is always loaded after the emoji " +"data is loaded even if true." msgstr "" -"Tastenkombination zum Wechseln zur nächsten Eingabemethode in der Liste" +"Wenn \"true\", dann werden die Unicodedaten beim Starten geladen. Ungefähr " +"15MB Speicher werden benötigt um die Daten zu laden. Wenn \"false\", dann " +"werden die Unicodedaten erst geladen wenn der Emojidialog zum ersten Mal " +"geöffnet wird. Die Unicodedaten werden immer nach den Emojidaten geladen, " +"auch wenn diese Option \"true\" ist." -#: ../data/ibus.schemas.in.h:24 -msgid "The shortcut keys for switching to the previous input method" -msgstr "Tastenkombination zum Wechseln zur vorherigen Eingabemethode" +#: ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." -#: ../data/ibus.schemas.in.h:25 -msgid "The shortcut keys for turning input method off" -msgstr "Tastenkürzel zum Ausschalten der Eingabemethoden" +#: ibus/lang.py:41 src/ibusutil.c:209 +msgid "Other" +msgstr "Sonstige" -#: ../data/ibus.schemas.in.h:26 -msgid "The shortcut keys for turning input method on" -msgstr "Tastenkürzel zum Einschalten der Eingabemethoden" +#: setup/emojilang.py:67 +msgid "Select a language" +msgstr "Eine Sprache auswählen" -#: ../data/ibus.schemas.in.h:27 ../setup/setup.ui.h:51 -msgid "The shortcut keys for turning input method on or off" -msgstr "Tastenkombination zum An- oder Ausschalten der Eingabemethode" +#: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 +#: setup/main.py:560 +msgid "_Cancel" +msgstr "_Abbrechen" -#: ../data/ibus.schemas.in.h:28 -msgid "Trigger shortcut keys" -msgstr "Auslöser-Tastenkombination" +#: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 +msgid "_OK" +msgstr "_OK" -#: ../data/ibus.schemas.in.h:29 -msgid "Use custom font" -msgstr "Benutzerdefinierte Schriftart verwenden" +#: setup/emojilang.py:235 setup/enginedialog.py:205 +msgid "More…" +msgstr "Mehr..." -#: ../data/ibus.schemas.in.h:30 -msgid "Use custom font name for language panel" -msgstr "Benutzerdefinierte Schriftart für Sprach-Panel verwenden" +#: setup/engineabout.py:37 setup/setup.ui:1368 ui/gtk3/panel.vala:1184 +msgid "About" +msgstr "Info" -#: ../data/ibus.schemas.in.h:31 -msgid "Use global input method" -msgstr "Globale Eingabemethode wählen" +#: setup/engineabout.py:40 setup/setup.ui:1391 +msgid "_Close" +msgstr "S_chließen" -#: ../data/ibus.schemas.in.h:32 ../setup/setup.ui.h:55 -msgid "Use system keyboard (XKB) layout" -msgstr "System-Tastatur (XKB) Belegung verwenden" +#: setup/engineabout.py:72 +#, python-format +msgid "Language: %s\n" +msgstr "Sprache: %s\n" -#: ../data/ibus.schemas.in.h:33 ../setup/setup.ui.h:56 -msgid "Use system keyboard layout" -msgstr "System-Tastaturbelegung verwenden" +#: setup/engineabout.py:75 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "Tastaturbelegung: %s\n" -#: ../setup/setup.ui.h:1 -msgid "..." -msgstr "..." +#: setup/engineabout.py:78 +#, python-format +msgid "Author: %s\n" +msgstr "Autor: %s\n" -#: ../setup/setup.ui.h:2 -msgid "Font and Style" -msgstr "Schriftart und Stil" +#: setup/engineabout.py:81 +msgid "Description:\n" +msgstr "Beschreibung:\n" -#: ../setup/setup.ui.h:3 -msgid "Global input method settings" +#: setup/enginecombobox.py:139 setup/enginedialog.py:57 +msgid "Select an input method" msgstr "Eingabemethode wählen" -#: ../setup/setup.ui.h:4 -msgid "Keyboard Layout" -msgstr "Tastaturbelegung" +#. add button +#: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 +msgid "_Add" +msgstr "_Hinzufügen" -#: ../setup/setup.ui.h:5 -msgid "Keyboard Shortcuts" -msgstr "Tastenkombinationen" +#. create im name & icon column +#: setup/enginetreeview.py:69 setup/setup.ui:838 +msgid "Input Method" +msgstr "Eingabemethode" -#: ../setup/setup.ui.h:6 -msgid "Startup" -msgstr "Starten" +#: setup/ibus-setup.desktop:3 setup/setup.ui:69 +msgid "IBus Preferences" +msgstr "IBus-Einstellungen" + +#: setup/ibus-setup.desktop:4 +msgid "Set IBus Preferences" +msgstr "IBus-Einstellungen konfigurieren" + +#: setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "Tastenkombinationen" + +#: setup/keyboardshortcut.py:67 +msgid "Key code:" +msgstr "Tasten-Code:" + +#: setup/keyboardshortcut.py:82 +msgid "Modifiers:" +msgstr "Hilfstasten:" + +#. apply button +#: setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "An_wenden" -#: ../setup/setup.ui.h:7 +#. delete button +#: setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "_Löschen" + +#: setup/keyboardshortcut.py:252 msgid "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." msgstr "" -"IBus\n" -"Der intelligente Eingabe-Bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" +"Bitte eine Taste (oder eine Tastenkombination drücken).\n" +"Der Dialog wird geschlossen, wenn die Taste losgelassen wird." -#: ../setup/setup.ui.h:14 -msgid "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." +#: setup/keyboardshortcut.py:255 +msgid "Please press a key (or a key combination)" +msgstr "Bitte eine Taste (oder eine Tastenkombination drücken)" + +#: setup/main.py:121 setup/main.py:588 +msgid "Use shortcut with shift to switch to the previous input method" msgstr "" -"Die standardmäßige Eingabemethode steht in der Liste an erster Stelle.\n" -"Sie können dies mit den Hoch/Runter-Schaltflächen ändern." +"Tastenkombination mit Umschalttaste benutzen, um zur vorherigen " +"Eingabemethode zu wechseln" -#: ../setup/setup.ui.h:17 -msgid "Add the selected input method into the enabled input methods" +#: setup/main.py:515 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "Der IBus-Dienst läuft nicht. Möchten Sie ihn starten?" + +#: setup/main.py:536 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" msgstr "" -"Fügen Sie die gewählte Eingabemethode zu den aktivierten Eingabemethoden " -"hinzu" +"IBus wurde gestartet! Falls Sie IBus nicht nutzen können, fügen Sie bitte in " +"$HOME/.bashrc die nachfolgenden Zeilen an und loggen Sie sich anschließend " +"erneut ein.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" -#: ../setup/setup.ui.h:18 -msgid "Advanced" -msgstr "Erweitert" +#. Translators: %d == 5 currently +#: setup/main.py:550 +#, python-format +msgid "IBus daemon could not be started in %d seconds." +msgstr "IBus-Dienst konnte innerhalb von %d Sekunden nicht gestartet werden." -#: ../setup/setup.ui.h:19 -msgid "Always" -msgstr "Immer" +#: setup/main.py:562 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "Wählen Sie eine Tastenkombination für %s" + +#. Translators: Title of the window +#: setup/main.py:564 +msgid "switching input methods" +msgstr "Eingabemethoden wechseln" + +#: setup/setup.ui:11 +msgid "Horizontal" +msgstr "Horizontal" + +#: setup/setup.ui:14 +msgid "Vertical" +msgstr "Vertikal" -#: ../setup/setup.ui.h:20 +#: setup/setup.ui:25 +msgid "Top left corner" +msgstr "Ecke oben links" + +#: setup/setup.ui:28 +msgid "Top right corner" +msgstr "Ecke oben rechts" + +#: setup/setup.ui:31 msgid "Bottom left corner" msgstr "Ecke unten links" -#: ../setup/setup.ui.h:21 +#: setup/setup.ui:34 msgid "Bottom right corner" msgstr "Ecke unten rechts" -#: ../setup/setup.ui.h:22 -msgid "Candidates orientation:" -msgstr "Ausrichtung der Kandidaten:" - -#: ../setup/setup.ui.h:23 +#: setup/setup.ui:37 msgid "Custom" msgstr "Benutzerdefiniert" -#: ../setup/setup.ui.h:24 +#: setup/setup.ui:48 +msgid "Do not show" +msgstr "Nicht anzeigen" + +#: setup/setup.ui:51 +msgid "Hide automatically" +msgstr "Automatisch ausblenden" + +#: setup/setup.ui:54 +msgid "Always" +msgstr "Immer" + +#: setup/setup.ui:113 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "" +"Tastenkombination zum Wechseln zur nächsten Eingabemethode in der Liste" + +#: setup/setup.ui:115 +msgid "Next input method:" +msgstr "Nächste Eingabemethode:" + +#: setup/setup.ui:127 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "" +"Tastenkombination zum Wechseln zur vorherigen Eingabemethode in der Liste" + +#: setup/setup.ui:129 +msgid "Previous input method:" +msgstr "Vorherige Eingabemethode:" + +#: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 +#: setup/setup.ui:903 setup/setup.ui:957 +msgid "..." +msgstr "..." + +#: setup/setup.ui:226 +msgid "Enable or disable:" +msgstr "Aktivieren oder deaktivieren:" + +#: setup/setup.ui:238 +msgid "Enable:" +msgstr "Aktivieren:" + +#: setup/setup.ui:291 msgid "Disable:" msgstr "Deaktivieren:" -#: ../setup/setup.ui.h:25 +#: setup/setup.ui:345 setup/setup.ui:983 +msgid "Keyboard Shortcuts" +msgstr "Tastenkombinationen" + +#: setup/setup.ui:374 +msgid "Set the orientation of candidates in lookup table" +msgstr "Ausrichtung der Kandidaten in Lookup-Tabelle einstellen" + +#: setup/setup.ui:376 +msgid "Candidates orientation:" +msgstr "Ausrichtung der Kandidaten:" + +#: setup/setup.ui:407 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "" +"Verhalten von IBus einstellen, das Sprach-Panel anzuzeigen oder zu verstecken" + +#: setup/setup.ui:409 +msgid "Show property panel:" +msgstr "Zeige Einstellungsleiste:" + +#: setup/setup.ui:423 +msgid "Language panel position:" +msgstr "Position des Sprach-Panels:" + +#: setup/setup.ui:494 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "" +"Name der gewählten Eingabemethode auf Sprach-Panel anzeigen, wenn " +"Ankreuzfeld aktiviert" + +#: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "Preedit-Text in Anwendungsfenster einbetten" -#: ../setup/setup.ui.h:26 +#: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "Den Preedit-Text der Eingabemethode in Anwendungsfenster einbetten" -#: ../setup/setup.ui.h:27 -msgid "Embedded in menu" -msgstr "In Menü eingebettet" - -#: ../setup/setup.ui.h:28 -msgid "Enable or disable:" -msgstr "Aktivieren oder deaktivieren:" +#: setup/setup.ui:527 +msgid "Use custom font:" +msgstr "Benutzerdefinierte Schriftart verwenden:" -#: ../setup/setup.ui.h:29 -msgid "Enable:" -msgstr "Aktivieren:" +#: setup/setup.ui:562 setup/setup.ui:1156 +msgid "Font and Style" +msgstr "Schriftart und Stil" -#: ../setup/setup.ui.h:30 +#: setup/setup.ui:579 msgid "General" msgstr "Allgemein" -#: ../setup/setup.ui.h:31 -msgid "Horizontal" -msgstr "Horizontal" +#: setup/setup.ui:671 +msgid "Add the selected input method into the enabled input methods" +msgstr "" +"Fügen Sie die gewählte Eingabemethode zu den aktivierten Eingabemethoden " +"hinzu" -#: ../setup/setup.ui.h:34 -msgid "Language panel position:" -msgstr "Position des Sprach-Panels:" +#: setup/setup.ui:682 +msgid "_Remove" +msgstr "_Entfernen" -#: ../setup/setup.ui.h:35 -msgid "Move down the selected input method in the enabled input methods" +#: setup/setup.ui:689 +msgid "Remove the selected input method from the enabled input methods" msgstr "" -"Bewegen Sie die gewählte Eingabemethode in den aktivierten Eingabemethoden " -"nach unten" +"Entfernen Sie die gewählte Eingabemethode aus den aktivierten Eingabemethoden" + +#: setup/setup.ui:700 +msgid "_Up" +msgstr "_Hoch" -#: ../setup/setup.ui.h:36 +#: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "" "Bewegen Sie die gewählte Eingabemethode in den aktivierten Eingabemethoden " "nach oben" -#: ../setup/setup.ui.h:37 -msgid "Next input method:" -msgstr "Nächste Eingabemethode:" +#: setup/setup.ui:718 +msgid "_Down" +msgstr "_Runter" -#: ../setup/setup.ui.h:38 -msgid "Previous input method:" -msgstr "Vorherige Eingabemethode:" +#: setup/setup.ui:725 +msgid "Move down the selected input method in the enabled input methods" +msgstr "" +"Bewegen Sie die gewählte Eingabemethode in den aktivierten Eingabemethoden " +"nach unten" -#: ../setup/setup.ui.h:39 -msgid "Remove the selected input method from the enabled input methods" +#: setup/setup.ui:736 +msgid "_About" +msgstr "_Info" + +#: setup/setup.ui:743 +msgid "Show information of the selected input method" +msgstr "Informationen zur gewählten Eingabemethode anzeigen" + +#: setup/setup.ui:754 +msgid "_Preferences" +msgstr "_Einstellungen" + +#: setup/setup.ui:761 +msgid "Show setup of the selected input method" +msgstr "Einstellungen der gewählten Eingabemethode anzeigen" + +#: setup/setup.ui:812 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." msgstr "" -"Entfernen Sie die gewählte Eingabemethode aus den aktivierten " -"Eingabemethoden" +"Die aktive Eingabemethode kann aus der angezeigten Liste durch die " +"Tastenkombination oder durch einen Klick auf das Icon ausgewählt werden" -#: ../setup/setup.ui.h:40 -msgid "Set the behavior of ibus how to show or hide language bar" +#: setup/setup.ui:873 +msgid "" +"The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" -"Verhalten von IBus einstellen, das Sprach-Panel anzuzeigen oder zu " -"verstecken" +"Die Tastenkombinationen um Konvertierungen von Emoji- oder Unicodenamen " +"einzuschalten" -#: ../setup/setup.ui.h:41 -msgid "Set the orientation of candidates in lookup table" -msgstr "Ausrichtung der Kandidaten in Lookup-Tabelle einstellen" +#: setup/setup.ui:875 +msgid "Emoji annotation:" +msgstr "Emojianmerkungen:" -#: ../setup/setup.ui.h:44 -msgid "Show information of the selected input method" -msgstr "Informationen zur gewählten Eingabemethode anzeigen" +#: setup/setup.ui:927 +msgid "The shortcut keys to enable Unicode code point conversions" +msgstr "" +"Tastenkombinationen zum Einschalten der Unicode Codepoint Konvertierung" -#: ../setup/setup.ui.h:46 -msgid "Show input method's name on language bar when check the checkbox" +#: setup/setup.ui:929 +msgid "Unicode code point:" +msgstr "Unicode Codepoint:" + +#: setup/setup.ui:1013 +msgid "Set a font of Unicode candidates on the emoji dialog" +msgstr "Font für Unicode-Kandidaten im Emoji-Dialog einstellen" + +#: setup/setup.ui:1015 +msgid "Unicode font:" +msgstr "Unicodefont:" + +#: setup/setup.ui:1038 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "Einstellen einer Sprache für Emojianmerkungen im Emojidialog" + +#: setup/setup.ui:1040 +msgid "Emoji annotation language:" +msgstr "Emojianmerkungssprache:" + +#: setup/setup.ui:1062 +msgid "" +"Match emoji annotations partially with the following condition and more than " +"the number of characters:" msgstr "" -"Name der gewählten Eingabemethode auf Sprach-Panel anzeigen, wenn " -"Ankreuzfeld aktiviert" +"Nach teilweisen Übereinstimmungen in Emojianmerkungen suchen mit folgender " +"Bedingung und mehr als der folgenden Anzahl von Zeichen:" + +#: setup/setup.ui:1067 +msgid "" +"If emoji annotations can be matched with a partial string instead of the " +"exact match" +msgstr "" +"Ob Emojianmerkungen nur mit einem Teil der Zeichenfolge übereinstimmen " +"müssen anstatt mit kompletten Zeichenfolge" -#: ../setup/setup.ui.h:47 -msgid "Show language panel:" -msgstr "Sprach-Panel anzeigen:" +#: setup/setup.ui:1101 +msgid "Prefix match" +msgstr "Präfix-Übereinstimmung" -#: ../setup/setup.ui.h:48 -msgid "Start ibus on login" -msgstr "IBus bei der Anmeldung starten" +#: setup/setup.ui:1115 +msgid "Suffix match" +msgstr "Suffix-Übereinstimmung" -#: ../setup/setup.ui.h:49 -msgid "The shortcut keys for switching to next input method in the list" +#: setup/setup.ui:1130 +msgid "Containing match" +msgstr "Enthält den Text" + +#: setup/setup.ui:1176 +msgid "Emoji" +msgstr "Emoji" + +#: setup/setup.ui:1230 +msgid "Keyboard Layout" +msgstr "Tastaturbelegung" + +#: setup/setup.ui:1278 +msgid "Global input method settings" +msgstr "Globale Inputmethodeneinstellungen" + +#: setup/setup.ui:1310 +msgid "" +"Choose glyphs with the input method's language on the candidate window for " +"the duplicated code points" msgstr "" -"Tastenkombination zum Wechseln zur nächsten Eingabemethode in der Liste" +"Wähle Glyphen passend zur Sprache der Inputmethode im Kandidatenfenster für " +"duplizierte Unicodenummern" -#: ../setup/setup.ui.h:50 -msgid "The shortcut keys for switching to previous input method in the list" +#: setup/setup.ui:1327 +msgid "Fonts" +msgstr "Schriftarten" + +#: setup/setup.ui:1347 +msgid "Advanced" +msgstr "Erweitert" + +#: src/ibusemojigen.h:30 +msgid "Activities" +msgstr "Aktivitäten" + +#: src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "Tiere & Natur" + +#: src/ibusemojigen.h:32 +msgid "Component" +msgstr "Komponente" + +#: src/ibusemojigen.h:33 +msgid "Flags" +msgstr "Flaggen" + +#: src/ibusemojigen.h:34 +msgid "Food & Drink" +msgstr "Essen & Trinken" + +#: src/ibusemojigen.h:35 +msgid "Objects" +msgstr "Objekte" + +#: src/ibusemojigen.h:36 +msgid "People & Body" +msgstr "Personen und Körper" + +#: src/ibusemojigen.h:37 +msgid "Smileys & Emotion" +msgstr "Smileys und Emotionen" + +#: src/ibusemojigen.h:38 +msgid "Symbols" +msgstr "Symbole" + +#: src/ibusemojigen.h:39 +msgid "Travel & Places" +msgstr "Reisen & Orte" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:33 +msgid "Basic Latin" +msgstr "Basis-Lateinisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:37 +msgid "Latin-1 Supplement" +msgstr "Lateinisch-1, Ergänzung" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:41 +msgid "Latin Extended-A" +msgstr "Lateinisch, erweitert-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:45 +msgid "Latin Extended-B" +msgstr "Lateinisch, erweitert-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:49 +msgid "IPA Extensions" +msgstr "IPA Erweiterungen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:53 +msgid "Spacing Modifier Letters" +msgstr "Nichtkombinierende Zusatzzeichen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:57 +msgid "Combining Diacritical Marks" +msgstr "Kombinierende diakritische Zeichen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:61 +msgid "Greek and Coptic" +msgstr "Griechisch und koptisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:65 +msgid "Cyrillic" +msgstr "Kyrillisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:69 +msgid "Cyrillic Supplement" +msgstr "Kyrillisch, Ergänzung" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:73 +msgid "Armenian" +msgstr "Armenisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:77 +msgid "Hebrew" +msgstr "Hebräisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:81 +msgid "Arabic" +msgstr "Arabisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:85 +msgid "Syriac" +msgstr "Syrisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:89 +msgid "Arabic Supplement" +msgstr "Arabisch, Ergänzung" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:93 +msgid "Thaana" +msgstr "Thaana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:97 +msgid "NKo" +msgstr "N’Ko" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:101 +msgid "Samaritan" +msgstr "Samaritanisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:105 +msgid "Mandaic" +msgstr "Mandäisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:109 +msgid "Syriac Supplement" +msgstr "Syrisch, Ergänzung" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:113 +msgid "Arabic Extended-A" +msgstr "Arabisch, Erweiterung A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:117 +msgid "Devanagari" +msgstr "Devanagari" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:121 +msgid "Bengali" +msgstr "Bengalisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:125 +msgid "Gurmukhi" +msgstr "Gurmukhi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:129 +msgid "Gujarati" +msgstr "Gujarati" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:133 +msgid "Oriya" +msgstr "Oriya" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:137 +msgid "Tamil" +msgstr "Tamilisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:141 +msgid "Telugu" +msgstr "Telugu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:145 +msgid "Kannada" +msgstr "Kannada" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:149 +msgid "Malayalam" +msgstr "Malayalam" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:153 +msgid "Sinhala" +msgstr "Singhalesisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:157 +msgid "Thai" +msgstr "Thailändisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:161 +msgid "Lao" +msgstr "Laotisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:165 +msgid "Tibetan" +msgstr "Tibetisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:169 +msgid "Myanmar" +msgstr "Birmanisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:173 +msgid "Georgian" +msgstr "Georgisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:177 +msgid "Hangul Jamo" +msgstr "Hangeul-Jamo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:181 +msgid "Ethiopic" +msgstr "Äthiopisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:185 +msgid "Ethiopic Supplement" +msgstr "Äthiopisch, Zusatz" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:189 +msgid "Cherokee" +msgstr "Cherokee" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:193 +msgid "Unified Canadian Aboriginal Syllabics" +msgstr "Vereinheitlichte Silbenzeichen kanadischer Ureinwohner" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:197 +msgid "Ogham" +msgstr "Ogam" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:201 +msgid "Runic" +msgstr "Runen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:205 +msgid "Tagalog" +msgstr "Tagalog" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:209 +msgid "Hanunoo" +msgstr "Hanunóo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:213 +msgid "Buhid" +msgstr "Buid" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:217 +msgid "Tagbanwa" +msgstr "Tagbanuwa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:221 +msgid "Khmer" +msgstr "Khmer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:225 +msgid "Mongolian" +msgstr "Mongolisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:229 +msgid "Unified Canadian Aboriginal Syllabics Extended" +msgstr "Vereinheitlichte Silbenzeichen kanadischer Ureinwohner, erweitert" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:233 +msgid "Limbu" +msgstr "Limbu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:237 +msgid "Tai Le" +msgstr "Tai Le" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:241 +msgid "New Tai Lue" +msgstr "Neu-Tai-Lue" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:245 +msgid "Khmer Symbols" +msgstr "Khmer-Symbole" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:249 +msgid "Buginese" +msgstr "Buginesisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:253 +msgid "Tai Tham" +msgstr "Lanna" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:257 +msgid "Combining Diacritical Marks Extended" +msgstr "Kombinierende diakritische Zeichen, erweitert" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:261 +msgid "Balinese" +msgstr "Balinesisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:265 +msgid "Sundanese" +msgstr "Sundanesisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:269 +msgid "Batak" +msgstr "Batak" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:273 +msgid "Lepcha" +msgstr "Lepcha" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:277 +msgid "Ol Chiki" +msgstr "Ol Chiki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:281 +msgid "Cyrillic Extended-C" +msgstr "Kyrillisch, erweitert-C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:285 +msgid "Georgian Extended" +msgstr "Georgisch, erweitert" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:289 +msgid "Sundanese Supplement" +msgstr "Sundanesisch, Ergänzung" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:293 +msgid "Vedic Extensions" +msgstr "Vedische Erweiterungen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:297 +msgid "Phonetic Extensions" +msgstr "Phonetische Erweiterungen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:301 +msgid "Phonetic Extensions Supplement" +msgstr "Phonetische Erweiterungen, Ergänzung" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:305 +msgid "Combining Diacritical Marks Supplement" +msgstr "Kombinierende diakritische Zeichen, Ergänzung" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:309 +msgid "Latin Extended Additional" +msgstr "Lateinisch, weiterer Zusatz" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:313 +msgid "Greek Extended" +msgstr "Griechisch, Zusatz" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:317 +msgid "General Punctuation" +msgstr "Allgemeine Interpunktion" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:321 +msgid "Superscripts and Subscripts" +msgstr "Hoch- und tiefgestellte Zeichen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:325 +msgid "Currency Symbols" +msgstr "Währungszeichen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:329 +msgid "Combining Diacritical Marks for Symbols" +msgstr "Kombinierende diakritische Zeichen für Symbole" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:333 +msgid "Letterlike Symbols" +msgstr "Buchstabenähnliche Symbole" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:337 +msgid "Number Forms" +msgstr "Zahlzeichen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:341 +msgid "Arrows" +msgstr "Pfeile" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:345 +msgid "Mathematical Operators" +msgstr "Mathematische Operatoren" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:349 +msgid "Miscellaneous Technical" +msgstr "Verschiedene technische Zeichen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:353 +msgid "Control Pictures" +msgstr "Symbole für Steuerzeichen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:357 +msgid "Optical Character Recognition" +msgstr "Optische Zeichenerkennung" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:361 +msgid "Enclosed Alphanumerics" +msgstr "Umschlossene alphanumerische Zeichen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:365 +msgid "Box Drawing" +msgstr "Rahmenzeichnung" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:369 +msgid "Block Elements" +msgstr "Blockelemente" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:373 +msgid "Geometric Shapes" +msgstr "Geometrische Formen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:377 +msgid "Miscellaneous Symbols" +msgstr "Verschiedene Symbole" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:381 +msgid "Dingbats" +msgstr "Dingbats" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:385 +msgid "Miscellaneous Mathematical Symbols-A" +msgstr "Verschiedene mathematische Symbole-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:389 +msgid "Supplemental Arrows-A" +msgstr "Zusätzliche Pfeile-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:393 +msgid "Braille Patterns" +msgstr "Braille-Zeichen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:397 +msgid "Supplemental Arrows-B" +msgstr "Zusätzliche Pfeile-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:401 +msgid "Miscellaneous Mathematical Symbols-B" +msgstr "Verschiedene mathematische Symbole-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:405 +msgid "Supplemental Mathematical Operators" +msgstr "Zusätzliche Mathematische Operatoren" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:409 +msgid "Miscellaneous Symbols and Arrows" +msgstr "Verschiedene Symbole und Pfeile" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:413 +msgid "Glagolitic" +msgstr "Glagolitisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:417 +msgid "Latin Extended-C" +msgstr "Lateinisch, erweitert-C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:421 +msgid "Coptic" +msgstr "Koptisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:425 +msgid "Georgian Supplement" +msgstr "Georgisch, Ergänzung" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:429 +msgid "Tifinagh" +msgstr "Tifinagh" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:433 +msgid "Ethiopic Extended" +msgstr "Äthiopisch, erweitert" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:437 +msgid "Cyrillic Extended-A" +msgstr "Kyrillisch, erweitert-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:441 +msgid "Supplemental Punctuation" +msgstr "Zusätzliche Interpunktion" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:445 +msgid "CJK Radicals Supplement" +msgstr "CJK-Radikale, Ergänzung" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:449 +msgid "Kangxi Radicals" +msgstr "Kangxi-Radikale" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:453 +msgid "Ideographic Description Characters" +msgstr "Ideographische Beschreibungszeichen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:457 +msgid "CJK Symbols and Punctuation" +msgstr "CJK-Symbole und -Interpunktion" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:461 +msgid "Hiragana" +msgstr "Hiragana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:465 +msgid "Katakana" +msgstr "Katakana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:469 +msgid "Bopomofo" +msgstr "Bopomofo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:473 +msgid "Hangul Compatibility Jamo" +msgstr "Hangeul-Jamo, Kompatibilität" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:477 +msgid "Kanbun" +msgstr "Kanbun" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:481 +msgid "Bopomofo Extended" +msgstr "Bopomofo, erweitert" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:485 +msgid "CJK Strokes" +msgstr "CJK-Striche" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:489 +msgid "Katakana Phonetic Extensions" +msgstr "Katakana, Phonetische Erweiterungen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:493 +msgid "Enclosed CJK Letters and Months" +msgstr "Umschlossene CJK-Zeichen und -Monate" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:497 +msgid "CJK Compatibility" +msgstr "CJK-Kompatibilität" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:501 +msgid "CJK Unified Ideographs Extension A" +msgstr "Vereinheitlichte CJK-Ideogramme, Erweiterung A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:505 +msgid "Yijing Hexagram Symbols" +msgstr "I-Ging-Hexagramme" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:509 +msgid "CJK Unified Ideographs" +msgstr "Vereinheitlichte CJK-Ideogramme" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:513 +msgid "Yi Syllables" +msgstr "Yi-Silbenzeichen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:517 +msgid "Yi Radicals" +msgstr "Yi-Radikale" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:521 +msgid "Lisu" +msgstr "Lisu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:525 +msgid "Vai" +msgstr "Vai" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:529 +msgid "Cyrillic Extended-B" +msgstr "Kyrillisch, erweitert-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:533 +msgid "Bamum" +msgstr "Bamum" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:537 +msgid "Modifier Tone Letters" +msgstr "Modifizierende Tonzeichen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:541 +msgid "Latin Extended-D" +msgstr "Lateinisch, erweitert-D" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:545 +msgid "Syloti Nagri" +msgstr "Syloti Nagri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:549 +msgid "Common Indic Number Forms" +msgstr "Allgemeine indische Ziffern" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:553 +msgid "Phags-pa" +msgstr "Phagspa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:557 +msgid "Saurashtra" +msgstr "Saurashtra" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:561 +msgid "Devanagari Extended" +msgstr "Devanagari, erweitert" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:565 +msgid "Kayah Li" +msgstr "Kayah Li" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:569 +msgid "Rejang" +msgstr "Rejang" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:573 +msgid "Hangul Jamo Extended-A" +msgstr "Hangeul-Jamo, erweitert-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:577 +msgid "Javanese" +msgstr "Javanisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:581 +msgid "Myanmar Extended-B" +msgstr "Birmanisch, erweitert-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:585 +msgid "Cham" +msgstr "Cham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:589 +msgid "Myanmar Extended-A" +msgstr "Birmanisch, erweitert-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:593 +msgid "Tai Viet" +msgstr "Tai Viet" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:597 +msgid "Meetei Mayek Extensions" +msgstr "Meitei-Mayek, Erweiterungen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:601 +msgid "Ethiopic Extended-A" +msgstr "Äthiopisch, erweitert-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:605 +msgid "Latin Extended-E" +msgstr "Lateinisch, erweitert-E" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:609 +msgid "Cherokee Supplement" +msgstr "Cherokee, Ergänzung" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:613 +msgid "Meetei Mayek" +msgstr "Meitei-Mayek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:617 +msgid "Hangul Syllables" +msgstr "Hangeul-Silbenzeichen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:621 +msgid "Hangul Jamo Extended-B" +msgstr "Hangeul-Jamo, erweitert-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:625 +msgid "High Surrogates" +msgstr "High Surrogates" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:629 +msgid "High Private Use Surrogates" +msgstr "High Surrogates (privater Bereich)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:633 +msgid "Low Surrogates" +msgstr "Low Surrogates" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:637 +msgid "Private Use Area" +msgstr "Private Use Zone" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:641 +msgid "CJK Compatibility Ideographs" +msgstr "CJK-Ideogramme, Kompatibilität" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:645 +msgid "Alphabetic Presentation Forms" +msgstr "Alphabetische Präsentationsformen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:649 +msgid "Arabic Presentation Forms-A" +msgstr "Arabische Präsentationsformen-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:653 +msgid "Variation Selectors" +msgstr "Variantenselektoren" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:657 +msgid "Vertical Forms" +msgstr "Vertikale Formen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:661 +msgid "Combining Half Marks" +msgstr "Kombinierende halbe diakritische Zeichen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:665 +msgid "CJK Compatibility Forms" +msgstr "CJK-Kompatibilitätsformen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:669 +msgid "Small Form Variants" +msgstr "Kleine Formvarianten" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:673 +msgid "Arabic Presentation Forms-B" +msgstr "Arabische Präsentationsformen-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:677 +msgid "Halfwidth and Fullwidth Forms" +msgstr "Halbbreite und vollbreite Formen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:681 +msgid "Specials" +msgstr "Spezielles" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:685 +msgid "Linear B Syllabary" +msgstr "Linear-B-Silbenzeichen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:689 +msgid "Linear B Ideograms" +msgstr "Linear-B-Ideogramme" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:693 +msgid "Aegean Numbers" +msgstr "Ägäische Zahlzeichen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:697 +msgid "Ancient Greek Numbers" +msgstr "Altgriechische Zahlzeichen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:701 +msgid "Ancient Symbols" +msgstr "Alte Symbole" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:705 +msgid "Phaistos Disc" +msgstr "Diskos von Phaistos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:709 +msgid "Lycian" +msgstr "Lykisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:713 +msgid "Carian" +msgstr "Karisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:717 +msgid "Coptic Epact Numbers" +msgstr "Koptische Zahlzeichen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:721 +msgid "Old Italic" +msgstr "Altitalisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:725 +msgid "Gothic" +msgstr "Gotisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:729 +msgid "Old Permic" +msgstr "Altpermisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:733 +msgid "Ugaritic" +msgstr "Ugaritisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:737 +msgid "Old Persian" +msgstr "Altpersisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:741 +msgid "Deseret" +msgstr "Mormonenalphabet" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:745 +msgid "Shavian" +msgstr "Shaw-Alphabet" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:749 +msgid "Osmanya" +msgstr "Osmaniya" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:753 +msgid "Osage" +msgstr "Osage" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:757 +msgid "Elbasan" +msgstr "Albanisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:761 +msgid "Caucasian Albanian" +msgstr "Alwanisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:765 +msgid "Linear A" +msgstr "Linear A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:769 +msgid "Cypriot Syllabary" +msgstr "Kyprische Schrift" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:773 +msgid "Imperial Aramaic" +msgstr "Aramäisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:777 +msgid "Palmyrene" +msgstr "Palmyrenisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:781 +msgid "Nabataean" +msgstr "Nabatäisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:785 +msgid "Hatran" +msgstr "Hatran" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:789 +msgid "Phoenician" +msgstr "Phönizisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:793 +msgid "Lydian" +msgstr "Lydisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:797 +msgid "Meroitic Hieroglyphs" +msgstr "Meroitische Hieroglyphen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:801 +msgid "Meroitic Cursive" +msgstr "Meroitisch-demotisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:805 +msgid "Kharoshthi" +msgstr "Kharoshthi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:809 +msgid "Old South Arabian" +msgstr "Altsüdarabisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:813 +msgid "Old North Arabian" +msgstr "Altnordarabisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:817 +msgid "Manichaean" +msgstr "Manichäisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:821 +msgid "Avestan" +msgstr "Avestisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:825 +msgid "Inscriptional Parthian" +msgstr "Parthisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:829 +msgid "Inscriptional Pahlavi" +msgstr "Inschriften-Pahlavi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:833 +msgid "Psalter Pahlavi" +msgstr "Psalter-Pahlavi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:837 +msgid "Old Turkic" +msgstr "Alttürkisch (Orchon-Runen)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:841 +msgid "Old Hungarian" +msgstr "Altungarisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:845 +msgid "Hanifi Rohingya" +msgstr "Hanifi Rohingya" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:849 +msgid "Rumi Numeral Symbols" +msgstr "Rumi-Ziffern" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:853 +msgid "Yezidi" +msgstr "Jesidisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:857 +msgid "Old Sogdian" +msgstr "Altsogdisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:861 +msgid "Sogdian" +msgstr "Sogdisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:865 +msgid "Chorasmian" +msgstr "Chorasmian" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:869 +msgid "Elymaic" +msgstr "Elymaisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:873 +msgid "Brahmi" +msgstr "Brahmi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:877 +msgid "Kaithi" +msgstr "Kaithi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:881 +msgid "Sora Sompeng" +msgstr "Sorang-Sompeng" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:885 +msgid "Chakma" +msgstr "Chakma" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:889 +msgid "Mahajani" +msgstr "Mahajani" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:893 +msgid "Sharada" +msgstr "Sharada" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:897 +msgid "Sinhala Archaic Numbers" +msgstr "Singhalesische Zahlzeichen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:901 +msgid "Khojki" +msgstr "Khojki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:905 +msgid "Multani" +msgstr "Multanisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:909 +msgid "Khudawadi" +msgstr "Khudabadi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:913 +msgid "Grantha" +msgstr "Grantha" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:917 +msgid "Newa" +msgstr "Newa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:921 +msgid "Tirhuta" +msgstr "Tirhuta" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:925 +msgid "Siddham" +msgstr "Siddham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:929 +msgid "Modi" +msgstr "Modi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:933 +msgid "Mongolian Supplement" +msgstr "Mongolisch, Ergänzung" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:937 +msgid "Takri" +msgstr "Takri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:941 +msgid "Ahom" +msgstr "Ahom" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:945 +msgid "Dogra" +msgstr "Dogra" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:949 +msgid "Warang Citi" +msgstr "Varang Kshiti" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:953 +msgid "Dives Akuru" +msgstr "Dives Akuru" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:957 +msgid "Nandinagari" +msgstr "Nandinagari" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:961 +msgid "Zanabazar Square" +msgstr "Dsanabadsar-Quadratschrift" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:965 +msgid "Soyombo" +msgstr "Sojombo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:969 +msgid "Pau Cin Hau" +msgstr "Pau Cin Hau" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:973 +msgid "Bhaiksuki" +msgstr "Bhaiksuki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:977 +msgid "Marchen" +msgstr "Marchen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:981 +msgid "Masaram Gondi" +msgstr "Masaram Gondi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:985 +msgid "Gunjala Gondi" +msgstr "Gunjala Gondi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:989 +msgid "Makasar" +msgstr "Makassar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:993 +msgid "Lisu Supplement" +msgstr "Lisu, Ergänzung" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:997 +msgid "Tamil Supplement" +msgstr "Tamilisch, Ergänzung" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1001 +msgid "Cuneiform" +msgstr "Keilschrift" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1005 +msgid "Cuneiform Numbers and Punctuation" +msgstr "Keilschrift-Zahlzeichen und -Interpunktion" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1009 +msgid "Early Dynastic Cuneiform" +msgstr "Frühe Keilschrift" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1013 +msgid "Egyptian Hieroglyphs" +msgstr "Ägyptische Hieroglyphen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1017 +msgid "Egyptian Hieroglyph Format Controls" +msgstr "Ägyptische Hieroglyphen-Steuerzeichen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1021 +msgid "Anatolian Hieroglyphs" +msgstr "Anatolische Hieroglyphen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1025 +msgid "Bamum Supplement" +msgstr "Bamum, Ergänzung" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1029 +msgid "Mro" +msgstr "Mro" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1033 +msgid "Bassa Vah" +msgstr "Bassa Vah" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1037 +msgid "Pahawh Hmong" +msgstr "Pahawh Hmong" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1041 +msgid "Medefaidrin" +msgstr "Medefaidrin" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1045 +msgid "Miao" +msgstr "Pollard-Schrift" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1049 +msgid "Ideographic Symbols and Punctuation" +msgstr "Ideographische Symbole und Interpunktion" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1053 +msgid "Tangut" +msgstr "Xixia" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1057 +msgid "Tangut Components" +msgstr "Xixia-Komponenten" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1061 +msgid "Khitan Small Script" +msgstr "Kleine Kitan-Schrift" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1065 +msgid "Tangut Supplement" +msgstr "Xixia, Ergänzung" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1069 +msgid "Kana Supplement" +msgstr "Kana, Ergänzung" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1073 +msgid "Kana Extended-A" +msgstr "Kana, erweitert-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1077 +msgid "Small Kana Extension" +msgstr "Kleine Kana, erweitert" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1081 +msgid "Nushu" +msgstr "Frauenschrift" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1085 +msgid "Duployan" +msgstr "Duployé-Kurzschrift" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1089 +msgid "Shorthand Format Controls" +msgstr "Kurzschrift-Steuerzeichen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1093 +msgid "Byzantine Musical Symbols" +msgstr "Byzantinische Notenschriftzeichen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1097 +msgid "Musical Symbols" +msgstr "Notenschriftzeichen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1101 +msgid "Ancient Greek Musical Notation" +msgstr "Altgriechische Notenschriftzeichen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1105 +msgid "Mayan Numerals" +msgstr "Maya-Zahlzeichen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1109 +msgid "Tai Xuan Jing Symbols" +msgstr "Tai-Xuan-Jing-Symbole" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1113 +msgid "Counting Rod Numerals" +msgstr "Zählstabziffern" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1117 +msgid "Mathematical Alphanumeric Symbols" +msgstr "Mathematische alphanumerische Symbole" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1121 +msgid "Sutton SignWriting" +msgstr "Sutton-SignWriting" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1125 +msgid "Glagolitic Supplement" +msgstr "Glagolitisch, Ergänzung" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1129 +msgid "Nyiakeng Puachue Hmong" +msgstr "Nyiakeng Puachue Hmong" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1133 +msgid "Wancho" +msgstr "Wancho" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1137 +msgid "Mende Kikakui" +msgstr "Mende-Schrift" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1141 +msgid "Adlam" +msgstr "Adlam" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1145 +msgid "Indic Siyaq Numbers" +msgstr "Indische Siyaq-Zahlzeichen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1149 +msgid "Ottoman Siyaq Numbers" +msgstr "Osmanische Siyaq-Zahlzeichen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1153 +msgid "Arabic Mathematical Alphabetic Symbols" +msgstr "Arabische mathematische alphanumerische Symbole" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1157 +msgid "Mahjong Tiles" +msgstr "Mahjonggsteine" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1161 +msgid "Domino Tiles" +msgstr "Dominosteine" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1165 +msgid "Playing Cards" +msgstr "Spielkarten" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1169 +msgid "Enclosed Alphanumeric Supplement" +msgstr "Zusätzliche umschlossene alphanumerische Zeichen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1173 +msgid "Enclosed Ideographic Supplement" +msgstr "Zusätzliche umschlossene CJK-Zeichen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1177 +msgid "Miscellaneous Symbols and Pictographs" +msgstr "Verschiedene piktografische Symbole" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1181 +msgid "Emoticons" +msgstr "Smileys" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1185 +msgid "Ornamental Dingbats" +msgstr "Ziersymbole" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1189 +msgid "Transport and Map Symbols" +msgstr "Verkehrs- und Kartensymbole" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1193 +msgid "Alchemical Symbols" +msgstr "Alchemistische Symbole" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1197 +msgid "Geometric Shapes Extended" +msgstr "Geometrische Formen, erweitert" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1201 +msgid "Supplemental Arrows-C" +msgstr "Zusätzliche Pfeile-C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1205 +msgid "Supplemental Symbols and Pictographs" +msgstr "Zusätzliche piktografische Symbole" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1209 +msgid "Chess Symbols" +msgstr "Schachsymbole" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1213 +msgid "Symbols and Pictographs Extended-A" +msgstr "Piktografische Symbole, erweitert-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1217 +msgid "Symbols for Legacy Computing" +msgstr "Symbole für Retrocomputer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1221 +msgid "CJK Unified Ideographs Extension B" +msgstr "Vereinheitlichte CJK-Ideogramme, Erweiterung B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1225 +msgid "CJK Unified Ideographs Extension C" +msgstr "Vereinheitlichte CJK-Ideogramme, Erweiterung C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1229 +msgid "CJK Unified Ideographs Extension D" +msgstr "Vereinheitlichte CJK-Ideogramme, Erweiterung D" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1233 +msgid "CJK Unified Ideographs Extension E" +msgstr "Vereinheitlichte CJK-Ideogramme, Erweiterung E" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1237 +msgid "CJK Unified Ideographs Extension F" +msgstr "Vereinheitlichte CJK-Ideogramme, Erweiterung F" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1241 +msgid "CJK Compatibility Ideographs Supplement" +msgstr "CJK-Ideogramme, Kompatibilität, Ergänzung" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1245 +msgid "CJK Unified Ideographs Extension G" +msgstr "Vereinheitlichte CJK-Ideogramme, Erweiterung G" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1249 +msgid "Tags" +msgstr "Tags" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1253 +msgid "Variation Selectors Supplement" +msgstr "Variantenselektoren, Ergänzung" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1257 +msgid "Supplementary Private Use Area-A" +msgstr "Supplementary Private Use Area-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1261 +msgid "Supplementary Private Use Area-B" +msgstr "Supplementary Private Use Area-B" + +#: tools/main.vala:51 +msgid "List engine name only" +msgstr "Nur Engine-Name auflisten" + +#: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 +msgid "Can't connect to IBus.\n" +msgstr "Keine Verbindung zu IBus.\n" + +#: tools/main.vala:93 +#, c-format +msgid "language: %s\n" +msgstr "Sprache: %s\n" + +#: tools/main.vala:161 +msgid "No engine is set.\n" +msgstr "Keine Engine gesetzt.\n" + +#: tools/main.vala:169 +msgid "Set global engine failed.\n" +msgstr "Setzen der globalen Engine fehlgeschlagen.\n" + +#: tools/main.vala:174 +msgid "Get global engine failed.\n" +msgstr "Auslesen der globalen Engine fehlgeschlagen.\n" + +#: tools/main.vala:217 +msgid "Read the system registry cache." +msgstr "Lesen Sie den System-Registry-Cache." + +#: tools/main.vala:219 +msgid "Read the registry cache FILE." +msgstr "Lesen Sie die Registry-Cache DATEI." + +#: tools/main.vala:237 tools/main.vala:242 +msgid "The registry cache is invalid.\n" +msgstr "Der Registry-Cache ist ungültig.\n" + +#: tools/main.vala:257 +msgid "Write the system registry cache." +msgstr "Schreiben Sie den System-Registry-Cache." + +#: tools/main.vala:259 +msgid "Write the registry cache FILE." +msgstr "Schreiben Sie die Registry-Cache DATEI." + +#: tools/main.vala:295 +msgid "" +"Use engine schema paths instead of ibus core, which can be comma-separated " +"values." msgstr "" -"Tastenkombination zum Wechseln zur vorherigen Eingabemethode in der Liste" +"Schemapfade des Engines anstelle von ibus core verwenden, das können durch " +"Komma getrennte Werte sein." -#: ../setup/setup.ui.h:52 -msgid "Top left corner" -msgstr "Ecke oben links" +#: tools/main.vala:381 +msgid "Resetting…" +msgstr "Neustarten..." -#: ../setup/setup.ui.h:53 -msgid "Top right corner" -msgstr "Ecke oben rechts" +#: tools/main.vala:399 +msgid "Done" +msgstr "Fertig" -#: ../setup/setup.ui.h:54 -msgid "Use custom font:" -msgstr "Benutzerdefinierte Schriftart verwenden:" +#: tools/main.vala:444 +msgid "Set or get engine" +msgstr "Setzen oder erhalten Modul" -#: ../setup/setup.ui.h:57 -msgid "Vertical" -msgstr "Vertikal" +#: tools/main.vala:445 +msgid "Exit ibus-daemon" +msgstr "Beenden ibus-daemon" + +#: tools/main.vala:446 +msgid "Show available engines" +msgstr "Anzeigen verfügbare Module" + +#: tools/main.vala:447 +msgid "(Not implemented)" +msgstr "(Nicht implementiert)" + +#: tools/main.vala:448 +msgid "Restart ibus-daemon" +msgstr "Neustart ibus-daemon" + +#: tools/main.vala:449 +msgid "Show version" +msgstr "Anzeigen Version" + +#: tools/main.vala:450 +msgid "Show the content of registry cache" +msgstr "Anzeigen des Registry-Cache Inhalts" + +#: tools/main.vala:451 +msgid "Create registry cache" +msgstr "Erstellen Registry-Cache" + +#: tools/main.vala:452 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "Ausgabe der D-Bus-Adresse des ibus-Daemon" + +#: tools/main.vala:453 +msgid "Show the configuration values" +msgstr "Anzeigen der Konfigurationswerte" + +#: tools/main.vala:454 +msgid "Reset the configuration values" +msgstr "Zurücksetzen der Konfigurationswerte" + +#: tools/main.vala:456 +msgid "Save emoji on dialog to clipboard" +msgstr "Kopieren des ausgewählten Emoji in die Zwischenablage" + +#: tools/main.vala:458 +msgid "Show this information" +msgstr "Anzeige dieser Information" + +#: tools/main.vala:464 +#, c-format +msgid "" +"Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "" +"Anwendung: %s BEFEHL [OPTION...]\n" +"\n" + +#: tools/main.vala:465 +msgid "Commands:\n" +msgstr "Befehle:\n" + +#: tools/main.vala:494 +#, c-format +msgid "%s is unknown command!\n" +msgstr "%s ist ein unbekannter Befehl!\n" + +#: ui/gtk3/emojier.vala:233 +msgid "Favorites" +msgstr "Favoriten" + +#: ui/gtk3/emojier.vala:234 +msgid "Others" +msgstr "Andere" + +#: ui/gtk3/emojier.vala:235 +msgid "Open Unicode choice" +msgstr "Öffne Unicodeauswahl" + +#: ui/gtk3/emojier.vala:995 +msgid "Bring back emoji choice" +msgstr "Zurück zur Emojiauswahl" + +#: ui/gtk3/emojier.vala:1097 +msgid "Page Down" +msgstr "Seite runter" + +#: ui/gtk3/emojier.vala:1108 +msgid "Page Up" +msgstr "Seite hoch" + +#: ui/gtk3/emojier.vala:1111 +msgid "Show emoji variants" +msgstr "Emoji-Varianten anzeigen" + +#: ui/gtk3/emojier.vala:1112 +msgid "Close" +msgstr "Schließen" + +#: ui/gtk3/emojier.vala:1118 +msgid "Menu" +msgstr "Menü" + +#: ui/gtk3/emojier.vala:1129 +msgid "Click to view a warning message" +msgstr "Klicken um eine Warnmeldung anzusehen" + +#: ui/gtk3/emojier.vala:1173 +msgid "Loading a Unicode dictionary:" +msgstr "Lade ein Unicodewörterbuch:" + +#: ui/gtk3/emojier.vala:1419 +#, c-format +msgid "Code point: %s" +msgstr "Codepoint: %s" + +#: ui/gtk3/emojier.vala:1425 +msgid "Has emoji variants" +msgstr "Hat Emojivarianten" + +#: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 +#, c-format +msgid "Description: %s" +msgstr "Beschreibung: %s" + +#: ui/gtk3/emojier.vala:1592 +msgid "None" +msgstr "Keine" + +#: ui/gtk3/emojier.vala:1616 +#, c-format +msgid "Annotations: %s" +msgstr "Anmerkungen: %s" + +#: ui/gtk3/emojier.vala:1642 +#, c-format +msgid "Name: %s" +msgstr "Name: %s" + +#: ui/gtk3/emojier.vala:1650 +#, c-format +msgid "Alias: %s" +msgstr "Alias: %s" + +#: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 +#: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1169 +msgid "Emoji Choice" +msgstr "Emojiauswahl" + +#: ui/gtk3/emojier.vala:2142 +msgid "Unicode Choice" +msgstr "Unicodeauswahl" + +#: ui/gtk3/emojier.vala:2432 +msgid "" +"Failed to get the current text application. Please re-focus your " +"application. E.g. Press Esc key several times to release the emoji typing " +"mode, click your desktop and click your text application again." +msgstr "" +"Konnte die aktuelle Textapplikation nicht finden. Bitte fokussieren Sie die " +"Applikation erneut. Zum Beispiel tippen sie mehrere Male die Esc-Taste um " +"den Emojieingabemodus zu verlassen, klicken Sie mit der Maus auf den Desktop " +"und klicken sie dann wieder auf Ihre Textapplikation." + +#: ui/gtk3/emojierapp.vala:47 +msgid "Canceled to choose an emoji." +msgstr "Abbrechen der Emojiauswahl." + +#: ui/gtk3/emojierapp.vala:67 +msgid "Copied an emoji to your clipboard." +msgstr "Emoji in die Zwischenablage kopiert." + +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ui/gtk3/emojierapp.vala:126 +msgid "\"FONT\" for emoji characters on emoji dialog" +msgstr "„SCHRIFTART“ für Emojizeichen im Emojidialog" + +#: ui/gtk3/emojierapp.vala:127 +msgid "FONT" +msgstr "SCHRIFTART" + +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ui/gtk3/emojierapp.vala:132 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" +msgstr "„SPRACHE“ für Emojianmerkungen im Emojidialog. Zum Beispiel „en“" + +#: ui/gtk3/emojierapp.vala:133 +msgid "LANG" +msgstr "SPRACHE" + +#: ui/gtk3/emojierapp.vala:135 +msgid "Emoji annotations can be match partially" +msgstr "Emojianmerkungen finden mit teilweiser Übereinstimmung" + +#: ui/gtk3/emojierapp.vala:139 +msgid "Match with the length of the specified integer" +msgstr "Übereinstimmung mit Länge der angegebenen ganzen Zahl" + +#: ui/gtk3/emojierapp.vala:143 +msgid "Match with the condition of the specified integer" +msgstr "Übereinstimmung mit der Bedingung der angegebenen ganzen Zahl" + +#: ui/gtk3/panel.vala:292 ui/gtk3/panel.vala:323 +msgid "IBus Panel" +msgstr "IBus Panel" + +#: ui/gtk3/panel.vala:975 +#, c-format +msgid "" +"Your configured input method %s does not exist in IBus input methods so \"US" +"\" layout was configured instead of your input method." +msgstr "" +"Die eingestellte Inputmethode %s existiert nicht unter den verfügbaren IBus-" +"Inputmethoden, deswegen wurde die „US“ Tastaturbelegung stattdessen " +"eingestellt." + +#: ui/gtk3/panel.vala:980 +msgid "" +"At least one of your configured input methods does not exist in IBus input " +"methods." +msgstr "" +"Mindestens eine der eingestellten Inputmethoden existiert nicht in den " +"verfügbaren IBus Inputmethoden." + +#: ui/gtk3/panel.vala:983 +msgid "" +"Please run `ibus-setup` command, open \"Input Method\" tab, and configure " +"your input methods again." +msgstr "" +"Bitte starte das `ibus-setup` Kommando, öffne den „Inputmethoden“ Tabreiter " +"und konfigurieren die Inputmethoden noch einmal." + +#: ui/gtk3/panel.vala:1141 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus ist ein intelligenter Eingabe-Bus für Linux/Unix." + +#: ui/gtk3/panel.vala:1145 +msgid "translator-credits" +msgstr "" +"Fabian Affolter , 2009.\n" +"Hedda Peters , 2009.\n" +"Mike FABIAN , 2019." + +#: ui/gtk3/panel.vala:1164 +msgid "Preferences" +msgstr "Einstellungen" + +#: ui/gtk3/panel.vala:1190 +msgid "Restart" +msgstr "Neustart" -#: ../setup/setup.ui.h:58 -msgid "When active" -msgstr "Wenn aktiv" +#: ui/gtk3/panel.vala:1194 +msgid "Quit" +msgstr "Beenden" + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 +msgid "default:LTR" +msgstr "default:LTR" + +#~ msgid "" +#~ "IBus\n" +#~ "The intelligent input bus\n" +#~ "Homepage: https://github.com/ibus/ibus/wiki\n" +#~ "\n" +#~ "\n" +#~ "\n" +#~ msgstr "" +#~ "IBus\n" +#~ "Der intelligente Eingabe-Bus\n" +#~ "Homepage: https://github.com/ibus/ibus/wiki\n" +#~ "\n" +#~ "\n" +#~ "\n" + +#~ msgid "Start ibus on login" +#~ msgstr "IBus bei der Anmeldung starten" + +#~ msgid "Startup" +#~ msgstr "Starten" + +#~ msgid "The shortcut keys for showing emoji dialog" +#~ msgstr "Tastenkombination zum Anzeigen des Emoji-Dialogs" + +#~ msgid "Emoji choice:" +#~ msgstr "Emoji-Auswahl:" + +#~ msgid "Emoji font:" +#~ msgstr "Emoji Font:" + +#~ msgid "" +#~ "The position of the language panel. 0 = Top left corner, 1 = Top right " +#~ "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +#~ msgstr "" +#~ "Die Position des Sprach-Panels: 0 = Ecke oben links, 1 = Ecke oben " +#~ "rechts, 2 = Ecke unten links, 3 = Ecke unten rechts, 4 = Benutzerdefiniert" + +#~ msgid "Type annotation or choose emoji" +#~ msgstr "Emoji-Annotationen eingeben oder Emoji auswählen" + +#~ msgid "IBus Update" +#~ msgstr "IBus Aktualisierung" + +#~ msgid "Super+space is now the default hotkey." +#~ msgstr "Super+Leerzeichen ist nun der Standard-Hotkey." diff --git a/po/en_GB.po b/po/en_GB.po index f332eada4..00f6256eb 100644 --- a/po/en_GB.po +++ b/po/en_GB.po @@ -1,543 +1,693 @@ -# English translations for ibus package. -# Copyright (C) 2011 THE ibus'S COPYRIGHT HOLDER +# translation of ibus.pot to English (United Kingdom) +# English (United Kingdom) translation of ibus. +# Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. -# Steven Panek , 2011. # +# Translators: +# Steven Panek , 2011 msgid "" msgstr "" -"Project-Id-Version: ibus 1.3.99.20110430\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-04-30 01:16-0400\n" -"PO-Revision-Date: 2011-04-30 01:19-0500\n" +"Project-Id-Version: IBus\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2014-02-18 13:46+0900\n" +"PO-Revision-Date: 2014-02-18 05:46+0000\n" "Last-Translator: Steven Panek (Espreon) \n" "Language-Team: English (British)\n" -"Language: en_GB\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ASCII\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: en_GB\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ../bus/ibus.desktop.in.h:1 -msgid "IBus" -msgstr "IBus" +#: ../setup/setup.ui.h:1 +msgid "Horizontal" +msgstr "Horizontal" -#: ../bus/ibus.desktop.in.h:2 -msgid "Input Method Framework" -msgstr "Input Method Framework" +#: ../setup/setup.ui.h:2 +msgid "Vertical" +msgstr "Vertical" -#: ../bus/ibus.desktop.in.h:3 -msgid "Start IBus Input Method Framework" -msgstr "Start IBus Input Method Framework" +#: ../setup/setup.ui.h:3 +msgid "Top left corner" +msgstr "Top left corner" -#: ../ibus/_config.py.in:40 -msgid "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +#: ../setup/setup.ui.h:4 +msgid "Top right corner" +msgstr "Top right corner" + +#: ../setup/setup.ui.h:5 +msgid "Bottom left corner" +msgstr "Bottom left corner" + +#: ../setup/setup.ui.h:6 +msgid "Bottom right corner" +msgstr "Bottom right corner" + +#: ../setup/setup.ui.h:7 +msgid "Custom" +msgstr "Custom" + +#: ../setup/setup.ui.h:8 +msgid "Do not show" msgstr "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." -#: ../ibus/lang.py:41 -msgid "Other" -msgstr "Other" +#: ../setup/setup.ui.h:9 +msgid "Hide automatically" +msgstr "" -#: ../ui/gtk/candidatepanel.py:264 -msgid "Previous page" -msgstr "Previous page" +#: ../setup/setup.ui.h:10 +msgid "Always" +msgstr "Always" -#: ../ui/gtk/candidatepanel.py:269 -msgid "Next page" -msgstr "Next page" +#: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 +msgid "IBus Preferences" +msgstr "IBus Preferences" -#: ../ui/gtk/main.py:62 -msgid "Some input methods have been installed, removed or updated. Please restart ibus input platform." -msgstr "Some input methods have been installed, removed or updated. Please restart ibus input platform." +#: ../setup/setup.ui.h:12 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "The shortcut keys for switching to next input method in the list" -#: ../ui/gtk/main.py:66 -msgid "Restart Now" -msgstr "Restart Now" +#: ../setup/setup.ui.h:13 +msgid "Next input method:" +msgstr "Next input method:" -#: ../ui/gtk/main.py:67 -msgid "Later" -msgstr "Later" +#: ../setup/setup.ui.h:14 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "The shortcut keys for switching to previous input method in the list" -#: ../ui/gtk/panel.py:116 -msgid "IBus Panel" -msgstr "IBus Panel" +#: ../setup/setup.ui.h:15 +msgid "Previous input method:" +msgstr "Previous input method:" -#: ../ui/gtk/panel.py:122 -msgid "IBus input method framework" -msgstr "IBus input method framework" +#: ../setup/setup.ui.h:16 +msgid "..." +msgstr "..." -#: ../ui/gtk/panel.py:352 -msgid "Restart" -msgstr "Restart" +#: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 +msgid "The shortcut keys for turning input method on or off" +msgstr "The shortcut keys for turning input method on or off" -#: ../ui/gtk/panel.py:439 -msgid "Turn off input method" -msgstr "Turn off input method" +#: ../setup/setup.ui.h:18 +msgid "Enable or disable:" +msgstr "Enable or disable:" -#: ../ui/gtk/panel.py:478 -msgid "No input window" -msgstr "No input window" +#: ../setup/setup.ui.h:19 +msgid "Enable:" +msgstr "Enable:" -#: ../ui/gtk/panel.py:509 -msgid "IBus is an intelligent input bus for Linux/Unix." -msgstr "IBus is an intelligent input bus for Linux/Unix." +#: ../setup/setup.ui.h:20 +msgid "Disable:" +msgstr "Disable:" -#: ../ui/gtk/panel.py:513 -msgid "translator-credits" -msgstr "Steven Panek, " +#: ../setup/setup.ui.h:21 +msgid "Keyboard Shortcuts" +msgstr "Keyboard Shortcuts" -#: ../ui/gtk/languagebar.py:106 -msgid "About the input method" -msgstr "About the input method" +#: ../setup/setup.ui.h:22 +msgid "Set the orientation of candidates in lookup table" +msgstr "Set the orientation of candidates in lookup table" -#: ../ui/gtk/languagebar.py:214 -msgid "Switch input method" -msgstr "Switch input method" +#: ../setup/setup.ui.h:23 +msgid "Candidates orientation:" +msgstr "Candidates orientation:" -#: ../ui/gtk/languagebar.py:357 -#: ../ui/gtk/engineabout.py:33 -#: ../setup/engineabout.py:33 -#: ../setup/setup.ui.h:16 -msgid "About" -msgstr "About" +#: ../setup/setup.ui.h:24 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "Set the behaviour of ibus how to show or hide language bar" -#: ../ui/gtk/languagebar.py:361 -msgid "About the Input Method" -msgstr "About the Input Method" +#: ../setup/setup.ui.h:25 +msgid "Show property panel:" +msgstr "" -#: ../ui/gtk/engineabout.py:61 -#: ../setup/engineabout.py:61 -#, python-format -msgid "Language: %s\n" -msgstr "Language: %s\n" +#: ../setup/setup.ui.h:26 +msgid "Language panel position:" +msgstr "Language panel position:" -#: ../ui/gtk/engineabout.py:63 -#: ../setup/engineabout.py:63 -#, python-format -msgid "Keyboard layout: %s\n" -msgstr "Keyboard layout: %s\n" +#: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 +msgid "Show icon on system tray" +msgstr "Show icon on system tray" -#: ../ui/gtk/engineabout.py:65 -#: ../setup/engineabout.py:65 -#, python-format -msgid "Author: %s\n" -msgstr "Author: %s\n" +#: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 +msgid "Show input method name on language bar" +msgstr "Show input method name on language bar" -#: ../ui/gtk/engineabout.py:67 -#: ../setup/engineabout.py:67 -msgid "Description:\n" -msgstr "Description:\n" +#: ../setup/setup.ui.h:29 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "Show input method's name on language bar when check the checkbox" -#: ../setup/main.py:102 -msgid "trigger" -msgstr "trigger" +#: ../setup/setup.ui.h:30 +msgid "Embed preedit text in application window" +msgstr "Embed pre-edit text in application window" -#: ../setup/main.py:113 -msgid "enable" -msgstr "enable" +#: ../setup/setup.ui.h:31 +msgid "Embed the preedit text of input method in the application window" +msgstr "Embed the pre-edit text of input method in the application window" -#: ../setup/main.py:124 -msgid "disable" -msgstr "disable" +#: ../setup/setup.ui.h:32 +msgid "Use custom font:" +msgstr "Use custom font:" -#: ../setup/main.py:135 -msgid "next input method" -msgstr "next input method" +#: ../setup/setup.ui.h:33 +msgid "Font and Style" +msgstr "Font and Style" -#: ../setup/main.py:146 -msgid "previous input method" -msgstr "previous input method" +#: ../setup/setup.ui.h:34 +msgid "General" +msgstr "General" -#: ../setup/main.py:286 -msgid "IBus daemon is not started. Do you want to start it now?" -msgstr "IBus daemon is not started. Do you want to start it now?" +#. add button +#: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 +msgid "_Add" +msgstr "_Add" -#: ../setup/main.py:301 -msgid "" -"IBus has been started! If you can not use IBus, please add below lines in $HOME/.bashrc, and relogin your desktop.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" -msgstr "" -"IBus has been started! If you can not use IBus, please add below lines in $HOME/.bashrc, and relogin your desktop.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +#: ../setup/setup.ui.h:36 +msgid "Add the selected input method into the enabled input methods" +msgstr "Add the selected input method into the enabled input methods" -#: ../setup/main.py:316 -#, python-format -msgid "Select keyboard shortcut for %s" -msgstr "Select keyboard shortcut for %s" +#: ../setup/setup.ui.h:37 +msgid "_Remove" +msgstr "_Remove" -#: ../setup/keyboardshortcut.py:52 -msgid "Keyboard shortcuts" -msgstr "Keyboard shortcuts" +#: ../setup/setup.ui.h:38 +msgid "Remove the selected input method from the enabled input methods" +msgstr "Remove the selected input method from the enabled input methods" -#: ../setup/keyboardshortcut.py:63 -msgid "Key code:" -msgstr "Key code:" +#: ../setup/setup.ui.h:39 +msgid "_Up" +msgstr "_Up" -#: ../setup/keyboardshortcut.py:78 -msgid "Modifiers:" -msgstr "Modifiers:" +#: ../setup/setup.ui.h:40 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "Move up the selected input method in the enabled input methods list" -#: ../setup/keyboardshortcut.py:231 -msgid "" -"Please press a key (or a key combination).\n" -"The dialog will be closed when the key is released." -msgstr "" -"Please press a key (or a key combination).\n" -"The dialog will be closed when the key is released." +#: ../setup/setup.ui.h:41 +msgid "_Down" +msgstr "_Down" -#: ../setup/keyboardshortcut.py:233 -msgid "Please press a key (or a key combination)" -msgstr "Please press a key (or a key combination)" +#: ../setup/setup.ui.h:42 +msgid "Move down the selected input method in the enabled input methods" +msgstr "Move down the selected input method in the enabled input methods" -#: ../setup/enginecombobox.py:120 -msgid "Select an input method" -msgstr "Select an input method" +#: ../setup/setup.ui.h:43 +msgid "_About" +msgstr "_About" + +#: ../setup/setup.ui.h:44 +msgid "Show information of the selected input method" +msgstr "Show information of the selected input method" + +#: ../setup/setup.ui.h:45 +msgid "_Preferences" +msgstr "_Preferences" + +#: ../setup/setup.ui.h:46 +msgid "Show setup of the selected input method" +msgstr "" + +#: ../setup/setup.ui.h:47 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" #. create im name & icon column -#: ../setup/enginetreeview.py:64 -#: ../setup/setup.ui.h:33 +#: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "Input Method" -#: ../setup/enginetreeview.py:92 -msgid "Kbd" -msgstr "Kbd" +#: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 +msgid "Use system keyboard layout" +msgstr "Use system keyboard layout" -#: ../setup/ibus-setup.desktop.in.h:1 -#: ../setup/setup.ui.h:32 -msgid "IBus Preferences" -msgstr "IBus Preferences" +#: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 +msgid "Use system keyboard (XKB) layout" +msgstr "Use system keyboard (XKB) layout" -#: ../setup/ibus-setup.desktop.in.h:2 -msgid "Set IBus Preferences" -msgstr "Set IBus Preferences" +#: ../setup/setup.ui.h:51 +msgid "Keyboard Layout" +msgstr "Keyboard Layout" + +#: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 +msgid "Share the same input method among all applications" +msgstr "Share the same input method among all applications" + +#: ../setup/setup.ui.h:53 +msgid "Global input method settings" +msgstr "Global input method settings" + +#: ../setup/setup.ui.h:54 +msgid "Advanced" +msgstr "Advanced" + +#: ../setup/setup.ui.h:55 +msgid "" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" +msgstr "IBus\nThe intelligent input bus\nHomepage: https://github.com/ibus/ibus/wiki\n\n\n\n" + +#: ../setup/setup.ui.h:62 +msgid "Start ibus on login" +msgstr "Start ibus on login" + +#: ../setup/setup.ui.h:63 +msgid "Startup" +msgstr "Startup" + +#: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 +msgid "About" +msgstr "About" + +#: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 +msgid "_Close" +msgstr "_Close" #: ../data/ibus.schemas.in.h:1 -msgid "Auto hide" -msgstr "Auto hide" +msgid "Preload engines" +msgstr "Preload engines" #: ../data/ibus.schemas.in.h:2 -msgid "Custom font" -msgstr "Custom font" +msgid "Preload engines during ibus starts up" +msgstr "Preload engines during ibus starts up" #: ../data/ibus.schemas.in.h:3 -msgid "Custom font name for language panel" -msgstr "Custom font name for language panel" +msgid "Engines order" +msgstr "" #: ../data/ibus.schemas.in.h:4 -msgid "Disable shortcut keys" -msgstr "Disable shortcut keys" +msgid "Saved engines order in input method list" +msgstr "" #: ../data/ibus.schemas.in.h:5 -msgid "Embed Preedit Text" -msgstr "Embed Pre-edit Text" +msgid "Popup delay milliseconds for IME switcher window" +msgstr "" #: ../data/ibus.schemas.in.h:6 -msgid "Embed Preedit Text in Application Window" -msgstr "Embed Pre-edit Text in Application Window" +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is " +"400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " +"not show the window and switch prev/next engines." +msgstr "" #: ../data/ibus.schemas.in.h:7 -msgid "Enable input method by default" -msgstr "Enable input method by default" +msgid "Saved version number" +msgstr "" #: ../data/ibus.schemas.in.h:8 -msgid "Enable input method by default when the application gets input focus" -msgstr "Enable input method by default when the application gets input focus" +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" #: ../data/ibus.schemas.in.h:9 -msgid "Enable shortcut keys" -msgstr "Enable shortcut keys" - -#: ../data/ibus.schemas.in.h:10 -msgid "Language panel position" -msgstr "Language panel position" +msgid "Trigger shortcut keys" +msgstr "Trigger shortcut keys" #: ../data/ibus.schemas.in.h:11 -msgid "Next engine shortcut keys" -msgstr "Next engine shortcut keys" +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "" #: ../data/ibus.schemas.in.h:12 -msgid "Orientation of lookup table" -msgstr "Orientation of lookup table" +msgid "Enable shortcut keys" +msgstr "Enable shortcut keys" #: ../data/ibus.schemas.in.h:13 -msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" -msgstr "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgid "The shortcut keys for turning input method on" +msgstr "The shortcut keys for turning input method on" #: ../data/ibus.schemas.in.h:14 -msgid "Preload engines" -msgstr "Preload engines" +msgid "Disable shortcut keys" +msgstr "Disable shortcut keys" #: ../data/ibus.schemas.in.h:15 -msgid "Preload engines during ibus starts up" -msgstr "Preload engines during ibus starts up" +msgid "The shortcut keys for turning input method off" +msgstr "The shortcut keys for turning input method off" #: ../data/ibus.schemas.in.h:16 -msgid "Prev engine shortcut keys" -msgstr "Prev engine shortcut keys" +msgid "Next engine shortcut keys" +msgstr "Next engine shortcut keys" #: ../data/ibus.schemas.in.h:17 -#: ../setup/setup.ui.h:42 -msgid "Share the same input method among all applications" -msgstr "Share the same input method among all applications" +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "The shortcut keys for switching to the next input method in the list" #: ../data/ibus.schemas.in.h:18 -#: ../setup/setup.ui.h:43 -msgid "Show icon on system tray" -msgstr "Show icon on system tray" +msgid "Prev engine shortcut keys" +msgstr "Prev engine shortcut keys" #: ../data/ibus.schemas.in.h:19 -msgid "Show input method name" -msgstr "Show input method name" +msgid "The shortcut keys for switching to the previous input method" +msgstr "The shortcut keys for switching to the previous input method" #: ../data/ibus.schemas.in.h:20 -#: ../setup/setup.ui.h:45 -msgid "Show input method name on language bar" -msgstr "Show input method name on language bar" +msgid "Auto hide" +msgstr "Auto hide" #: ../data/ibus.schemas.in.h:21 -msgid "The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = Always show" -msgstr "The behaviour of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = Always show" +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "" #: ../data/ibus.schemas.in.h:22 -msgid "The position of the language panel. 0 = Top left corner, 1 = Top right corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" -msgstr "The position of the language panel. 0 = Top left corner, 1 = Top right corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +msgid "Language panel position" +msgstr "Language panel position" #: ../data/ibus.schemas.in.h:23 -msgid "The shortcut keys for switching to the next input method in the list" -msgstr "The shortcut keys for switching to the next input method in the list" +msgid "" +"The position of the language panel. 0 = Top left corner, 1 = Top right " +"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +msgstr "The position of the language panel. 0 = Top left corner, 1 = Top right corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" #: ../data/ibus.schemas.in.h:24 -msgid "The shortcut keys for switching to the previous input method" -msgstr "The shortcut keys for switching to the previous input method" +msgid "Follow the input cursor in case the panel is always shown" +msgstr "" #: ../data/ibus.schemas.in.h:25 -msgid "The shortcut keys for turning input method off" -msgstr "The shortcut keys for turning input method off" +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" #: ../data/ibus.schemas.in.h:26 -msgid "The shortcut keys for turning input method on" -msgstr "The shortcut keys for turning input method on" +msgid "The milliseconds to show property panel" +msgstr "" #: ../data/ibus.schemas.in.h:27 -#: ../setup/setup.ui.h:51 -msgid "The shortcut keys for turning input method on or off" -msgstr "The shortcut keys for turning input method on or off" +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" #: ../data/ibus.schemas.in.h:28 -msgid "Trigger shortcut keys" -msgstr "Trigger shortcut keys" +msgid "Orientation of lookup table" +msgstr "Orientation of lookup table" #: ../data/ibus.schemas.in.h:29 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" + +#: ../data/ibus.schemas.in.h:31 +msgid "Show input method name" +msgstr "Show input method name" + +#: ../data/ibus.schemas.in.h:35 msgid "Use custom font" msgstr "Use custom font" -#: ../data/ibus.schemas.in.h:30 +#: ../data/ibus.schemas.in.h:36 msgid "Use custom font name for language panel" msgstr "Use custom font name for language panel" -#: ../data/ibus.schemas.in.h:31 +#: ../data/ibus.schemas.in.h:37 +msgid "Custom font" +msgstr "Custom font" + +#: ../data/ibus.schemas.in.h:38 +msgid "Custom font name for language panel" +msgstr "Custom font name for language panel" + +#: ../data/ibus.schemas.in.h:39 +msgid "Embed Preedit Text" +msgstr "Embed Pre-edit Text" + +#: ../data/ibus.schemas.in.h:40 +msgid "Embed Preedit Text in Application Window" +msgstr "Embed Pre-edit Text in Application Window" + +#: ../data/ibus.schemas.in.h:41 msgid "Use global input method" msgstr "Use global input method" -#: ../data/ibus.schemas.in.h:32 -#: ../setup/setup.ui.h:55 -msgid "Use system keyboard (XKB) layout" -msgstr "Use system keyboard (XKB) layout" +#: ../data/ibus.schemas.in.h:43 +msgid "Enable input method by default" +msgstr "Enable input method by default" -#: ../data/ibus.schemas.in.h:33 -#: ../setup/setup.ui.h:56 -msgid "Use system keyboard layout" -msgstr "Use system keyboard layout" +#: ../data/ibus.schemas.in.h:44 +msgid "Enable input method by default when the application gets input focus" +msgstr "Enable input method by default when the application gets input focus" -#: ../setup/setup.ui.h:1 -msgid "..." -msgstr "..." +#: ../data/ibus.schemas.in.h:45 +msgid "DConf preserve name prefixes" +msgstr "" -#: ../setup/setup.ui.h:2 -msgid "Font and Style" -msgstr "Font and Style" +#: ../data/ibus.schemas.in.h:46 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "" -#: ../setup/setup.ui.h:3 -msgid "Global input method settings" -msgstr "Global input method settings" +#: ../ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "Copyright (c) 2007-2010 Peng Huang\nCopyright (c) 2007-2010 Red Hat, Inc." -#: ../setup/setup.ui.h:4 -msgid "Keyboard Layout" -msgstr "Keyboard Layout" +#: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 +msgid "Other" +msgstr "Other" -#: ../setup/setup.ui.h:5 -msgid "Keyboard Shortcuts" -msgstr "Keyboard Shortcuts" +#: ../setup/engineabout.py:68 +#, python-format +msgid "Language: %s\n" +msgstr "Language: %s\n" -#: ../setup/setup.ui.h:6 -msgid "Startup" -msgstr "Startup" +#: ../setup/engineabout.py:71 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "Keyboard layout: %s\n" -#: ../setup/setup.ui.h:7 +#: ../setup/engineabout.py:74 +#, python-format +msgid "Author: %s\n" +msgstr "Author: %s\n" + +#: ../setup/engineabout.py:77 +msgid "Description:\n" +msgstr "Description:\n" + +#: ../setup/enginecombobox.py:139 +msgid "Select an input method" +msgstr "Select an input method" + +#: ../setup/enginetreeview.py:94 +msgid "Kbd" +msgstr "Kbd" + +#: ../setup/ibus-setup.desktop.in.h:2 +msgid "Set IBus Preferences" +msgstr "Set IBus Preferences" + +#: ../setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "Keyboard shortcuts" + +#: ../setup/keyboardshortcut.py:66 +msgid "Key code:" +msgstr "Key code:" + +#: ../setup/keyboardshortcut.py:81 +msgid "Modifiers:" +msgstr "Modifiers:" + +#. apply button +#: ../setup/keyboardshortcut.py:133 +msgid "_Apply" +msgstr "_Apply" + +#. delete button +#: ../setup/keyboardshortcut.py:139 +msgid "_Delete" +msgstr "_Delete" + +#: ../setup/keyboardshortcut.py:254 msgid "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "Please press a key (or a key combination).\nThe dialog will be closed when the key is released." + +#: ../setup/keyboardshortcut.py:256 +msgid "Please press a key (or a key combination)" +msgstr "Please press a key (or a key combination)" + +#: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 +msgid "_Cancel" +msgstr "_Cancel" + +#: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 +msgid "_OK" +msgstr "_OK" + +#: ../setup/main.py:102 ../setup/main.py:395 +msgid "Use shortcut with shift to switch to the previous input method" msgstr "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" -#: ../setup/setup.ui.h:14 +#: ../setup/main.py:329 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "" + +#: ../setup/main.py:350 msgid "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." +"IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" msgstr "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." -#: ../setup/setup.ui.h:17 -msgid "Add the selected input method into the enabled input methods" -msgstr "Add the selected input method into the enabled input methods" +#. Translators: %d == 5 currently +#: ../setup/main.py:364 +#, python-format +msgid "IBus daemon could not be started in %d seconds" +msgstr "" -#: ../setup/setup.ui.h:18 -msgid "Advanced" -msgstr "Advanced" +#: ../setup/main.py:376 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "Select keyboard shortcut for %s" -#: ../setup/setup.ui.h:19 -msgid "Always" -msgstr "Always" +#: ../setup/main.py:377 +msgid "switching input methods" +msgstr "" -#: ../setup/setup.ui.h:20 -msgid "Bottom left corner" -msgstr "Bottom left corner" +#: ../tools/main.vala:42 +msgid "List engine name only" +msgstr "" -#: ../setup/setup.ui.h:21 -msgid "Bottom right corner" -msgstr "Bottom right corner" +#: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 +#, c-format +msgid "Can't connect to IBus.\n" +msgstr "" -#: ../setup/setup.ui.h:22 -msgid "Candidates orientation:" -msgstr "Candidates orientation:" +#: ../tools/main.vala:84 +#, c-format +msgid "language: %s\n" +msgstr "" -#: ../setup/setup.ui.h:23 -msgid "Custom" -msgstr "Custom" +#: ../tools/main.vala:152 +#, c-format +msgid "No engine is set.\n" +msgstr "" -#: ../setup/setup.ui.h:24 -msgid "Disable:" -msgstr "Disable:" +#: ../tools/main.vala:160 +#, c-format +msgid "Set global engine failed.\n" +msgstr "" -#: ../setup/setup.ui.h:25 -msgid "Embed preedit text in application window" -msgstr "Embed pre-edit text in application window" +#: ../tools/main.vala:165 +#, c-format +msgid "Get global engine failed.\n" +msgstr "" -#: ../setup/setup.ui.h:26 -msgid "Embed the preedit text of input method in the application window" -msgstr "Embed the pre-edit text of input method in the application window" +#: ../tools/main.vala:204 +msgid "Read the system registry cache." +msgstr "" -#: ../setup/setup.ui.h:27 -msgid "Embedded in menu" -msgstr "Embedded in menu" +#: ../tools/main.vala:206 +msgid "Read the registry cache FILE." +msgstr "" -#: ../setup/setup.ui.h:28 -msgid "Enable or disable:" -msgstr "Enable or disable:" +#: ../tools/main.vala:224 ../tools/main.vala:229 +#, c-format +msgid "The registry cache is invalid.\n" +msgstr "" -#: ../setup/setup.ui.h:29 -msgid "Enable:" -msgstr "Enable:" +#: ../tools/main.vala:244 +msgid "Write the system registry cache." +msgstr "" -#: ../setup/setup.ui.h:30 -msgid "General" -msgstr "General" +#: ../tools/main.vala:246 +msgid "Write the registry cache FILE." +msgstr "" -#: ../setup/setup.ui.h:31 -msgid "Horizontal" -msgstr "Horizontal" +#: ../tools/main.vala:293 +msgid "Set or get engine" +msgstr "" -#: ../setup/setup.ui.h:34 -msgid "Language panel position:" -msgstr "Language panel position:" +#: ../tools/main.vala:294 +msgid "Exit ibus-daemon" +msgstr "" -#: ../setup/setup.ui.h:35 -msgid "Move down the selected input method in the enabled input methods" -msgstr "Move down the selected input method in the enabled input methods" +#: ../tools/main.vala:295 +msgid "Show available engines" +msgstr "" -#: ../setup/setup.ui.h:36 -msgid "Move up the selected input method in the enabled input methods list" -msgstr "Move up the selected input method in the enabled input methods list" +#: ../tools/main.vala:296 +msgid "(Not implemented)" +msgstr "" -#: ../setup/setup.ui.h:37 -msgid "Next input method:" -msgstr "Next input method:" +#: ../tools/main.vala:297 +msgid "Restart ibus-daemon" +msgstr "" -#: ../setup/setup.ui.h:38 -msgid "Previous input method:" -msgstr "Previous input method:" +#: ../tools/main.vala:298 +msgid "Show version" +msgstr "" -#: ../setup/setup.ui.h:39 -msgid "Remove the selected input method from the enabled input methods" -msgstr "Remove the selected input method from the enabled input methods" +#: ../tools/main.vala:299 +msgid "Show the content of registry cache" +msgstr "" -#: ../setup/setup.ui.h:40 -msgid "Set the behavior of ibus how to show or hide language bar" -msgstr "Set the behaviour of ibus how to show or hide language bar" +#: ../tools/main.vala:300 +msgid "Create registry cache" +msgstr "" -#: ../setup/setup.ui.h:41 -msgid "Set the orientation of candidates in lookup table" -msgstr "Set the orientation of candidates in lookup table" +#: ../tools/main.vala:301 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "" -#: ../setup/setup.ui.h:44 -msgid "Show information of the selected input method" -msgstr "Show information of the selected input method" +#: ../tools/main.vala:302 +msgid "Show this information" +msgstr "" -#: ../setup/setup.ui.h:46 -msgid "Show input method's name on language bar when check the checkbox" -msgstr "Show input method's name on language bar when check the checkbox" +#: ../tools/main.vala:308 +#, c-format +msgid "" +"Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "" -#: ../setup/setup.ui.h:47 -msgid "Show language panel:" -msgstr "Show language panel:" +#: ../tools/main.vala:309 +#, c-format +msgid "Commands:\n" +msgstr "" -#: ../setup/setup.ui.h:48 -msgid "Start ibus on login" -msgstr "Start ibus on login" +#: ../tools/main.vala:338 +#, c-format +msgid "%s is unknown command!\n" +msgstr "" -#: ../setup/setup.ui.h:49 -msgid "The shortcut keys for switching to next input method in the list" -msgstr "The shortcut keys for switching to next input method in the list" +#: ../ui/gtk3/panel.vala:425 +msgid "IBus Update" +msgstr "" -#: ../setup/setup.ui.h:50 -msgid "The shortcut keys for switching to previous input method in the list" -msgstr "The shortcut keys for switching to previous input method in the list" +#: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 +msgid "Super+space is now the default hotkey." +msgstr "" -#: ../setup/setup.ui.h:52 -msgid "Top left corner" -msgstr "Top left corner" +#: ../ui/gtk3/panel.vala:707 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus is an intelligent input bus for Linux/Unix." -#: ../setup/setup.ui.h:53 -msgid "Top right corner" -msgstr "Top right corner" +#: ../ui/gtk3/panel.vala:711 +msgid "translator-credits" +msgstr "Steven Panek, " -#: ../setup/setup.ui.h:54 -msgid "Use custom font:" -msgstr "Use custom font:" +#: ../ui/gtk3/panel.vala:732 +msgid "Preferences" +msgstr "Preferences" -#: ../setup/setup.ui.h:57 -msgid "Vertical" -msgstr "Vertical" +#: ../ui/gtk3/panel.vala:742 +msgid "Restart" +msgstr "Restart" -#: ../setup/setup.ui.h:58 -msgid "When active" -msgstr "When active" +#: ../ui/gtk3/panel.vala:746 +msgid "Quit" +msgstr "Quit" +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ../ui/gtk3/propertypanel.vala:374 +msgid "default:LTR" +msgstr "default:LTR" diff --git a/po/es.po b/po/es.po index c91ac2343..8bffc4e60 100644 --- a/po/es.po +++ b/po/es.po @@ -1,568 +1,3416 @@ -# translation of ibus.pot to Spanish # Spanish translation of ibus. -# Copyright (C) 2008 Peng Huang +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2021 Takao Fujiwara # This file is distributed under the same license as the ibus package. -# +# # Translators: -# Claudio Rodrigo Pereyra Diaz , 2011. -# Héctor Daniel Cabrera , 2011. +# Adolfo Jayme Barrientos , 2013 +# Claudio Rodrigo Pereyra Diaz , 2011 +# Daniel Cabrera , 2011 +# beckerde , 2012-2013 +# beckerde , 2013-2014 +# Eduardo Villagrán M , 2013 +# Gerardo Rosales , 2014 +# Gladys Guerrero , 2012-2014 +# Daniel Cabrera , 2011 +# fujiwara , 2015. #zanata +# Alberto Castillo , 2016. #zanata +# Máximo Castañeda Riloba , 2016. #zanata +# Omar Berroterán S. , 2016. #zanata +# Waldo Ribeiro , 2016. #zanata +# Máximo Castañeda Riloba , 2017. #zanata +# fujiwara , 2017. #zanata +# Máximo Castañeda Riloba , 2018. #zanata +# fujiwara , 2018. #zanata +# Máximo Castañeda Riloba , 2019. #zanata +# Emilio Herrera , 2020, 2021. +# Adolfo Jayme Barrientos , 2020. msgid "" msgstr "" -"Project-Id-Version: IBus\n" -"Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/list\n" -"POT-Creation-Date: 2011-05-13 11:21+0900\n" -"PO-Revision-Date: 2011-05-17 11:48+0000\n" -"Last-Translator: elsupergomez \n" -"Language-Team: Spanish (Castilian) \n" +"Project-Id-Version: ibus 1.5.20\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2020-09-03 21:21+0900\n" +"PO-Revision-Date: 2021-02-22 17:40+0000\n" +"Last-Translator: Emilio Herrera \n" +"Language-Team: Spanish \n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Poedit-Language: Spanish\n" -"X-Poedit-Country: ARGENTINA\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.4.2\n" + +#. Translators: Here “Preload” is a verb +#: data/dconf/org.freedesktop.ibus.gschema.xml:11 +msgid "Preload engines" +msgstr "Precargar máquinas" + +#. Translators: Tooltip for the button “Preload Engines” +#: data/dconf/org.freedesktop.ibus.gschema.xml:13 +msgid "Preload engines during ibus starts up" +msgstr "Precargar los motores durante el inicio de ibus" -#: ../bus/ibus.desktop.in.h:1 -msgid "IBus" -msgstr "IBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:17 +msgid "Engines order" +msgstr "Orden de las máquinas" -#: ../bus/ibus.desktop.in.h:2 -msgid "Input Method Framework" -msgstr "Marco de trabajo para métodos de entrada" +#: data/dconf/org.freedesktop.ibus.gschema.xml:18 +msgid "Saved engines order in input method list" +msgstr "Orden de las máquinas guardada en la lista de métodos de entrada" -#: ../bus/ibus.desktop.in.h:3 -msgid "Start IBus Input Method Framework" -msgstr "Inicie el marco de trabajo para métodos de entrada IBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:22 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "Retraso en milisegundos de Popup para ventana del interruptor IME" -#: ../ibus/_config.py.in:40 +#: data/dconf/org.freedesktop.ibus.gschema.xml:23 msgid "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +"Set popup delay milliseconds to show IME switcher window. The default is " +"400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " +"show the window and switch prev/next engines." msgstr "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +"Establece retraso en milisegundos para mostrar la ventana del selector IME. " +"El valor predeterminado es 400. 0 = Muestra la ventana inmediatamente. 0 < " +"Demora en milisegundos. 0 > No muestra la ventana ni los motores siguientes " +"o anteriores." -#: ../ibus/lang.py:41 -msgid "Other" -msgstr "Otro" +#: data/dconf/org.freedesktop.ibus.gschema.xml:27 +msgid "Saved version number" +msgstr "Número de versión guardada" -#: ../ui/gtk/candidatepanel.py:264 -msgid "Previous page" -msgstr "Página anterior" +#: data/dconf/org.freedesktop.ibus.gschema.xml:28 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" +"El número de versión guardada se usará para chequear la diferencia entre la " +"versión de ibus previamente instalada y la del ibus actual." -#: ../ui/gtk/candidatepanel.py:269 -msgid "Next page" -msgstr "Siguiente página" +#: data/dconf/org.freedesktop.ibus.gschema.xml:32 +msgid "Latin layouts which have no ASCII" +msgstr "Disposiciones latinas que no tienen ASCII" -#: ../ui/gtk/main.py:62 -msgid "" -"Some input methods have been installed, removed or updated. Please restart " -"ibus input platform." +#: data/dconf/org.freedesktop.ibus.gschema.xml:33 +msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" -"Algunos métodos de entrada han sido instalados, eliminados o actualizados. " -"Por favor, reinicie la plataforma de entrada ibus." +"Disposición de los Estados Unidos se anexa a los Disposiciones Latino. " +"variante puede ser omitida." -#: ../ui/gtk/main.py:66 -msgid "Restart Now" -msgstr "Reiniciar ahora" +#: data/dconf/org.freedesktop.ibus.gschema.xml:37 +msgid "Use xmodmap" +msgstr "Usar xmodmap" -#: ../ui/gtk/main.py:67 -msgid "Later" -msgstr "Más tarde" +#: data/dconf/org.freedesktop.ibus.gschema.xml:38 +msgid "" +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." +msgstr "" +"Ejecutar xmodmap si .xmodmap o .Xmodmap existen cuando los motores ibus son " +"cambiados." -#: ../ui/gtk/panel.py:116 -msgid "IBus Panel" -msgstr "Panel IBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 +msgid "Use system keyboard layout" +msgstr "Usar la distribución del teclado del sistema" -#: ../ui/gtk/panel.py:122 -msgid "IBus input method framework" -msgstr "Marco de trabajo para métodos de entrada IBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 +msgid "Use system keyboard (XKB) layout" +msgstr "Usar la distribución del teclado del sistema (XKB)" -#: ../ui/gtk/panel.py:352 -msgid "Restart" -msgstr "Reiniciar" +#: data/dconf/org.freedesktop.ibus.gschema.xml:47 +msgid "Embed Preedit Text" +msgstr "Insertar texto preeditado" -#: ../ui/gtk/panel.py:439 -msgid "Turn off input method" -msgstr "Desactivar métodos de entrada" +#: data/dconf/org.freedesktop.ibus.gschema.xml:48 +msgid "Embed Preedit Text in Application Window" +msgstr "Insertar texto previamente editado en la ventana de la aplicación" -#: ../ui/gtk/panel.py:478 -msgid "No input window" -msgstr "Sin ventana de entrada" +#: data/dconf/org.freedesktop.ibus.gschema.xml:52 +msgid "Use global input method" +msgstr "Utilizar método de entrada global" -#: ../ui/gtk/panel.py:509 -msgid "IBus is an intelligent input bus for Linux/Unix." -msgstr "IBus es un bus de entrada inteligente para Linux/Unix." +#: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 +msgid "Share the same input method among all applications" +msgstr "Compartir el mismo método de entrada con todas las aplicaciones" -#: ../ui/gtk/panel.py:513 -msgid "translator-credits" -msgstr "Domingo Becker, , 2009" +#: data/dconf/org.freedesktop.ibus.gschema.xml:57 +msgid "Enable input method by default" +msgstr "Habilitar método de entrada por defecto" -#: ../ui/gtk/languagebar.py:106 -msgid "About the input method" -msgstr "Acerca del método de entrada" +#: data/dconf/org.freedesktop.ibus.gschema.xml:58 +msgid "Enable input method by default when the application gets input focus" +msgstr "" +"Habilitar método de entrada por defecto cuando la aplicación consigue el " +"foco de entrada" -#: ../ui/gtk/languagebar.py:214 -msgid "Switch input method" -msgstr "Cambiar método de entrada" +#: data/dconf/org.freedesktop.ibus.gschema.xml:62 +msgid "DConf preserve name prefixes" +msgstr "DConf preserva los prefijos de nombres" -#: ../ui/gtk/languagebar.py:357 ../ui/gtk/engineabout.py:33 -#: ../setup/engineabout.py:33 ../setup/setup.ui.h:16 -msgid "About" -msgstr "Acerca de" +#: data/dconf/org.freedesktop.ibus.gschema.xml:63 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "Prefijos para las claves de DConf para parar la conversión de nombres" -#: ../ui/gtk/languagebar.py:361 -msgid "About the Input Method" -msgstr "Acerca del Método de Entrada" +#: data/dconf/org.freedesktop.ibus.gschema.xml:70 +msgid "Trigger shortcut keys" +msgstr "Activadora de los Atajos de teclado" -#: ../ui/gtk/engineabout.py:61 ../setup/engineabout.py:61 -#, python-format -msgid "Language: %s\n" -msgstr "Idioma: %s\n" +#: data/dconf/org.freedesktop.ibus.gschema.xml:71 +#: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 +msgid "The shortcut keys for turning input method on or off" +msgstr "Atajo de teclado para encender o apagar el método de entrada" -#: ../ui/gtk/engineabout.py:63 ../setup/engineabout.py:63 -#, python-format -msgid "Keyboard layout: %s\n" -msgstr "Diseño del teclado: %s\n" +#: data/dconf/org.freedesktop.ibus.gschema.xml:75 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "Activador de llaves de atajos para leer gtk_accelerator " -#: ../ui/gtk/engineabout.py:65 ../setup/engineabout.py:65 -#, python-format -msgid "Author: %s\n" -msgstr "Autor: %s\n" +#: data/dconf/org.freedesktop.ibus.gschema.xml:80 +msgid "Enable shortcut keys" +msgstr "Habilitar atajos de teclado" -#: ../ui/gtk/engineabout.py:67 ../setup/engineabout.py:67 -msgid "Description:\n" -msgstr "Descripción:\n" +#: data/dconf/org.freedesktop.ibus.gschema.xml:81 +msgid "The shortcut keys for turning input method on" +msgstr "Los atajos de teclado para habilitar el método de entrada" -#: ../setup/main.py:102 -msgid "trigger" -msgstr "activador" +#: data/dconf/org.freedesktop.ibus.gschema.xml:85 +msgid "Disable shortcut keys" +msgstr "Deshabilitar atajos de teclado" -#: ../setup/main.py:113 -msgid "enable" -msgstr "habilitar" +#: data/dconf/org.freedesktop.ibus.gschema.xml:86 +msgid "The shortcut keys for turning input method off" +msgstr "Los atajos de teclado para deshabilitar el método de entrada" -#: ../setup/main.py:124 -msgid "disable" -msgstr "deshabilitar" +#: data/dconf/org.freedesktop.ibus.gschema.xml:90 +#: data/dconf/org.freedesktop.ibus.gschema.xml:95 +msgid "Next engine shortcut keys" +msgstr "Atajo de teclado para el siguiente motor" -#: ../setup/main.py:135 -msgid "next input method" -msgstr "siguiente método de entrada" +#: data/dconf/org.freedesktop.ibus.gschema.xml:91 +#: data/dconf/org.freedesktop.ibus.gschema.xml:96 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "" +"Los atajos de teclado para avanzar al siguiente método de entrada de la lista" -#: ../setup/main.py:146 -msgid "previous input method" -msgstr "método de entrada anterior" +#: data/dconf/org.freedesktop.ibus.gschema.xml:100 +#: data/dconf/org.freedesktop.ibus.gschema.xml:105 +msgid "Prev engine shortcut keys" +msgstr "Atajo de teclado para la máquina previa" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:101 +#: data/dconf/org.freedesktop.ibus.gschema.xml:106 +msgid "The shortcut keys for switching to the previous input method" +msgstr "" +"Los atajos de teclado para retroceder al método de entrada anterior en la " +"lista" -#: ../setup/main.py:286 -msgid "IBus daemon is not started. Do you want to start it now?" -msgstr "El demonio IBUS no fue iniciado. ¿Desea iniciarlo ahora?" +#: data/dconf/org.freedesktop.ibus.gschema.xml:112 +msgid "Auto hide" +msgstr "Auto Ocultar" -#: ../setup/main.py:301 +#: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" -"IBus has been started! If you can not use IBus, please add below lines in $HOME/.bashrc, and relogin your desktop.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" msgstr "" -"¡IBus ha sido iniciado! Si no puede usar IBus, por favor, agregue las siguientes líneas a $HOME/.bashrc, y reingrese a su escritorio.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +"La conducta del panel de propiedad,0= No mostrar, 1 = Auto ocultar, 2 = " +"Mostrar siempre" -#: ../setup/main.py:316 -#, python-format -msgid "Select keyboard shortcut for %s" -msgstr "Seleccione la tecla de atajo para %s" +#: data/dconf/org.freedesktop.ibus.gschema.xml:117 +#: data/dconf/org.freedesktop.ibus.gschema.xml:121 +msgid "Language panel position" +msgstr "Posición del panel de idioma" -#: ../setup/keyboardshortcut.py:52 -msgid "Keyboard shortcuts" -msgstr "Atajos de teclado" +#: data/dconf/org.freedesktop.ibus.gschema.xml:125 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "Siga el cursor de entrada en caso de que el panel siempre se muestre" -#: ../setup/keyboardshortcut.py:63 -msgid "Key code:" -msgstr "Código clave:" +#: data/dconf/org.freedesktop.ibus.gschema.xml:126 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" +"Si es verdadero, el panel sigue el cursor de entrada en el caso que siempre " +"se muestre. Si es falso, el panel se muestra en una ubicación fija." -#: ../setup/keyboardshortcut.py:78 -msgid "Modifiers:" -msgstr "Modificadores:" +#: data/dconf/org.freedesktop.ibus.gschema.xml:130 +msgid "The milliseconds to show property panel" +msgstr "Los milisegundos para mostrar el panel de propiedad" -#: ../setup/keyboardshortcut.py:231 +#: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" -"Please press a key (or a key combination).\n" -"The dialog will be closed when the key is released." +"The milliseconds to show property panel after focus-in or properties are " +"changed." msgstr "" -"Por favor, presione una tecla (o una combinación de tecla).\n" -"El diálogo será cerrado cuando la tecla sea soltada." +"Los milisegundos para mostrar el panel de propiedad después de enfocar o que " +"las propiedades cambien." -#: ../setup/keyboardshortcut.py:233 -msgid "Please press a key (or a key combination)" -msgstr "Por favor, presione una tecla (o combinación de teclas)" +#: data/dconf/org.freedesktop.ibus.gschema.xml:135 +msgid "Orientation of lookup table" +msgstr "Orientación de la tabla de búsqueda" -#: ../setup/enginecombobox.py:120 -msgid "Select an input method" -msgstr "Seleccione un método de entrada" +#: data/dconf/org.freedesktop.ibus.gschema.xml:136 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "Orientación de la tabla de búsqueda. 0 = Horizontal, 1 = Vertical" -#. create im name & icon column -#: ../setup/enginetreeview.py:64 ../setup/setup.ui.h:33 -msgid "Input Method" -msgstr "Métodos de Entrada" +#: data/dconf/org.freedesktop.ibus.gschema.xml:140 +#: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 +#: setup/setup.ui:475 +msgid "Show icon on system tray" +msgstr "Mostrar un ícono en la bandeja del sistema" -#: ../setup/enginetreeview.py:92 -msgid "Kbd" -msgstr "Kbd" +#: data/dconf/org.freedesktop.ibus.gschema.xml:145 +msgid "Show input method name" +msgstr "Mostrar el nombre del método de entrada" -#: ../setup/ibus-setup.desktop.in.h:1 ../setup/setup.ui.h:32 -msgid "IBus Preferences" -msgstr "Preferencias de IBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 +msgid "Show input method name on language bar" +msgstr "Mostrar el nombre del método de entrada en la barra de idioma" -#: ../setup/ibus-setup.desktop.in.h:2 -msgid "Set IBus Preferences" -msgstr "Defina las preferencias de IBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:150 +msgid "RGBA value of XKB icon" +msgstr "Valor RGBA del ícono XKB" -#: ../data/ibus.schemas.in.h:1 -msgid "Auto hide" -msgstr "Auto Ocultar" +#: data/dconf/org.freedesktop.ibus.gschema.xml:151 +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form 'rgba(r," +"g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 to 255 or " +"percentage values in the range 0% to 100%, and 'a' is a floating point value " +"in the range 0 to 1 of the alpha." +msgstr "" +"El ícono XKB muestra la cadena de diseño que se renderiza con el valor RGBA. " +"El valor RGBA puede ser 1. un color de X11, 2. un valor hexa en la forma " +"'#rrggbb' donde 'r', 'g' y 'b' son dígitos hexa para el rojo, verde y azul, " +"3. un color RGB en elformato 'rgb(r,g,b)' o 4. Un color RGBA en el formato " +"'rgba(r,g,b,a)' donde 'r', 'g', y 'b' son o bien enteros en el rango de 0 a " +"255 o valores de porcentaje en el rango de 0% a 100%, y 'a' es un valor de " +"punto flotante en el rango de 0 a 1 para el alfa." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:155 +msgid "The milliseconds to show the panel icon for a property" +msgstr "Los milisegundos para mostrar el icono del panel para una propiedad" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:156 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" +"Los milisegundos para mostrar el icono del panel desde el icono del motor a " +"un icono de la propiedad cada vez que los motores se encienden si la " +"propiedad se especifica por el valor de icono-prop-clave en IBusEngineDesc. " +"Si el valor es 0, no hay tiempo de retardo y el icono de la propiedad se " +"muestra inmediatamente." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:160 +msgid "Use custom font" +msgstr "Utilizar tipo de letra personalizado" -#: ../data/ibus.schemas.in.h:2 +#: data/dconf/org.freedesktop.ibus.gschema.xml:161 +msgid "Use custom font name for language panel" +msgstr "Utilizar tipo de letra personalizado para el panel de idiomas" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:165 +#: data/dconf/org.freedesktop.ibus.gschema.xml:192 msgid "Custom font" -msgstr "Fuente personalizada" +msgstr "Tipo de letra personalizado" -#: ../data/ibus.schemas.in.h:3 +#: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" -msgstr "Nombre de fuente personalizado para el panel de idioma" +msgstr "Tipo de letra personalizado para el panel de idiomas" -#: ../data/ibus.schemas.in.h:4 -msgid "Disable shortcut keys" -msgstr "Deshabilitar atajos de teclado" +#: data/dconf/org.freedesktop.ibus.gschema.xml:170 setup/setup.ui:1305 +msgid "Choose glyphs with input method's language on candidate window" +msgstr "" +"Elegir glifos en el idioma del método de entrada en la ventana de candidatos" -#: ../data/ibus.schemas.in.h:5 -msgid "Embed Preedit Text" -msgstr "Insertar texto preeditado" +#: data/dconf/org.freedesktop.ibus.gschema.xml:171 +msgid "" +"Some code points have the different glyphs and Pango determines the glyphs " +"from the language attribute. Pango chooses glyphs from the IBus engine's " +"language if the value is true and choose them from the desktop locale if the " +"value is false." +msgstr "" +"Algunos puntos del código tiene diferentes glifos y Pango determina los " +"glifos desde el atributo idioma. Pango elige los glifos desde el idioma del " +"la máquina IBus si el valor es cierto y los eliges desde el valor regional " +"del sobremesa si el valor es falso." -#: ../data/ibus.schemas.in.h:6 -msgid "Embed Preedit Text in Application Window" -msgstr "Insertar texto previamente editado en la ventana de la aplicación" +#: data/dconf/org.freedesktop.ibus.gschema.xml:182 +msgid "Unicode shortcut keys for gtk_accelerator_parse" +msgstr "Atajos de teclado Unicode para gtk_accelerator_parse" -#: ../data/ibus.schemas.in.h:7 -msgid "Enable input method by default" -msgstr "Habilitar método de entrada en forma predeterminada" +#: data/dconf/org.freedesktop.ibus.gschema.xml:183 +msgid "The shortcut keys for turning Unicode typing on or off" +msgstr "Los atajos de teclado para activar y desactivar la escritura Unicode" -#: ../data/ibus.schemas.in.h:8 -msgid "Enable input method by default when the application gets input focus" -msgstr "" -"Habilitar método de entrada en forma predeterminada cuando la aplicación en " -"uso solicite alguno" +#: data/dconf/org.freedesktop.ibus.gschema.xml:187 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "Atajos de teclado de emoji para gtk_accelerator_parse" -#: ../data/ibus.schemas.in.h:9 -msgid "Enable shortcut keys" -msgstr "Habilitar atajos de teclado" +#: data/dconf/org.freedesktop.ibus.gschema.xml:188 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "Los atajos de teclado para activar y desactivar la escritura de emoji" -#: ../data/ibus.schemas.in.h:10 -msgid "Language panel position" -msgstr "Posición del panel de idioma" +#: data/dconf/org.freedesktop.ibus.gschema.xml:193 +msgid "Custom font name for emoji characters on emoji dialog" +msgstr "" +"Tipo de letra personalizado para caracteres emoyi en el diálogo de emoyis" -#: ../data/ibus.schemas.in.h:11 -msgid "Next engine shortcut keys" -msgstr "Atajo de teclado para el siguiente motor" +#: data/dconf/org.freedesktop.ibus.gschema.xml:197 +msgid "Default language for emoji dictionary" +msgstr "Idioma predeterminado para el diccionario de emoji" -#: ../data/ibus.schemas.in.h:12 -msgid "Orientation of lookup table" -msgstr "Orientación de búsqueda en la tabla " +#: data/dconf/org.freedesktop.ibus.gschema.xml:198 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict ." +msgstr "" +"Elija un idioma predeterminado para el diccionario de emoji. Su valor " +"($lang) se aplica a /usr/share/ibus/dicts/emoji-$lang.dict ." -#: ../data/ibus.schemas.in.h:13 -msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" -msgstr "Orientación de la tabla de búsqueda. 0 = Horizontal, 1 = Vertical" +#: data/dconf/org.freedesktop.ibus.gschema.xml:202 +msgid "favorite emoji list on emoji dialog" +msgstr "lista de emoji favoritos en el diálogo de emoji" -#: ../data/ibus.schemas.in.h:14 -msgid "Preload engines" -msgstr "Precargar máquinas" +#: data/dconf/org.freedesktop.ibus.gschema.xml:203 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "" +"Puede mostrar sus emoji favoritos en la lista de emoji si los incluye en " +"esta lista." -#: ../data/ibus.schemas.in.h:15 -msgid "Preload engines during ibus starts up" -msgstr "Precargar los motores durante el inicio de ibus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:207 +msgid "favorite emoji annotation list on emoji dialog" +msgstr "lista de anotaciones de emoji favoritos en el diálogo de emoji" -#: ../data/ibus.schemas.in.h:16 -msgid "Prev engine shortcut keys" -msgstr "Atajo de teclado para la máquina previa" +#: data/dconf/org.freedesktop.ibus.gschema.xml:208 +msgid "You can assign an annotation for a favorite emoji in this list." +msgstr "Puede poner anotaciones a sus emoji favoritos en esta lista." -#: ../data/ibus.schemas.in.h:17 ../setup/setup.ui.h:42 -msgid "Share the same input method among all applications" -msgstr "Compartir el mismo método de entrada con todas las aplicaciones" +#: data/dconf/org.freedesktop.ibus.gschema.xml:212 +msgid "Whether emoji annotations can be match partially or not" +msgstr "" +"Si se permiten o no las coincidencias parciales en las anotaciones de emoji" -#: ../data/ibus.schemas.in.h:18 ../setup/setup.ui.h:43 -msgid "Show icon on system tray" -msgstr "Mostrar un ícono en el área de notificación" +#: data/dconf/org.freedesktop.ibus.gschema.xml:213 +msgid "" +"Whether emoji annotations can be matched with a partial string instead of " +"the exact match or not." +msgstr "" +"Si se puede obtener una coincidencia parcial en la búsqueda de anotaciones " +"de emoji en lugar de una exacta." -#: ../data/ibus.schemas.in.h:19 -msgid "Show input method name" -msgstr "Mostrar el nombre del método de entrada" +#: data/dconf/org.freedesktop.ibus.gschema.xml:217 +msgid "Match emoji annotations with the specified length" +msgstr "" +"Realizar búsquedas en las anotaciones de emoji con la longitud de texto " +"indicada" -#: ../data/ibus.schemas.in.h:20 ../setup/setup.ui.h:45 -msgid "Show input method name on language bar" -msgstr "Mostrar el nombre del método de entrada en la barra de idioma" +#: data/dconf/org.freedesktop.ibus.gschema.xml:218 +msgid "" +"Match emoji annotations partially with more than the specified number of " +"characters instead of the exact match." +msgstr "" +"Obtener coincidencias parciales en lugar de exactas en las anotaciones de " +"emoji que tengan más que el número de caracteres indicado " + +#: data/dconf/org.freedesktop.ibus.gschema.xml:222 +msgid "Choose a condition to match emoji annotations partially" +msgstr "" +"Elija una condición para las coincidencias parciales de anotaciones de emoji" -#: ../data/ibus.schemas.in.h:21 +#: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "" -"The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = " -"Always show" +"Choose one of the following conditions to match emoji annotations partially: " +"0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" -"El comportamiento del panel de idioma. 0 = Incrustado en el menú, 1 = " -"Ocultarlo automáticamente, 2 = Mostrarlo siempre" +"Elija una de estas condiciones para las coincidencias parciales de " +"anotaciones de emoji: 0 == inicio del texto, 1 == final del texto, 2 == " +"contiene el texto." -#: ../data/ibus.schemas.in.h:22 +#: data/dconf/org.freedesktop.ibus.gschema.xml:227 +msgid "Load the emoji data at the time of startup" +msgstr "Cargar los datos de emoji al inicio" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:228 msgid "" -"The position of the language panel. 0 = Top left corner, 1 = Top right " -"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +"Load the emoji data at the time of startup if true. About 10MB memory is " +"needed to load the data. Load the emoji data when open the emoji dialog at " +"the beginning if false." msgstr "" -"La posicion el panel de idioma. 0 = esquina superior izquierda, 1 = esquina " -"superior derecha, 2 = esquina inferior izquierda, 3 = esquina inferior " -"derecha, 4 = personalizado" +"Cargar los datos de emoji al inicio. Se necesitan alrededor de 10MB. Si está " +"desactivado, se cargarán al abrir el cuadro de selección de emoji." -#: ../data/ibus.schemas.in.h:23 -msgid "The shortcut keys for switching to the next input method in the list" +#: data/dconf/org.freedesktop.ibus.gschema.xml:232 +msgid "Load the Unicode data at the time of startup" +msgstr "Cargar los datos de Unicode al inicio" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:233 +msgid "" +"Load the Unicode data at the time of startup if true. About 15MB memory is " +"needed to load the data. Load the Unicode data when open the emoji dialog at " +"the beginning if false. The Unicode data is always loaded after the emoji " +"data is loaded even if true." msgstr "" -"Los atajos de teclado para avanzar al siguiente método de entrada de la " -"lista" +"Cargar los datos de Unicode al inicio. Se necesitan alrededor de 15MB. Si " +"está desactivado, se cargarán al abrir el cuadro de selección de emoji. Los " +"datos de Unicode sólo se cargarán después de los de emoji, incluso cuando " +"esta opción esté activa." -#: ../data/ibus.schemas.in.h:24 -msgid "The shortcut keys for switching to the previous input method" +#: ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." msgstr "" -"Los atajos de teclado para retroceder al método de entrada anterior en la " -"lista" +"Copyright (c) 2007–2010 Peng Huang\n" +"Copyright (c) 2007–2010 Red Hat, Inc." -#: ../data/ibus.schemas.in.h:25 -msgid "The shortcut keys for turning input method off" -msgstr "Los atajos de teclado para deshabilitar el método de entrada" +#: ibus/lang.py:41 src/ibusutil.c:209 +msgid "Other" +msgstr "Otro" -#: ../data/ibus.schemas.in.h:26 -msgid "The shortcut keys for turning input method on" -msgstr "Los atajos de teclado para habilitar el método de entrada" +#: setup/emojilang.py:67 +msgid "Select a language" +msgstr "Elija un idioma" -#: ../data/ibus.schemas.in.h:27 ../setup/setup.ui.h:51 -msgid "The shortcut keys for turning input method on or off" -msgstr "Atajo de teclado para encender o apagar el método de entrada" +#: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 +#: setup/main.py:560 +msgid "_Cancel" +msgstr "_Cancelar" -#: ../data/ibus.schemas.in.h:28 -msgid "Trigger shortcut keys" -msgstr "Activadora de los Atajos de teclado" +#: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 +msgid "_OK" +msgstr "_Aceptar" -#: ../data/ibus.schemas.in.h:29 -msgid "Use custom font" -msgstr "Usar fuente personalizada" +#: setup/emojilang.py:235 setup/enginedialog.py:205 +msgid "More…" +msgstr "Más..." -#: ../data/ibus.schemas.in.h:30 -msgid "Use custom font name for language panel" -msgstr "Usar nombre de fuente personalizada para el panel de idioma" +#: setup/engineabout.py:37 setup/setup.ui:1368 ui/gtk3/panel.vala:1162 +msgid "About" +msgstr "Acerca de" -#: ../data/ibus.schemas.in.h:31 -msgid "Use global input method" -msgstr "Utilizar método de entrada global" +#: setup/engineabout.py:40 setup/setup.ui:1391 +msgid "_Close" +msgstr "_Cerrar" -#: ../data/ibus.schemas.in.h:32 ../setup/setup.ui.h:55 -msgid "Use system keyboard (XKB) layout" -msgstr "Usar el diseño del teclado del sistema (XKB)" +#: setup/engineabout.py:72 +#, python-format +msgid "Language: %s\n" +msgstr "Idioma: %s\n" -#: ../data/ibus.schemas.in.h:33 ../setup/setup.ui.h:56 -msgid "Use system keyboard layout" -msgstr "Usar el diseño del teclado del sistema" +#: setup/engineabout.py:75 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "Distribución del teclado: %s\n" -#: ../setup/setup.ui.h:1 -msgid "..." -msgstr "…" +#: setup/engineabout.py:78 +#, python-format +msgid "Author: %s\n" +msgstr "Autor: %s\n" -#: ../setup/setup.ui.h:2 -msgid "Font and Style" -msgstr "Fuente y Estilo" +#: setup/engineabout.py:81 +msgid "Description:\n" +msgstr "Descripción:\n" -#: ../setup/setup.ui.h:3 -msgid "Global input method settings" -msgstr "Configuraciones globales de método de entrada" +#: setup/enginecombobox.py:139 setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "Seleccione un método de entrada" -#: ../setup/setup.ui.h:4 -msgid "Keyboard Layout" -msgstr "Diseño del Teclado" +#. add button +#: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 +msgid "_Add" +msgstr "_Añadir" -#: ../setup/setup.ui.h:5 -msgid "Keyboard Shortcuts" -msgstr "Atajos de teclado" +#. create im name & icon column +#: setup/enginetreeview.py:69 setup/setup.ui:838 +msgid "Input Method" +msgstr "Métodos de Entrada" + +#: setup/ibus-setup.desktop:3 setup/setup.ui:69 +msgid "IBus Preferences" +msgstr "Preferencias de IBus" + +#: setup/ibus-setup.desktop:4 +msgid "Set IBus Preferences" +msgstr "Defina las preferencias de IBus" -#: ../setup/setup.ui.h:6 -msgid "Startup" -msgstr "Inicio" +#: setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "Atajos de teclado" + +#: setup/keyboardshortcut.py:67 +msgid "Key code:" +msgstr "Código clave:" -#: ../setup/setup.ui.h:7 +#: setup/keyboardshortcut.py:82 +msgid "Modifiers:" +msgstr "Modificadores:" + +#. apply button +#: setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "_Aplicar" + +#. delete button +#: setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "_Eliminar" + +#: setup/keyboardshortcut.py:252 msgid "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." msgstr "" -"IBus\n" -"El bus de entrada inteligente\n" -"Sitio web: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" +"Por favor, presione una tecla (o una combinación de tecla).\n" +"El diálogo será cerrado cuando la tecla sea soltada." -#: ../setup/setup.ui.h:14 +#: setup/keyboardshortcut.py:255 +msgid "Please press a key (or a key combination)" +msgstr "Por favor, presione una tecla (o una combinación de teclas)" + +#: setup/main.py:121 setup/main.py:588 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "Usar atajos con shift para cambiar al método anterior de entrada" + +#: setup/main.py:515 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "El demonio IBus no se está ejecutando. ¿Desea iniciarlo?" + +#: setup/main.py:536 msgid "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" msgstr "" -"El método de entrada determinado está al comienzo de la lista.\n" -"Puede usar los botones arriba/abajo para cambiarlo." +"¡IBus fue iniciado! Sin no puede usar IBus, agregue las siguientes líneas a " +"su $HOME/.bashrc; luego vuelga a ingresar a su cuenta.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" -#: ../setup/setup.ui.h:17 -msgid "Add the selected input method into the enabled input methods" -msgstr "" -"Agregar el método de entrada seleccionado a los métodos de entrada " -"habilitados" +#. Translators: %d == 5 currently +#: setup/main.py:550 +#, python-format +msgid "IBus daemon could not be started in %d seconds." +msgstr "El demonio IBus no se pudo iniciar en %d segundos." -#: ../setup/setup.ui.h:18 -msgid "Advanced" -msgstr "Avanzado" +#: setup/main.py:562 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "Seleccione la tecla de atajo para %s" -#: ../setup/setup.ui.h:19 -msgid "Always" -msgstr "Siempre" +#. Translators: Title of the window +#: setup/main.py:564 +msgid "switching input methods" +msgstr "cambiando métodos de entrada" -#: ../setup/setup.ui.h:20 +#: setup/setup.ui:11 +msgid "Horizontal" +msgstr "Horizontal" + +#: setup/setup.ui:14 +msgid "Vertical" +msgstr "Vertical" + +#: setup/setup.ui:25 +msgid "Top left corner" +msgstr "Esquina superior izquierda" + +#: setup/setup.ui:28 +msgid "Top right corner" +msgstr "Esquina superior derecha" + +#: setup/setup.ui:31 msgid "Bottom left corner" msgstr "Esquina inferior izquierda" -#: ../setup/setup.ui.h:21 +#: setup/setup.ui:34 msgid "Bottom right corner" msgstr "Esquina inferior derecha" -#: ../setup/setup.ui.h:22 -msgid "Candidates orientation:" -msgstr "Orientaciones candidato:" - -#: ../setup/setup.ui.h:23 +#: setup/setup.ui:37 msgid "Custom" msgstr "Personalizado" -#: ../setup/setup.ui.h:24 -msgid "Disable:" -msgstr "Deshabilitar:" +#: setup/setup.ui:48 +msgid "Do not show" +msgstr "No mostrar" -#: ../setup/setup.ui.h:25 -msgid "Embed preedit text in application window" -msgstr "Insertar texto previamente editado en la ventana de la aplicación" +#: setup/setup.ui:51 +msgid "Hide automatically" +msgstr "Ocultar automáticamente" -#: ../setup/setup.ui.h:26 -msgid "Embed the preedit text of input method in the application window" +#: setup/setup.ui:54 +msgid "Always" +msgstr "Siempre" + +#: setup/setup.ui:113 +msgid "The shortcut keys for switching to next input method in the list" msgstr "" -"Insertar el texto previamente editado del método de entrada en la ventana de" -" la aplicación" +"Tecla programada para cambiar al siguiente método de entrada en la lista" + +#: setup/setup.ui:115 +msgid "Next input method:" +msgstr "Siguiente método de entrada:" -#: ../setup/setup.ui.h:27 -msgid "Embedded in menu" -msgstr "Menú incrustado" +#: setup/setup.ui:127 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "" +"Tecla programada para cambiar al método de entrada anterior en la lista" -#: ../setup/setup.ui.h:28 +#: setup/setup.ui:129 +msgid "Previous input method:" +msgstr "Método de entrada anterior:" + +#: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 +#: setup/setup.ui:903 setup/setup.ui:957 +msgid "..." +msgstr "..." + +#: setup/setup.ui:226 msgid "Enable or disable:" -msgstr "Habilitar o deshabilitar:" +msgstr "Habilitar o inhabilitar:" -#: ../setup/setup.ui.h:29 +#: setup/setup.ui:238 msgid "Enable:" msgstr "Habilitar:" -#: ../setup/setup.ui.h:30 -msgid "General" -msgstr "General" +#: setup/setup.ui:291 +msgid "Disable:" +msgstr "Inhabilitar:" -#: ../setup/setup.ui.h:31 -msgid "Horizontal" -msgstr "Horizontal" +#: setup/setup.ui:345 setup/setup.ui:983 +msgid "Keyboard Shortcuts" +msgstr "Atajos de teclado" + +#: setup/setup.ui:374 +msgid "Set the orientation of candidates in lookup table" +msgstr "Establecer la orientación de los candidatos en la tabla de búsqueda" + +#: setup/setup.ui:376 +msgid "Candidates orientation:" +msgstr "Orientación de los candidatos:" -#: ../setup/setup.ui.h:34 +#: setup/setup.ui:407 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "" +"Configurar el comportamiento de ibus sobre cómo mostrar u ocultar la barra " +"de idiomas" + +#: setup/setup.ui:409 +msgid "Show property panel:" +msgstr "Mostrar panel de propiedades:" + +#: setup/setup.ui:423 msgid "Language panel position:" msgstr "Posición del panel de idioma:" -#: ../setup/setup.ui.h:35 -msgid "Move down the selected input method in the enabled input methods" +#: setup/setup.ui:494 +msgid "Show input method's name on language bar when check the checkbox" msgstr "" -"Mover abajo el método de entrada seleccionado en los métodos de entrada " -"habilitados" +"Mostrar el nombre del método de entrada en la barra de idioma cuando se " +"marque la casilla" -#: ../setup/setup.ui.h:36 -msgid "Move up the selected input method in the enabled input methods list" +#: setup/setup.ui:508 +msgid "Embed preedit text in application window" +msgstr "Insertar texto previamente editado en la ventana de la aplicación" + +#: setup/setup.ui:513 +msgid "Embed the preedit text of input method in the application window" msgstr "" -"Mover arriba el método de entrada seleccionado en la lista de métodos de " -"entrada habilitados" +"Insertar el texto previamente editado del método de entrada en la ventana de " +"la aplicación" -#: ../setup/setup.ui.h:37 -msgid "Next input method:" -msgstr "Siguiente método de entrada:" +#: setup/setup.ui:527 +msgid "Use custom font:" +msgstr "Utilizar tipo de letra personalizado:" -#: ../setup/setup.ui.h:38 -msgid "Previous input method:" -msgstr "Método de entrada anterior:" +#: setup/setup.ui:562 setup/setup.ui:1156 +msgid "Font and Style" +msgstr "Tipo de letra y estilo" + +#: setup/setup.ui:579 +msgid "General" +msgstr "General" + +#: setup/setup.ui:671 +msgid "Add the selected input method into the enabled input methods" +msgstr "" +"Agregar el método de entrada seleccionado a los métodos de entrada " +"habilitados" -#: ../setup/setup.ui.h:39 +#: setup/setup.ui:682 +msgid "_Remove" +msgstr "_Quitar" + +#: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "" "Eliminar el método de entrada seleccionado de los métodos de entrada " "habilitados" -#: ../setup/setup.ui.h:40 -msgid "Set the behavior of ibus how to show or hide language bar" +#: setup/setup.ui:700 +msgid "_Up" +msgstr "_Subir" + +#: setup/setup.ui:707 +msgid "Move up the selected input method in the enabled input methods list" msgstr "" -"Configurar el comportamiento de ibus sobre cómo mostrar u ocultar la barra " -"de idiomas" +"Mover arriba el método de entrada seleccionado en la lista de métodos de " +"entrada habilitados" -#: ../setup/setup.ui.h:41 -msgid "Set the orientation of candidates in lookup table" -msgstr "Poner la orientación de la tabla de búsqueda de candidatos" +#: setup/setup.ui:718 +msgid "_Down" +msgstr "_Abajo" -#: ../setup/setup.ui.h:44 +#: setup/setup.ui:725 +msgid "Move down the selected input method in the enabled input methods" +msgstr "" +"Mover abajo el método de entrada seleccionado en los métodos de entrada " +"habilitados" + +#: setup/setup.ui:736 +msgid "_About" +msgstr "Acerca _de" + +#: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "Mostrar información sobre el método de entrada seleccionado" -#: ../setup/setup.ui.h:46 -msgid "Show input method's name on language bar when check the checkbox" +#: setup/setup.ui:754 +msgid "_Preferences" +msgstr "_Preferencias" + +#: setup/setup.ui:761 +msgid "Show setup of the selected input method" +msgstr "Mostrar la configuración del método de entrada seleccionado" + +#: setup/setup.ui:812 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." msgstr "" -"Mostrar el nombre del método de entrada en la barra de idioma cuando se " -"marque la casilla" +"Puede elegir el método de entrada activo de los seleccionados en " +"la lista anterior, mediante el atajo de teclado o pulsando en el icono del " +"panel." -#: ../setup/setup.ui.h:47 -msgid "Show language panel:" -msgstr "Mostrar el panel de idioma:" +#: setup/setup.ui:873 +msgid "" +"The shortcut keys to enable conversions of emoji annotations or Unicode names" +msgstr "" +"Los atajos de teclado para activar las conversiones de las anotaciones de " +"emoji o nombre Unicode" -#: ../setup/setup.ui.h:48 -msgid "Start ibus on login" -msgstr "Iniciar ibus al ingresar" +#: setup/setup.ui:875 +msgid "Emoji annotation:" +msgstr "Anotación emoji:" -#: ../setup/setup.ui.h:49 -msgid "The shortcut keys for switching to next input method in the list" +#: setup/setup.ui:927 +msgid "The shortcut keys to enable Unicode code point conversions" msgstr "" -"Tecla programada para cambiar al siguiente método de entrada en la lista" +"Los atajos de teclado para activar las conversiones de los códigos Unicode" -#: ../setup/setup.ui.h:50 -msgid "The shortcut keys for switching to previous input method in the list" +#: setup/setup.ui:929 +msgid "Unicode code point:" +msgstr "Código Unicode:" + +#: setup/setup.ui:1013 +msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" -"Tecla programada para cambiar al método de entrada anterior en la lista" +"Establecer el tipo de letra de los candidatos Unicode en el diálogo de emoyis" -#: ../setup/setup.ui.h:52 -msgid "Top left corner" -msgstr "Esquina superior izquierda" +#: setup/setup.ui:1015 +msgid "Unicode font:" +msgstr "Tipo de letra Unicode:" -#: ../setup/setup.ui.h:53 -msgid "Top right corner" -msgstr "Esquina superior derecha" +#: setup/setup.ui:1038 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "Idioma a usar en el cuadro de emoji para las anotaciones de los mismos" -#: ../setup/setup.ui.h:54 -msgid "Use custom font:" -msgstr "Usar fuente personalizada:" +#: setup/setup.ui:1040 +msgid "Emoji annotation language:" +msgstr "Idioma para las anotaciones de emoji:" -#: ../setup/setup.ui.h:57 -msgid "Vertical" -msgstr "Vertical" +#: setup/setup.ui:1062 +msgid "" +"Match emoji annotations partially with the following condition and more than " +"the number of characters:" +msgstr "" +"Realizar búsqueda parcial en las anotaciones de emoji con la siguiente " +"condición y más que un mínimo de caracteres:" + +#: setup/setup.ui:1067 +msgid "" +"If emoji annotations can be matched with a partial string instead of the " +"exact match" +msgstr "" +"Si se puede obtener una coincidencia parcial en lugar de exacta en la " +"búsqueda de anotaciones de emoji." + +#: setup/setup.ui:1101 +msgid "Prefix match" +msgstr "Comienza con el texto" + +#: setup/setup.ui:1115 +msgid "Suffix match" +msgstr "Acaba con el texto" + +#: setup/setup.ui:1130 +msgid "Containing match" +msgstr "Contiene el texto" + +#: setup/setup.ui:1176 +msgid "Emoji" +msgstr "Emoji" + +#: setup/setup.ui:1230 +msgid "Keyboard Layout" +msgstr "Distribución del teclado" + +#: setup/setup.ui:1278 +msgid "Global input method settings" +msgstr "Configuraciones globales de método de entrada" + +#: setup/setup.ui:1310 +msgid "" +"Choose glyphs with the input method's language on the candidate window for " +"the duplicated code points" +msgstr "" +"Elige glifos con el idioma del método de entrada en la ventana candidato " +"para los puntos de código duplicados" + +#: setup/setup.ui:1327 +msgid "Fonts" +msgstr "Tipos de letra" + +#: setup/setup.ui:1347 +msgid "Advanced" +msgstr "Avanzado" + +#: src/ibusemojigen.h:30 +msgid "Activities" +msgstr "Actividades" + +#: src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "Animales y naturaleza" + +#: src/ibusemojigen.h:32 +msgid "Component" +msgstr "Componente" + +#: src/ibusemojigen.h:33 +msgid "Flags" +msgstr "Banderas" + +#: src/ibusemojigen.h:34 +msgid "Food & Drink" +msgstr "Comida y bebida" + +#: src/ibusemojigen.h:35 +msgid "Objects" +msgstr "Objetos" + +#: src/ibusemojigen.h:36 +msgid "People & Body" +msgstr "Gente y cuerpo" + +#: src/ibusemojigen.h:37 +msgid "Smileys & Emotion" +msgstr "Emociones" + +#: src/ibusemojigen.h:38 +msgid "Symbols" +msgstr "Símbolos" + +#: src/ibusemojigen.h:39 +msgid "Travel & Places" +msgstr "Viajes y lugares" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:33 +msgid "Basic Latin" +msgstr "Latino básico" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:37 +msgid "Latin-1 Supplement" +msgstr "Latino-1 (suplemento)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:41 +msgid "Latin Extended-A" +msgstr "Latino extendido-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:45 +msgid "Latin Extended-B" +msgstr "Latino extendido-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:49 +msgid "IPA Extensions" +msgstr "Extensiones IPA" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:53 +msgid "Spacing Modifier Letters" +msgstr "Modificadores del espaciado" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:57 +msgid "Combining Diacritical Marks" +msgstr "Marcas diacríticas combinantes" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:61 +msgid "Greek and Coptic" +msgstr "Griego y copto" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:65 +msgid "Cyrillic" +msgstr "Cirílico" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:69 +msgid "Cyrillic Supplement" +msgstr "Cirílico (suplemento)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:73 +msgid "Armenian" +msgstr "Armenio" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:77 +msgid "Hebrew" +msgstr "Hebreo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:81 +msgid "Arabic" +msgstr "Árabe" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:85 +msgid "Syriac" +msgstr "Sirio" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:89 +msgid "Arabic Supplement" +msgstr "Árabe (suplemento)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:93 +msgid "Thaana" +msgstr "Thaana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:97 +msgid "NKo" +msgstr "N'Ko" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:101 +msgid "Samaritan" +msgstr "Samaritano" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:105 +msgid "Mandaic" +msgstr "Mandeo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:109 +msgid "Syriac Supplement" +msgstr "Sirio (suplemento)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:113 +msgid "Arabic Extended-A" +msgstr "Árabe extendido-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:117 +msgid "Devanagari" +msgstr "Devanagari" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:121 +msgid "Bengali" +msgstr "Bengalí" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:125 +msgid "Gurmukhi" +msgstr "Gurmukhi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:129 +msgid "Gujarati" +msgstr "Gujarati" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:133 +msgid "Oriya" +msgstr "Oriya" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:137 +msgid "Tamil" +msgstr "Tamil" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:141 +msgid "Telugu" +msgstr "Telugu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:145 +msgid "Kannada" +msgstr "Kannada" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:149 +msgid "Malayalam" +msgstr "Malayalam" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:153 +msgid "Sinhala" +msgstr "Sinhala" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:157 +msgid "Thai" +msgstr "Tailandés" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:161 +msgid "Lao" +msgstr "Lao" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:165 +msgid "Tibetan" +msgstr "Tibetano" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:169 +msgid "Myanmar" +msgstr "Myanmar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:173 +msgid "Georgian" +msgstr "Georgiano" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:177 +msgid "Hangul Jamo" +msgstr "Hangul Jamo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:181 +msgid "Ethiopic" +msgstr "Etíope" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:185 +msgid "Ethiopic Supplement" +msgstr "Etíope (suplemento)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:189 +msgid "Cherokee" +msgstr "Cheroqui" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:193 +msgid "Unified Canadian Aboriginal Syllabics" +msgstr "Silabarios indígenas canadienses" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:197 +msgid "Ogham" +msgstr "Ogam" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:201 +msgid "Runic" +msgstr "Rúnico" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:205 +msgid "Tagalog" +msgstr "Tagalo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:209 +msgid "Hanunoo" +msgstr "Hanunóo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:213 +msgid "Buhid" +msgstr "Buhid" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:217 +msgid "Tagbanwa" +msgstr "Tagbanwa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:221 +msgid "Khmer" +msgstr "Jemer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:225 +msgid "Mongolian" +msgstr "Mongol" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:229 +msgid "Unified Canadian Aboriginal Syllabics Extended" +msgstr "Silabarios indígenas canadienses extendidos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:233 +msgid "Limbu" +msgstr "Limbu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:237 +msgid "Tai Le" +msgstr "Tai Le" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:241 +msgid "New Tai Lue" +msgstr "Nuevo Tai Lue" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:245 +msgid "Khmer Symbols" +msgstr "Jemer (símbolos)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:249 +msgid "Buginese" +msgstr "Buginés" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:253 +msgid "Tai Tham" +msgstr "Tai Tham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:257 +msgid "Combining Diacritical Marks Extended" +msgstr "Marcas diacríticas combinantes extendidas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:261 +msgid "Balinese" +msgstr "Balinés" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:265 +msgid "Sundanese" +msgstr "Sondanés" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:269 +msgid "Batak" +msgstr "Batak" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:273 +msgid "Lepcha" +msgstr "Lepcha" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:277 +msgid "Ol Chiki" +msgstr "Ol Chiki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:281 +msgid "Cyrillic Extended-C" +msgstr "Cirílico extendido-C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:285 +msgid "Georgian Extended" +msgstr "Georgiano extendido" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:289 +msgid "Sundanese Supplement" +msgstr "Sondanés (suplemento)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:293 +msgid "Vedic Extensions" +msgstr "Extensiones vedas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:297 +msgid "Phonetic Extensions" +msgstr "Extensiones fonéticas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:301 +msgid "Phonetic Extensions Supplement" +msgstr "Extensiones fonéticas (suplemento)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:305 +msgid "Combining Diacritical Marks Supplement" +msgstr "Marcas diacríticas combinantes (suplemento)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:309 +msgid "Latin Extended Additional" +msgstr "Latino extendido adicional" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:313 +msgid "Greek Extended" +msgstr "Griego extendido" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:317 +msgid "General Punctuation" +msgstr "Puntuación general" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:321 +msgid "Superscripts and Subscripts" +msgstr "Superíndices y subíndices" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:325 +msgid "Currency Symbols" +msgstr "Símbolos monetarios" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:329 +msgid "Combining Diacritical Marks for Symbols" +msgstr "Marcas diacríticas combinantes para símbolos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:333 +msgid "Letterlike Symbols" +msgstr "Símbolos similares a letras" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:337 +msgid "Number Forms" +msgstr "Formas numéricas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:341 +msgid "Arrows" +msgstr "Flechas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:345 +msgid "Mathematical Operators" +msgstr "Operadores matemáticos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:349 +msgid "Miscellaneous Technical" +msgstr "Técnicos variados" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:353 +msgid "Control Pictures" +msgstr "Descriptores de control" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:357 +msgid "Optical Character Recognition" +msgstr "Reconocimiento óptico de caracteres" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:361 +msgid "Enclosed Alphanumerics" +msgstr "Alfanuméricos encerrados" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:365 +msgid "Box Drawing" +msgstr "Dibujos de cuadros" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:369 +msgid "Block Elements" +msgstr "Bloques" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:373 +msgid "Geometric Shapes" +msgstr "Formas geométricas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:377 +msgid "Miscellaneous Symbols" +msgstr "Símbolos variados" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:381 +msgid "Dingbats" +msgstr "Caracteres gráficos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:385 +msgid "Miscellaneous Mathematical Symbols-A" +msgstr "Símbolos matemáticos variados A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:389 +msgid "Supplemental Arrows-A" +msgstr "Flechas suplementarias A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:393 +msgid "Braille Patterns" +msgstr "Patrones Braille" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:397 +msgid "Supplemental Arrows-B" +msgstr "Flechas suplementarias B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:401 +msgid "Miscellaneous Mathematical Symbols-B" +msgstr "Símbolos matemáticos variados B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:405 +msgid "Supplemental Mathematical Operators" +msgstr "Operadores matemáticos suplementarios" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:409 +msgid "Miscellaneous Symbols and Arrows" +msgstr "Símbolos y flechas variados" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:413 +msgid "Glagolitic" +msgstr "Glagolítico" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:417 +msgid "Latin Extended-C" +msgstr "Latino extendido-C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:421 +msgid "Coptic" +msgstr "Copto" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:425 +msgid "Georgian Supplement" +msgstr "Georgiano (suplemento)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:429 +msgid "Tifinagh" +msgstr "Tifinag" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:433 +msgid "Ethiopic Extended" +msgstr "Etíope extendido" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:437 +msgid "Cyrillic Extended-A" +msgstr "Cirílico extendido-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:441 +msgid "Supplemental Punctuation" +msgstr "Puntuación (suplemento)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:445 +msgid "CJK Radicals Supplement" +msgstr "CJK, radicales (suplemento)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:449 +msgid "Kangxi Radicals" +msgstr "Kangxi (radicales)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:453 +msgid "Ideographic Description Characters" +msgstr "Caracteres ideográficos de descripción" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:457 +msgid "CJK Symbols and Punctuation" +msgstr "CJK, símbolos y puntuación" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:461 +msgid "Hiragana" +msgstr "Hiragana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:465 +msgid "Katakana" +msgstr "Katakana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:469 +msgid "Bopomofo" +msgstr "Bopomofo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:473 +msgid "Hangul Compatibility Jamo" +msgstr "Jamo con compatibilidad hangul" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:477 +msgid "Kanbun" +msgstr "Kanbun" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:481 +msgid "Bopomofo Extended" +msgstr "Bopomofo extendido" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:485 +msgid "CJK Strokes" +msgstr "CJK, trazos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:489 +msgid "Katakana Phonetic Extensions" +msgstr "Katakana, extensiones fonéticas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:493 +msgid "Enclosed CJK Letters and Months" +msgstr "CJK, letras y meses encerrados" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:497 +msgid "CJK Compatibility" +msgstr "CJK (compatibilidad)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:501 +msgid "CJK Unified Ideographs Extension A" +msgstr "CJK, ideogramas unificados extensión A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:505 +msgid "Yijing Hexagram Symbols" +msgstr "Hexagramas del I-Ching" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:509 +msgid "CJK Unified Ideographs" +msgstr "CJK, ideogramas unificados" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:513 +msgid "Yi Syllables" +msgstr "Yi, sílabas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:517 +msgid "Yi Radicals" +msgstr "Yi, radicales" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:521 +msgid "Lisu" +msgstr "Lisu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:525 +msgid "Vai" +msgstr "Vai" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:529 +msgid "Cyrillic Extended-B" +msgstr "Cirílico extendido-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:533 +msgid "Bamum" +msgstr "Shümom" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:537 +msgid "Modifier Tone Letters" +msgstr "Letras modificadoras del tono" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:541 +msgid "Latin Extended-D" +msgstr "Latino extendido-D" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:545 +msgid "Syloti Nagri" +msgstr "Syloti Nagri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:549 +msgid "Common Indic Number Forms" +msgstr "Formas numéricas índicas comunes" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:553 +msgid "Phags-pa" +msgstr "'Phags-pa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:557 +msgid "Saurashtra" +msgstr "Saurashtra" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:561 +msgid "Devanagari Extended" +msgstr "Devanagari extendido" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:565 +msgid "Kayah Li" +msgstr "Kayah Li" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:569 +msgid "Rejang" +msgstr "Rejang" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:573 +msgid "Hangul Jamo Extended-A" +msgstr "Hangul Jamo extendido-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:577 +msgid "Javanese" +msgstr "Javanés" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:581 +msgid "Myanmar Extended-B" +msgstr "Myanmar extendido-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:585 +msgid "Cham" +msgstr "Cham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:589 +msgid "Myanmar Extended-A" +msgstr "Myanmar extendido-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:593 +msgid "Tai Viet" +msgstr "Tai Viet" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:597 +msgid "Meetei Mayek Extensions" +msgstr "Meetei Mayek, extensiones" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:601 +msgid "Ethiopic Extended-A" +msgstr "Etíope extendido-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:605 +msgid "Latin Extended-E" +msgstr "Latino extendido-E" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:609 +msgid "Cherokee Supplement" +msgstr "Cheroqui (suplemento)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:613 +msgid "Meetei Mayek" +msgstr "Meetei Mayek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:617 +msgid "Hangul Syllables" +msgstr "Hangul, sílabas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:621 +msgid "Hangul Jamo Extended-B" +msgstr "Hangul Jamo extendido-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:625 +msgid "High Surrogates" +msgstr "Subrogaciones altas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:629 +msgid "High Private Use Surrogates" +msgstr "Subrogaciones altas de uso privado" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:633 +msgid "Low Surrogates" +msgstr "Subrogaciones bajas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:637 +msgid "Private Use Area" +msgstr "Área de uso privado" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:641 +msgid "CJK Compatibility Ideographs" +msgstr "CJK, ideogramas de compatibilidad" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:645 +msgid "Alphabetic Presentation Forms" +msgstr "Formas de presentación alfabética" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:649 +msgid "Arabic Presentation Forms-A" +msgstr "Formas de presentación árabes-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:653 +msgid "Variation Selectors" +msgstr "Selectores de variación" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:657 +msgid "Vertical Forms" +msgstr "Formas verticales" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:661 +msgid "Combining Half Marks" +msgstr "Marcas intermedias combinantes" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:665 +msgid "CJK Compatibility Forms" +msgstr "CJK, formas de compatibilidad" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:669 +msgid "Small Form Variants" +msgstr "Variantes de formas pequeñas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:673 +msgid "Arabic Presentation Forms-B" +msgstr "Árabe, formas de presentación B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:677 +msgid "Halfwidth and Fullwidth Forms" +msgstr "Formas de ancho completo e intermedio" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:681 +msgid "Specials" +msgstr "Especiales" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:685 +msgid "Linear B Syllabary" +msgstr "Silabario lineal B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:689 +msgid "Linear B Ideograms" +msgstr "Ideogramas lineales B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:693 +msgid "Aegean Numbers" +msgstr "Números egeos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:697 +msgid "Ancient Greek Numbers" +msgstr "Números de griego antiguo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:701 +msgid "Ancient Symbols" +msgstr "Símbolos antiguos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:705 +msgid "Phaistos Disc" +msgstr "Disco de Festo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:709 +msgid "Lycian" +msgstr "Licio" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:713 +msgid "Carian" +msgstr "Cario" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:717 +msgid "Coptic Epact Numbers" +msgstr "Números epact coptos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:721 +msgid "Old Italic" +msgstr "Italo antiguo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:725 +msgid "Gothic" +msgstr "Gótico" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:729 +msgid "Old Permic" +msgstr "Pérmico antiguo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:733 +msgid "Ugaritic" +msgstr "Ugarítico" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:737 +msgid "Old Persian" +msgstr "Persa antiguo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:741 +msgid "Deseret" +msgstr "Deseret" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:745 +msgid "Shavian" +msgstr "Shaviano" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:749 +msgid "Osmanya" +msgstr "Osmanya" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:753 +msgid "Osage" +msgstr "Osage" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:757 +msgid "Elbasan" +msgstr "Elbasano" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:761 +msgid "Caucasian Albanian" +msgstr "Albanocaucásico" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:765 +msgid "Linear A" +msgstr "Lineal A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:769 +msgid "Cypriot Syllabary" +msgstr "Silabario chipriota" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:773 +msgid "Imperial Aramaic" +msgstr "Arameo imperial" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:777 +msgid "Palmyrene" +msgstr "Palmireno" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:781 +msgid "Nabataean" +msgstr "Nabateo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:785 +msgid "Hatran" +msgstr "Hatrano" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:789 +msgid "Phoenician" +msgstr "Fenicio" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:793 +msgid "Lydian" +msgstr "Lidio" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:797 +msgid "Meroitic Hieroglyphs" +msgstr "Meroítico, jeroglíficos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:801 +msgid "Meroitic Cursive" +msgstr "Meroítico, cursiva" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:805 +msgid "Kharoshthi" +msgstr "Karosti" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:809 +msgid "Old South Arabian" +msgstr "Árabe meridional antiguo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:813 +msgid "Old North Arabian" +msgstr "Árabe del norte antiguo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:817 +msgid "Manichaean" +msgstr "Maniqueo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:821 +msgid "Avestan" +msgstr "Avéstico" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:825 +msgid "Inscriptional Parthian" +msgstr "Parto, inscripciones" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:829 +msgid "Inscriptional Pahlavi" +msgstr "Pahlaví, inscripciones" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:833 +msgid "Psalter Pahlavi" +msgstr "Pahlaví, salmos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:837 +msgid "Old Turkic" +msgstr "Turco antiguo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:841 +msgid "Old Hungarian" +msgstr "Húngaro antiguo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:845 +msgid "Hanifi Rohingya" +msgstr "Hanifi rohinyá" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:849 +msgid "Rumi Numeral Symbols" +msgstr "Numerales rumi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:853 +msgid "Yezidi" +msgstr "Yezidi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:857 +msgid "Old Sogdian" +msgstr "Sogdiano antiguo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:861 +msgid "Sogdian" +msgstr "Sogdiano" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:865 +msgid "Chorasmian" +msgstr "Chorasmian" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:869 +msgid "Elymaic" +msgstr "Elymaic" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:873 +msgid "Brahmi" +msgstr "Brahmi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:877 +msgid "Kaithi" +msgstr "Kaithi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:881 +msgid "Sora Sompeng" +msgstr "Sora Sompeng" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:885 +msgid "Chakma" +msgstr "Chakma" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:889 +msgid "Mahajani" +msgstr "Mahajani" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:893 +msgid "Sharada" +msgstr "Sharada" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:897 +msgid "Sinhala Archaic Numbers" +msgstr "Sinhala, numerales antiguos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:901 +msgid "Khojki" +msgstr "Khojki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:905 +msgid "Multani" +msgstr "Multani" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:909 +msgid "Khudawadi" +msgstr "Khudawadi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:913 +msgid "Grantha" +msgstr "Grantha" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:917 +msgid "Newa" +msgstr "Newa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:921 +msgid "Tirhuta" +msgstr "Tirhuta" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:925 +msgid "Siddham" +msgstr "Siddham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:929 +msgid "Modi" +msgstr "Modi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:933 +msgid "Mongolian Supplement" +msgstr "Mongol (suplemento)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:937 +msgid "Takri" +msgstr "Takri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:941 +msgid "Ahom" +msgstr "Ahom" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:945 +msgid "Dogra" +msgstr "Dogra" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:949 +msgid "Warang Citi" +msgstr "Warang Citi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:953 +msgid "Dives Akuru" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:957 +msgid "Nandinagari" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:961 +msgid "Zanabazar Square" +msgstr "Zanabazar cuadrada" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:965 +msgid "Soyombo" +msgstr "Soyombo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:969 +msgid "Pau Cin Hau" +msgstr "Pau Cin Hau" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:973 +msgid "Bhaiksuki" +msgstr "Bhaiksuki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:977 +msgid "Marchen" +msgstr "Marchen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:981 +msgid "Masaram Gondi" +msgstr "Masaram Gondi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:985 +msgid "Gunjala Gondi" +msgstr "Gunjala Gondi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:989 +msgid "Makasar" +msgstr "Macasar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:993 +#, fuzzy +#| msgid "Latin-1 Supplement" +msgid "Lisu Supplement" +msgstr "Latino-1 (suplemento)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:997 +msgid "Tamil Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1001 +msgid "Cuneiform" +msgstr "Cuneiforme" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1005 +msgid "Cuneiform Numbers and Punctuation" +msgstr "Cuneiforme, números y puntuación" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1009 +msgid "Early Dynastic Cuneiform" +msgstr "Cuneiforme arcaico" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1013 +msgid "Egyptian Hieroglyphs" +msgstr "Jeroglíficos egipcios" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1017 +msgid "Egyptian Hieroglyph Format Controls" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1021 +msgid "Anatolian Hieroglyphs" +msgstr "Jeroglíficos anatolios" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1025 +msgid "Bamum Supplement" +msgstr "Shümom (suplemento)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1029 +msgid "Mro" +msgstr "Mro" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1033 +msgid "Bassa Vah" +msgstr "Vah" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1037 +msgid "Pahawh Hmong" +msgstr "Pahawh Hmong" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1041 +msgid "Medefaidrin" +msgstr "Medefidrin" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1045 +msgid "Miao" +msgstr "Pollard Miao" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1049 +msgid "Ideographic Symbols and Punctuation" +msgstr "Símbolos y puntuación ideográfica" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1053 +msgid "Tangut" +msgstr "Tangut" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1057 +msgid "Tangut Components" +msgstr "Tangut, componentes" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1061 +msgid "Khitan Small Script" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1065 +#, fuzzy +#| msgid "Kana Supplement" +msgid "Tangut Supplement" +msgstr "Kana (suplemento)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1069 +msgid "Kana Supplement" +msgstr "Kana (suplemento)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1073 +msgid "Kana Extended-A" +msgstr "Kana extendido-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1077 +msgid "Small Kana Extension" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1081 +msgid "Nushu" +msgstr "Nü shu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1085 +msgid "Duployan" +msgstr "Duployana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1089 +msgid "Shorthand Format Controls" +msgstr "Taquigrafía, controles de formato" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1093 +msgid "Byzantine Musical Symbols" +msgstr "Símbolos musicales biznatinos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1097 +msgid "Musical Symbols" +msgstr "Símbolos musicales" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1101 +msgid "Ancient Greek Musical Notation" +msgstr "Notación musical del griego antiguo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1105 +msgid "Mayan Numerals" +msgstr "Numeración maya" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1109 +msgid "Tai Xuan Jing Symbols" +msgstr "Tai Xuan Jing" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1113 +msgid "Counting Rod Numerals" +msgstr "Varillas de numeración" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1117 +msgid "Mathematical Alphanumeric Symbols" +msgstr "Símbolos matemáticos alfanuméricos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1121 +msgid "Sutton SignWriting" +msgstr "Lengua de signos Sutton" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1125 +msgid "Glagolitic Supplement" +msgstr "Glagolítico (suplemento)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1129 +msgid "Nyiakeng Puachue Hmong" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1133 +msgid "Wancho" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1137 +msgid "Mende Kikakui" +msgstr "Silabario ki-ka-ku" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1141 +msgid "Adlam" +msgstr "Adlam" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1145 +msgid "Indic Siyaq Numbers" +msgstr "Números índicos siyah" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1149 +msgid "Ottoman Siyaq Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1153 +msgid "Arabic Mathematical Alphabetic Symbols" +msgstr "Símbolos alfabéticos matemáticos árabes" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1157 +msgid "Mahjong Tiles" +msgstr "Fichas de Mahjong" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1161 +msgid "Domino Tiles" +msgstr "Fichas de dominó" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1165 +msgid "Playing Cards" +msgstr "Naipes" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1169 +msgid "Enclosed Alphanumeric Supplement" +msgstr "Alfanuméricos encerrados (suplemento)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1173 +msgid "Enclosed Ideographic Supplement" +msgstr "Ideogramas encerrados (suplemento)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1177 +msgid "Miscellaneous Symbols and Pictographs" +msgstr "Símbolos y pictogramas varios" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1181 +msgid "Emoticons" +msgstr "Emoticonos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1185 +msgid "Ornamental Dingbats" +msgstr "Pictogramas ornamentales" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1189 +msgid "Transport and Map Symbols" +msgstr "Símbolos de transporte y mapas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1193 +msgid "Alchemical Symbols" +msgstr "Símbolos alquímicos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1197 +msgid "Geometric Shapes Extended" +msgstr "Formas geométricas extendidas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1201 +msgid "Supplemental Arrows-C" +msgstr "Flechas (suplemento-C)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1205 +msgid "Supplemental Symbols and Pictographs" +msgstr "Símbolos y pictogramas (suplemento)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1209 +msgid "Chess Symbols" +msgstr "Símbolos de ajedrez" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1213 +msgid "Symbols and Pictographs Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1217 +msgid "Symbols for Legacy Computing" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1221 +msgid "CJK Unified Ideographs Extension B" +msgstr "CJK, ideogramas unificados extensión B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1225 +msgid "CJK Unified Ideographs Extension C" +msgstr "CJK, ideogramas unificados extensión C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1229 +msgid "CJK Unified Ideographs Extension D" +msgstr "CJK, ideogramas unificados extensión D" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1233 +msgid "CJK Unified Ideographs Extension E" +msgstr "CJK, ideogramas unificados extensión E" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1237 +msgid "CJK Unified Ideographs Extension F" +msgstr "CJK, ideogramas unificados extensión F" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1241 +msgid "CJK Compatibility Ideographs Supplement" +msgstr "CJK, ideogramas de compatibilidad (suplemento)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1245 +#, fuzzy +#| msgid "CJK Unified Ideographs Extension A" +msgid "CJK Unified Ideographs Extension G" +msgstr "CJK, ideogramas unificados extensión A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1249 +msgid "Tags" +msgstr "Etiquetas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1253 +msgid "Variation Selectors Supplement" +msgstr "Selectores de variación (suplemento)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1257 +msgid "Supplementary Private Use Area-A" +msgstr "Área suplementaria de uso privado A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1261 +msgid "Supplementary Private Use Area-B" +msgstr "Área suplementaria de uso privado B" + +#: tools/main.vala:51 +msgid "List engine name only" +msgstr "Listar sólo los nombres de máquinas" + +#: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 +msgid "Can't connect to IBus.\n" +msgstr "No se puede conectar a IBus.\n" + +#: tools/main.vala:93 +#, c-format +msgid "language: %s\n" +msgstr "idioma: %s\n" + +#: tools/main.vala:161 +msgid "No engine is set.\n" +msgstr "No se configuró la máquina.\n" + +#: tools/main.vala:169 +msgid "Set global engine failed.\n" +msgstr "Falló la configuración de la máquina global.\n" + +#: tools/main.vala:174 +msgid "Get global engine failed.\n" +msgstr "Falló al obtener la máquina global.\n" + +#: tools/main.vala:217 +msgid "Read the system registry cache." +msgstr "Lea el cache del registro del sistema." + +#: tools/main.vala:219 +msgid "Read the registry cache FILE." +msgstr "Lea el ARCHIVO de caché del registro." + +#: tools/main.vala:237 tools/main.vala:242 +msgid "The registry cache is invalid.\n" +msgstr "El caché del registro es inválido.\n" + +#: tools/main.vala:257 +msgid "Write the system registry cache." +msgstr "Escriba al caché del registro del sistema." + +#: tools/main.vala:259 +msgid "Write the registry cache FILE." +msgstr "Escriba al ARCHIVO caché del registro." + +#: tools/main.vala:295 +msgid "" +"Use engine schema paths instead of ibus core, which can be comma-separated " +"values." +msgstr "Usar rutas de esquema del motor en lugar del núcleo ibus." + +#: tools/main.vala:381 +msgid "Resetting…" +msgstr "Restableciendo..." + +#: tools/main.vala:399 +msgid "Done" +msgstr "Hecho" + +#: tools/main.vala:444 +msgid "Set or get engine" +msgstr "Ponga u obtenga una máquina" + +#: tools/main.vala:445 +msgid "Exit ibus-daemon" +msgstr "Detener el ibus-daemon" + +#: tools/main.vala:446 +msgid "Show available engines" +msgstr "Mostrar las máquinas disponibles" + +#: tools/main.vala:447 +msgid "(Not implemented)" +msgstr "(no implementado)" + +#: tools/main.vala:448 +msgid "Restart ibus-daemon" +msgstr "Reiniciar el ibus-daemon" + +#: tools/main.vala:449 +msgid "Show version" +msgstr "Mostrar la versión" + +#: tools/main.vala:450 +msgid "Show the content of registry cache" +msgstr "Mostrar el contenido del caché del registro" + +#: tools/main.vala:451 +msgid "Create registry cache" +msgstr "Crear el caché del registro" + +#: tools/main.vala:452 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "Imprimir la dirección de D-Bus de ibus-daemon" + +#: tools/main.vala:453 +msgid "Show the configuration values" +msgstr "Mostrar los valores de la configuración" + +#: tools/main.vala:454 +msgid "Reset the configuration values" +msgstr "Restablecer los valores de la configuración" + +#: tools/main.vala:456 +msgid "Save emoji on dialog to clipboard" +msgstr "Guardar emoji del diálogo en el portapapeles" + +#: tools/main.vala:458 +msgid "Show this information" +msgstr "Mostrar esta información" + +#: tools/main.vala:464 +#, c-format +msgid "" +"Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "" +"Uso: %s COMANDO [OPCIÓN...]\n" +"\n" + +#: tools/main.vala:465 +msgid "Commands:\n" +msgstr "Comandos:\n" + +#: tools/main.vala:494 +#, c-format +msgid "%s is unknown command!\n" +msgstr "¡%s es un comando desconocido!\n" + +#: ui/gtk3/emojier.vala:233 +msgid "Favorites" +msgstr "Favoritos" + +#: ui/gtk3/emojier.vala:234 +msgid "Others" +msgstr "Otros" + +#: ui/gtk3/emojier.vala:235 +msgid "Open Unicode choice" +msgstr "Abrir selección Unicode" + +#: ui/gtk3/emojier.vala:995 +msgid "Bring back emoji choice" +msgstr "Volver a la selección emoji" + +#: ui/gtk3/emojier.vala:1097 +msgid "Page Down" +msgstr "Siguiente" + +#: ui/gtk3/emojier.vala:1108 +msgid "Page Up" +msgstr "Anterior" + +#: ui/gtk3/emojier.vala:1111 +msgid "Show emoji variants" +msgstr "Mostrar variantes de emoji" + +#: ui/gtk3/emojier.vala:1112 +msgid "Close" +msgstr "Cerrar" + +#: ui/gtk3/emojier.vala:1118 +msgid "Menu" +msgstr "Menú" + +#: ui/gtk3/emojier.vala:1129 +msgid "Click to view a warning message" +msgstr "Pulse para ver mensaje de aviso" + +#: ui/gtk3/emojier.vala:1173 +msgid "Loading a Unicode dictionary:" +msgstr "Cargando un diccionario Unicode:" + +#: ui/gtk3/emojier.vala:1419 +#, c-format +msgid "Code point: %s" +msgstr "Punto de código: %s" + +#: ui/gtk3/emojier.vala:1425 +msgid "Has emoji variants" +msgstr "Tiene variantes emoji" + +#: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 +#, c-format +msgid "Description: %s" +msgstr "Descripción: %s" + +#: ui/gtk3/emojier.vala:1592 +msgid "None" +msgstr "Ninguna" + +#: ui/gtk3/emojier.vala:1616 +#, c-format +msgid "Annotations: %s" +msgstr "Anotaciones: %s" + +#: ui/gtk3/emojier.vala:1642 +#, c-format +msgid "Name: %s" +msgstr "Nombre: %s" + +#: ui/gtk3/emojier.vala:1650 +#, c-format +msgid "Alias: %s" +msgstr "Alias: %s" + +#: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 +#: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1147 +msgid "Emoji Choice" +msgstr "Selección de emoji" + +#: ui/gtk3/emojier.vala:2142 +msgid "Unicode Choice" +msgstr "Selección Unicode" + +#: ui/gtk3/emojier.vala:2432 +msgid "" +"Failed to get the current text application. Please re-focus your " +"application. E.g. Press Esc key several times to release the emoji typing " +"mode, click your desktop and click your text application again." +msgstr "" +"No se pudo obtener la aplicación de texto actual, por favor devuélvala el " +"foco (por ejemplo, pulse escape varias veces para salir del modo emoji, haga " +"clic en el escritorio y de nuevo en su aplicación." + +#: ui/gtk3/emojierapp.vala:47 +msgid "Canceled to choose an emoji." +msgstr "Cancelada la selección de emoji." + +#: ui/gtk3/emojierapp.vala:67 +msgid "Copied an emoji to your clipboard." +msgstr "Se copió un emoji al portapapeles." + +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ui/gtk3/emojierapp.vala:126 +msgid "\"FONT\" for emoji characters on emoji dialog" +msgstr "«TIPODELETRA» para los emoyis en el diálogo de emoyis" + +#: ui/gtk3/emojierapp.vala:127 +msgid "FONT" +msgstr "TIPODELETRA" + +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ui/gtk3/emojierapp.vala:132 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" +msgstr "" +"IDIOMA para las anotaciones en el cuadro de diálogo de emoji (p.ej.: \"es\")." + +#: ui/gtk3/emojierapp.vala:133 +msgid "LANG" +msgstr "IDIOMA" + +#: ui/gtk3/emojierapp.vala:135 +msgid "Emoji annotations can be match partially" +msgstr "Se permiten coincidencias parciales en las anotaciones de emoji" + +#: ui/gtk3/emojierapp.vala:139 +msgid "Match with the length of the specified integer" +msgstr "Buscar coincidencias con la longtud indicada" + +#: ui/gtk3/emojierapp.vala:143 +msgid "Match with the condition of the specified integer" +msgstr "Buscar coincidencias con la condición indicada por el código" + +#: ui/gtk3/panel.vala:292 ui/gtk3/panel.vala:323 +msgid "IBus Panel" +msgstr "Panel IBus" + +#: ui/gtk3/panel.vala:1119 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus es un bus de entrada inteligente para Linux/Unix." + +#: ui/gtk3/panel.vala:1123 +msgid "translator-credits" +msgstr "Créditos de Traducción" + +#: ui/gtk3/panel.vala:1142 +msgid "Preferences" +msgstr "Preferencias" + +#: ui/gtk3/panel.vala:1168 +msgid "Restart" +msgstr "Reiniciar" -#: ../setup/setup.ui.h:58 -msgid "When active" -msgstr "Cuando esté activo" +#: ui/gtk3/panel.vala:1172 +msgid "Quit" +msgstr "Salir" + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 +msgid "default:LTR" +msgstr "default:LTR" + +#~ msgid "" +#~ "IBus\n" +#~ "The intelligent input bus\n" +#~ "Homepage: https://github.com/ibus/ibus/wiki\n" +#~ "\n" +#~ "\n" +#~ "\n" +#~ msgstr "" +#~ "IBus\n" +#~ "El bus de entrada inteligente\n" +#~ "Sitio web: https://github.com/ibus/ibus/wiki\n" +#~ "\n" +#~ "\n" +#~ "\n" + +#~ msgid "Start ibus on login" +#~ msgstr "Iniciar ibus al ingresar" + +#~ msgid "Startup" +#~ msgstr "Inicio" diff --git a/po/et.po b/po/et.po new file mode 100644 index 000000000..b44ccd28d --- /dev/null +++ b/po/et.po @@ -0,0 +1,694 @@ +# translation of ibus.pot to Estonian +# Estonian translation of ibus. +# Copyright (C) 2008-2015 Peng Huang +# This file is distributed under the same license as the ibus package. +# +# Translators: +# mihkel , 2012 +# mihkel , 2012 +msgid "" +msgstr "" +"Project-Id-Version: IBus\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2014-02-18 13:46+0900\n" +"PO-Revision-Date: 2014-02-18 05:46+0000\n" +"Last-Translator: mihkel \n" +"Language-Team: Estonian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: et\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ../setup/setup.ui.h:1 +msgid "Horizontal" +msgstr "Horisontaalne" + +#: ../setup/setup.ui.h:2 +msgid "Vertical" +msgstr "Vertikaalne" + +#: ../setup/setup.ui.h:3 +msgid "Top left corner" +msgstr "Ülemine vasak nurk" + +#: ../setup/setup.ui.h:4 +msgid "Top right corner" +msgstr "Ülemine parem nurk" + +#: ../setup/setup.ui.h:5 +msgid "Bottom left corner" +msgstr "Alumine vasak nurk" + +#: ../setup/setup.ui.h:6 +msgid "Bottom right corner" +msgstr "Alumine parem nurk" + +#: ../setup/setup.ui.h:7 +msgid "Custom" +msgstr "Kohandatud" + +#: ../setup/setup.ui.h:8 +msgid "Do not show" +msgstr "" + +#: ../setup/setup.ui.h:9 +msgid "Hide automatically" +msgstr "" + +#: ../setup/setup.ui.h:10 +msgid "Always" +msgstr "Alati" + +#: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 +msgid "IBus Preferences" +msgstr "IBus eelistused" + +#: ../setup/setup.ui.h:12 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "" + +#: ../setup/setup.ui.h:13 +msgid "Next input method:" +msgstr "Järgmine sisestusmeetod." + +#: ../setup/setup.ui.h:14 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "" + +#: ../setup/setup.ui.h:15 +msgid "Previous input method:" +msgstr "Eelmine sisestusmeetod:" + +#: ../setup/setup.ui.h:16 +msgid "..." +msgstr "" + +#: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 +msgid "The shortcut keys for turning input method on or off" +msgstr "" + +#: ../setup/setup.ui.h:18 +msgid "Enable or disable:" +msgstr "Võimalda või keela:" + +#: ../setup/setup.ui.h:19 +msgid "Enable:" +msgstr "Võimalda:" + +#: ../setup/setup.ui.h:20 +msgid "Disable:" +msgstr "Keela:" + +#: ../setup/setup.ui.h:21 +msgid "Keyboard Shortcuts" +msgstr "" + +#: ../setup/setup.ui.h:22 +msgid "Set the orientation of candidates in lookup table" +msgstr "" + +#: ../setup/setup.ui.h:23 +msgid "Candidates orientation:" +msgstr "" + +#: ../setup/setup.ui.h:24 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "" + +#: ../setup/setup.ui.h:25 +msgid "Show property panel:" +msgstr "" + +#: ../setup/setup.ui.h:26 +msgid "Language panel position:" +msgstr "" + +#: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 +msgid "Show icon on system tray" +msgstr "" + +#: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 +msgid "Show input method name on language bar" +msgstr "" + +#: ../setup/setup.ui.h:29 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "" + +#: ../setup/setup.ui.h:30 +msgid "Embed preedit text in application window" +msgstr "" + +#: ../setup/setup.ui.h:31 +msgid "Embed the preedit text of input method in the application window" +msgstr "" + +#: ../setup/setup.ui.h:32 +msgid "Use custom font:" +msgstr "Kasuta kohandatud fonti:" + +#: ../setup/setup.ui.h:33 +msgid "Font and Style" +msgstr "" + +#: ../setup/setup.ui.h:34 +msgid "General" +msgstr "" + +#. add button +#: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 +msgid "_Add" +msgstr "L_isa" + +#: ../setup/setup.ui.h:36 +msgid "Add the selected input method into the enabled input methods" +msgstr "" + +#: ../setup/setup.ui.h:37 +msgid "_Remove" +msgstr "_Eemalda" + +#: ../setup/setup.ui.h:38 +msgid "Remove the selected input method from the enabled input methods" +msgstr "" + +#: ../setup/setup.ui.h:39 +msgid "_Up" +msgstr "_Üles" + +#: ../setup/setup.ui.h:40 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "" + +#: ../setup/setup.ui.h:41 +msgid "_Down" +msgstr "_Alla" + +#: ../setup/setup.ui.h:42 +msgid "Move down the selected input method in the enabled input methods" +msgstr "" + +#: ../setup/setup.ui.h:43 +msgid "_About" +msgstr "_Programmist lähemalt" + +#: ../setup/setup.ui.h:44 +msgid "Show information of the selected input method" +msgstr "" + +#: ../setup/setup.ui.h:45 +msgid "_Preferences" +msgstr "_Eelistused" + +#: ../setup/setup.ui.h:46 +msgid "Show setup of the selected input method" +msgstr "" + +#: ../setup/setup.ui.h:47 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" + +#. create im name & icon column +#: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 +msgid "Input Method" +msgstr "Sisestusmeetod" + +#: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 +msgid "Use system keyboard layout" +msgstr "" + +#: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 +msgid "Use system keyboard (XKB) layout" +msgstr "" + +#: ../setup/setup.ui.h:51 +msgid "Keyboard Layout" +msgstr "" + +#: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 +msgid "Share the same input method among all applications" +msgstr "" + +#: ../setup/setup.ui.h:53 +msgid "Global input method settings" +msgstr "" + +#: ../setup/setup.ui.h:54 +msgid "Advanced" +msgstr "" + +#: ../setup/setup.ui.h:55 +msgid "" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" +msgstr "" + +#: ../setup/setup.ui.h:62 +msgid "Start ibus on login" +msgstr "Käivita ibus sisselogiminsel" + +#: ../setup/setup.ui.h:63 +msgid "Startup" +msgstr "" + +#: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 +msgid "About" +msgstr "Programmist" + +#: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 +msgid "_Close" +msgstr "Sul_ge" + +#: ../data/ibus.schemas.in.h:1 +msgid "Preload engines" +msgstr "" + +#: ../data/ibus.schemas.in.h:2 +msgid "Preload engines during ibus starts up" +msgstr "" + +#: ../data/ibus.schemas.in.h:3 +msgid "Engines order" +msgstr "" + +#: ../data/ibus.schemas.in.h:4 +msgid "Saved engines order in input method list" +msgstr "" + +#: ../data/ibus.schemas.in.h:5 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "" + +#: ../data/ibus.schemas.in.h:6 +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is " +"400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " +"not show the window and switch prev/next engines." +msgstr "" + +#: ../data/ibus.schemas.in.h:7 +msgid "Saved version number" +msgstr "" + +#: ../data/ibus.schemas.in.h:8 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" + +#: ../data/ibus.schemas.in.h:9 +msgid "Trigger shortcut keys" +msgstr "" + +#: ../data/ibus.schemas.in.h:11 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "" + +#: ../data/ibus.schemas.in.h:12 +msgid "Enable shortcut keys" +msgstr "Võimalda kiirklahvid" + +#: ../data/ibus.schemas.in.h:13 +msgid "The shortcut keys for turning input method on" +msgstr "" + +#: ../data/ibus.schemas.in.h:14 +msgid "Disable shortcut keys" +msgstr "" + +#: ../data/ibus.schemas.in.h:15 +msgid "The shortcut keys for turning input method off" +msgstr "" + +#: ../data/ibus.schemas.in.h:16 +msgid "Next engine shortcut keys" +msgstr "" + +#: ../data/ibus.schemas.in.h:17 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "" + +#: ../data/ibus.schemas.in.h:18 +msgid "Prev engine shortcut keys" +msgstr "" + +#: ../data/ibus.schemas.in.h:19 +msgid "The shortcut keys for switching to the previous input method" +msgstr "" + +#: ../data/ibus.schemas.in.h:20 +msgid "Auto hide" +msgstr "" + +#: ../data/ibus.schemas.in.h:21 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "" + +#: ../data/ibus.schemas.in.h:22 +msgid "Language panel position" +msgstr "" + +#: ../data/ibus.schemas.in.h:23 +msgid "" +"The position of the language panel. 0 = Top left corner, 1 = Top right " +"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +msgstr "" + +#: ../data/ibus.schemas.in.h:24 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "" + +#: ../data/ibus.schemas.in.h:25 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" + +#: ../data/ibus.schemas.in.h:26 +msgid "The milliseconds to show property panel" +msgstr "" + +#: ../data/ibus.schemas.in.h:27 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" + +#: ../data/ibus.schemas.in.h:28 +msgid "Orientation of lookup table" +msgstr "" + +#: ../data/ibus.schemas.in.h:29 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "" + +#: ../data/ibus.schemas.in.h:31 +msgid "Show input method name" +msgstr "" + +#: ../data/ibus.schemas.in.h:35 +msgid "Use custom font" +msgstr "" + +#: ../data/ibus.schemas.in.h:36 +msgid "Use custom font name for language panel" +msgstr "" + +#: ../data/ibus.schemas.in.h:37 +msgid "Custom font" +msgstr "Kohandatud font" + +#: ../data/ibus.schemas.in.h:38 +msgid "Custom font name for language panel" +msgstr "" + +#: ../data/ibus.schemas.in.h:39 +msgid "Embed Preedit Text" +msgstr "" + +#: ../data/ibus.schemas.in.h:40 +msgid "Embed Preedit Text in Application Window" +msgstr "" + +#: ../data/ibus.schemas.in.h:41 +msgid "Use global input method" +msgstr "" + +#: ../data/ibus.schemas.in.h:43 +msgid "Enable input method by default" +msgstr "" + +#: ../data/ibus.schemas.in.h:44 +msgid "Enable input method by default when the application gets input focus" +msgstr "" + +#: ../data/ibus.schemas.in.h:45 +msgid "DConf preserve name prefixes" +msgstr "" + +#: ../data/ibus.schemas.in.h:46 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "" + +#: ../ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "" + +#: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 +msgid "Other" +msgstr "" + +#: ../setup/engineabout.py:68 +#, python-format +msgid "Language: %s\n" +msgstr "Keel: %s\n" + +#: ../setup/engineabout.py:71 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "Klaviatuuri asetus: %s\n" + +#: ../setup/engineabout.py:74 +#, python-format +msgid "Author: %s\n" +msgstr "Autor: %s\n" + +#: ../setup/engineabout.py:77 +msgid "Description:\n" +msgstr "Kirjeldus:\n" + +#: ../setup/enginecombobox.py:139 +msgid "Select an input method" +msgstr "Vali sisestusmeetod" + +#: ../setup/enginetreeview.py:94 +msgid "Kbd" +msgstr "Kbd" + +#: ../setup/ibus-setup.desktop.in.h:2 +msgid "Set IBus Preferences" +msgstr "Määra IBus eelistused" + +#: ../setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "" + +#: ../setup/keyboardshortcut.py:66 +msgid "Key code:" +msgstr "" + +#: ../setup/keyboardshortcut.py:81 +msgid "Modifiers:" +msgstr "" + +#. apply button +#: ../setup/keyboardshortcut.py:133 +msgid "_Apply" +msgstr "_Rakenda" + +#. delete button +#: ../setup/keyboardshortcut.py:139 +msgid "_Delete" +msgstr "Ku_stuta" + +#: ../setup/keyboardshortcut.py:254 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "" + +#: ../setup/keyboardshortcut.py:256 +msgid "Please press a key (or a key combination)" +msgstr "" + +#: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 +msgid "_Cancel" +msgstr "_Loobu" + +#: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 +msgid "_OK" +msgstr "_Olgu" + +#: ../setup/main.py:102 ../setup/main.py:395 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "" + +#: ../setup/main.py:329 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "" + +#: ../setup/main.py:350 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "" + +#. Translators: %d == 5 currently +#: ../setup/main.py:364 +#, python-format +msgid "IBus daemon could not be started in %d seconds" +msgstr "" + +#: ../setup/main.py:376 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "" + +#: ../setup/main.py:377 +msgid "switching input methods" +msgstr "" + +#: ../tools/main.vala:42 +msgid "List engine name only" +msgstr "" + +#: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 +#, c-format +msgid "Can't connect to IBus.\n" +msgstr "" + +#: ../tools/main.vala:84 +#, c-format +msgid "language: %s\n" +msgstr "" + +#: ../tools/main.vala:152 +#, c-format +msgid "No engine is set.\n" +msgstr "" + +#: ../tools/main.vala:160 +#, c-format +msgid "Set global engine failed.\n" +msgstr "" + +#: ../tools/main.vala:165 +#, c-format +msgid "Get global engine failed.\n" +msgstr "" + +#: ../tools/main.vala:204 +msgid "Read the system registry cache." +msgstr "" + +#: ../tools/main.vala:206 +msgid "Read the registry cache FILE." +msgstr "" + +#: ../tools/main.vala:224 ../tools/main.vala:229 +#, c-format +msgid "The registry cache is invalid.\n" +msgstr "" + +#: ../tools/main.vala:244 +msgid "Write the system registry cache." +msgstr "" + +#: ../tools/main.vala:246 +msgid "Write the registry cache FILE." +msgstr "" + +#: ../tools/main.vala:293 +msgid "Set or get engine" +msgstr "" + +#: ../tools/main.vala:294 +msgid "Exit ibus-daemon" +msgstr "" + +#: ../tools/main.vala:295 +msgid "Show available engines" +msgstr "" + +#: ../tools/main.vala:296 +msgid "(Not implemented)" +msgstr "" + +#: ../tools/main.vala:297 +msgid "Restart ibus-daemon" +msgstr "" + +#: ../tools/main.vala:298 +msgid "Show version" +msgstr "" + +#: ../tools/main.vala:299 +msgid "Show the content of registry cache" +msgstr "" + +#: ../tools/main.vala:300 +msgid "Create registry cache" +msgstr "" + +#: ../tools/main.vala:301 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "" + +#: ../tools/main.vala:302 +msgid "Show this information" +msgstr "" + +#: ../tools/main.vala:308 +#, c-format +msgid "" +"Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "" + +#: ../tools/main.vala:309 +#, c-format +msgid "Commands:\n" +msgstr "" + +#: ../tools/main.vala:338 +#, c-format +msgid "%s is unknown command!\n" +msgstr "" + +#: ../ui/gtk3/panel.vala:425 +msgid "IBus Update" +msgstr "" + +#: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 +msgid "Super+space is now the default hotkey." +msgstr "" + +#: ../ui/gtk3/panel.vala:707 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "" + +#: ../ui/gtk3/panel.vala:711 +msgid "translator-credits" +msgstr "" + +#: ../ui/gtk3/panel.vala:732 +msgid "Preferences" +msgstr "Eelistused" + +#: ../ui/gtk3/panel.vala:742 +msgid "Restart" +msgstr "Restart" + +#: ../ui/gtk3/panel.vala:746 +msgid "Quit" +msgstr "Lõpeta" + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ../ui/gtk3/propertypanel.vala:374 +msgid "default:LTR" +msgstr "default:LTR" diff --git a/po/eu.po b/po/eu.po new file mode 100644 index 000000000..8b7c1ecce --- /dev/null +++ b/po/eu.po @@ -0,0 +1,693 @@ +# translation of ibus.pot to Basque +# Basque translation of ibus. +# Copyright (C) 2008-2015 Peng Huang +# This file is distributed under the same license as the ibus package. +# +# Translators: +# Asier Iturralde Sarasola , 2012 +msgid "" +msgstr "" +"Project-Id-Version: IBus\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2014-02-18 13:46+0900\n" +"PO-Revision-Date: 2014-02-18 05:46+0000\n" +"Last-Translator: Asier Iturralde Sarasola \n" +"Language-Team: Basque \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: eu\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ../setup/setup.ui.h:1 +msgid "Horizontal" +msgstr "Horizontala" + +#: ../setup/setup.ui.h:2 +msgid "Vertical" +msgstr "Bertikala" + +#: ../setup/setup.ui.h:3 +msgid "Top left corner" +msgstr "" + +#: ../setup/setup.ui.h:4 +msgid "Top right corner" +msgstr "" + +#: ../setup/setup.ui.h:5 +msgid "Bottom left corner" +msgstr "" + +#: ../setup/setup.ui.h:6 +msgid "Bottom right corner" +msgstr "" + +#: ../setup/setup.ui.h:7 +msgid "Custom" +msgstr "Pertsonalizatua" + +#: ../setup/setup.ui.h:8 +msgid "Do not show" +msgstr "" + +#: ../setup/setup.ui.h:9 +msgid "Hide automatically" +msgstr "" + +#: ../setup/setup.ui.h:10 +msgid "Always" +msgstr "Beti" + +#: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 +msgid "IBus Preferences" +msgstr "IBus hobespenak" + +#: ../setup/setup.ui.h:12 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "" + +#: ../setup/setup.ui.h:13 +msgid "Next input method:" +msgstr "Hurrengo sarrera metodoa" + +#: ../setup/setup.ui.h:14 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "" + +#: ../setup/setup.ui.h:15 +msgid "Previous input method:" +msgstr "Aurreko sarrera metodoa" + +#: ../setup/setup.ui.h:16 +msgid "..." +msgstr "..." + +#: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 +msgid "The shortcut keys for turning input method on or off" +msgstr "" + +#: ../setup/setup.ui.h:18 +msgid "Enable or disable:" +msgstr "Gaitu edo desgaitu:" + +#: ../setup/setup.ui.h:19 +msgid "Enable:" +msgstr "Gaitu:" + +#: ../setup/setup.ui.h:20 +msgid "Disable:" +msgstr "Desgaitu:" + +#: ../setup/setup.ui.h:21 +msgid "Keyboard Shortcuts" +msgstr "" + +#: ../setup/setup.ui.h:22 +msgid "Set the orientation of candidates in lookup table" +msgstr "" + +#: ../setup/setup.ui.h:23 +msgid "Candidates orientation:" +msgstr "" + +#: ../setup/setup.ui.h:24 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "" + +#: ../setup/setup.ui.h:25 +msgid "Show property panel:" +msgstr "" + +#: ../setup/setup.ui.h:26 +msgid "Language panel position:" +msgstr "" + +#: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 +msgid "Show icon on system tray" +msgstr "" + +#: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 +msgid "Show input method name on language bar" +msgstr "" + +#: ../setup/setup.ui.h:29 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "" + +#: ../setup/setup.ui.h:30 +msgid "Embed preedit text in application window" +msgstr "" + +#: ../setup/setup.ui.h:31 +msgid "Embed the preedit text of input method in the application window" +msgstr "" + +#: ../setup/setup.ui.h:32 +msgid "Use custom font:" +msgstr "Erabili letra-tipo pertsonalizatua:" + +#: ../setup/setup.ui.h:33 +msgid "Font and Style" +msgstr "Letra-tipoa eta estiloa" + +#: ../setup/setup.ui.h:34 +msgid "General" +msgstr "Orokorra" + +#. add button +#: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 +msgid "_Add" +msgstr "_Gehitu" + +#: ../setup/setup.ui.h:36 +msgid "Add the selected input method into the enabled input methods" +msgstr "" + +#: ../setup/setup.ui.h:37 +msgid "_Remove" +msgstr "_Kendu" + +#: ../setup/setup.ui.h:38 +msgid "Remove the selected input method from the enabled input methods" +msgstr "" + +#: ../setup/setup.ui.h:39 +msgid "_Up" +msgstr "_Gora" + +#: ../setup/setup.ui.h:40 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "" + +#: ../setup/setup.ui.h:41 +msgid "_Down" +msgstr "_Behera" + +#: ../setup/setup.ui.h:42 +msgid "Move down the selected input method in the enabled input methods" +msgstr "" + +#: ../setup/setup.ui.h:43 +msgid "_About" +msgstr "Honi _buruz" + +#: ../setup/setup.ui.h:44 +msgid "Show information of the selected input method" +msgstr "" + +#: ../setup/setup.ui.h:45 +msgid "_Preferences" +msgstr "_Hobespenak" + +#: ../setup/setup.ui.h:46 +msgid "Show setup of the selected input method" +msgstr "" + +#: ../setup/setup.ui.h:47 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" + +#. create im name & icon column +#: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 +msgid "Input Method" +msgstr "Sarrera metodoa" + +#: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 +msgid "Use system keyboard layout" +msgstr "" + +#: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 +msgid "Use system keyboard (XKB) layout" +msgstr "" + +#: ../setup/setup.ui.h:51 +msgid "Keyboard Layout" +msgstr "Teklatu-diseinua" + +#: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 +msgid "Share the same input method among all applications" +msgstr "" + +#: ../setup/setup.ui.h:53 +msgid "Global input method settings" +msgstr "Sarrera metodo orokorraren ezarpenak" + +#: ../setup/setup.ui.h:54 +msgid "Advanced" +msgstr "Aurreratua" + +#: ../setup/setup.ui.h:55 +msgid "" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" +msgstr "" + +#: ../setup/setup.ui.h:62 +msgid "Start ibus on login" +msgstr "" + +#: ../setup/setup.ui.h:63 +msgid "Startup" +msgstr "" + +#: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 +msgid "About" +msgstr "Honi buruz" + +#: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 +msgid "_Close" +msgstr "It_xi" + +#: ../data/ibus.schemas.in.h:1 +msgid "Preload engines" +msgstr "" + +#: ../data/ibus.schemas.in.h:2 +msgid "Preload engines during ibus starts up" +msgstr "" + +#: ../data/ibus.schemas.in.h:3 +msgid "Engines order" +msgstr "" + +#: ../data/ibus.schemas.in.h:4 +msgid "Saved engines order in input method list" +msgstr "" + +#: ../data/ibus.schemas.in.h:5 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "" + +#: ../data/ibus.schemas.in.h:6 +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is " +"400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " +"not show the window and switch prev/next engines." +msgstr "" + +#: ../data/ibus.schemas.in.h:7 +msgid "Saved version number" +msgstr "" + +#: ../data/ibus.schemas.in.h:8 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" + +#: ../data/ibus.schemas.in.h:9 +msgid "Trigger shortcut keys" +msgstr "" + +#: ../data/ibus.schemas.in.h:11 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "" + +#: ../data/ibus.schemas.in.h:12 +msgid "Enable shortcut keys" +msgstr "" + +#: ../data/ibus.schemas.in.h:13 +msgid "The shortcut keys for turning input method on" +msgstr "" + +#: ../data/ibus.schemas.in.h:14 +msgid "Disable shortcut keys" +msgstr "" + +#: ../data/ibus.schemas.in.h:15 +msgid "The shortcut keys for turning input method off" +msgstr "" + +#: ../data/ibus.schemas.in.h:16 +msgid "Next engine shortcut keys" +msgstr "" + +#: ../data/ibus.schemas.in.h:17 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "" + +#: ../data/ibus.schemas.in.h:18 +msgid "Prev engine shortcut keys" +msgstr "" + +#: ../data/ibus.schemas.in.h:19 +msgid "The shortcut keys for switching to the previous input method" +msgstr "" + +#: ../data/ibus.schemas.in.h:20 +msgid "Auto hide" +msgstr "Ezkutatu automatikoki" + +#: ../data/ibus.schemas.in.h:21 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "" + +#: ../data/ibus.schemas.in.h:22 +msgid "Language panel position" +msgstr "" + +#: ../data/ibus.schemas.in.h:23 +msgid "" +"The position of the language panel. 0 = Top left corner, 1 = Top right " +"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +msgstr "" + +#: ../data/ibus.schemas.in.h:24 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "" + +#: ../data/ibus.schemas.in.h:25 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" + +#: ../data/ibus.schemas.in.h:26 +msgid "The milliseconds to show property panel" +msgstr "" + +#: ../data/ibus.schemas.in.h:27 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" + +#: ../data/ibus.schemas.in.h:28 +msgid "Orientation of lookup table" +msgstr "" + +#: ../data/ibus.schemas.in.h:29 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "" + +#: ../data/ibus.schemas.in.h:31 +msgid "Show input method name" +msgstr "Erakutsi sarrera metodoaren izena" + +#: ../data/ibus.schemas.in.h:35 +msgid "Use custom font" +msgstr "Erabili letra-tipo pertsonalizatua" + +#: ../data/ibus.schemas.in.h:36 +msgid "Use custom font name for language panel" +msgstr "" + +#: ../data/ibus.schemas.in.h:37 +msgid "Custom font" +msgstr "Letra-tipo pertsonalizatua" + +#: ../data/ibus.schemas.in.h:38 +msgid "Custom font name for language panel" +msgstr "" + +#: ../data/ibus.schemas.in.h:39 +msgid "Embed Preedit Text" +msgstr "" + +#: ../data/ibus.schemas.in.h:40 +msgid "Embed Preedit Text in Application Window" +msgstr "" + +#: ../data/ibus.schemas.in.h:41 +msgid "Use global input method" +msgstr "Erabili sarrera metodo orokorra" + +#: ../data/ibus.schemas.in.h:43 +msgid "Enable input method by default" +msgstr "" + +#: ../data/ibus.schemas.in.h:44 +msgid "Enable input method by default when the application gets input focus" +msgstr "" + +#: ../data/ibus.schemas.in.h:45 +msgid "DConf preserve name prefixes" +msgstr "" + +#: ../data/ibus.schemas.in.h:46 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "" + +#: ../ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "Copyright-a (c) 2007-2010 Peng Huang\nCopyright-a (c) 2007-2010 Red Hat, Inc." + +#: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 +msgid "Other" +msgstr "Beste bat" + +#: ../setup/engineabout.py:68 +#, python-format +msgid "Language: %s\n" +msgstr "Hizkuntza: %s\n" + +#: ../setup/engineabout.py:71 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "Teklatu-diseinua: %s\n" + +#: ../setup/engineabout.py:74 +#, python-format +msgid "Author: %s\n" +msgstr "Egilea: %s\n" + +#: ../setup/engineabout.py:77 +msgid "Description:\n" +msgstr "Deskribapena:\n" + +#: ../setup/enginecombobox.py:139 +msgid "Select an input method" +msgstr "Hautatu sarrera metodo bat" + +#: ../setup/enginetreeview.py:94 +msgid "Kbd" +msgstr "" + +#: ../setup/ibus-setup.desktop.in.h:2 +msgid "Set IBus Preferences" +msgstr "Ezarri IBus hobespenak" + +#: ../setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "Teklatu lasterbideak" + +#: ../setup/keyboardshortcut.py:66 +msgid "Key code:" +msgstr "Tekla kodea:" + +#: ../setup/keyboardshortcut.py:81 +msgid "Modifiers:" +msgstr "" + +#. apply button +#: ../setup/keyboardshortcut.py:133 +msgid "_Apply" +msgstr "_Aplikatu" + +#. delete button +#: ../setup/keyboardshortcut.py:139 +msgid "_Delete" +msgstr "_Ezabatu" + +#: ../setup/keyboardshortcut.py:254 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "" + +#: ../setup/keyboardshortcut.py:256 +msgid "Please press a key (or a key combination)" +msgstr "" + +#: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 +msgid "_Cancel" +msgstr "_Utzi" + +#: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 +msgid "_OK" +msgstr "_Ados" + +#: ../setup/main.py:102 ../setup/main.py:395 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "" + +#: ../setup/main.py:329 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "" + +#: ../setup/main.py:350 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "" + +#. Translators: %d == 5 currently +#: ../setup/main.py:364 +#, python-format +msgid "IBus daemon could not be started in %d seconds" +msgstr "" + +#: ../setup/main.py:376 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "" + +#: ../setup/main.py:377 +msgid "switching input methods" +msgstr "" + +#: ../tools/main.vala:42 +msgid "List engine name only" +msgstr "" + +#: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 +#, c-format +msgid "Can't connect to IBus.\n" +msgstr "" + +#: ../tools/main.vala:84 +#, c-format +msgid "language: %s\n" +msgstr "" + +#: ../tools/main.vala:152 +#, c-format +msgid "No engine is set.\n" +msgstr "" + +#: ../tools/main.vala:160 +#, c-format +msgid "Set global engine failed.\n" +msgstr "" + +#: ../tools/main.vala:165 +#, c-format +msgid "Get global engine failed.\n" +msgstr "" + +#: ../tools/main.vala:204 +msgid "Read the system registry cache." +msgstr "" + +#: ../tools/main.vala:206 +msgid "Read the registry cache FILE." +msgstr "" + +#: ../tools/main.vala:224 ../tools/main.vala:229 +#, c-format +msgid "The registry cache is invalid.\n" +msgstr "" + +#: ../tools/main.vala:244 +msgid "Write the system registry cache." +msgstr "" + +#: ../tools/main.vala:246 +msgid "Write the registry cache FILE." +msgstr "" + +#: ../tools/main.vala:293 +msgid "Set or get engine" +msgstr "" + +#: ../tools/main.vala:294 +msgid "Exit ibus-daemon" +msgstr "" + +#: ../tools/main.vala:295 +msgid "Show available engines" +msgstr "" + +#: ../tools/main.vala:296 +msgid "(Not implemented)" +msgstr "" + +#: ../tools/main.vala:297 +msgid "Restart ibus-daemon" +msgstr "" + +#: ../tools/main.vala:298 +msgid "Show version" +msgstr "" + +#: ../tools/main.vala:299 +msgid "Show the content of registry cache" +msgstr "" + +#: ../tools/main.vala:300 +msgid "Create registry cache" +msgstr "" + +#: ../tools/main.vala:301 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "" + +#: ../tools/main.vala:302 +msgid "Show this information" +msgstr "" + +#: ../tools/main.vala:308 +#, c-format +msgid "" +"Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "" + +#: ../tools/main.vala:309 +#, c-format +msgid "Commands:\n" +msgstr "" + +#: ../tools/main.vala:338 +#, c-format +msgid "%s is unknown command!\n" +msgstr "" + +#: ../ui/gtk3/panel.vala:425 +msgid "IBus Update" +msgstr "" + +#: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 +msgid "Super+space is now the default hotkey." +msgstr "" + +#: ../ui/gtk3/panel.vala:707 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "" + +#: ../ui/gtk3/panel.vala:711 +msgid "translator-credits" +msgstr "Asier Iturralde Sarasola " + +#: ../ui/gtk3/panel.vala:732 +msgid "Preferences" +msgstr "Hobespenak" + +#: ../ui/gtk3/panel.vala:742 +msgid "Restart" +msgstr "Berrabiarazi" + +#: ../ui/gtk3/panel.vala:746 +msgid "Quit" +msgstr "Irten" + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ../ui/gtk3/propertypanel.vala:374 +msgid "default:LTR" +msgstr "default:LTR" diff --git a/po/fa.po b/po/fa.po index abd6184d7..d5d827bf4 100644 --- a/po/fa.po +++ b/po/fa.po @@ -1,525 +1,698 @@ # translation of ibus.pot to Persian # Persian translation of ibus. -# Copyright (C) 2008 Peng Huang +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2020 Takao Fujiwara # This file is distributed under the same license as the ibus package. -# +# # Translators: -# Daniyal Yousefi , 2011. -# Mostafa Daneshvar , 2011. +# Daniyal Yousefi , 2011 +# Mostafa Daneshvar , 2011 +# Ahmad Haghighi , 2020. msgid "" msgstr "" "Project-Id-Version: IBus\n" -"Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/list\n" -"POT-Creation-Date: 2011-05-13 11:21+0900\n" -"PO-Revision-Date: 2011-07-30 19:07+0000\n" -"Last-Translator: danialyousefi \n" -"Language-Team: Persian (http://www.transifex.net/projects/p/fedora/team/fa/)\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2014-02-18 13:46+0900\n" +"PO-Revision-Date: 2020-01-08 03:55+0000\n" +"Last-Translator: Ahmad Haghighi \n" +"Language-Team: Persian \n" +"Language: fa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 3.9.1\n" -#: ../bus/ibus.desktop.in.h:1 -msgid "IBus" -msgstr "IBus" +#: ../setup/setup.ui.h:1 +msgid "Horizontal" +msgstr "افقی" -#: ../bus/ibus.desktop.in.h:2 -msgid "Input Method Framework" -msgstr "" +#: ../setup/setup.ui.h:2 +msgid "Vertical" +msgstr "عمودی" -#: ../bus/ibus.desktop.in.h:3 -msgid "Start IBus Input Method Framework" -msgstr "" +#: ../setup/setup.ui.h:3 +msgid "Top left corner" +msgstr "گوشه بالا سمت چپ" -#: ../ibus/_config.py.in:40 -msgid "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." -msgstr "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +#: ../setup/setup.ui.h:4 +msgid "Top right corner" +msgstr "گوشه بالا سمت راست" -#: ../ibus/lang.py:41 -msgid "Other" -msgstr "دیگر" +#: ../setup/setup.ui.h:5 +msgid "Bottom left corner" +msgstr "گوشه پایین سمت چپ" -#: ../ui/gtk/candidatepanel.py:264 -msgid "Previous page" -msgstr "صفحهٔ قبل" +#: ../setup/setup.ui.h:6 +msgid "Bottom right corner" +msgstr "چوشه پایین سمت راست" -#: ../ui/gtk/candidatepanel.py:269 -msgid "Next page" -msgstr "صفحهٔ بعد" +#: ../setup/setup.ui.h:7 +msgid "Custom" +msgstr "انتخابی" -#: ../ui/gtk/main.py:62 -msgid "" -"Some input methods have been installed, removed or updated. Please restart " -"ibus input platform." +#: ../setup/setup.ui.h:8 +msgid "Do not show" +msgstr "نمایش نده" + +#: ../setup/setup.ui.h:9 +msgid "Hide automatically" msgstr "" -#: ../ui/gtk/main.py:66 -msgid "Restart Now" -msgstr "راه‌اندازی مجدد، همین حالا" +#: ../setup/setup.ui.h:10 +msgid "Always" +msgstr "همیشه" -#: ../ui/gtk/main.py:67 -msgid "Later" -msgstr "بعداً" +#: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 +msgid "IBus Preferences" +msgstr "" -#: ../ui/gtk/panel.py:116 -msgid "IBus Panel" +#: ../setup/setup.ui.h:12 +msgid "The shortcut keys for switching to next input method in the list" msgstr "" -#: ../ui/gtk/panel.py:122 -msgid "IBus input method framework" +#: ../setup/setup.ui.h:13 +msgid "Next input method:" msgstr "" -#: ../ui/gtk/panel.py:352 -msgid "Restart" -msgstr "راه‌اندازی مجدد" +#: ../setup/setup.ui.h:14 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "" -#: ../ui/gtk/panel.py:439 -msgid "Turn off input method" +#: ../setup/setup.ui.h:15 +msgid "Previous input method:" msgstr "" -#: ../ui/gtk/panel.py:478 -msgid "No input window" +#: ../setup/setup.ui.h:16 +msgid "..." msgstr "" -#: ../ui/gtk/panel.py:509 -msgid "IBus is an intelligent input bus for Linux/Unix." +#: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 +msgid "The shortcut keys for turning input method on or off" msgstr "" -#: ../ui/gtk/panel.py:513 -msgid "translator-credits" +#: ../setup/setup.ui.h:18 +msgid "Enable or disable:" +msgstr "فعال یا غیرفعال:" + +#: ../setup/setup.ui.h:19 +msgid "Enable:" +msgstr "فعال:" + +#: ../setup/setup.ui.h:20 +msgid "Disable:" +msgstr "غیرفعال:" + +#: ../setup/setup.ui.h:21 +msgid "Keyboard Shortcuts" msgstr "" -#: ../ui/gtk/languagebar.py:106 -msgid "About the input method" +#: ../setup/setup.ui.h:22 +msgid "Set the orientation of candidates in lookup table" msgstr "" -#: ../ui/gtk/languagebar.py:214 -msgid "Switch input method" +#: ../setup/setup.ui.h:23 +msgid "Candidates orientation:" msgstr "" -#: ../ui/gtk/languagebar.py:357 ../ui/gtk/engineabout.py:33 -#: ../setup/engineabout.py:33 ../setup/setup.ui.h:16 -msgid "About" -msgstr "درباره" +#: ../setup/setup.ui.h:24 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "" -#: ../ui/gtk/languagebar.py:361 -msgid "About the Input Method" +#: ../setup/setup.ui.h:25 +msgid "Show property panel:" msgstr "" -#: ../ui/gtk/engineabout.py:61 ../setup/engineabout.py:61 -#, python-format -msgid "Language: %s\n" -msgstr "زبان: %s\n" +#: ../setup/setup.ui.h:26 +msgid "Language panel position:" +msgstr "موقعیت پنل زبان:" -#: ../ui/gtk/engineabout.py:63 ../setup/engineabout.py:63 -#, python-format -msgid "Keyboard layout: %s\n" +#: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 +msgid "Show icon on system tray" msgstr "" -#: ../ui/gtk/engineabout.py:65 ../setup/engineabout.py:65 -#, python-format -msgid "Author: %s\n" -msgstr "نویسنده: %s\n" +#: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 +msgid "Show input method name on language bar" +msgstr "" -#: ../ui/gtk/engineabout.py:67 ../setup/engineabout.py:67 -msgid "Description:\n" -msgstr "شرح:\n" +#: ../setup/setup.ui.h:29 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "" -#: ../setup/main.py:102 -msgid "trigger" +#: ../setup/setup.ui.h:30 +msgid "Embed preedit text in application window" msgstr "" -#: ../setup/main.py:113 -msgid "enable" -msgstr "فعال" +#: ../setup/setup.ui.h:31 +msgid "Embed the preedit text of input method in the application window" +msgstr "" -#: ../setup/main.py:124 -msgid "disable" -msgstr "غیرفعال" +#: ../setup/setup.ui.h:32 +msgid "Use custom font:" +msgstr "استفاده از فونت انتخابی" -#: ../setup/main.py:135 -msgid "next input method" +#: ../setup/setup.ui.h:33 +msgid "Font and Style" msgstr "" -#: ../setup/main.py:146 -msgid "previous input method" +#: ../setup/setup.ui.h:34 +msgid "General" +msgstr "اصلی" + +#. add button +#: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 +msgid "_Add" +msgstr "ا_فزودن" + +#: ../setup/setup.ui.h:36 +msgid "Add the selected input method into the enabled input methods" msgstr "" -#: ../setup/main.py:286 -msgid "IBus daemon is not started. Do you want to start it now?" +#: ../setup/setup.ui.h:37 +msgid "_Remove" +msgstr "_حذف" + +#: ../setup/setup.ui.h:38 +msgid "Remove the selected input method from the enabled input methods" msgstr "" -#: ../setup/main.py:301 -msgid "" -"IBus has been started! If you can not use IBus, please add below lines in $HOME/.bashrc, and relogin your desktop.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +#: ../setup/setup.ui.h:39 +msgid "_Up" +msgstr "_بالا" + +#: ../setup/setup.ui.h:40 +msgid "Move up the selected input method in the enabled input methods list" msgstr "" -#: ../setup/main.py:316 -#, python-format -msgid "Select keyboard shortcut for %s" +#: ../setup/setup.ui.h:41 +msgid "_Down" +msgstr "_پایین" + +#: ../setup/setup.ui.h:42 +msgid "Move down the selected input method in the enabled input methods" msgstr "" -#: ../setup/keyboardshortcut.py:52 -msgid "Keyboard shortcuts" -msgstr "میانبرهای صفحه‌کلید" +#: ../setup/setup.ui.h:43 +msgid "_About" +msgstr "_درباره" -#: ../setup/keyboardshortcut.py:63 -msgid "Key code:" +#: ../setup/setup.ui.h:44 +msgid "Show information of the selected input method" msgstr "" -#: ../setup/keyboardshortcut.py:78 -msgid "Modifiers:" +#: ../setup/setup.ui.h:45 +msgid "_Preferences" +msgstr "_ترجیحات" + +#: ../setup/setup.ui.h:46 +msgid "Show setup of the selected input method" msgstr "" -#: ../setup/keyboardshortcut.py:231 +#: ../setup/setup.ui.h:47 msgid "" -"Please press a key (or a key combination).\n" -"The dialog will be closed when the key is released." +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." msgstr "" -#: ../setup/keyboardshortcut.py:233 -msgid "Please press a key (or a key combination)" +#. create im name & icon column +#: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 +msgid "Input Method" msgstr "" -#: ../setup/enginecombobox.py:120 -msgid "Select an input method" +#: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 +msgid "Use system keyboard layout" msgstr "" -#. create im name & icon column -#: ../setup/enginetreeview.py:64 ../setup/setup.ui.h:33 -msgid "Input Method" +#: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 +msgid "Use system keyboard (XKB) layout" msgstr "" -#: ../setup/enginetreeview.py:92 -msgid "Kbd" +#: ../setup/setup.ui.h:51 +msgid "Keyboard Layout" msgstr "" -#: ../setup/ibus-setup.desktop.in.h:1 ../setup/setup.ui.h:32 -msgid "IBus Preferences" +#: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 +msgid "Share the same input method among all applications" msgstr "" -#: ../setup/ibus-setup.desktop.in.h:2 -msgid "Set IBus Preferences" +#: ../setup/setup.ui.h:53 +msgid "Global input method settings" msgstr "" +#: ../setup/setup.ui.h:54 +msgid "Advanced" +msgstr "پیشرفته" + +#: ../setup/setup.ui.h:55 +msgid "" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" +msgstr "" + +#: ../setup/setup.ui.h:62 +msgid "Start ibus on login" +msgstr "" + +#: ../setup/setup.ui.h:63 +msgid "Startup" +msgstr "" + +#: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 +msgid "About" +msgstr "درباره" + +#: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 +msgid "_Close" +msgstr "_بستن" + #: ../data/ibus.schemas.in.h:1 -msgid "Auto hide" +msgid "Preload engines" msgstr "" #: ../data/ibus.schemas.in.h:2 -msgid "Custom font" +msgid "Preload engines during ibus starts up" msgstr "" #: ../data/ibus.schemas.in.h:3 -msgid "Custom font name for language panel" +msgid "Engines order" msgstr "" #: ../data/ibus.schemas.in.h:4 -msgid "Disable shortcut keys" +msgid "Saved engines order in input method list" msgstr "" #: ../data/ibus.schemas.in.h:5 -msgid "Embed Preedit Text" +msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: ../data/ibus.schemas.in.h:6 -msgid "Embed Preedit Text in Application Window" +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is " +"400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " +"not show the window and switch prev/next engines." msgstr "" #: ../data/ibus.schemas.in.h:7 -msgid "Enable input method by default" +msgid "Saved version number" msgstr "" #: ../data/ibus.schemas.in.h:8 -msgid "Enable input method by default when the application gets input focus" +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." msgstr "" #: ../data/ibus.schemas.in.h:9 -msgid "Enable shortcut keys" -msgstr "فعال‌کردن کلیدهای میانبر" - -#: ../data/ibus.schemas.in.h:10 -msgid "Language panel position" +msgid "Trigger shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:11 -msgid "Next engine shortcut keys" +msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: ../data/ibus.schemas.in.h:12 -msgid "Orientation of lookup table" -msgstr "" +msgid "Enable shortcut keys" +msgstr "فعال‌کردن کلیدهای میانبر" #: ../data/ibus.schemas.in.h:13 -msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgid "The shortcut keys for turning input method on" msgstr "" #: ../data/ibus.schemas.in.h:14 -msgid "Preload engines" +msgid "Disable shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:15 -msgid "Preload engines during ibus starts up" +msgid "The shortcut keys for turning input method off" msgstr "" #: ../data/ibus.schemas.in.h:16 -msgid "Prev engine shortcut keys" +msgid "Next engine shortcut keys" msgstr "" -#: ../data/ibus.schemas.in.h:17 ../setup/setup.ui.h:42 -msgid "Share the same input method among all applications" +#: ../data/ibus.schemas.in.h:17 +msgid "The shortcut keys for switching to the next input method in the list" msgstr "" -#: ../data/ibus.schemas.in.h:18 ../setup/setup.ui.h:43 -msgid "Show icon on system tray" +#: ../data/ibus.schemas.in.h:18 +msgid "Prev engine shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:19 -msgid "Show input method name" +msgid "The shortcut keys for switching to the previous input method" msgstr "" -#: ../data/ibus.schemas.in.h:20 ../setup/setup.ui.h:45 -msgid "Show input method name on language bar" +#: ../data/ibus.schemas.in.h:20 +msgid "Auto hide" msgstr "" #: ../data/ibus.schemas.in.h:21 msgid "" -"The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = " -"Always show" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" msgstr "" #: ../data/ibus.schemas.in.h:22 -msgid "" -"The position of the language panel. 0 = Top left corner, 1 = Top right " -"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +msgid "Language panel position" msgstr "" #: ../data/ibus.schemas.in.h:23 -msgid "The shortcut keys for switching to the next input method in the list" +msgid "" +"The position of the language panel. 0 = Top left corner, 1 = Top right " +"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "" #: ../data/ibus.schemas.in.h:24 -msgid "The shortcut keys for switching to the previous input method" +msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: ../data/ibus.schemas.in.h:25 -msgid "The shortcut keys for turning input method off" +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." msgstr "" #: ../data/ibus.schemas.in.h:26 -msgid "The shortcut keys for turning input method on" +msgid "The milliseconds to show property panel" msgstr "" -#: ../data/ibus.schemas.in.h:27 ../setup/setup.ui.h:51 -msgid "The shortcut keys for turning input method on or off" +#: ../data/ibus.schemas.in.h:27 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." msgstr "" #: ../data/ibus.schemas.in.h:28 -msgid "Trigger shortcut keys" +msgid "Orientation of lookup table" msgstr "" #: ../data/ibus.schemas.in.h:29 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "" + +#: ../data/ibus.schemas.in.h:31 +msgid "Show input method name" +msgstr "" + +#: ../data/ibus.schemas.in.h:35 msgid "Use custom font" msgstr "" -#: ../data/ibus.schemas.in.h:30 +#: ../data/ibus.schemas.in.h:36 msgid "Use custom font name for language panel" msgstr "" -#: ../data/ibus.schemas.in.h:31 -msgid "Use global input method" +#: ../data/ibus.schemas.in.h:37 +msgid "Custom font" msgstr "" -#: ../data/ibus.schemas.in.h:32 ../setup/setup.ui.h:55 -msgid "Use system keyboard (XKB) layout" +#: ../data/ibus.schemas.in.h:38 +msgid "Custom font name for language panel" msgstr "" -#: ../data/ibus.schemas.in.h:33 ../setup/setup.ui.h:56 -msgid "Use system keyboard layout" +#: ../data/ibus.schemas.in.h:39 +msgid "Embed Preedit Text" msgstr "" -#: ../setup/setup.ui.h:1 -msgid "..." +#: ../data/ibus.schemas.in.h:40 +msgid "Embed Preedit Text in Application Window" msgstr "" -#: ../setup/setup.ui.h:2 -msgid "Font and Style" +#: ../data/ibus.schemas.in.h:41 +msgid "Use global input method" msgstr "" -#: ../setup/setup.ui.h:3 -msgid "Global input method settings" +#: ../data/ibus.schemas.in.h:43 +msgid "Enable input method by default" msgstr "" -#: ../setup/setup.ui.h:4 -msgid "Keyboard Layout" +#: ../data/ibus.schemas.in.h:44 +msgid "Enable input method by default when the application gets input focus" msgstr "" -#: ../setup/setup.ui.h:5 -msgid "Keyboard Shortcuts" +#: ../data/ibus.schemas.in.h:45 +msgid "DConf preserve name prefixes" msgstr "" -#: ../setup/setup.ui.h:6 -msgid "Startup" +#: ../data/ibus.schemas.in.h:46 +msgid "Prefixes of DConf keys to stop name conversion" msgstr "" -#: ../setup/setup.ui.h:7 +#: ../ibus/_config.py.in:41 msgid "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "Copyright (c) 2007-2010 Peng Huang\nCopyright (c) 2007-2010 Red Hat, Inc." + +#: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 +msgid "Other" +msgstr "دیگر" + +#: ../setup/engineabout.py:68 +#, python-format +msgid "Language: %s\n" +msgstr "زبان: %s\n" + +#: ../setup/engineabout.py:71 +#, python-format +msgid "Keyboard layout: %s\n" msgstr "" -#: ../setup/setup.ui.h:14 +#: ../setup/engineabout.py:74 +#, python-format +msgid "Author: %s\n" +msgstr "نویسنده: %s\n" + +#: ../setup/engineabout.py:77 +msgid "Description:\n" +msgstr "شرح:\n" + +#: ../setup/enginecombobox.py:139 +msgid "Select an input method" +msgstr "" + +#: ../setup/enginetreeview.py:94 +msgid "Kbd" +msgstr "" + +#: ../setup/ibus-setup.desktop.in.h:2 +msgid "Set IBus Preferences" +msgstr "" + +#: ../setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "میانبرهای صفحه‌کلید" + +#: ../setup/keyboardshortcut.py:66 +msgid "Key code:" +msgstr "" + +#: ../setup/keyboardshortcut.py:81 +msgid "Modifiers:" +msgstr "" + +#. apply button +#: ../setup/keyboardshortcut.py:133 +msgid "_Apply" +msgstr "_اعمال" + +#. delete button +#: ../setup/keyboardshortcut.py:139 +msgid "_Delete" +msgstr "_حذف" + +#: ../setup/keyboardshortcut.py:254 msgid "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." msgstr "" -#: ../setup/setup.ui.h:17 -msgid "Add the selected input method into the enabled input methods" +#: ../setup/keyboardshortcut.py:256 +msgid "Please press a key (or a key combination)" msgstr "" -#: ../setup/setup.ui.h:18 -msgid "Advanced" -msgstr "پیشرفته" +#: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 +msgid "_Cancel" +msgstr "_انصراف" -#: ../setup/setup.ui.h:19 -msgid "Always" -msgstr "همیشه" +#: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 +msgid "_OK" +msgstr "_تأیید" -#: ../setup/setup.ui.h:20 -msgid "Bottom left corner" -msgstr "گوشه پایین سمت چپ" +#: ../setup/main.py:102 ../setup/main.py:395 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "" -#: ../setup/setup.ui.h:21 -msgid "Bottom right corner" -msgstr "چوشه پایین سمت راست" +#: ../setup/main.py:329 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "" -#: ../setup/setup.ui.h:22 -msgid "Candidates orientation:" +#: ../setup/main.py:350 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" msgstr "" -#: ../setup/setup.ui.h:23 -msgid "Custom" -msgstr "انتخابی" +#. Translators: %d == 5 currently +#: ../setup/main.py:364 +#, python-format +msgid "IBus daemon could not be started in %d seconds" +msgstr "" -#: ../setup/setup.ui.h:24 -msgid "Disable:" -msgstr "غیرفعال:" +#: ../setup/main.py:376 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "" -#: ../setup/setup.ui.h:25 -msgid "Embed preedit text in application window" +#: ../setup/main.py:377 +msgid "switching input methods" msgstr "" -#: ../setup/setup.ui.h:26 -msgid "Embed the preedit text of input method in the application window" +#: ../tools/main.vala:42 +msgid "List engine name only" msgstr "" -#: ../setup/setup.ui.h:27 -msgid "Embedded in menu" +#: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 +#, c-format +msgid "Can't connect to IBus.\n" msgstr "" -#: ../setup/setup.ui.h:28 -msgid "Enable or disable:" -msgstr "فعال یا غیرفعال:" +#: ../tools/main.vala:84 +#, c-format +msgid "language: %s\n" +msgstr "" -#: ../setup/setup.ui.h:29 -msgid "Enable:" -msgstr "فعال:" +#: ../tools/main.vala:152 +#, c-format +msgid "No engine is set.\n" +msgstr "" -#: ../setup/setup.ui.h:30 -msgid "General" -msgstr "اصلی" +#: ../tools/main.vala:160 +#, c-format +msgid "Set global engine failed.\n" +msgstr "" -#: ../setup/setup.ui.h:31 -msgid "Horizontal" -msgstr "افقی" +#: ../tools/main.vala:165 +#, c-format +msgid "Get global engine failed.\n" +msgstr "" -#: ../setup/setup.ui.h:34 -msgid "Language panel position:" -msgstr "موقعیت پنل زبان:" +#: ../tools/main.vala:204 +msgid "Read the system registry cache." +msgstr "" -#: ../setup/setup.ui.h:35 -msgid "Move down the selected input method in the enabled input methods" +#: ../tools/main.vala:206 +msgid "Read the registry cache FILE." msgstr "" -#: ../setup/setup.ui.h:36 -msgid "Move up the selected input method in the enabled input methods list" +#: ../tools/main.vala:224 ../tools/main.vala:229 +#, c-format +msgid "The registry cache is invalid.\n" msgstr "" -#: ../setup/setup.ui.h:37 -msgid "Next input method:" +#: ../tools/main.vala:244 +msgid "Write the system registry cache." msgstr "" -#: ../setup/setup.ui.h:38 -msgid "Previous input method:" +#: ../tools/main.vala:246 +msgid "Write the registry cache FILE." msgstr "" -#: ../setup/setup.ui.h:39 -msgid "Remove the selected input method from the enabled input methods" +#: ../tools/main.vala:293 +msgid "Set or get engine" msgstr "" -#: ../setup/setup.ui.h:40 -msgid "Set the behavior of ibus how to show or hide language bar" +#: ../tools/main.vala:294 +msgid "Exit ibus-daemon" msgstr "" -#: ../setup/setup.ui.h:41 -msgid "Set the orientation of candidates in lookup table" +#: ../tools/main.vala:295 +msgid "Show available engines" msgstr "" -#: ../setup/setup.ui.h:44 -msgid "Show information of the selected input method" +#: ../tools/main.vala:296 +msgid "(Not implemented)" msgstr "" -#: ../setup/setup.ui.h:46 -msgid "Show input method's name on language bar when check the checkbox" +#: ../tools/main.vala:297 +msgid "Restart ibus-daemon" msgstr "" -#: ../setup/setup.ui.h:47 -msgid "Show language panel:" -msgstr "نمایش پنل زبان:" +#: ../tools/main.vala:298 +msgid "Show version" +msgstr "" -#: ../setup/setup.ui.h:48 -msgid "Start ibus on login" +#: ../tools/main.vala:299 +msgid "Show the content of registry cache" msgstr "" -#: ../setup/setup.ui.h:49 -msgid "The shortcut keys for switching to next input method in the list" +#: ../tools/main.vala:300 +msgid "Create registry cache" msgstr "" -#: ../setup/setup.ui.h:50 -msgid "The shortcut keys for switching to previous input method in the list" +#: ../tools/main.vala:301 +msgid "Print the D-Bus address of ibus-daemon" msgstr "" -#: ../setup/setup.ui.h:52 -msgid "Top left corner" -msgstr "گوشه بالا سمت چپ" +#: ../tools/main.vala:302 +msgid "Show this information" +msgstr "" -#: ../setup/setup.ui.h:53 -msgid "Top right corner" -msgstr "گوشه بالا سمت راست" +#: ../tools/main.vala:308 +#, c-format +msgid "" +"Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "" -#: ../setup/setup.ui.h:54 -msgid "Use custom font:" -msgstr "استفاده از فونت انتخابی" +#: ../tools/main.vala:309 +#, c-format +msgid "Commands:\n" +msgstr "" -#: ../setup/setup.ui.h:57 -msgid "Vertical" -msgstr "عمودی" +#: ../tools/main.vala:338 +#, c-format +msgid "%s is unknown command!\n" +msgstr "" -#: ../setup/setup.ui.h:58 -msgid "When active" +#: ../ui/gtk3/panel.vala:425 +msgid "IBus Update" msgstr "" +#: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 +msgid "Super+space is now the default hotkey." +msgstr "" + +#: ../ui/gtk3/panel.vala:707 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "" + +#: ../ui/gtk3/panel.vala:711 +msgid "translator-credits" +msgstr "" + +#: ../ui/gtk3/panel.vala:732 +msgid "Preferences" +msgstr "ترجیحات" + +#: ../ui/gtk3/panel.vala:742 +msgid "Restart" +msgstr "راه‌اندازی مجدد" + +#: ../ui/gtk3/panel.vala:746 +msgid "Quit" +msgstr "ترک" +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ../ui/gtk3/propertypanel.vala:374 +msgid "default:LTR" +msgstr "default:RTL" diff --git a/po/fi.po b/po/fi.po new file mode 100644 index 000000000..d7a5c36cf --- /dev/null +++ b/po/fi.po @@ -0,0 +1,3330 @@ +# Finnish translation of ibus. +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2022 Takao Fujiwara +# This file is distributed under the same license as the ibus package. +# +# Translators: +# Jiri Grönroos , 2017. #zanata, 2020. +# Toni Rantala , 2017. #zanata +# Jan Kuparinen , 2021. +# Ricky Tigg , 2021. +msgid "" +msgstr "" +"Project-Id-Version: IBus\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2020-12-11 16:21+0900\n" +"PO-Revision-Date: 2021-10-05 11:05+0000\n" +"Last-Translator: Jan Kuparinen \n" +"Language-Team: Finnish \n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.8\n" + +#. Translators: Here “Preload” is a verb +#: data/dconf/org.freedesktop.ibus.gschema.xml:11 +msgid "Preload engines" +msgstr "Esikuormita koneet" + +#. Translators: Tooltip for the button “Preload Engines” +#: data/dconf/org.freedesktop.ibus.gschema.xml:13 +msgid "Preload engines during ibus starts up" +msgstr "Esikuormita koneet kun ibus käynnistyy" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:17 +msgid "Engines order" +msgstr "Koneiden järjestys" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:18 +msgid "Saved engines order in input method list" +msgstr "Syöttömetodilistaan tallennettu koneiden järjestys" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:22 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:23 +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is " +"400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " +"show the window and switch prev/next engines." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:27 +msgid "Saved version number" +msgstr "Tallennettu versionumero" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:28 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:32 +msgid "Latin layouts which have no ASCII" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:33 +msgid "US layout is appended to the Latin layouts. variant can be omitted." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:37 +msgid "Use xmodmap" +msgstr "Käytä xmodmapia" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:38 +msgid "" +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 +msgid "Use system keyboard layout" +msgstr "Käytä järjestelmän näppäimistön asettelua" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 +msgid "Use system keyboard (XKB) layout" +msgstr "Käytä järjestelmän näppäimistön (XKB) asettelua" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:47 +msgid "Embed Preedit Text" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:48 +msgid "Embed Preedit Text in Application Window" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:52 +msgid "Use global input method" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 +msgid "Share the same input method among all applications" +msgstr "Jaa sama syötetapa kaikkien sovellusten välillä" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:57 +msgid "Enable input method by default" +msgstr "Käytä syötetapaa oletuksena" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:58 +msgid "Enable input method by default when the application gets input focus" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:62 +msgid "DConf preserve name prefixes" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:63 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:70 +msgid "Trigger shortcut keys" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:71 +#: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 +msgid "The shortcut keys for turning input method on or off" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:75 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:80 +msgid "Enable shortcut keys" +msgstr "Käytä pikanäppäimiä" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:81 +msgid "The shortcut keys for turning input method on" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:85 +msgid "Disable shortcut keys" +msgstr "Poista pikanäppäimet käytöstä" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:86 +msgid "The shortcut keys for turning input method off" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:90 +#: data/dconf/org.freedesktop.ibus.gschema.xml:95 +msgid "Next engine shortcut keys" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:91 +#: data/dconf/org.freedesktop.ibus.gschema.xml:96 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:100 +#: data/dconf/org.freedesktop.ibus.gschema.xml:105 +msgid "Prev engine shortcut keys" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:101 +#: data/dconf/org.freedesktop.ibus.gschema.xml:106 +msgid "The shortcut keys for switching to the previous input method" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:112 +msgid "Auto hide" +msgstr "Automaattinen piilotus" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:113 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:117 +#: data/dconf/org.freedesktop.ibus.gschema.xml:121 +msgid "Language panel position" +msgstr "Kielipaneelin sijainti" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:125 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:126 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:130 +msgid "The milliseconds to show property panel" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:131 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:135 +msgid "Orientation of lookup table" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:136 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:140 +#: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 +#: setup/setup.ui:475 +msgid "Show icon on system tray" +msgstr "Näytä kuvake ilmoitusalueella" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:145 +msgid "Show input method name" +msgstr "Näytä syötetavan nimi" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 +msgid "Show input method name on language bar" +msgstr "Näytä syötetavan nimi kielipalkissa" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:150 +msgid "RGBA value of XKB icon" +msgstr "XKB-kuvakkeen RGBA-arvo" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:151 +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form 'rgba(r," +"g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 to 255 or " +"percentage values in the range 0% to 100%, and 'a' is a floating point value " +"in the range 0 to 1 of the alpha." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:155 +msgid "The milliseconds to show the panel icon for a property" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:156 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:160 +msgid "Use custom font" +msgstr "Käytä omavalintaista fonttia" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:161 +msgid "Use custom font name for language panel" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:165 +#: data/dconf/org.freedesktop.ibus.gschema.xml:192 +msgid "Custom font" +msgstr "Omavalintainen fontti" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:166 +msgid "Custom font name for language panel" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:170 setup/setup.ui:1305 +msgid "Choose glyphs with input method's language on candidate window" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:171 +msgid "" +"Some code points have the different glyphs and Pango determines the glyphs " +"from the language attribute. Pango chooses glyphs from the IBus engine's " +"language if the value is true and choose them from the desktop locale if the " +"value is false." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:182 +msgid "Unicode shortcut keys for gtk_accelerator_parse" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:183 +msgid "The shortcut keys for turning Unicode typing on or off" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:187 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:188 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:193 +msgid "Custom font name for emoji characters on emoji dialog" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:197 +msgid "Default language for emoji dictionary" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:198 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict ." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:202 +msgid "favorite emoji list on emoji dialog" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:203 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:207 +msgid "favorite emoji annotation list on emoji dialog" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:208 +msgid "You can assign an annotation for a favorite emoji in this list." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:212 +msgid "Whether emoji annotations can be match partially or not" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:213 +msgid "" +"Whether emoji annotations can be matched with a partial string instead of " +"the exact match or not." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:217 +msgid "Match emoji annotations with the specified length" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:218 +msgid "" +"Match emoji annotations partially with more than the specified number of " +"characters instead of the exact match." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:222 +msgid "Choose a condition to match emoji annotations partially" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:223 +msgid "" +"Choose one of the following conditions to match emoji annotations partially: " +"0 == Prefix match, 1 == Suffix match, 2 == Containing match" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:227 +msgid "Load the emoji data at the time of startup" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:228 +msgid "" +"Load the emoji data at the time of startup if true. About 10MB memory is " +"needed to load the data. Load the emoji data when open the emoji dialog at " +"the beginning if false." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:232 +msgid "Load the Unicode data at the time of startup" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:233 +msgid "" +"Load the Unicode data at the time of startup if true. About 15MB memory is " +"needed to load the data. Load the Unicode data when open the emoji dialog at " +"the beginning if false. The Unicode data is always loaded after the emoji " +"data is loaded even if true." +msgstr "" + +#: ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "" +"Tekijänoikeus (c) 2007-2010 Peng Huang\n" +"Tekijänoikeus (c) 2007-2010 Red Hat, Inc." + +#: ibus/lang.py:41 src/ibusutil.c:209 +msgid "Other" +msgstr "Muu" + +#: setup/emojilang.py:67 +msgid "Select a language" +msgstr "Valitse kieli" + +#: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 +#: setup/main.py:560 +msgid "_Cancel" +msgstr "_Peru" + +#: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 +msgid "_OK" +msgstr "_OK" + +#: setup/emojilang.py:235 setup/enginedialog.py:205 +msgid "More…" +msgstr "Lisää…" + +#: setup/engineabout.py:37 setup/setup.ui:1368 ui/gtk3/panel.vala:1184 +msgid "About" +msgstr "Tietoja" + +#: setup/engineabout.py:40 setup/setup.ui:1391 +msgid "_Close" +msgstr "_Sulje" + +#: setup/engineabout.py:72 +#, python-format +msgid "Language: %s\n" +msgstr "Kieli: %s\n" + +#: setup/engineabout.py:75 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "Näppäimistön asettelu: %s\n" + +#: setup/engineabout.py:78 +#, python-format +msgid "Author: %s\n" +msgstr "Tekijä: %s\n" + +#: setup/engineabout.py:81 +msgid "Description:\n" +msgstr "Kuvaus:\n" + +#: setup/enginecombobox.py:139 setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "Valitse syötetapa" + +#. add button +#: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 +msgid "_Add" +msgstr "_Lisää" + +#. create im name & icon column +#: setup/enginetreeview.py:69 setup/setup.ui:838 +msgid "Input Method" +msgstr "Syötetapa" + +#: setup/ibus-setup.desktop:3 setup/setup.ui:69 +msgid "IBus Preferences" +msgstr "IBus-asetukset" + +#: setup/ibus-setup.desktop:4 +msgid "Set IBus Preferences" +msgstr "Määritä IBusin asetukset" + +#: setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "Pikanäppäimet" + +#: setup/keyboardshortcut.py:67 +msgid "Key code:" +msgstr "Avain koodi:" + +#: setup/keyboardshortcut.py:82 +msgid "Modifiers:" +msgstr "Muokkaajat:" + +#. apply button +#: setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "_Toteuta" + +#. delete button +#: setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "_Poista" + +#: setup/keyboardshortcut.py:252 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "" + +#: setup/keyboardshortcut.py:255 +msgid "Please press a key (or a key combination)" +msgstr "" + +#: setup/main.py:121 setup/main.py:588 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "" + +#: setup/main.py:515 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "IBus-taustapalvelu ei ole käynnissä. Haluatko käynnistää sen?" + +#: setup/main.py:536 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "" +"IBus on käynnistetty! Jos et voi käyttää IBusia, lisää seuraavat rivit " +"$HOME/.bashrc-tiedostoon ja kirjaudu uudelleen.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" + +#. Translators: %d == 5 currently +#: setup/main.py:550 +#, python-format +msgid "IBus daemon could not be started in %d seconds." +msgstr "" + +#: setup/main.py:562 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "" + +#. Translators: Title of the window +#: setup/main.py:564 +msgid "switching input methods" +msgstr "" + +#: setup/setup.ui:11 +msgid "Horizontal" +msgstr "Vaakasuora" + +#: setup/setup.ui:14 +msgid "Vertical" +msgstr "Pystysuora" + +#: setup/setup.ui:25 +msgid "Top left corner" +msgstr "Vasen yläkulma" + +#: setup/setup.ui:28 +msgid "Top right corner" +msgstr "Oikea yläkulma" + +#: setup/setup.ui:31 +msgid "Bottom left corner" +msgstr "Vasen alakulma" + +#: setup/setup.ui:34 +msgid "Bottom right corner" +msgstr "Oikea alakulma" + +#: setup/setup.ui:37 +msgid "Custom" +msgstr "Mukautettu" + +#: setup/setup.ui:48 +msgid "Do not show" +msgstr "Älä näytä" + +#: setup/setup.ui:51 +msgid "Hide automatically" +msgstr "Piilota automaattisesti" + +#: setup/setup.ui:54 +msgid "Always" +msgstr "Aina" + +#: setup/setup.ui:113 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "" + +#: setup/setup.ui:115 +msgid "Next input method:" +msgstr "Seuraava syötetapa:" + +#: setup/setup.ui:127 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "" + +#: setup/setup.ui:129 +msgid "Previous input method:" +msgstr "Edellinen syötetapa:" + +#: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 +#: setup/setup.ui:903 setup/setup.ui:957 +msgid "..." +msgstr "..." + +#: setup/setup.ui:226 +msgid "Enable or disable:" +msgstr "Ota käyttöön tai poista käytöstä:" + +#: setup/setup.ui:238 +msgid "Enable:" +msgstr "Ota käyttöön:" + +#: setup/setup.ui:291 +msgid "Disable:" +msgstr "Poista käytöstä:" + +#: setup/setup.ui:345 setup/setup.ui:983 +msgid "Keyboard Shortcuts" +msgstr "Pikanäppäimet" + +#: setup/setup.ui:374 +msgid "Set the orientation of candidates in lookup table" +msgstr "" + +#: setup/setup.ui:376 +msgid "Candidates orientation:" +msgstr "" + +#: setup/setup.ui:407 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "Määritä miten ibus näyttää tai piilotaa kielivalikon" + +#: setup/setup.ui:409 +msgid "Show property panel:" +msgstr "Näytä ominaisuuspaneeli:" + +#: setup/setup.ui:423 +msgid "Language panel position:" +msgstr "Kielipaneelin sijainti:" + +#: setup/setup.ui:494 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "" + +#: setup/setup.ui:508 +msgid "Embed preedit text in application window" +msgstr "" + +#: setup/setup.ui:513 +msgid "Embed the preedit text of input method in the application window" +msgstr "" + +#: setup/setup.ui:527 +msgid "Use custom font:" +msgstr "Käytä mukautettua fonttia:" + +#: setup/setup.ui:562 setup/setup.ui:1156 +msgid "Font and Style" +msgstr "Fontti ja tyyli" + +#: setup/setup.ui:579 +msgid "General" +msgstr "Yleiset" + +#: setup/setup.ui:671 +msgid "Add the selected input method into the enabled input methods" +msgstr "" + +#: setup/setup.ui:682 +msgid "_Remove" +msgstr "P_oista" + +#: setup/setup.ui:689 +msgid "Remove the selected input method from the enabled input methods" +msgstr "" + +#: setup/setup.ui:700 +msgid "_Up" +msgstr "_Ylös" + +#: setup/setup.ui:707 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "" + +#: setup/setup.ui:718 +msgid "_Down" +msgstr "_Alas" + +#: setup/setup.ui:725 +msgid "Move down the selected input method in the enabled input methods" +msgstr "" + +#: setup/setup.ui:736 +msgid "_About" +msgstr "_Tietoja" + +#: setup/setup.ui:743 +msgid "Show information of the selected input method" +msgstr "Näytä tietoja valitusta syötetavasta" + +#: setup/setup.ui:754 +msgid "_Preferences" +msgstr "_Asetukset" + +#: setup/setup.ui:761 +msgid "Show setup of the selected input method" +msgstr "Näytä valitun syötetavan asetukset" + +#: setup/setup.ui:812 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" +"Aktiivinen syötetapa voidaan vaihtaa valitusta ylläolevasta " +"listasta painamalla pikanäppäiimä tai klikkaamalla paneelin kuvaketta. " + +#: setup/setup.ui:873 +msgid "" +"The shortcut keys to enable conversions of emoji annotations or Unicode names" +msgstr "" + +#: setup/setup.ui:875 +msgid "Emoji annotation:" +msgstr "Hymiöannotaatio:" + +#: setup/setup.ui:927 +msgid "The shortcut keys to enable Unicode code point conversions" +msgstr "" + +#: setup/setup.ui:929 +msgid "Unicode code point:" +msgstr "" + +#: setup/setup.ui:1013 +msgid "Set a font of Unicode candidates on the emoji dialog" +msgstr "" + +#: setup/setup.ui:1015 +msgid "Unicode font:" +msgstr "Unicode fontti:" + +#: setup/setup.ui:1038 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "" + +#: setup/setup.ui:1040 +msgid "Emoji annotation language:" +msgstr "" + +#: setup/setup.ui:1062 +msgid "" +"Match emoji annotations partially with the following condition and more than " +"the number of characters:" +msgstr "" + +#: setup/setup.ui:1067 +msgid "" +"If emoji annotations can be matched with a partial string instead of the " +"exact match" +msgstr "" + +#: setup/setup.ui:1101 +msgid "Prefix match" +msgstr "" + +#: setup/setup.ui:1115 +msgid "Suffix match" +msgstr "" + +#: setup/setup.ui:1130 +msgid "Containing match" +msgstr "" + +#: setup/setup.ui:1176 +msgid "Emoji" +msgstr "Emoji" + +#: setup/setup.ui:1230 +msgid "Keyboard Layout" +msgstr "Näppäimistön asettelu" + +#: setup/setup.ui:1278 +msgid "Global input method settings" +msgstr "Yleiset syötetavan asetukset" + +#: setup/setup.ui:1310 +msgid "" +"Choose glyphs with the input method's language on the candidate window for " +"the duplicated code points" +msgstr "" + +#: setup/setup.ui:1327 +msgid "Fonts" +msgstr "Fontit" + +#: setup/setup.ui:1347 +msgid "Advanced" +msgstr "Edistyneet" + +#: src/ibusemojigen.h:30 +msgid "Activities" +msgstr "" + +#: src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "" + +#: src/ibusemojigen.h:32 +msgid "Component" +msgstr "Komponentti" + +#: src/ibusemojigen.h:33 +msgid "Flags" +msgstr "" + +#: src/ibusemojigen.h:34 +msgid "Food & Drink" +msgstr "" + +#: src/ibusemojigen.h:35 +msgid "Objects" +msgstr "" + +#: src/ibusemojigen.h:36 +msgid "People & Body" +msgstr "" + +#: src/ibusemojigen.h:37 +msgid "Smileys & Emotion" +msgstr "" + +#: src/ibusemojigen.h:38 +msgid "Symbols" +msgstr "" + +#: src/ibusemojigen.h:39 +msgid "Travel & Places" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:33 +msgid "Basic Latin" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:37 +msgid "Latin-1 Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:41 +msgid "Latin Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:45 +msgid "Latin Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:49 +msgid "IPA Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:53 +msgid "Spacing Modifier Letters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:57 +msgid "Combining Diacritical Marks" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:61 +msgid "Greek and Coptic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:65 +msgid "Cyrillic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:69 +msgid "Cyrillic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:73 +msgid "Armenian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:77 +msgid "Hebrew" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:81 +msgid "Arabic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:85 +msgid "Syriac" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:89 +msgid "Arabic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:93 +msgid "Thaana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:97 +msgid "NKo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:101 +msgid "Samaritan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:105 +msgid "Mandaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:109 +msgid "Syriac Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:113 +msgid "Arabic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:117 +msgid "Devanagari" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:121 +msgid "Bengali" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:125 +msgid "Gurmukhi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:129 +msgid "Gujarati" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:133 +msgid "Oriya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:137 +msgid "Tamil" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:141 +msgid "Telugu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:145 +msgid "Kannada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:149 +msgid "Malayalam" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:153 +msgid "Sinhala" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:157 +msgid "Thai" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:161 +msgid "Lao" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:165 +msgid "Tibetan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:169 +msgid "Myanmar" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:173 +msgid "Georgian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:177 +msgid "Hangul Jamo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:181 +msgid "Ethiopic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:185 +msgid "Ethiopic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:189 +msgid "Cherokee" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:193 +msgid "Unified Canadian Aboriginal Syllabics" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:197 +msgid "Ogham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:201 +msgid "Runic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:205 +msgid "Tagalog" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:209 +msgid "Hanunoo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:213 +msgid "Buhid" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:217 +msgid "Tagbanwa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:221 +msgid "Khmer" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:225 +msgid "Mongolian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:229 +msgid "Unified Canadian Aboriginal Syllabics Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:233 +msgid "Limbu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:237 +msgid "Tai Le" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:241 +msgid "New Tai Lue" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:245 +msgid "Khmer Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:249 +msgid "Buginese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:253 +msgid "Tai Tham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:257 +msgid "Combining Diacritical Marks Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:261 +msgid "Balinese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:265 +msgid "Sundanese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:269 +msgid "Batak" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:273 +msgid "Lepcha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:277 +msgid "Ol Chiki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:281 +msgid "Cyrillic Extended-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:285 +msgid "Georgian Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:289 +msgid "Sundanese Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:293 +msgid "Vedic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:297 +msgid "Phonetic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:301 +msgid "Phonetic Extensions Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:305 +msgid "Combining Diacritical Marks Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:309 +msgid "Latin Extended Additional" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:313 +msgid "Greek Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:317 +msgid "General Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:321 +msgid "Superscripts and Subscripts" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:325 +msgid "Currency Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:329 +msgid "Combining Diacritical Marks for Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:333 +msgid "Letterlike Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:337 +msgid "Number Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:341 +msgid "Arrows" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:345 +msgid "Mathematical Operators" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:349 +msgid "Miscellaneous Technical" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:353 +msgid "Control Pictures" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:357 +msgid "Optical Character Recognition" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:361 +msgid "Enclosed Alphanumerics" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:365 +msgid "Box Drawing" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:369 +msgid "Block Elements" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:373 +msgid "Geometric Shapes" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:377 +msgid "Miscellaneous Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:381 +msgid "Dingbats" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:385 +msgid "Miscellaneous Mathematical Symbols-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:389 +msgid "Supplemental Arrows-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:393 +msgid "Braille Patterns" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:397 +msgid "Supplemental Arrows-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:401 +msgid "Miscellaneous Mathematical Symbols-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:405 +msgid "Supplemental Mathematical Operators" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:409 +msgid "Miscellaneous Symbols and Arrows" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:413 +msgid "Glagolitic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:417 +msgid "Latin Extended-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:421 +msgid "Coptic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:425 +msgid "Georgian Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:429 +msgid "Tifinagh" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:433 +msgid "Ethiopic Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:437 +msgid "Cyrillic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:441 +msgid "Supplemental Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:445 +msgid "CJK Radicals Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:449 +msgid "Kangxi Radicals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:453 +msgid "Ideographic Description Characters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:457 +msgid "CJK Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:461 +msgid "Hiragana" +msgstr "Hiragana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:465 +msgid "Katakana" +msgstr "Katakana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:469 +msgid "Bopomofo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:473 +msgid "Hangul Compatibility Jamo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:477 +msgid "Kanbun" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:481 +msgid "Bopomofo Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:485 +msgid "CJK Strokes" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:489 +msgid "Katakana Phonetic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:493 +msgid "Enclosed CJK Letters and Months" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:497 +msgid "CJK Compatibility" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:501 +msgid "CJK Unified Ideographs Extension A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:505 +msgid "Yijing Hexagram Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:509 +msgid "CJK Unified Ideographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:513 +msgid "Yi Syllables" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:517 +msgid "Yi Radicals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:521 +msgid "Lisu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:525 +msgid "Vai" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:529 +msgid "Cyrillic Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:533 +msgid "Bamum" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:537 +msgid "Modifier Tone Letters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:541 +msgid "Latin Extended-D" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:545 +msgid "Syloti Nagri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:549 +msgid "Common Indic Number Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:553 +msgid "Phags-pa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:557 +msgid "Saurashtra" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:561 +msgid "Devanagari Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:565 +msgid "Kayah Li" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:569 +msgid "Rejang" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:573 +msgid "Hangul Jamo Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:577 +msgid "Javanese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:581 +msgid "Myanmar Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:585 +msgid "Cham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:589 +msgid "Myanmar Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:593 +msgid "Tai Viet" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:597 +msgid "Meetei Mayek Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:601 +msgid "Ethiopic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:605 +msgid "Latin Extended-E" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:609 +msgid "Cherokee Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:613 +msgid "Meetei Mayek" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:617 +msgid "Hangul Syllables" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:621 +msgid "Hangul Jamo Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:625 +msgid "High Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:629 +msgid "High Private Use Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:633 +msgid "Low Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:637 +msgid "Private Use Area" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:641 +msgid "CJK Compatibility Ideographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:645 +msgid "Alphabetic Presentation Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:649 +msgid "Arabic Presentation Forms-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:653 +msgid "Variation Selectors" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:657 +msgid "Vertical Forms" +msgstr "Pystysuorat lomakkeet" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:661 +msgid "Combining Half Marks" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:665 +msgid "CJK Compatibility Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:669 +msgid "Small Form Variants" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:673 +msgid "Arabic Presentation Forms-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:677 +msgid "Halfwidth and Fullwidth Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:681 +msgid "Specials" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:685 +msgid "Linear B Syllabary" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:689 +msgid "Linear B Ideograms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:693 +msgid "Aegean Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:697 +msgid "Ancient Greek Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:701 +msgid "Ancient Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:705 +msgid "Phaistos Disc" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:709 +msgid "Lycian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:713 +msgid "Carian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:717 +msgid "Coptic Epact Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:721 +msgid "Old Italic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:725 +msgid "Gothic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:729 +msgid "Old Permic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:733 +msgid "Ugaritic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:737 +msgid "Old Persian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:741 +msgid "Deseret" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:745 +msgid "Shavian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:749 +msgid "Osmanya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:753 +msgid "Osage" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:757 +msgid "Elbasan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:761 +msgid "Caucasian Albanian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:765 +msgid "Linear A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:769 +msgid "Cypriot Syllabary" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:773 +msgid "Imperial Aramaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:777 +msgid "Palmyrene" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:781 +msgid "Nabataean" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:785 +msgid "Hatran" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:789 +msgid "Phoenician" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:793 +msgid "Lydian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:797 +msgid "Meroitic Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:801 +msgid "Meroitic Cursive" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:805 +msgid "Kharoshthi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:809 +msgid "Old South Arabian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:813 +msgid "Old North Arabian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:817 +msgid "Manichaean" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:821 +msgid "Avestan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:825 +msgid "Inscriptional Parthian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:829 +msgid "Inscriptional Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:833 +msgid "Psalter Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:837 +msgid "Old Turkic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:841 +msgid "Old Hungarian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:845 +msgid "Hanifi Rohingya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:849 +msgid "Rumi Numeral Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:853 +msgid "Yezidi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:857 +msgid "Old Sogdian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:861 +msgid "Sogdian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:865 +msgid "Chorasmian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:869 +msgid "Elymaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:873 +msgid "Brahmi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:877 +msgid "Kaithi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:881 +msgid "Sora Sompeng" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:885 +msgid "Chakma" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:889 +msgid "Mahajani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:893 +msgid "Sharada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:897 +msgid "Sinhala Archaic Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:901 +msgid "Khojki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:905 +msgid "Multani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:909 +msgid "Khudawadi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:913 +msgid "Grantha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:917 +msgid "Newa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:921 +msgid "Tirhuta" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:925 +msgid "Siddham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:929 +msgid "Modi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:933 +msgid "Mongolian Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:937 +msgid "Takri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:941 +msgid "Ahom" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:945 +msgid "Dogra" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:949 +msgid "Warang Citi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:953 +msgid "Dives Akuru" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:957 +msgid "Nandinagari" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:961 +msgid "Zanabazar Square" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:965 +msgid "Soyombo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:969 +msgid "Pau Cin Hau" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:973 +msgid "Bhaiksuki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:977 +msgid "Marchen" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:981 +msgid "Masaram Gondi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:985 +msgid "Gunjala Gondi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:989 +msgid "Makasar" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:993 +msgid "Lisu Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:997 +msgid "Tamil Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1001 +msgid "Cuneiform" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1005 +msgid "Cuneiform Numbers and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1009 +msgid "Early Dynastic Cuneiform" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1013 +msgid "Egyptian Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1017 +msgid "Egyptian Hieroglyph Format Controls" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1021 +msgid "Anatolian Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1025 +msgid "Bamum Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1029 +msgid "Mro" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1033 +msgid "Bassa Vah" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1037 +msgid "Pahawh Hmong" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1041 +msgid "Medefaidrin" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1045 +msgid "Miao" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1049 +msgid "Ideographic Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1053 +msgid "Tangut" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1057 +msgid "Tangut Components" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1061 +msgid "Khitan Small Script" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1065 +msgid "Tangut Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1069 +msgid "Kana Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1073 +msgid "Kana Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1077 +msgid "Small Kana Extension" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1081 +msgid "Nushu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1085 +msgid "Duployan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1089 +msgid "Shorthand Format Controls" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1093 +msgid "Byzantine Musical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1097 +msgid "Musical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1101 +msgid "Ancient Greek Musical Notation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1105 +msgid "Mayan Numerals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1109 +msgid "Tai Xuan Jing Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1113 +msgid "Counting Rod Numerals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1117 +msgid "Mathematical Alphanumeric Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1121 +msgid "Sutton SignWriting" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1125 +msgid "Glagolitic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1129 +msgid "Nyiakeng Puachue Hmong" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1133 +msgid "Wancho" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1137 +msgid "Mende Kikakui" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1141 +msgid "Adlam" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1145 +msgid "Indic Siyaq Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1149 +msgid "Ottoman Siyaq Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1153 +msgid "Arabic Mathematical Alphabetic Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1157 +msgid "Mahjong Tiles" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1161 +msgid "Domino Tiles" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1165 +msgid "Playing Cards" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1169 +msgid "Enclosed Alphanumeric Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1173 +msgid "Enclosed Ideographic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1177 +msgid "Miscellaneous Symbols and Pictographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1181 +msgid "Emoticons" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1185 +msgid "Ornamental Dingbats" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1189 +msgid "Transport and Map Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1193 +msgid "Alchemical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1197 +msgid "Geometric Shapes Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1201 +msgid "Supplemental Arrows-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1205 +msgid "Supplemental Symbols and Pictographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1209 +msgid "Chess Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1213 +msgid "Symbols and Pictographs Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1217 +msgid "Symbols for Legacy Computing" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1221 +msgid "CJK Unified Ideographs Extension B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1225 +msgid "CJK Unified Ideographs Extension C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1229 +msgid "CJK Unified Ideographs Extension D" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1233 +msgid "CJK Unified Ideographs Extension E" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1237 +msgid "CJK Unified Ideographs Extension F" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1241 +msgid "CJK Compatibility Ideographs Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1245 +msgid "CJK Unified Ideographs Extension G" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1249 +msgid "Tags" +msgstr "Tunnisteet" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1253 +msgid "Variation Selectors Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1257 +msgid "Supplementary Private Use Area-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1261 +msgid "Supplementary Private Use Area-B" +msgstr "" + +#: tools/main.vala:51 +msgid "List engine name only" +msgstr "" + +#: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 +msgid "Can't connect to IBus.\n" +msgstr "Yhteys IBusiin ei onnistu.\n" + +#: tools/main.vala:93 +#, c-format +msgid "language: %s\n" +msgstr "kieli: %s\n" + +#: tools/main.vala:161 +msgid "No engine is set.\n" +msgstr "" + +#: tools/main.vala:169 +msgid "Set global engine failed.\n" +msgstr "" + +#: tools/main.vala:174 +msgid "Get global engine failed.\n" +msgstr "" + +#: tools/main.vala:217 +msgid "Read the system registry cache." +msgstr "" + +#: tools/main.vala:219 +msgid "Read the registry cache FILE." +msgstr "" + +#: tools/main.vala:237 tools/main.vala:242 +msgid "The registry cache is invalid.\n" +msgstr "" + +#: tools/main.vala:257 +msgid "Write the system registry cache." +msgstr "" + +#: tools/main.vala:259 +msgid "Write the registry cache FILE." +msgstr "" + +#: tools/main.vala:295 +msgid "" +"Use engine schema paths instead of ibus core, which can be comma-separated " +"values." +msgstr "" + +#: tools/main.vala:381 +msgid "Resetting…" +msgstr "" + +#: tools/main.vala:399 +msgid "Done" +msgstr "Valmis" + +#: tools/main.vala:444 +msgid "Set or get engine" +msgstr "" + +#: tools/main.vala:445 +msgid "Exit ibus-daemon" +msgstr "" + +#: tools/main.vala:446 +msgid "Show available engines" +msgstr "Näytä saatavilla olevat moottorit" + +#: tools/main.vala:447 +msgid "(Not implemented)" +msgstr "(Ei toteutettu)" + +#: tools/main.vala:448 +msgid "Restart ibus-daemon" +msgstr "Käynnistä ibus-daemon uudelleen" + +#: tools/main.vala:449 +msgid "Show version" +msgstr "Näytä versio" + +#: tools/main.vala:450 +msgid "Show the content of registry cache" +msgstr "" + +#: tools/main.vala:451 +msgid "Create registry cache" +msgstr "" + +#: tools/main.vala:452 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "" + +#: tools/main.vala:453 +msgid "Show the configuration values" +msgstr "" + +#: tools/main.vala:454 +msgid "Reset the configuration values" +msgstr "" + +#: tools/main.vala:456 +msgid "Save emoji on dialog to clipboard" +msgstr "Tallenna dialogin emoji leikepöydälle" + +#: tools/main.vala:458 +msgid "Show this information" +msgstr "Näytä tämä tieto" + +#: tools/main.vala:464 +#, c-format +msgid "" +"Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "" + +#: tools/main.vala:465 +msgid "Commands:\n" +msgstr "Komennot:\n" + +#: tools/main.vala:494 +#, c-format +msgid "%s is unknown command!\n" +msgstr "%s on tuntematon komento!\n" + +#: ui/gtk3/emojier.vala:233 +msgid "Favorites" +msgstr "Suosikit" + +#: ui/gtk3/emojier.vala:234 +msgid "Others" +msgstr "Muut" + +#: ui/gtk3/emojier.vala:235 +msgid "Open Unicode choice" +msgstr "" + +#: ui/gtk3/emojier.vala:995 +msgid "Bring back emoji choice" +msgstr "" + +#: ui/gtk3/emojier.vala:1097 +msgid "Page Down" +msgstr "Sivu alas" + +#: ui/gtk3/emojier.vala:1108 +msgid "Page Up" +msgstr "Sivu ylös" + +#: ui/gtk3/emojier.vala:1111 +msgid "Show emoji variants" +msgstr "" + +#: ui/gtk3/emojier.vala:1112 +msgid "Close" +msgstr "Sulje" + +#: ui/gtk3/emojier.vala:1118 +msgid "Menu" +msgstr "Valikko" + +#: ui/gtk3/emojier.vala:1129 +msgid "Click to view a warning message" +msgstr "" + +#: ui/gtk3/emojier.vala:1173 +msgid "Loading a Unicode dictionary:" +msgstr "" + +#: ui/gtk3/emojier.vala:1419 +#, c-format +msgid "Code point: %s" +msgstr "" + +#: ui/gtk3/emojier.vala:1425 +msgid "Has emoji variants" +msgstr "" + +#: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 +#, c-format +msgid "Description: %s" +msgstr "Kuvaus: %s" + +#: ui/gtk3/emojier.vala:1592 +msgid "None" +msgstr "Ei yhtään" + +#: ui/gtk3/emojier.vala:1616 +#, c-format +msgid "Annotations: %s" +msgstr "" + +#: ui/gtk3/emojier.vala:1642 +#, c-format +msgid "Name: %s" +msgstr "Nimi: %s" + +#: ui/gtk3/emojier.vala:1650 +#, c-format +msgid "Alias: %s" +msgstr "" + +#: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 +#: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1169 +msgid "Emoji Choice" +msgstr "Hymiö valinta" + +#: ui/gtk3/emojier.vala:2142 +msgid "Unicode Choice" +msgstr "" + +#: ui/gtk3/emojier.vala:2432 +msgid "" +"Failed to get the current text application. Please re-focus your " +"application. E.g. Press Esc key several times to release the emoji typing " +"mode, click your desktop and click your text application again." +msgstr "" + +#: ui/gtk3/emojierapp.vala:47 +msgid "Canceled to choose an emoji." +msgstr "" + +#: ui/gtk3/emojierapp.vala:67 +msgid "Copied an emoji to your clipboard." +msgstr "Kopioitiin emoji leikepöydälle." + +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ui/gtk3/emojierapp.vala:126 +msgid "\"FONT\" for emoji characters on emoji dialog" +msgstr "" + +#: ui/gtk3/emojierapp.vala:127 +msgid "FONT" +msgstr "" + +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ui/gtk3/emojierapp.vala:132 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" +msgstr "" + +#: ui/gtk3/emojierapp.vala:133 +msgid "LANG" +msgstr "" + +#: ui/gtk3/emojierapp.vala:135 +msgid "Emoji annotations can be match partially" +msgstr "" + +#: ui/gtk3/emojierapp.vala:139 +msgid "Match with the length of the specified integer" +msgstr "" + +#: ui/gtk3/emojierapp.vala:143 +msgid "Match with the condition of the specified integer" +msgstr "" + +#: ui/gtk3/panel.vala:292 ui/gtk3/panel.vala:323 +msgid "IBus Panel" +msgstr "IBus-paneeli" + +#: ui/gtk3/panel.vala:975 +#, c-format +msgid "" +"Your configured input method %s does not exist in IBus input methods so \"US" +"\" layout was configured instead of your input method." +msgstr "" + +#: ui/gtk3/panel.vala:980 +msgid "" +"At least one of your configured input methods does not exist in IBus input " +"methods." +msgstr "" + +#: ui/gtk3/panel.vala:983 +msgid "" +"Please run `ibus-setup` command, open \"Input Method\" tab, and configure " +"your input methods again." +msgstr "" + +#: ui/gtk3/panel.vala:1141 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus on älykäs syöteväylä Linuxille/Unixille." + +#: ui/gtk3/panel.vala:1145 +msgid "translator-credits" +msgstr "kääntäjät" + +#: ui/gtk3/panel.vala:1164 +msgid "Preferences" +msgstr "Asetukset" + +#: ui/gtk3/panel.vala:1190 +msgid "Restart" +msgstr "Käynnistä uudelleen" + +#: ui/gtk3/panel.vala:1194 +msgid "Quit" +msgstr "Lopeta" + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 +msgid "default:LTR" +msgstr "" + +#~ msgid "Emoji dialog:" +#~ msgstr "Emoji-ikkuna:" + +#~ msgid "" +#~ "IBus\n" +#~ "The intelligent input bus\n" +#~ "Homepage: https://github.com/ibus/ibus/wiki\n" +#~ "\n" +#~ "\n" +#~ "\n" +#~ msgstr "" +#~ "IBus\n" +#~ "Älykäs syöteväylä\n" +#~ "Sivusto: https://github.com/ibus/ibus/wiki\n" +#~ "\n" +#~ "\n" +#~ "\n" + +#~ msgid "Start ibus on login" +#~ msgstr "Käynnistä IBus kirjautumisen yhteydessä" + +#~ msgid "Startup" +#~ msgstr "Käynnistys" + +#~ msgid "Kbd" +#~ msgstr "Kbd" + +#~ msgid "Emoji Dialog" +#~ msgstr "Emoji-ikkuna" + +#~ msgid "IBus Update" +#~ msgstr "IBus-päivitys" diff --git a/po/fr.po b/po/fr.po index db0eb820a..8457893d9 100644 --- a/po/fr.po +++ b/po/fr.po @@ -1,196 +1,565 @@ -# translation of ibus.pot to French # French translation of ibus. -# Copyright (C) 2008 Peng Huang +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2021 Takao Fujiwara # This file is distributed under the same license as the ibus package. -# +# # Translators: -# Charles-Antoine Couret , 2009. -# Julien Humbert , 2009, 2010, 2011. -# Sam Friedmann , 2010. -# dominique bribanick , 2011. +# Charles-Antoine Couret , 2009 +# dominique bribanick , 2011,2014 +# Jérôme Fenal , 2012-2013 +# Julien Humbert , 2009-2015, 2020, 2021. +# Sam Friedmann , 2010 +# Jean-Baptiste Holcroft , 2016-2019, 2020. +# José Fournier , 2016, 2017. #zanata +# Edouard Duliege , 2017. #zanata +# Emmanuel Nedelec , 2017. #zanata +# fujiwara , 2015, 2017-2019. #zanata +# elmerys , 2018. #zanata msgid "" msgstr "" -"Project-Id-Version: IBus\n" -"Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/list\n" -"POT-Creation-Date: 2011-05-13 11:21+0900\n" -"PO-Revision-Date: 2011-07-16 04:21+0000\n" -"Last-Translator: dominique \n" -"Language-Team: French \n" +"Project-Id-Version: ibus 1.5.20\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2020-12-11 16:21+0900\n" +"PO-Revision-Date: 2021-02-16 10:40+0000\n" +"Last-Translator: Julien Humbert \n" +"Language-Team: French \n" +"Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: fr\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Poedit-Language: French\n" -"X-Poedit-Country: FRANCE\n" -"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.4.2\n" + +#. Translators: Here “Preload” is a verb +#: data/dconf/org.freedesktop.ibus.gschema.xml:11 +msgid "Preload engines" +msgstr "Précharger les moteurs" + +#. Translators: Tooltip for the button “Preload Engines” +#: data/dconf/org.freedesktop.ibus.gschema.xml:13 +msgid "Preload engines during ibus starts up" +msgstr "Précharger les moteurs au démarrage d’ibus" -#: ../bus/ibus.desktop.in.h:1 -msgid "IBus" -msgstr "IBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:17 +msgid "Engines order" +msgstr "Ordre des moteurs" -#: ../bus/ibus.desktop.in.h:2 -msgid "Input Method Framework" -msgstr "Framework de méthode de saisie" +#: data/dconf/org.freedesktop.ibus.gschema.xml:18 +msgid "Saved engines order in input method list" +msgstr "L’ordre des moteurs enregistrés dans la liste des méthodes d’entrées" -#: ../bus/ibus.desktop.in.h:3 -msgid "Start IBus Input Method Framework" -msgstr "Démarrer le framework de méthode de saisie IBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:22 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "" +"Délai en millisecondes d’affichage de la fenêtre du commutateur de méthode " +"d’entrée" -#: ../ibus/_config.py.in:40 +#: data/dconf/org.freedesktop.ibus.gschema.xml:23 msgid "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +"Set popup delay milliseconds to show IME switcher window. The default is " +"400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " +"show the window and switch prev/next engines." msgstr "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +"Définit le délai en millisecondes d’affichage de la fenêtre du commutateur " +"de méthode d’entrée. La valeur par défaut est de 400. 0 = montrer " +"immédiatement la fenêtre. 0 < délai en millisecondes. 0 > ne pas afficher la " +"fenêtre et permuter avec le moteur précédent ou suivant." -#: ../ibus/lang.py:41 -msgid "Other" -msgstr "Autre" +#: data/dconf/org.freedesktop.ibus.gschema.xml:27 +msgid "Saved version number" +msgstr "Numéro de version enregistré" -#: ../ui/gtk/candidatepanel.py:264 -msgid "Previous page" -msgstr "Page précédente" +#: data/dconf/org.freedesktop.ibus.gschema.xml:28 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" +"Le numéro de version enregistré sera utilisé pour vérifier la différence " +"entre la version d’une installation précédente de ibus et l’actuelle." -#: ../ui/gtk/candidatepanel.py:269 -msgid "Next page" -msgstr "Page suivante" +#: data/dconf/org.freedesktop.ibus.gschema.xml:32 +msgid "Latin layouts which have no ASCII" +msgstr "Dispositions latines ne disposant pas d’ASCII" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:33 +msgid "US layout is appended to the Latin layouts. variant can be omitted." +msgstr "" +"La disposition US est ajoutée aux dispositions Latines. Les variantes " +"peuvent être omises." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:37 +msgid "Use xmodmap" +msgstr "Utiliser xmodmap" -#: ../ui/gtk/main.py:62 +#: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" -"Some input methods have been installed, removed or updated. Please restart " -"ibus input platform." +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" -"Certaines méthodes d'entrée ont été installées, supprimées ou mises à jour. " -"Veuillez redémarrer iBus." +"Lancer xmodmap si le fichier .xmodmap ou .Xmodmap existe lors d’un " +"basculement de moteur ibus." -#: ../ui/gtk/main.py:66 -msgid "Restart Now" -msgstr "Redémarrer IBus maintenant" +#: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 +msgid "Use system keyboard layout" +msgstr "Utiliser la disposition clavier système" -#: ../ui/gtk/main.py:67 -msgid "Later" -msgstr "Plus tard" +#: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 +msgid "Use system keyboard (XKB) layout" +msgstr "Utiliser la disposition clavier système (XKB)" -#: ../ui/gtk/panel.py:116 -msgid "IBus Panel" -msgstr "Tableau de bord IBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:47 +msgid "Embed Preedit Text" +msgstr "Insérer le texte en cours d’édition" -#: ../ui/gtk/panel.py:122 -msgid "IBus input method framework" -msgstr "Framework de méthode de saisie iBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:48 +msgid "Embed Preedit Text in Application Window" +msgstr "Insérer le texte en cours d’édition dans la fenêtre de l’application" -#: ../ui/gtk/panel.py:352 -msgid "Restart" -msgstr "Redémarrer IBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:52 +msgid "Use global input method" +msgstr "Utiliser la méthode d’éntrée globale" -#: ../ui/gtk/panel.py:439 -msgid "Turn off input method" -msgstr "Désactiver la méthode d'entrée" +#: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 +msgid "Share the same input method among all applications" +msgstr "Partager la même méthode d’entrée pour toutes les applications" -#: ../ui/gtk/panel.py:478 -msgid "No input window" -msgstr "Aucune fenêtre de saisie" +#: data/dconf/org.freedesktop.ibus.gschema.xml:57 +msgid "Enable input method by default" +msgstr "Par défaut, activer la méthode d’entrée" -#: ../ui/gtk/panel.py:509 -msgid "IBus is an intelligent input bus for Linux/Unix." -msgstr "IBus est un IME intelligent pour Linux/Unix" +#: data/dconf/org.freedesktop.ibus.gschema.xml:58 +msgid "Enable input method by default when the application gets input focus" +msgstr "" +"Par défaut, activer la méthode d’entrée lorsque l’application reçoit le focus" -#: ../ui/gtk/panel.py:513 -msgid "translator-credits" -msgstr "Julien Humbert " +#: data/dconf/org.freedesktop.ibus.gschema.xml:62 +msgid "DConf preserve name prefixes" +msgstr "Préservation des préfixes de nom DConf" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:63 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "Préfixes des clés DConf pour arrêter la conversion de nom" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:70 +msgid "Trigger shortcut keys" +msgstr "Raccourci clavier déclencheur" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:71 +#: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 +msgid "The shortcut keys for turning input method on or off" +msgstr "Raccourcis claviers pour activer ou désactiver les méthodes d’entrées" -#: ../ui/gtk/languagebar.py:106 -msgid "About the input method" -msgstr "À propos de la méthode d'entrée" +#: data/dconf/org.freedesktop.ibus.gschema.xml:75 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "Raccourci clavier déclencheur pour gtk_accelerator_parse" -#: ../ui/gtk/languagebar.py:214 -msgid "Switch input method" -msgstr "Changer de méthode d'entrée" +#: data/dconf/org.freedesktop.ibus.gschema.xml:80 +msgid "Enable shortcut keys" +msgstr "Activer les raccourcis clavier" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:81 +msgid "The shortcut keys for turning input method on" +msgstr "Les raccourcis clavier pour la méthode d’entrée sont activés" -#: ../ui/gtk/languagebar.py:357 ../ui/gtk/engineabout.py:33 -#: ../setup/engineabout.py:33 ../setup/setup.ui.h:16 +#: data/dconf/org.freedesktop.ibus.gschema.xml:85 +msgid "Disable shortcut keys" +msgstr "Désactiver les raccourcis clavier" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:86 +msgid "The shortcut keys for turning input method off" +msgstr "Les raccourcis clavier pour désactiver la méthode d’entrée" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:90 +#: data/dconf/org.freedesktop.ibus.gschema.xml:95 +msgid "Next engine shortcut keys" +msgstr "Raccourci clavier pour passer au moteur suivant" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:91 +#: data/dconf/org.freedesktop.ibus.gschema.xml:96 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "" +"Raccourci clavier pour passer à la méthode d’entrée suivante de la liste" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:100 +#: data/dconf/org.freedesktop.ibus.gschema.xml:105 +msgid "Prev engine shortcut keys" +msgstr "Raccourci clavier pour revenir au moteur précédent" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:101 +#: data/dconf/org.freedesktop.ibus.gschema.xml:106 +msgid "The shortcut keys for switching to the previous input method" +msgstr "Raccourci clavier pour revenir à la méthode d’entrée précédente" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:112 +msgid "Auto hide" +msgstr "Masquage automatique" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:113 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "" +"Comportement du panneau de propriétés. 0 = Ne pas afficher, 1 = Cacher " +"automatiquement, 2 = Toujours afficher" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:117 +#: data/dconf/org.freedesktop.ibus.gschema.xml:121 +msgid "Language panel position" +msgstr "Position de la barre de langues" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:125 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "Suivre le curseur d’insertion lorsque le panneau est toujours affiché" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:126 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" +"Si activé, le panneau suit le curseur d’insertion lorsque le panneau est " +"toujours affiché. Sinon, le panneau est affiché à une position fixe." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:130 +msgid "The milliseconds to show property panel" +msgstr "Temps en millisecondes pour afficher le panneau de propriétés" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:131 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" +"Temps en millisecondes pour afficher le panneau de propriétés après prise du " +"focus ou changement des propriétés." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:135 +msgid "Orientation of lookup table" +msgstr "Orientation de la liste des candidats" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:136 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "Orientation de la liste des candidats. 0 = Horizontale, 1 = Verticale" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:140 +#: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 +#: setup/setup.ui:475 +msgid "Show icon on system tray" +msgstr "Afficher l’icône dans la boîte à miniatures" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:145 +msgid "Show input method name" +msgstr "Afficher le nom de la méthode d’entrée" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 +msgid "Show input method name on language bar" +msgstr "Afficher le nom de la méthode d’entrée sur la barre de langues" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:150 +msgid "RGBA value of XKB icon" +msgstr "Valeur RGBA de l’icône XKB" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:151 +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form 'rgba(r," +"g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 to 255 or " +"percentage values in the range 0% to 100%, and 'a' is a floating point value " +"in the range 0 to 1 of the alpha." +msgstr "" +"L’icône XKB affiche la chaîne de caractères de la disposition et cette " +"chaîne de caractères est affichée avec sa valeur RGBA. Cette valeur RGBA " +"peut être 1. le nom d’une couleur X11, 2. une valeur hexadécimale sous la " +"forme « #rrggbb » où « r », « g » et « b » sont des chiffres hexadécimaux " +"correspondant respectivement au rouge, vert et bleu, 3. une couleur RGB sous " +"la forme « rgb(r,g,b) » ou 4. une couleur RGBA sous la forme « rgba(r,g,b,a) " +"» où « r », « g » et « b » sont soit des entiers compris entre 0 et 255, " +"soit un pourcentage compris entre 0 et 100 %, et « a » la valeur alpha, est " +"un nombre à virgule flottante compris entre 0 et 1." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:155 +msgid "The milliseconds to show the panel icon for a property" +msgstr "" +"Temps en millisecondes pour afficher l’icône de panneau d’une propriété" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:156 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" +"Millisecondes d’affichage de l’icône du panneau d’une propriété lorsqu’un " +"moteur est chargé si la propriété est renseignée par a valeur de icon-prop-" +"key dans IBusEngineDesc. Si la valeur est 0, sans délai et l’icône de " +"propriété est montrée immédiatement." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:160 +msgid "Use custom font" +msgstr "Utiliser une police personnalisée :" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:161 +msgid "Use custom font name for language panel" +msgstr "Utiliser une police personnalisée pour la barre de langues" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:165 +#: data/dconf/org.freedesktop.ibus.gschema.xml:192 +msgid "Custom font" +msgstr "Police personnalisée" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:166 +msgid "Custom font name for language panel" +msgstr "Police personnalisée pour la barre de langues" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:170 setup/setup.ui:1305 +msgid "Choose glyphs with input method's language on candidate window" +msgstr "" +"Choisissez les glyphes avec la langue de la méthode de saisie dans la " +"fenêtre de candidats" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:171 +msgid "" +"Some code points have the different glyphs and Pango determines the glyphs " +"from the language attribute. Pango chooses glyphs from the IBus engine's " +"language if the value is true and choose them from the desktop locale if the " +"value is false." +msgstr "" +"Certains points de code ont des glyphes différents et Pango détermine les " +"glyphes à partir de l’attribut de langue. Pango choisit les glyphes à partir " +"de la langue du moteur IBus si la valeur est vraie et les choisit à partir " +"de la locale du bureau si la valeur est fausse." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:182 +msgid "Unicode shortcut keys for gtk_accelerator_parse" +msgstr "Touches de raccourcis Unicodes pour gtk_accelerator_parse" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:183 +msgid "The shortcut keys for turning Unicode typing on or off" +msgstr "" +"Les touches de raccourcis pour activer ou désactiver la frappe en mode " +"Unicode" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:187 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "Raccourcis clavier des émoticônes pour gtk_accelerator_parse" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:188 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "Raccourcis clavier pour activer ou désactiver la saisie des émoticônes" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:193 +msgid "Custom font name for emoji characters on emoji dialog" +msgstr "" +"Nom de la police personnalisée pour les caractères d’émoticônes dans la " +"boite de dialogue" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:197 +msgid "Default language for emoji dictionary" +msgstr "Langue par défaut pour le dictionnaire des émoticônes" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:198 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict ." +msgstr "" +"Choisissez la langue par défaut pour les dictionnaires d’émoticônes dans la " +"boite de dialogue. La valeur $Lang est appliquée à /usr/share/ibus/dicts/" +"emoji-$lang.dict ." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:202 +msgid "favorite emoji list on emoji dialog" +msgstr "liste des émoticônes favorites dans la boite de dialogue" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:203 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "" +"Vous pouvez afficher les émoticônes favorites dans la liste des émoticônes " +"si celle-ci contient des caractères." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:207 +msgid "favorite emoji annotation list on emoji dialog" +msgstr "liste des annotations d’émoticônes favorites dans la boite de dialogue" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:208 +msgid "You can assign an annotation for a favorite emoji in this list." +msgstr "" +"Vous pouvez assigner une annotation pour une émoticône favorite dans cette " +"liste." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:212 +msgid "Whether emoji annotations can be match partially or not" +msgstr "" +"Si les annotations d’émoticônes peuvent correspondre partiellement ou non" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:213 +msgid "" +"Whether emoji annotations can be matched with a partial string instead of " +"the exact match or not." +msgstr "" +"Si les annotations d’émoticônes peuvent correspondre ou non à une chaîne " +"partielle plutôt qu’à la chaîne complète." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:217 +msgid "Match emoji annotations with the specified length" +msgstr "Correspondance d’annotations d’émoticônes ayant la longueur spécifiée" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:218 +msgid "" +"Match emoji annotations partially with more than the specified number of " +"characters instead of the exact match." +msgstr "" +"Correspondances partielles avec plus que le nombre de caractères spécifié " +"plutôt qu’une correspondance exacte." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:222 +msgid "Choose a condition to match emoji annotations partially" +msgstr "" +"Choisir une condition de correspondance partielle d’annotations d’émoticônes" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:223 +msgid "" +"Choose one of the following conditions to match emoji annotations partially: " +"0 == Prefix match, 1 == Suffix match, 2 == Containing match" +msgstr "" +"Choisissez une des conditions suivantes pour la correspondance partielle " +"d’annotations d’émoticônes : 0 == correspondance de préfixe, 1 == " +"correspondance de suffixe, 2 == correspondance de contenu" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:227 +msgid "Load the emoji data at the time of startup" +msgstr "Charge les données relatives aux émoticônes au démarrage" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:228 +msgid "" +"Load the emoji data at the time of startup if true. About 10MB memory is " +"needed to load the data. Load the emoji data when open the emoji dialog at " +"the beginning if false." +msgstr "" +"Charge les données relatives aux émoticônes au démarrage si la condition est " +"remplie. 10Mb de mémoire sont nécessaires pour charger ces données. Sinon, " +"les données des émoticônes sont chargées lors de l’ouverture de la boite de " +"dialogue des émoticônes." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:232 +msgid "Load the Unicode data at the time of startup" +msgstr "Charge les données Unicode au démarrage" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:233 +msgid "" +"Load the Unicode data at the time of startup if true. About 15MB memory is " +"needed to load the data. Load the Unicode data when open the emoji dialog at " +"the beginning if false. The Unicode data is always loaded after the emoji " +"data is loaded even if true." +msgstr "" +"Charge les données Unicode au démarrage si la condition est remplie. 15Mb de " +"mémoire sont nécessaires pour charger ces données. Sinon, les données " +"Unicode sont chargées lors de l’ouverture de la boite de dialogue des " +"émoticônes. Même dans le cas où la condition est remplie, les données " +"Unicode sont toujours chargées après les données des émoticônes." + +#: ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." + +#: ibus/lang.py:41 src/ibusutil.c:209 +msgid "Other" +msgstr "Autre" + +#: setup/emojilang.py:67 +msgid "Select a language" +msgstr "Sélectionner la langue" + +#: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 +#: setup/main.py:560 +msgid "_Cancel" +msgstr "A_nnuler" + +#: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 +msgid "_OK" +msgstr "_OK" + +#: setup/emojilang.py:235 setup/enginedialog.py:205 +msgid "More…" +msgstr "Plus…" + +#: setup/engineabout.py:37 setup/setup.ui:1368 ui/gtk3/panel.vala:1184 msgid "About" msgstr "À propos" -#: ../ui/gtk/languagebar.py:361 -msgid "About the Input Method" -msgstr "À propos de la méthode d'entrée" +#: setup/engineabout.py:40 setup/setup.ui:1391 +msgid "_Close" +msgstr "_Fermer" -#: ../ui/gtk/engineabout.py:61 ../setup/engineabout.py:61 +#: setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "Langue : %s\n" -#: ../ui/gtk/engineabout.py:63 ../setup/engineabout.py:63 +#: setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "Disposition du clavier : %s\n" -#: ../ui/gtk/engineabout.py:65 ../setup/engineabout.py:65 +#: setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "Auteur : %s\n" -#: ../ui/gtk/engineabout.py:67 ../setup/engineabout.py:67 +#: setup/engineabout.py:81 msgid "Description:\n" msgstr "Description :\n" -#: ../setup/main.py:102 -msgid "trigger" -msgstr "déclencheur" - -#: ../setup/main.py:113 -msgid "enable" -msgstr "activer" - -#: ../setup/main.py:124 -msgid "disable" -msgstr "désactiver" - -#: ../setup/main.py:135 -msgid "next input method" -msgstr "méthode d'entrée suivante" +#: setup/enginecombobox.py:139 setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "Sélectionnez une méthode d’entrée" -#: ../setup/main.py:146 -msgid "previous input method" -msgstr "méthode d'entrée précédente" +#. add button +#: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 +msgid "_Add" +msgstr "_Ajouter" -#: ../setup/main.py:286 -msgid "IBus daemon is not started. Do you want to start it now?" -msgstr "Le démon IBus n'est pas démarré. Voulez-vous le démarrer maintenant ?" +#. create im name & icon column +#: setup/enginetreeview.py:69 setup/setup.ui:838 +msgid "Input Method" +msgstr "Méthode d’entrée" -#: ../setup/main.py:301 -msgid "" -"IBus has been started! If you can not use IBus, please add below lines in $HOME/.bashrc, and relogin your desktop.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" -msgstr "" -"IBus a été démarré ! Si vous ne pouvez pas utiliser IBus, veuillez ajouter les lignes suivantes dans le fichier « $HOME/.bashrc », et veuillez vous reconnecter.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +#: setup/ibus-setup.desktop:3 setup/setup.ui:69 +msgid "IBus Preferences" +msgstr "Préférences de IBus" -#: ../setup/main.py:316 -#, python-format -msgid "Select keyboard shortcut for %s" -msgstr "Raccourci clavier pour %s" +#: setup/ibus-setup.desktop:4 +msgid "Set IBus Preferences" +msgstr "Définir les préférences de IBus" -#: ../setup/keyboardshortcut.py:52 +#: setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Raccourci clavier" -#: ../setup/keyboardshortcut.py:63 +#: setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "Touche :" -#: ../setup/keyboardshortcut.py:78 +#: setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "Modificateurs :" -#: ../setup/keyboardshortcut.py:231 +#. apply button +#: setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "A_ppliquer" + +#. delete button +#: setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "_Supprimer" + +#: setup/keyboardshortcut.py:252 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." @@ -198,371 +567,2875 @@ msgstr "" "Veuillez appuyer sur une touche (ou une combinaison de touches).\n" "La boîte de dialogue se fermera lorsque la touche sera relâchée." -#: ../setup/keyboardshortcut.py:233 +#: setup/keyboardshortcut.py:255 msgid "Please press a key (or a key combination)" msgstr "Veuillez appuyer sur une touche (ou une combinaison de touches)" -#: ../setup/enginecombobox.py:120 -msgid "Select an input method" -msgstr "Sélectionnez une méthode d'entrée" +#: setup/main.py:121 setup/main.py:588 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "" +"Utiliser le raccourci clavier avec Maj pour revenir à la méthode d’entrée " +"précédente" -#. create im name & icon column -#: ../setup/enginetreeview.py:64 ../setup/setup.ui.h:33 -msgid "Input Method" -msgstr "Méthode d'entrée" +#: setup/main.py:515 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "Le démon IBus n’est pas démarré. Souhaitez-vous le démarrer ?" -#: ../setup/enginetreeview.py:92 -msgid "Kbd" -msgstr "Kbd" +#: setup/main.py:536 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "" +"IBus a été démarré ! Si vous ne pouvez pas utiliser IBus, veuillez ajouter " +"les lignes suivantes dans le fichier « $HOME/.bashrc », et veuillez vous " +"reconnecter.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" -#: ../setup/ibus-setup.desktop.in.h:1 ../setup/setup.ui.h:32 -msgid "IBus Preferences" -msgstr "Préférences de IBus" +#. Translators: %d == 5 currently +#: setup/main.py:550 +#, python-format +msgid "IBus daemon could not be started in %d seconds." +msgstr "Le démon IBus n’a pas pu être démarré en %d secondes." -#: ../setup/ibus-setup.desktop.in.h:2 -msgid "Set IBus Preferences" -msgstr "Définir les préférences de IBus" +#: setup/main.py:562 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "Sélection du raccourci clavier pour %s" -#: ../data/ibus.schemas.in.h:1 -msgid "Auto hide" -msgstr "Masquage automatique" +#. Translators: Title of the window +#: setup/main.py:564 +msgid "switching input methods" +msgstr "Changement de méthode d’entrée" -#: ../data/ibus.schemas.in.h:2 -msgid "Custom font" -msgstr "Police personnalisée" +#: setup/setup.ui:11 +msgid "Horizontal" +msgstr "Horizontale" -#: ../data/ibus.schemas.in.h:3 -msgid "Custom font name for language panel" -msgstr "Police personnalisée pour le panneau de langue" +#: setup/setup.ui:14 +msgid "Vertical" +msgstr "Verticale" -#: ../data/ibus.schemas.in.h:4 -msgid "Disable shortcut keys" -msgstr "Désactiver les raccourcis clavier" +#: setup/setup.ui:25 +msgid "Top left corner" +msgstr "Coin supérieur gauche" -#: ../data/ibus.schemas.in.h:5 -msgid "Embed Preedit Text" -msgstr "Insérer le texte en cours d'édition" +#: setup/setup.ui:28 +msgid "Top right corner" +msgstr "Coin supérieur droit" -#: ../data/ibus.schemas.in.h:6 -msgid "Embed Preedit Text in Application Window" -msgstr "Insérer le texte en cours d'édition dans la fenêtre de l'application" +#: setup/setup.ui:31 +msgid "Bottom left corner" +msgstr "Coin inférieur gauche" -#: ../data/ibus.schemas.in.h:7 -msgid "Enable input method by default" -msgstr "Par défaut, activer la méthode d'entrée" +#: setup/setup.ui:34 +msgid "Bottom right corner" +msgstr "Coin inférieur droit" -#: ../data/ibus.schemas.in.h:8 -msgid "Enable input method by default when the application gets input focus" +#: setup/setup.ui:37 +msgid "Custom" +msgstr "Personnalisée" + +#: setup/setup.ui:48 +msgid "Do not show" +msgstr "Ne pas afficher" + +#: setup/setup.ui:51 +msgid "Hide automatically" +msgstr "Cacher automatiquement" + +#: setup/setup.ui:54 +msgid "Always" +msgstr "Toujours afficher" + +#: setup/setup.ui:113 +msgid "The shortcut keys for switching to next input method in the list" msgstr "" -"Par défaut, activer la méthode d'entrée lorsque l'application reçoit le " -"focus" +"Raccourci clavier pour passer à la méthode d’entrée suivante de la liste" -#: ../data/ibus.schemas.in.h:9 -msgid "Enable shortcut keys" -msgstr "Activer les raccourcis clavier" +#: setup/setup.ui:115 +msgid "Next input method:" +msgstr "Méthode d’entrée suivante :" -#: ../data/ibus.schemas.in.h:10 -msgid "Language panel position" -msgstr "Position de la barre" +#: setup/setup.ui:127 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "" +"Raccourci clavier pour revenir à la méthode d’entrée précédente de la liste" -#: ../data/ibus.schemas.in.h:11 -msgid "Next engine shortcut keys" -msgstr "Raccourci clavier pour passer au moteur suivant" +#: setup/setup.ui:129 +msgid "Previous input method:" +msgstr "Méthode d’entrée précédente :" -#: ../data/ibus.schemas.in.h:12 -msgid "Orientation of lookup table" -msgstr "Orientation de la liste des candidats" +#: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 +#: setup/setup.ui:903 setup/setup.ui:957 +msgid "..." +msgstr "…" -#: ../data/ibus.schemas.in.h:13 -msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" -msgstr "Orientation de la liste des candidats. 0 = Horizontale, 1 = Verticale" +#: setup/setup.ui:226 +msgid "Enable or disable:" +msgstr "Activer / désactiver :" -#: ../data/ibus.schemas.in.h:14 -msgid "Preload engines" -msgstr "Précharger les moteurs" +#: setup/setup.ui:238 +msgid "Enable:" +msgstr "Activer :" -#: ../data/ibus.schemas.in.h:15 -msgid "Preload engines during ibus starts up" -msgstr "Précharger les moteurs au démarrage d'ibus" +#: setup/setup.ui:291 +msgid "Disable:" +msgstr "Désactiver :" -#: ../data/ibus.schemas.in.h:16 -msgid "Prev engine shortcut keys" -msgstr "Raccourci clavier pour revenir au moteur précédent" +#: setup/setup.ui:345 setup/setup.ui:983 +msgid "Keyboard Shortcuts" +msgstr "Raccourcis clavier" -#: ../data/ibus.schemas.in.h:17 ../setup/setup.ui.h:42 -msgid "Share the same input method among all applications" -msgstr "Partager la même méthode d'entrée pour toutes les applications" +#: setup/setup.ui:374 +msgid "Set the orientation of candidates in lookup table" +msgstr "Permet de choisir l’orientation de la liste des candidats" -#: ../data/ibus.schemas.in.h:18 ../setup/setup.ui.h:43 -msgid "Show icon on system tray" -msgstr "Afficher l'icône dans la boîte à miniatures" +#: setup/setup.ui:376 +msgid "Candidates orientation:" +msgstr "Orientation de la liste des candidats :" -#: ../data/ibus.schemas.in.h:19 -msgid "Show input method name" -msgstr "Afficher le nom de la méthode d'entrée" +#: setup/setup.ui:407 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "Permet de choisir l’affichage de la barre de langues d’ibus" -#: ../data/ibus.schemas.in.h:20 ../setup/setup.ui.h:45 -msgid "Show input method name on language bar" -msgstr "Afficher le nom de la méthode d'entrée sur la barre de langue" +#: setup/setup.ui:409 +msgid "Show property panel:" +msgstr "Afficher le panneau de propriétés :" -#: ../data/ibus.schemas.in.h:21 -msgid "" -"The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = " -"Always show" +#: setup/setup.ui:423 +msgid "Language panel position:" +msgstr "Afficher la barre de langues :" + +#: setup/setup.ui:494 +msgid "Show input method's name on language bar when check the checkbox" msgstr "" -"Sélection du comportement d'affichage de la liste des candidats. 0 = Insérée" -" dans le menu, 1 = Masquer automatiquement, 2 = Toujours afficher" +"Afficher le nom de la méthode d’entrée sur la barre de langue lorsque la " +"case est cochée" -#: ../data/ibus.schemas.in.h:22 -msgid "" -"The position of the language panel. 0 = Top left corner, 1 = Top right " -"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +#: setup/setup.ui:508 +msgid "Embed preedit text in application window" +msgstr "Insérer le texte en cours d’édition dans la fenêtre de l’application" + +#: setup/setup.ui:513 +msgid "Embed the preedit text of input method in the application window" msgstr "" -"Position de la barre de langue. 0 = Coin supérieur gauche, 1 = Coin " -"supérieur droit, 2 = Coin inférieur gauche, 3 = Coin inférieur droit, 4 = " -"Personnalisé" +"Insérer le texte en cours d’édition par la méthode d’entrée dans la fenêtre " +"de l’application" -#: ../data/ibus.schemas.in.h:23 -msgid "The shortcut keys for switching to the next input method in the list" +#: setup/setup.ui:527 +msgid "Use custom font:" +msgstr "Utiliser une police personnalisée :" + +#: setup/setup.ui:562 setup/setup.ui:1156 +msgid "Font and Style" +msgstr "Police et Style" + +#: setup/setup.ui:579 +msgid "General" +msgstr "Paramètres généraux" + +#: setup/setup.ui:671 +msgid "Add the selected input method into the enabled input methods" +msgstr "Ajouter la méthode d’entrée selectionnée aux méthodes d’entrée actives" + +#: setup/setup.ui:682 +msgid "_Remove" +msgstr "_Retirer" + +#: setup/setup.ui:689 +msgid "Remove the selected input method from the enabled input methods" msgstr "" -"Raccourci clavier pour passer à la méthode d'entrée suivante de la liste" +"Supprimer la méthode d’entrée sélectionnée des méthodes d’entrées actives" -#: ../data/ibus.schemas.in.h:24 -msgid "The shortcut keys for switching to the previous input method" -msgstr "Raccourci clavier pour revenir à la méthode d'entrée précédente" +#: setup/setup.ui:700 +msgid "_Up" +msgstr "_Monter" -#: ../data/ibus.schemas.in.h:25 -msgid "The shortcut keys for turning input method off" -msgstr "Les raccourcis clavier pour la méthode d'entrée sont désactivés" +#: setup/setup.ui:707 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "" +"Déplacer vers le haut la méthode d’entrée sélectionnée dans la liste des " +"méthodes d’entrée actives" -#: ../data/ibus.schemas.in.h:26 -msgid "The shortcut keys for turning input method on" -msgstr "Les raccourcis clavier pour la méthode d'entrée sont activés" +#: setup/setup.ui:718 +msgid "_Down" +msgstr "_Descendre" -#: ../data/ibus.schemas.in.h:27 ../setup/setup.ui.h:51 -msgid "The shortcut keys for turning input method on or off" +#: setup/setup.ui:725 +msgid "Move down the selected input method in the enabled input methods" msgstr "" -"Sélection des raccourcis claviers pour activer ou désactiver les méthodes " -"d'entrées" +"Déplacer vers le bas la méthode d’entrée sélectionnée dans la liste des " +"méthodes d’entrée actives" -#: ../data/ibus.schemas.in.h:28 -msgid "Trigger shortcut keys" -msgstr "Raccourci clavier déclencheur" +#: setup/setup.ui:736 +msgid "_About" +msgstr "À _propos" -#: ../data/ibus.schemas.in.h:29 -msgid "Use custom font" -msgstr "Utiliser une police personnalisée :" +#: setup/setup.ui:743 +msgid "Show information of the selected input method" +msgstr "Afficher les informations de la méthode d’entrée sélectionnée" -#: ../data/ibus.schemas.in.h:30 -msgid "Use custom font name for language panel" -msgstr "Utiliser une police personnalisée pour la barre de langue" +#: setup/setup.ui:754 +msgid "_Preferences" +msgstr "_Préférences" -#: ../data/ibus.schemas.in.h:31 -msgid "Use global input method" -msgstr "Utiliser la méthode d'éntrée globale" +#: setup/setup.ui:761 +msgid "Show setup of the selected input method" +msgstr "Afficher le paramétrage de la méthode d’entrée sélectectionnée" -#: ../data/ibus.schemas.in.h:32 ../setup/setup.ui.h:55 -msgid "Use system keyboard (XKB) layout" -msgstr "Utiliser la disposition clavier système (XKB)" +#: setup/setup.ui:812 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" +"La méthode de saisie active peut être modifiée vers l’une des " +"méthodes pré-sélectionnées dans la liste ci-dessous en tapant le raccourci " +"clavier ou en cliquant sur l’icône du panneau." -#: ../data/ibus.schemas.in.h:33 ../setup/setup.ui.h:56 -msgid "Use system keyboard layout" -msgstr "Utiliser la disposition clavier système" +#: setup/setup.ui:873 +msgid "" +"The shortcut keys to enable conversions of emoji annotations or Unicode names" +msgstr "" +"Les touches de raccourcis pour activer les conversions des annotations " +"d’émoticônes ou des noms Unicode" -#: ../setup/setup.ui.h:1 -msgid "..." -msgstr "…" +#: setup/setup.ui:875 +msgid "Emoji annotation:" +msgstr "Annotation des émoticônes :" -#: ../setup/setup.ui.h:2 -msgid "Font and Style" -msgstr "Police et Style" +#: setup/setup.ui:927 +msgid "The shortcut keys to enable Unicode code point conversions" +msgstr "" +"Les touches de raccourcis pour activer les conversions en point de code " +"Unicode" -#: ../setup/setup.ui.h:3 -msgid "Global input method settings" -msgstr "Configuration de la méthode d'éntrée globale" +#: setup/setup.ui:929 +msgid "Unicode code point:" +msgstr "Point de code Unicode :" -#: ../setup/setup.ui.h:4 -msgid "Keyboard Layout" -msgstr "Disposition du clavier" +#: setup/setup.ui:1013 +msgid "Set a font of Unicode candidates on the emoji dialog" +msgstr "Défini la police des émoticônes candidates dans la boite de dialogue" -#: ../setup/setup.ui.h:5 -msgid "Keyboard Shortcuts" -msgstr "Raccourcis clavier" +#: setup/setup.ui:1015 +msgid "Unicode font:" +msgstr "Police de caractère Unicode :" + +#: setup/setup.ui:1038 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "" +"Défini la langue pour les annotations d’émoticônes dans la boite de dialogue" -#: ../setup/setup.ui.h:6 -msgid "Startup" -msgstr "Démarrage" +#: setup/setup.ui:1040 +msgid "Emoji annotation language:" +msgstr "Langue d’annotations des émoticônes :" -#: ../setup/setup.ui.h:7 +#: setup/setup.ui:1062 msgid "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" +"Match emoji annotations partially with the following condition and more than " +"the number of characters:" msgstr "" -"IBus\n" -"The intelligent input bus\n" -"Page d'accueil : http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" +"Correspondances partielles d’annotations des émoticônes ayant les conditions " +"suivantes et plus que le nombre de caractères :" -#: ../setup/setup.ui.h:14 +#: setup/setup.ui:1067 msgid "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." +"If emoji annotations can be matched with a partial string instead of the " +"exact match" msgstr "" -"La méthode d'entrée par défaut se trouve en haut de la liste.\n" -"Utilisez les boutons « Monter/Descendre » pour changer l'ordre." +"Si les annotations peuvent correspondre à une chaîne partielle plutôt qu’une " +"correspondance exacte" -#: ../setup/setup.ui.h:17 -msgid "Add the selected input method into the enabled input methods" +#: setup/setup.ui:1101 +msgid "Prefix match" +msgstr "Correspondance de préfixe" + +#: setup/setup.ui:1115 +msgid "Suffix match" +msgstr "Correspondance de suffixe" + +#: setup/setup.ui:1130 +msgid "Containing match" +msgstr "Correspondance de contenu" + +#: setup/setup.ui:1176 +msgid "Emoji" +msgstr "Émoticône" + +#: setup/setup.ui:1230 +msgid "Keyboard Layout" +msgstr "Disposition du clavier" + +#: setup/setup.ui:1278 +msgid "Global input method settings" +msgstr "Configuration de la méthode d’éntrée globale" + +#: setup/setup.ui:1310 +msgid "" +"Choose glyphs with the input method's language on the candidate window for " +"the duplicated code points" msgstr "" -"Ajouter la méthode d'entrée selectionnée aux méthodes d'entrée actives" +"Choisissez les glyphes avec la langue de la méthode de saisie dans la " +"fenêtre de candidats pour les points de code dupliqués" + +#: setup/setup.ui:1327 +msgid "Fonts" +msgstr "Polices" -#: ../setup/setup.ui.h:18 +#: setup/setup.ui:1347 msgid "Advanced" msgstr "Avancé" -#: ../setup/setup.ui.h:19 -msgid "Always" -msgstr "Toujours afficher" +#: src/ibusemojigen.h:30 +msgid "Activities" +msgstr "Activités" + +#: src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "Animaux & nature" + +#: src/ibusemojigen.h:32 +msgid "Component" +msgstr "Composant" + +#: src/ibusemojigen.h:33 +msgid "Flags" +msgstr "Drapeaux" + +#: src/ibusemojigen.h:34 +msgid "Food & Drink" +msgstr "Nourriture & boisson" + +#: src/ibusemojigen.h:35 +msgid "Objects" +msgstr "Objets" + +#: src/ibusemojigen.h:36 +msgid "People & Body" +msgstr "Personnes & parties du corps" + +#: src/ibusemojigen.h:37 +msgid "Smileys & Emotion" +msgstr "Frimousses & émotion" + +#: src/ibusemojigen.h:38 +msgid "Symbols" +msgstr "Symboles" + +#: src/ibusemojigen.h:39 +msgid "Travel & Places" +msgstr "Voyages & lieux" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:33 +msgid "Basic Latin" +msgstr "Latin de base" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:37 +msgid "Latin-1 Supplement" +msgstr "Supplément Latin-1" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:41 +msgid "Latin Extended-A" +msgstr "Latin étendu-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:45 +msgid "Latin Extended-B" +msgstr "Latin étendu-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:49 +msgid "IPA Extensions" +msgstr "Extensions à l’API" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:53 +msgid "Spacing Modifier Letters" +msgstr "Diacritiques sans chasse combinés avec une espace" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:57 +msgid "Combining Diacritical Marks" +msgstr "Marques diacritiques combinantes" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:61 +msgid "Greek and Coptic" +msgstr "Grec et copte" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:65 +msgid "Cyrillic" +msgstr "Cyrillique" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:69 +msgid "Cyrillic Supplement" +msgstr "Supplément cyrillique" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:73 +msgid "Armenian" +msgstr "Arménien" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:77 +msgid "Hebrew" +msgstr "Hébreu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:81 +msgid "Arabic" +msgstr "Arabe" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:85 +msgid "Syriac" +msgstr "Syriaque" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:89 +msgid "Arabic Supplement" +msgstr "Supplément arabe" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:93 +msgid "Thaana" +msgstr "Thaana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:97 +msgid "NKo" +msgstr "N’Ko" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:101 +msgid "Samaritan" +msgstr "Samaritain" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:105 +msgid "Mandaic" +msgstr "Mandéen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:109 +msgid "Syriac Supplement" +msgstr "Supplément Syriaque" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:113 +msgid "Arabic Extended-A" +msgstr "Arable étendu-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:117 +msgid "Devanagari" +msgstr "Devanagari" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:121 +msgid "Bengali" +msgstr "Bengali" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:125 +msgid "Gurmukhi" +msgstr "Gurmukhi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:129 +msgid "Gujarati" +msgstr "Gujarati" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:133 +msgid "Oriya" +msgstr "Oriya" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:137 +msgid "Tamil" +msgstr "Tamil" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:141 +msgid "Telugu" +msgstr "Télougou" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:145 +msgid "Kannada" +msgstr "Kannada" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:149 +msgid "Malayalam" +msgstr "Malayalam" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:153 +msgid "Sinhala" +msgstr "Sinhala" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:157 +msgid "Thai" +msgstr "Thaïlandais" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:161 +msgid "Lao" +msgstr "Lao" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:165 +msgid "Tibetan" +msgstr "Tibétain" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:169 +msgid "Myanmar" +msgstr "Myanmar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:173 +msgid "Georgian" +msgstr "Géorgien" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:177 +msgid "Hangul Jamo" +msgstr "Hangeul Jamo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:181 +msgid "Ethiopic" +msgstr "Éthiopien" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:185 +msgid "Ethiopic Supplement" +msgstr "Supplément éthiopien" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:189 +msgid "Cherokee" +msgstr "Cherokee" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:193 +msgid "Unified Canadian Aboriginal Syllabics" +msgstr "Syllabaire autochtone canadien unifié" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:197 +msgid "Ogham" +msgstr "Ogham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:201 +msgid "Runic" +msgstr "Runique" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:205 +msgid "Tagalog" +msgstr "Runique" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:209 +msgid "Hanunoo" +msgstr "Hanunoo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:213 +msgid "Buhid" +msgstr "Buhid" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:217 +msgid "Tagbanwa" +msgstr "Buhid" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:221 +msgid "Khmer" +msgstr "Khmer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:225 +msgid "Mongolian" +msgstr "Mongol" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:229 +msgid "Unified Canadian Aboriginal Syllabics Extended" +msgstr "Syllabaires canadiens autochtones unifiés étendus" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:233 +msgid "Limbu" +msgstr "Limbu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:237 +msgid "Tai Le" +msgstr "Tai Le" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:241 +msgid "New Tai Lue" +msgstr "Nouveau Tai Lue" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:245 +msgid "Khmer Symbols" +msgstr "Symboles khmers" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:249 +msgid "Buginese" +msgstr "Bouguinais" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:253 +msgid "Tai Tham" +msgstr "Tai Tham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:257 +msgid "Combining Diacritical Marks Extended" +msgstr "Marques diacritiques combinantes étendues" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:261 +msgid "Balinese" +msgstr "Balinais" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:265 +msgid "Sundanese" +msgstr "Sundanais" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:269 +msgid "Batak" +msgstr "Batak" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:273 +msgid "Lepcha" +msgstr "Lepcha" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:277 +msgid "Ol Chiki" +msgstr "Ol Chiki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:281 +msgid "Cyrillic Extended-C" +msgstr "Cyrillique étendu-C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:285 +msgid "Georgian Extended" +msgstr "Géorgien étendu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:289 +msgid "Sundanese Supplement" +msgstr "Supplément sundanais" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:293 +msgid "Vedic Extensions" +msgstr "Extensions védiques" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:297 +msgid "Phonetic Extensions" +msgstr "Extensions phonétiques" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:301 +msgid "Phonetic Extensions Supplement" +msgstr "Supplément d’extensions phonétiques" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:305 +msgid "Combining Diacritical Marks Supplement" +msgstr "Supplément marques diacritiques combinantes" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:309 +msgid "Latin Extended Additional" +msgstr "Latin étendu additionnel" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:313 +msgid "Greek Extended" +msgstr "Grec étendu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:317 +msgid "General Punctuation" +msgstr "Ponctuation générale" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:321 +msgid "Superscripts and Subscripts" +msgstr "Exposants et indices" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:325 +msgid "Currency Symbols" +msgstr "Symboles monétaires" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:329 +msgid "Combining Diacritical Marks for Symbols" +msgstr "Marques diacritiques combinantes pour symboles" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:333 +msgid "Letterlike Symbols" +msgstr "Symboles Letterlike" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:337 +msgid "Number Forms" +msgstr "Formes numérales" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:341 +msgid "Arrows" +msgstr "Flèches" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:345 +msgid "Mathematical Operators" +msgstr "Opérateurs mathématiques" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:349 +msgid "Miscellaneous Technical" +msgstr "Divers techniques" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:353 +msgid "Control Pictures" +msgstr "Contrôler des photos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:357 +msgid "Optical Character Recognition" +msgstr "Reconnaissance optique de caractères" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:361 +msgid "Enclosed Alphanumerics" +msgstr "Alphanumériques cerclés" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:365 +msgid "Box Drawing" +msgstr "Dessiner des boîtes" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:369 +msgid "Block Elements" +msgstr "Éléments blocs" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:373 +msgid "Geometric Shapes" +msgstr "Formes géométriques" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:377 +msgid "Miscellaneous Symbols" +msgstr "Symboles divers" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:381 +msgid "Dingbats" +msgstr "Casseaux" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:385 +msgid "Miscellaneous Mathematical Symbols-A" +msgstr "Divers symboles mathématiques-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:389 +msgid "Supplemental Arrows-A" +msgstr "Flèches-A supplémentaires" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:393 +msgid "Braille Patterns" +msgstr "Motifs en braille" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:397 +msgid "Supplemental Arrows-B" +msgstr "Flèches-B supplémentaires" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:401 +msgid "Miscellaneous Mathematical Symbols-B" +msgstr "Symboles mathématiques-B divers" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:405 +msgid "Supplemental Mathematical Operators" +msgstr "Supplément opérateurs mathématiques" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:409 +msgid "Miscellaneous Symbols and Arrows" +msgstr "Symboles et flèches divers" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:413 +msgid "Glagolitic" +msgstr "Glagolitique" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:417 +msgid "Latin Extended-C" +msgstr "Latin étendu-C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:421 +msgid "Coptic" +msgstr "Copte" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:425 +msgid "Georgian Supplement" +msgstr "Supplément géorgien" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:429 +msgid "Tifinagh" +msgstr "Tifinagh" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:433 +msgid "Ethiopic Extended" +msgstr "Éthiopien étendu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:437 +msgid "Cyrillic Extended-A" +msgstr "Cyrillique étendu-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:441 +msgid "Supplemental Punctuation" +msgstr "Ponctuation complémentaire" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:445 +msgid "CJK Radicals Supplement" +msgstr "Supplément Radicaux CJC" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:449 +msgid "Kangxi Radicals" +msgstr "Radicaux Kangxi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:453 +msgid "Ideographic Description Characters" +msgstr "Caractères de description idéographique" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:457 +msgid "CJK Symbols and Punctuation" +msgstr "Symboles et ponctuation CJC" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:461 +msgid "Hiragana" +msgstr "Hiragana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:465 +msgid "Katakana" +msgstr "Katakana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:469 +msgid "Bopomofo" +msgstr "Bopomofo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:473 +msgid "Hangul Compatibility Jamo" +msgstr "Compatibilité Hangeul Jamo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:477 +msgid "Kanbun" +msgstr "Kanbun" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:481 +msgid "Bopomofo Extended" +msgstr "Bopomofo étendu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:485 +msgid "CJK Strokes" +msgstr "Traits CJC" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:489 +msgid "Katakana Phonetic Extensions" +msgstr "Extensions Katakana phonétiques" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:493 +msgid "Enclosed CJK Letters and Months" +msgstr "Lettres et mois CJC cerclés" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:497 +msgid "CJK Compatibility" +msgstr "Compatibilité CJC" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:501 +msgid "CJK Unified Ideographs Extension A" +msgstr "Idéographes unifiés CJC Extension A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:505 +msgid "Yijing Hexagram Symbols" +msgstr "Symboles hexagrammes Yì Jīng" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:509 +msgid "CJK Unified Ideographs" +msgstr "Idéographes unifiés CJC" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:513 +msgid "Yi Syllables" +msgstr "Syllables Yi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:517 +msgid "Yi Radicals" +msgstr "Radicaux Yi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:521 +msgid "Lisu" +msgstr "Lisu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:525 +msgid "Vai" +msgstr "Vai" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:529 +msgid "Cyrillic Extended-B" +msgstr "Cyrillique étendu-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:533 +msgid "Bamum" +msgstr "Bamoun" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:537 +msgid "Modifier Tone Letters" +msgstr "Lettres modificatives de ton" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:541 +msgid "Latin Extended-D" +msgstr "Latin étendu-D" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:545 +msgid "Syloti Nagri" +msgstr "Sylotî nâgrî" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:549 +msgid "Common Indic Number Forms" +msgstr "Formes numériques communes indiennes" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:553 +msgid "Phags-pa" +msgstr "Phags-pa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:557 +msgid "Saurashtra" +msgstr "Saurachtra" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:561 +msgid "Devanagari Extended" +msgstr "Devanagari étendu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:565 +msgid "Kayah Li" +msgstr "Kayah Li" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:569 +msgid "Rejang" +msgstr "Rejang" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:573 +msgid "Hangul Jamo Extended-A" +msgstr "Hangeul Jamo étendu-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:577 +msgid "Javanese" +msgstr "Javanais" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:581 +msgid "Myanmar Extended-B" +msgstr "Myanmar étendu-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:585 +msgid "Cham" +msgstr "Cham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:589 +msgid "Myanmar Extended-A" +msgstr "Myanmar étendu-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:593 +msgid "Tai Viet" +msgstr "Tai Viet" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:597 +msgid "Meetei Mayek Extensions" +msgstr "Extensions meetei mayek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:601 +msgid "Ethiopic Extended-A" +msgstr "Éthiopien étendu-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:605 +msgid "Latin Extended-E" +msgstr "Latin étendu-E" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:609 +msgid "Cherokee Supplement" +msgstr "Supplément cherokee" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:613 +msgid "Meetei Mayek" +msgstr "Meetei Mayek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:617 +msgid "Hangul Syllables" +msgstr "Syllabes hangeul" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:621 +msgid "Hangul Jamo Extended-B" +msgstr "Hangeul Jamo étendu-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:625 +msgid "High Surrogates" +msgstr "Substituts hauts" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:629 +msgid "High Private Use Surrogates" +msgstr "Substituts d’utilisation privé hauts" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:633 +msgid "Low Surrogates" +msgstr "Substituts bas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:637 +msgid "Private Use Area" +msgstr "Zone à usage privé" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:641 +msgid "CJK Compatibility Ideographs" +msgstr "Idéographes de compatibilité CJC" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:645 +msgid "Alphabetic Presentation Forms" +msgstr "Formes de présentation alphabétique" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:649 +msgid "Arabic Presentation Forms-A" +msgstr "Formes A de présentation arabes" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:653 +msgid "Variation Selectors" +msgstr "Sélecteurs de variante" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:657 +msgid "Vertical Forms" +msgstr "Formes verticales" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:661 +msgid "Combining Half Marks" +msgstr "Demi-signes combinatoires" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:665 +msgid "CJK Compatibility Forms" +msgstr "Formes de compatibilité CJC" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:669 +msgid "Small Form Variants" +msgstr "Petites variantes de forme" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:673 +msgid "Arabic Presentation Forms-B" +msgstr "Formes B de présentation arabes" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:677 +msgid "Halfwidth and Fullwidth Forms" +msgstr "Formes de demi et pleine chasse" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:681 +msgid "Specials" +msgstr "Caractères spéciaux" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:685 +msgid "Linear B Syllabary" +msgstr "Syllabaire linéaire B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:689 +msgid "Linear B Ideograms" +msgstr "Idéogrammes du linéaire B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:693 +msgid "Aegean Numbers" +msgstr "Nombres égéens" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:697 +msgid "Ancient Greek Numbers" +msgstr "Nombres grecs anciens" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:701 +msgid "Ancient Symbols" +msgstr "Symboles anciens" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:705 +msgid "Phaistos Disc" +msgstr "Disque de Phaistos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:709 +msgid "Lycian" +msgstr "Lycien" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:713 +msgid "Carian" +msgstr "Carien" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:717 +msgid "Coptic Epact Numbers" +msgstr "Nombres epact coptes" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:721 +msgid "Old Italic" +msgstr "Vieux italique" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:725 +msgid "Gothic" +msgstr "Gothique" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:729 +msgid "Old Permic" +msgstr "Permien" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:733 +msgid "Ugaritic" +msgstr "Ougqritique" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:737 +msgid "Old Persian" +msgstr "Vieux perse" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:741 +msgid "Deseret" +msgstr "Deseret" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:745 +msgid "Shavian" +msgstr "Shavien" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:749 +msgid "Osmanya" +msgstr "Osmanya" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:753 +msgid "Osage" +msgstr "Osage" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:757 +msgid "Elbasan" +msgstr "Elbasan" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:761 +msgid "Caucasian Albanian" +msgstr "Albanais du Caucase" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:765 +msgid "Linear A" +msgstr "Linéaire A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:769 +msgid "Cypriot Syllabary" +msgstr "Syllabaire Chypriote" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:773 +msgid "Imperial Aramaic" +msgstr "Araméen impérial" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:777 +msgid "Palmyrene" +msgstr "Palmyrène" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:781 +msgid "Nabataean" +msgstr "Nabatéen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:785 +msgid "Hatran" +msgstr "Hatran" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:789 +msgid "Phoenician" +msgstr "Phénicien" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:793 +msgid "Lydian" +msgstr "Lydien" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:797 +msgid "Meroitic Hieroglyphs" +msgstr "Hiéroglyphes Méroïtique" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:801 +msgid "Meroitic Cursive" +msgstr "Cursive Méroïtique" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:805 +msgid "Kharoshthi" +msgstr "Kharoshthi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:809 +msgid "Old South Arabian" +msgstr "Arabe ancien du Sud" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:813 +msgid "Old North Arabian" +msgstr "Arabe ancien du Nord" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:817 +msgid "Manichaean" +msgstr "Manichéen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:821 +msgid "Avestan" +msgstr "Avestique" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:825 +msgid "Inscriptional Parthian" +msgstr "Parthe des inscriptions" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:829 +msgid "Inscriptional Pahlavi" +msgstr "Pehelevi des inscriptions" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:833 +msgid "Psalter Pahlavi" +msgstr "Pehelevi des psautiers" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:837 +msgid "Old Turkic" +msgstr "Turc Ancien" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:841 +msgid "Old Hungarian" +msgstr "Hongrois Ancien" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:845 +msgid "Hanifi Rohingya" +msgstr "Hanifi Rohingya" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:849 +msgid "Rumi Numeral Symbols" +msgstr "Symboles numériques Rûmî" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:853 +msgid "Yezidi" +msgstr "Yézidi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:857 +msgid "Old Sogdian" +msgstr "Sogdiane ancien" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:861 +msgid "Sogdian" +msgstr "Sogdiane" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:865 +msgid "Chorasmian" +msgstr "Chorasmien" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:869 +msgid "Elymaic" +msgstr "Élymaïque" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:873 +msgid "Brahmi" +msgstr "Brahmî" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:877 +msgid "Kaithi" +msgstr "Kaïthî" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:881 +msgid "Sora Sompeng" +msgstr "Sora Sompeng" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:885 +msgid "Chakma" +msgstr "Chakma" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:889 +msgid "Mahajani" +msgstr "Mahajani" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:893 +msgid "Sharada" +msgstr "Sharada" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:897 +msgid "Sinhala Archaic Numbers" +msgstr "Nombre archaïque Cingalais" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:901 +msgid "Khojki" +msgstr "Khojkï" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:905 +msgid "Multani" +msgstr "Multani" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:909 +msgid "Khudawadi" +msgstr "Khudawadi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:913 +msgid "Grantha" +msgstr "Grantha" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:917 +msgid "Newa" +msgstr "Newa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:921 +msgid "Tirhuta" +msgstr "Tirhuta" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:925 +msgid "Siddham" +msgstr "Siddham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:929 +msgid "Modi" +msgstr "Modi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:933 +msgid "Mongolian Supplement" +msgstr "Supplément Mongol" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:937 +msgid "Takri" +msgstr "Takrî" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:941 +msgid "Ahom" +msgstr "Ahom" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:945 +msgid "Dogra" +msgstr "Dogri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:949 +msgid "Warang Citi" +msgstr "Warang Citi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:953 +msgid "Dives Akuru" +msgstr "Dives akuru" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:957 +msgid "Nandinagari" +msgstr "Nandinagari" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:961 +msgid "Zanabazar Square" +msgstr "Zanabazar carré" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:965 +msgid "Soyombo" +msgstr "Soyombo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:969 +msgid "Pau Cin Hau" +msgstr "Pau Cin Hau" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:973 +msgid "Bhaiksuki" +msgstr "Bhaiksuki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:977 +msgid "Marchen" +msgstr "Marchen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:981 +msgid "Masaram Gondi" +msgstr "Gondi de Masaram" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:985 +msgid "Gunjala Gondi" +msgstr "Gong" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:989 +msgid "Makasar" +msgstr "Maka" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:993 +msgid "Lisu Supplement" +msgstr "Supplément Lisu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:997 +msgid "Tamil Supplement" +msgstr "Supplément Tamoul" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1001 +msgid "Cuneiform" +msgstr "Cunéiforme" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1005 +msgid "Cuneiform Numbers and Punctuation" +msgstr "Nombres cunéiformes et ponctuation" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1009 +msgid "Early Dynastic Cuneiform" +msgstr "Cunéiforme dynastique archaïque" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1013 +msgid "Egyptian Hieroglyphs" +msgstr "Hiéroglyphes égyptiens" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1017 +msgid "Egyptian Hieroglyph Format Controls" +msgstr "Réglages du format hiéroglyphes égyptiens" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1021 +msgid "Anatolian Hieroglyphs" +msgstr "Hiéroglyphes hittites" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1025 +msgid "Bamum Supplement" +msgstr "Supplément Bamoun" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1029 +msgid "Mro" +msgstr "Mro" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1033 +msgid "Bassa Vah" +msgstr "Bassa Vah" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1037 +msgid "Pahawh Hmong" +msgstr "Pahawh Hmong" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1041 +msgid "Medefaidrin" +msgstr "Medf" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1045 +msgid "Miao" +msgstr "Miao" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1049 +msgid "Ideographic Symbols and Punctuation" +msgstr "Symboles et ponctuation idéographiques" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1053 +msgid "Tangut" +msgstr "Tangoute" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1057 +msgid "Tangut Components" +msgstr "Composants tangoute" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1061 +msgid "Khitan Small Script" +msgstr "Petite écriture khitan" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1065 +msgid "Tangut Supplement" +msgstr "Supplément tangoute" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1069 +msgid "Kana Supplement" +msgstr "Supplément Kana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1073 +msgid "Kana Extended-A" +msgstr "Kana étendu A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1077 +msgid "Small Kana Extension" +msgstr "Extension de petits Kana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1081 +msgid "Nushu" +msgstr "Nushu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1085 +msgid "Duployan" +msgstr "Duployan" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1089 +msgid "Shorthand Format Controls" +msgstr "Réglages du format abrégé" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1093 +msgid "Byzantine Musical Symbols" +msgstr "Symboles musicaux byzantins" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1097 +msgid "Musical Symbols" +msgstr "Symboles musicaux" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1101 +msgid "Ancient Greek Musical Notation" +msgstr "Notation musicale grecque ancienne" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1105 +msgid "Mayan Numerals" +msgstr "Chiffres mayas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1109 +msgid "Tai Xuan Jing Symbols" +msgstr "Symboles Tai Xuan Jing" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1113 +msgid "Counting Rod Numerals" +msgstr "Chiffres-bâtonnets chinois" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1117 +msgid "Mathematical Alphanumeric Symbols" +msgstr "Symboles mathématiques alphanumériques" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1121 +msgid "Sutton SignWriting" +msgstr "SignWriting de Sutton" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1125 +msgid "Glagolitic Supplement" +msgstr "Supplément Glagolitique" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1129 +msgid "Nyiakeng Puachue Hmong" +msgstr "Nyiakeng Puachue Hmong" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1133 +msgid "Wancho" +msgstr "Wantcho" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1137 +msgid "Mende Kikakui" +msgstr "Écriture mendé Kikakui" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1141 +msgid "Adlam" +msgstr "Adlam" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1145 +msgid "Indic Siyaq Numbers" +msgstr "Nombres hindous Siyaq" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1149 +msgid "Ottoman Siyaq Numbers" +msgstr "Nombres ottomans Siyaq" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1153 +msgid "Arabic Mathematical Alphabetic Symbols" +msgstr "Symboles mathématiques alphanumériques arabes" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1157 +msgid "Mahjong Tiles" +msgstr "Tuiles de mahjong" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1161 +msgid "Domino Tiles" +msgstr "Dominos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1165 +msgid "Playing Cards" +msgstr "Cartes à jouer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1169 +msgid "Enclosed Alphanumeric Supplement" +msgstr "Supplément alphanumérique cerclé" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1173 +msgid "Enclosed Ideographic Supplement" +msgstr "Supplément idéographique cerclé" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1177 +msgid "Miscellaneous Symbols and Pictographs" +msgstr "Symboles et pictogrammes divers" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1181 +msgid "Emoticons" +msgstr "Émoticônes" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1185 +msgid "Ornamental Dingbats" +msgstr "Casseaux ornementaux" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1189 +msgid "Transport and Map Symbols" +msgstr "Symboles du transport et cartographiques" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1193 +msgid "Alchemical Symbols" +msgstr "Symboles alchimiques" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1197 +msgid "Geometric Shapes Extended" +msgstr "Formes géométriques étendues" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1201 +msgid "Supplemental Arrows-C" +msgstr "Flèches-C supplémentaires" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1205 +msgid "Supplemental Symbols and Pictographs" +msgstr "Symboles et pictogrammes supplémentaires" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1209 +msgid "Chess Symbols" +msgstr "Symboles d’échecs" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1213 +msgid "Symbols and Pictographs Extended-A" +msgstr "Symboles et pictogrammes étendus-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1217 +msgid "Symbols for Legacy Computing" +msgstr "Symboles pour informatique ancienne" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1221 +msgid "CJK Unified Ideographs Extension B" +msgstr "Idéographes unifiés CJC Extension B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1225 +msgid "CJK Unified Ideographs Extension C" +msgstr "Idéographes unifiés CJC Extension C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1229 +msgid "CJK Unified Ideographs Extension D" +msgstr "Idéographes unifiés CJC Extension D" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1233 +msgid "CJK Unified Ideographs Extension E" +msgstr "Idéographes unifiés CJC Extension E" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1237 +msgid "CJK Unified Ideographs Extension F" +msgstr "Idéographes unifiés CJC Extension F" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1241 +msgid "CJK Compatibility Ideographs Supplement" +msgstr "Idéographes de compatibilité CJK supplémentaires" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1245 +msgid "CJK Unified Ideographs Extension G" +msgstr "Idéographes unifiés CJC Extension G" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1249 +msgid "Tags" +msgstr "Balises" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1253 +msgid "Variation Selectors Supplement" +msgstr "Suppléments de sélecteurs de variante" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1257 +msgid "Supplementary Private Use Area-A" +msgstr "Area-A Zone à usage privé supplémentaire" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1261 +msgid "Supplementary Private Use Area-B" +msgstr "Area-B Zone à usage privé supplémentaire" + +#: tools/main.vala:51 +msgid "List engine name only" +msgstr "Ne lister que les noms des moteurs" + +#: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 +msgid "Can't connect to IBus.\n" +msgstr "Connexion à IBus impossible.\n" + +#: tools/main.vala:93 +#, c-format +msgid "language: %s\n" +msgstr "langue : %s\n" + +#: tools/main.vala:161 +msgid "No engine is set.\n" +msgstr "Aucun moteur n’est configuré.\n" + +#: tools/main.vala:169 +msgid "Set global engine failed.\n" +msgstr "Échec de la configuration du moteur global.\n" + +#: tools/main.vala:174 +msgid "Get global engine failed.\n" +msgstr "Échec de la récupération du moteur global.\n" + +#: tools/main.vala:217 +msgid "Read the system registry cache." +msgstr "Lire le cache du registre système." + +#: tools/main.vala:219 +msgid "Read the registry cache FILE." +msgstr "Lire le fichier FILE du cache du registre système." + +#: tools/main.vala:237 tools/main.vala:242 +msgid "The registry cache is invalid.\n" +msgstr "Le cache du registre est invalide.\n" + +#: tools/main.vala:257 +msgid "Write the system registry cache." +msgstr "Enregistrer le cache du registre système." + +#: tools/main.vala:259 +msgid "Write the registry cache FILE." +msgstr "Enregistrer le fichier FILE du cache du registre." + +#: tools/main.vala:295 +msgid "" +"Use engine schema paths instead of ibus core, which can be comma-separated " +"values." +msgstr "" +"Utilisez les chemins de schéma du processeur au lieu du noyau ibus, qui " +"peuvent être des valeurs séparées par des virgules." -#: ../setup/setup.ui.h:20 -msgid "Bottom left corner" -msgstr "Coin inférieur gauche" +#: tools/main.vala:381 +msgid "Resetting…" +msgstr "Réinitialisation…" -#: ../setup/setup.ui.h:21 -msgid "Bottom right corner" -msgstr "Coin inférieur droit" +#: tools/main.vala:399 +msgid "Done" +msgstr "Effectuée" -#: ../setup/setup.ui.h:22 -msgid "Candidates orientation:" -msgstr "Orientation de la liste des candidats :" +#: tools/main.vala:444 +msgid "Set or get engine" +msgstr "Définir ou obtenir le moteur" -#: ../setup/setup.ui.h:23 -msgid "Custom" -msgstr "Personnalisée" +#: tools/main.vala:445 +msgid "Exit ibus-daemon" +msgstr "Quitter ibus-daemon" -#: ../setup/setup.ui.h:24 -msgid "Disable:" -msgstr "Désactiver :" +#: tools/main.vala:446 +msgid "Show available engines" +msgstr "Afficher les moteurs disponibles" -#: ../setup/setup.ui.h:25 -msgid "Embed preedit text in application window" -msgstr "Insérer le texte en cours d'édition dans la fenêtre de l'application" +#: tools/main.vala:447 +msgid "(Not implemented)" +msgstr "(Non implémenté)" -#: ../setup/setup.ui.h:26 -msgid "Embed the preedit text of input method in the application window" -msgstr "" -"Insérer le texte en cours d'édition par la méthode d'entrée dans la fenêtre " -"de l'application" +#: tools/main.vala:448 +msgid "Restart ibus-daemon" +msgstr "Redémarrer ibus-daemon" -#: ../setup/setup.ui.h:27 -msgid "Embedded in menu" -msgstr "Insérée dans le menu" +#: tools/main.vala:449 +msgid "Show version" +msgstr "Afficher la version" -#: ../setup/setup.ui.h:28 -msgid "Enable or disable:" -msgstr "Activer / désactiver :" +#: tools/main.vala:450 +msgid "Show the content of registry cache" +msgstr "Afficher le contenu du cache du registre" -#: ../setup/setup.ui.h:29 -msgid "Enable:" -msgstr "Activer :" +#: tools/main.vala:451 +msgid "Create registry cache" +msgstr "Créer le cache du registre" -#: ../setup/setup.ui.h:30 -msgid "General" -msgstr "Général" +#: tools/main.vala:452 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "Afficher l’adresse D-Bus de ibus-daemon" -#: ../setup/setup.ui.h:31 -msgid "Horizontal" -msgstr "Horizontale" +#: tools/main.vala:453 +msgid "Show the configuration values" +msgstr "Afficher les valeurs de configuration" -#: ../setup/setup.ui.h:34 -msgid "Language panel position:" -msgstr "Afficher la barre de langue :" +#: tools/main.vala:454 +msgid "Reset the configuration values" +msgstr "Réinitialiser les valeurs de configuration" -#: ../setup/setup.ui.h:35 -msgid "Move down the selected input method in the enabled input methods" -msgstr "" -"Déplacer vers le bas la méthode d'entrée selectionnée dans la liste des " -"méthodes d'entrée actives" +#: tools/main.vala:456 +msgid "Save emoji on dialog to clipboard" +msgstr "Copie l’émoticône dans la boite de dialogue vers le presse-papier" -#: ../setup/setup.ui.h:36 -msgid "Move up the selected input method in the enabled input methods list" +#: tools/main.vala:458 +msgid "Show this information" +msgstr "Afficher cette information" + +#: tools/main.vala:464 +#, c-format +msgid "" +"Usage: %s COMMAND [OPTION...]\n" +"\n" msgstr "" -"Déplacer vers le haut la méthode d'entrée selectionnée dans la liste des " -"méthodes d'entrée actives" +"Utilisation : %s COMMANDE [OPTION…]\n" +"\n" -#: ../setup/setup.ui.h:37 -msgid "Next input method:" -msgstr "Méthode d'entrée suivante :" +#: tools/main.vala:465 +msgid "Commands:\n" +msgstr "Commandes :\n" -#: ../setup/setup.ui.h:38 -msgid "Previous input method:" -msgstr "Méthode d'entrée précédente :" +#: tools/main.vala:494 +#, c-format +msgid "%s is unknown command!\n" +msgstr "%s n’est pas une commande connue !\n" -#: ../setup/setup.ui.h:39 -msgid "Remove the selected input method from the enabled input methods" -msgstr "" -"Supprimer la méthode d'entrée selectionnée des méthodes d'entrées actives" +#: ui/gtk3/emojier.vala:233 +msgid "Favorites" +msgstr "Favoris" -#: ../setup/setup.ui.h:40 -msgid "Set the behavior of ibus how to show or hide language bar" -msgstr "Permet de choisir l'affichage de la barre de langue d'ibus" +#: ui/gtk3/emojier.vala:234 +msgid "Others" +msgstr "Autres" -#: ../setup/setup.ui.h:41 -msgid "Set the orientation of candidates in lookup table" -msgstr "Permet de choisir l'orientation de la liste des candidats" +#: ui/gtk3/emojier.vala:235 +msgid "Open Unicode choice" +msgstr "Ouvrir un choix Unicode" -#: ../setup/setup.ui.h:44 -msgid "Show information of the selected input method" -msgstr "Afficher les informations de la méthode d'entrée selectionnée" +#: ui/gtk3/emojier.vala:995 +msgid "Bring back emoji choice" +msgstr "Rétablir le choix emoji" -#: ../setup/setup.ui.h:46 -msgid "Show input method's name on language bar when check the checkbox" +#: ui/gtk3/emojier.vala:1097 +msgid "Page Down" +msgstr "Page suivante" + +#: ui/gtk3/emojier.vala:1108 +msgid "Page Up" +msgstr "Page précédente" + +#: ui/gtk3/emojier.vala:1111 +msgid "Show emoji variants" +msgstr "Montrer les variantes d’émoticônes" + +#: ui/gtk3/emojier.vala:1112 +msgid "Close" +msgstr "Fermer" + +#: ui/gtk3/emojier.vala:1118 +msgid "Menu" +msgstr "Menu" + +#: ui/gtk3/emojier.vala:1129 +msgid "Click to view a warning message" +msgstr "Cliquez pour voir le message d’avertissement" + +#: ui/gtk3/emojier.vala:1173 +msgid "Loading a Unicode dictionary:" +msgstr "Chargement d’un dictionnaire Unicode :" + +#: ui/gtk3/emojier.vala:1419 +#, c-format +msgid "Code point: %s" +msgstr "Point de code : %s" + +#: ui/gtk3/emojier.vala:1425 +msgid "Has emoji variants" +msgstr "A des variantes d’émoticônes" + +#: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 +#, c-format +msgid "Description: %s" +msgstr "Description : %s" + +#: ui/gtk3/emojier.vala:1592 +msgid "None" +msgstr "Aucune" + +#: ui/gtk3/emojier.vala:1616 +#, c-format +msgid "Annotations: %s" +msgstr "Annotations : %s" + +#: ui/gtk3/emojier.vala:1642 +#, c-format +msgid "Name: %s" +msgstr "Nom : %s" + +#: ui/gtk3/emojier.vala:1650 +#, c-format +msgid "Alias: %s" +msgstr "Alias : %s" + +#: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 +#: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1169 +msgid "Emoji Choice" +msgstr "Choix d’émoticônes" + +#: ui/gtk3/emojier.vala:2142 +msgid "Unicode Choice" +msgstr "Choix Unicode" + +#: ui/gtk3/emojier.vala:2432 +msgid "" +"Failed to get the current text application. Please re-focus your " +"application. E.g. Press Esc key several times to release the emoji typing " +"mode, click your desktop and click your text application again." msgstr "" -"Afficher le nom de la méthode d'entrée sur la barre de langue lorsque la " -"case est cochée" +"Impossible d’obtenir l’application texte actuelle. Veuillez sélectionner à " +"nouveau votre application. Par exemple, appuyez plusieurs fois sur la touche " +"Échap pour relâcher le mode de saisie emoji, cliquez sur votre bureau et " +"cliquez à nouveau sur votre application texte." + +#: ui/gtk3/emojierapp.vala:47 +msgid "Canceled to choose an emoji." +msgstr "Abandon du choix d’émoticône." + +#: ui/gtk3/emojierapp.vala:67 +msgid "Copied an emoji to your clipboard." +msgstr "Une émoticône a été copiée dans le presse-papier." + +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ui/gtk3/emojierapp.vala:126 +msgid "\"FONT\" for emoji characters on emoji dialog" +msgstr "« POLICE » des émoticônes dans la boite de dialogue" + +#: ui/gtk3/emojierapp.vala:127 +msgid "FONT" +msgstr "POLICE" + +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ui/gtk3/emojierapp.vala:132 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" +msgstr "" +"« LANGUE » des annotations dans la boite de dialogue des émoticône. Par ex : " +"« fr »" -#: ../setup/setup.ui.h:47 -msgid "Show language panel:" -msgstr "Afficher la barre de langue :" +#: ui/gtk3/emojierapp.vala:133 +msgid "LANG" +msgstr "LANGUE" -#: ../setup/setup.ui.h:48 -msgid "Start ibus on login" -msgstr "Démarrer IBus lors de la connexion" +#: ui/gtk3/emojierapp.vala:135 +msgid "Emoji annotations can be match partially" +msgstr "Les annotations d’émoticônes peuvent correspondre partiellement" -#: ../setup/setup.ui.h:49 -msgid "The shortcut keys for switching to next input method in the list" -msgstr "" -"Raccourci clavier pour passer à la méthode d'entrée suivante de la liste" +#: ui/gtk3/emojierapp.vala:139 +msgid "Match with the length of the specified integer" +msgstr "Faire correspondre avec la longueur de l’entier indiqué" -#: ../setup/setup.ui.h:50 -msgid "The shortcut keys for switching to previous input method in the list" -msgstr "" -"Raccourci clavier pour revenir à la méthode d'entrée précédente de la liste" +#: ui/gtk3/emojierapp.vala:143 +msgid "Match with the condition of the specified integer" +msgstr "Faire correspondre avec la condition de l’entier indiqué" -#: ../setup/setup.ui.h:52 -msgid "Top left corner" -msgstr "Coin supérieur gauche" +#: ui/gtk3/panel.vala:292 ui/gtk3/panel.vala:323 +msgid "IBus Panel" +msgstr "Panneau IBUS" -#: ../setup/setup.ui.h:53 -msgid "Top right corner" -msgstr "Coin supérieur droit" +#: ui/gtk3/panel.vala:975 +#, c-format +msgid "" +"Your configured input method %s does not exist in IBus input methods so \"US" +"\" layout was configured instead of your input method." +msgstr "" +"Votre méthode d’entrée configurée %s n’existe pas dans les méthodes d’entrée " +"IBus, la disposition « US » sera utilisée à la place de votre méthode " +"d’entrée." -#: ../setup/setup.ui.h:54 -msgid "Use custom font:" -msgstr "Utiliser une police personnalisée :" +#: ui/gtk3/panel.vala:980 +msgid "" +"At least one of your configured input methods does not exist in IBus input " +"methods." +msgstr "" +"Au moins une de vos méthodes d’entrée configurées n’existe pas dans les " +"méthodes d’entrée IBus." -#: ../setup/setup.ui.h:57 -msgid "Vertical" -msgstr "Verticale" +#: ui/gtk3/panel.vala:983 +msgid "" +"Please run `ibus-setup` command, open \"Input Method\" tab, and configure " +"your input methods again." +msgstr "" +"Veuillez exécuter la commande `ibus-setup`, ouvrir l’onglet « Méthodes d’" +"entrée », et configurer à nouveau vos méthodes d’entrée." + +#: ui/gtk3/panel.vala:1141 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus est un IME intelligent pour Linux/Unix." -#: ../setup/setup.ui.h:58 -msgid "When active" -msgstr "Uniquement lorsque active" +#: ui/gtk3/panel.vala:1145 +msgid "translator-credits" +msgstr "Julien Humbert " +#: ui/gtk3/panel.vala:1164 +msgid "Preferences" +msgstr "Préférences" +#: ui/gtk3/panel.vala:1190 +msgid "Restart" +msgstr "Redémarrer" + +#: ui/gtk3/panel.vala:1194 +msgid "Quit" +msgstr "Quitter" + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 +msgid "default:LTR" +msgstr "default:LTR" + +#~ msgid "Kbd" +#~ msgstr "Kbd" + +#~ msgid "" +#~ "IBus\n" +#~ "The intelligent input bus\n" +#~ "Homepage: https://github.com/ibus/ibus/wiki\n" +#~ "\n" +#~ "\n" +#~ "\n" +#~ msgstr "" +#~ "IBus\n" +#~ "The intelligent input bus\n" +#~ "Page d’accueil : https://github.com/ibus/ibus/wiki\n" +#~ "\n" +#~ "\n" +#~ "\n" + +#~ msgid "Start ibus on login" +#~ msgstr "Démarrer IBus lors de la connexion" + +#~ msgid "Startup" +#~ msgstr "Démarrage" diff --git a/po/gu.po b/po/gu.po index e8fd53b4b..accb7f1f3 100644 --- a/po/gu.po +++ b/po/gu.po @@ -1,542 +1,3058 @@ -# translation of ibus.master.gu.po to Gujarati # Gujarati translation of ibus. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2018 Takao Fujiwara # This file is distributed under the same license as the ibus package. # -# Ankit Patel , 2010. -# Sweta Kothari , 2009-2011. +# Translators: +# Ankit Patel , 2014 +# Ankit Patel , 2010 +# sweta , 2009-2010 +# sweta , 2011-2013 +# sweta , 2013-2014 +# fujiwara , 2015. #zanata +# fujiwara , 2018. #zanata msgid "" msgstr "" -"Project-Id-Version: ibus.master.gu\n" -"Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/list\n" -"POT-Creation-Date: 2011-03-08 12:32+0900\n" -"PO-Revision-Date: 2011-03-22 15:23+0000\n" -"Last-Translator: Sweta Kothari \n" -"Language-Team: Gujarati \n" -"Language: gu\n" +"Project-Id-Version: IBus\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2018-02-20 17:31+0900\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.11.4\n" +"PO-Revision-Date: 2018-02-20 04:22-0500\n" +"Last-Translator: Copied by Zanata \n" +"Language-Team: Gujarati (http://www.transifex.com/projects/p/ibus/language/" +"gu/)\n" +"Language: gu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Zanata 3.9.6\n" -#: ../bus/ibus.desktop.in.h:1 -msgid "IBus" -msgstr "IBus" +#: ../setup/setup.ui.h:1 +msgid "Horizontal" +msgstr "આડુ" -#: ../bus/ibus.desktop.in.h:2 -msgid "Input Method Framework" -msgstr "ઇનપુટ પદ્દતિ ફ્રેમવર્ક" +#: ../setup/setup.ui.h:2 +msgid "Vertical" +msgstr "ઊભું" -#: ../bus/ibus.desktop.in.h:3 -msgid "Start IBus Input Method Framework" -msgstr "IBus ઇનપુટ પદ્દતિ ફ્રેમવર્કને શરૂ કરો" +#: ../setup/setup.ui.h:3 +msgid "Top left corner" +msgstr "ઉંચે ડાબી બાજુનો ખૂણો" -#: ../ibus/_config.py.in:39 -msgid "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." -msgstr "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +#: ../setup/setup.ui.h:4 +msgid "Top right corner" +msgstr "ઉંચે જમણી બાજુનો ખૂણો" -#: ../ibus/lang.py:41 -msgid "Other" -msgstr "બીજા" +#: ../setup/setup.ui.h:5 +msgid "Bottom left corner" +msgstr "નીચે ડાબી બાજુનો ખૂણો" -#: ../ui/gtk/candidatepanel.py:264 -msgid "Previous page" -msgstr "પહેલાનુ પાનું" +#: ../setup/setup.ui.h:6 +msgid "Bottom right corner" +msgstr "નીચે જમણી બાજુનો ખૂણો" -#: ../ui/gtk/candidatepanel.py:269 -msgid "Next page" -msgstr "પછીનુ પાનું" +#: ../setup/setup.ui.h:7 +msgid "Custom" +msgstr "વૈવિધ્ય" -#: ../ui/gtk/main.py:55 -msgid "" -"Some input methods have been installed, removed or updated. Please restart " -"ibus input platform." +#: ../setup/setup.ui.h:8 +msgid "Do not show" +msgstr "બતાવશો નહિ" + +#: ../setup/setup.ui.h:9 +msgid "Hide automatically" +msgstr "આપોઆપ છુપાવો" + +#: ../setup/setup.ui.h:10 +msgid "Always" +msgstr "હંમેશા" + +#: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 +msgid "IBus Preferences" +msgstr "IBus પસંદગીઓ" + +#: ../setup/setup.ui.h:12 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "યાદીમાં પછીની ઇનપુટ પદ્દતિને ખસેડવા માટે ટૂંકાણ કીઓ" + +#: ../setup/setup.ui.h:13 +msgid "Next input method:" +msgstr "પછીની ઇનપુટ પદ્દતિ:" + +#: ../setup/setup.ui.h:14 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "યાદીમાં પહેલાંની ઇનપુટ પદ્દતિને ખસેડવા માટે ટૂંકાણ કીઓ" + +#: ../setup/setup.ui.h:15 +msgid "Previous input method:" +msgstr "પહેલાંની ઇનપુટ પદ્દતિ:" + +#: ../setup/setup.ui.h:16 +msgid "..." +msgstr "..." + +#: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:16 +msgid "The shortcut keys for turning input method on or off" +msgstr "ઇનપુટ પદ્દતિને ફેરબદલી કરવાનું ચાલુ અથવા ા બંધ કરવા માટે ટૂંકાણ કીઓ" + +#: ../setup/setup.ui.h:18 +msgid "Enable or disable:" +msgstr "સક્રિય અથવા નિષ્ક્રિય:" + +#: ../setup/setup.ui.h:19 +msgid "Enable:" +msgstr "સક્રિય:" + +#: ../setup/setup.ui.h:20 +msgid "Disable:" +msgstr "નિષ્ક્રિય:" + +#: ../setup/setup.ui.h:21 +msgid "Keyboard Shortcuts" +msgstr "કિબોર્ડ ટૂંકાણો" + +#: ../setup/setup.ui.h:22 +msgid "Set the orientation of candidates in lookup table" +msgstr "કોષ્ટક જોવામાં સભ્યોની દિશાને સુયોજિત કરો" + +#: ../setup/setup.ui.h:23 +msgid "Candidates orientation:" +msgstr "ઉમેદવારોની દિશા:" + +#: ../setup/setup.ui.h:24 +msgid "Set the behavior of ibus how to show or hide language bar" msgstr "" -"અમુક ઇનપુટ પદ્દતિઓને સ્થાપિત, દૂર અથવા સુધારી દેવામાં આવી છે. મહેરબાની કરીને" -" ibus ઇનપુટ પ્લેટફોર્મને પુન:શરૂ કરો." +"ભાષા પેનલને કેવી રીતે બતાવવી અથવા છુપાડવી તે માટે ibus નાં વર્ણતૂકને સુયોજિત " +"કરો" -#: ../ui/gtk/main.py:59 -msgid "Restart Now" -msgstr "હવે પુન:શરૂ કરો" +#: ../setup/setup.ui.h:25 +msgid "Show property panel:" +msgstr "ગુણધર્મ પેનલ બતાવો:" -#: ../ui/gtk/main.py:60 -msgid "Later" -msgstr "પછી" +#: ../setup/setup.ui.h:26 +msgid "Language panel position:" +msgstr "ભાષા પેનલનું સ્થાન:" -#: ../ui/gtk/panel.py:109 -msgid "IBus input method framework" -msgstr "IBus ઇનપુટ પદ્દતિ ફ્રેમવર્ક" +#: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:36 +msgid "Show icon on system tray" +msgstr "સિસ્ટમ ટ્રે પર ચિહ્નને બતાવો" -#: ../ui/gtk/panel.py:327 -msgid "Restart" -msgstr "પુન:શરૂ કરો" +#: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:38 +msgid "Show input method name on language bar" +msgstr "ભાષા પેનલ પર ઇનપુટ પદ્દતિ નામને બતાવો" -#: ../ui/gtk/panel.py:414 -msgid "Turn off input method" -msgstr "ઇનપુટ પદ્દતિને બંધ કરો" +#: ../setup/setup.ui.h:29 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "" +"જ્યારે ચેકબોક્સને ચકાસતા હોય ત્યારે ભાષા પેનલ પર ઇનપુટ પદ્દતિનાં નામને બતાવો" -#: ../ui/gtk/panel.py:453 -msgid "No input window" -msgstr "ઇનપુટ વિન્ડો નથી" +#: ../setup/setup.ui.h:30 +msgid "Embed preedit text in application window" +msgstr "કાર્યક્રમ વિન્ડોમાં બેસાડેલ Preedit લખાણ" -#: ../ui/gtk/panel.py:484 -msgid "IBus is an intelligent input bus for Linux/Unix." -msgstr "IBus એ Linux/Unix માટે હોશિયાર ઇનપુટ બસ છે." +#: ../setup/setup.ui.h:31 +msgid "Embed the preedit text of input method in the application window" +msgstr "કાર યક્મ વિન્ડોમાં ઇનપુટ પદ્દતિનાં preedit લખાણને બેસાડો" -#: ../ui/gtk/panel.py:488 -msgid "translator-credits" -msgstr "શ્ર્વેતા કોઠારી " +#: ../setup/setup.ui.h:32 +msgid "Use custom font:" +msgstr "વૈવિધ્યપૂર્ણ ફોન્ટ વાપરો:" -#: ../ui/gtk/languagebar.py:106 -msgid "About the input method" -msgstr "ઇનપુટ પદ્દતિ વિશે" +#: ../setup/setup.ui.h:33 +msgid "Font and Style" +msgstr "ફોન્ટ અને શૈલીઓ" -#: ../ui/gtk/languagebar.py:214 -msgid "Switch input method" -msgstr "ઇનપુટ પદ્દતિને બદલો" +#: ../setup/setup.ui.h:34 +msgid "General" +msgstr "સામાન્ય" -#: ../ui/gtk/languagebar.py:357 ../ui/gtk/engineabout.py:33 -#: ../setup/engineabout.py:33 ../setup/setup.ui.h:16 -msgid "About" -msgstr "વિશે" +#. add button +#: ../setup/setup.ui.h:35 ../setup/enginedialog.py:61 +#: ../setup/keyboardshortcut.py:124 +msgid "_Add" +msgstr "ઉમેરો (_A)" -#: ../ui/gtk/languagebar.py:361 -msgid "About the Input Method" -msgstr "ઇનપુટ પદ્દતિ વિશે" +#: ../setup/setup.ui.h:36 +msgid "Add the selected input method into the enabled input methods" +msgstr "સક્રિય થયેલ ઇનપુટ પદ્દતિઓમાં પસંદ થયેલ ઇનપુટ પદ્દતિને ઉમેરો" -#: ../ui/gtk/engineabout.py:61 ../setup/engineabout.py:61 -#, python-format -msgid "Language: %s\n" -msgstr "ભાષા: %s\n" +#: ../setup/setup.ui.h:37 +msgid "_Remove" +msgstr "દૂર કરો (_R)" -#: ../ui/gtk/engineabout.py:63 ../setup/engineabout.py:63 -#, python-format -msgid "Keyboard layout: %s\n" -msgstr "કિબોર્ડ લેઆઉટ: %s\n" +#: ../setup/setup.ui.h:38 +msgid "Remove the selected input method from the enabled input methods" +msgstr "સક્રિય થયેલ ઇનપુટ પદ્દતિઓ માંથી પસંદ થયેલ ઇનપુટ પદ્દતિને દૂર કરો" -#: ../ui/gtk/engineabout.py:65 ../setup/engineabout.py:65 -#, python-format -msgid "Author: %s\n" -msgstr "લેખક: %s\n" +#: ../setup/setup.ui.h:39 +msgid "_Up" +msgstr "ઉપર કરો (_U)" -#: ../ui/gtk/engineabout.py:67 ../setup/engineabout.py:67 -msgid "Description:\n" -msgstr "વર્ણન:\n" +#: ../setup/setup.ui.h:40 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "સક્રિય થયેલ ઇનપુટ પદ્દતિઓ યાદીમાં પસંદ થયેલ ઇનપુટ પદ્દતિને ઉપર ખસેડો" -#: ../setup/main.py:102 -msgid "trigger" -msgstr "ટ્રીગર" +#: ../setup/setup.ui.h:41 +msgid "_Down" +msgstr "નીચે કરો (_D)" -#: ../setup/main.py:113 -msgid "enable" -msgstr "સક્રિય" +#: ../setup/setup.ui.h:42 +msgid "Move down the selected input method in the enabled input methods" +msgstr "સક્રિય થયેલ ઇનપુટ પદ્દતિઓમાં પસંદ થયેલ ઇનપુટ પદ્દતિને નીચે ખસેડો" -#: ../setup/main.py:124 -msgid "disable" -msgstr "નિષ્ક્રિય" +#: ../setup/setup.ui.h:43 +msgid "_About" +msgstr "વિશે (_A)" -#: ../setup/main.py:135 -msgid "next input method" -msgstr "પછીની ઇનપુટ પદ્દતિ" +#: ../setup/setup.ui.h:44 +msgid "Show information of the selected input method" +msgstr "પસંદ થયેલ ઇનપુટ પદ્દતિની જાણકારીને બતાવો" -#: ../setup/main.py:146 -msgid "previous input method" -msgstr "પહેલાની ઇનપુટ પદ્દતિ" +#: ../setup/setup.ui.h:45 +msgid "_Preferences" +msgstr "પસંદગીઓ (_P)" -#: ../setup/main.py:286 -msgid "IBus daemon is not started. Do you want to start it now?" -msgstr "IBus ડિમન એ શરૂ થયેલ નથી. શું તમે હવે તેને શરૂ કરવા ઇચ્છો છો?" +#: ../setup/setup.ui.h:46 +msgid "Show setup of the selected input method" +msgstr "પસંદ થયેલ ઇનપુટ પદ્દતિનાં સુયોજનને બતાવો" -#: ../setup/main.py:301 +#: ../setup/setup.ui.h:47 msgid "" -"IBus has been started! If you can not use IBus, please add below lines in $HOME/.bashrc, and relogin your desktop.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." msgstr "" -"IBus ને શરૂ કરી દેવામાં આવી છે! જો તમે IBus ને વાપરી શકતા ન હોય તો, મહેરબાની કરીને નીચેનાં વાક્યમાં ઉમેરો$HOME/.bashrc, અને તમારા ડેસ્કટોપમાં ફરીથી પ્રવેશ કરો.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +"કિબોર્ડ ટૂંકાણ કીને દબાવીને અથવા પેનલ ચિહ્ન પર ક્લિક કરીને ઉપરની " +"યાદીમાં પસંદ થયેલ એકમાંથી સક્રિય ઇનપુટ પદ્દતિને બદલી શકાય છે." -#: ../setup/main.py:316 -#, python-format -msgid "Select keyboard shortcut for %s" -msgstr "%s માટે કિબોર્ડ ટૂંકાણોને પસંદ કરો" +#. create im name & icon column +#: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:68 +msgid "Input Method" +msgstr "ઇનપુટ પદ્દતિ" -#: ../setup/keyboardshortcut.py:52 -msgid "Keyboard shortcuts" -msgstr "કિબોર્ડ ટૂંકાણો" +#: ../setup/setup.ui.h:49 +msgid "The shortcut keys for showing emoji dialog" +msgstr "" -#: ../setup/keyboardshortcut.py:63 -msgid "Key code:" -msgstr "કિ કોડ:" +#: ../setup/setup.ui.h:50 +msgid "Emoji choice:" +msgstr "" -#: ../setup/keyboardshortcut.py:78 -msgid "Modifiers:" -msgstr "બદલનારો:" +#: ../setup/setup.ui.h:51 +msgid "Set a font of emoji candidates on the emoji dialog" +msgstr "" + +#: ../setup/setup.ui.h:52 +msgid "Emoji font:" +msgstr "" + +#: ../setup/setup.ui.h:53 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "" + +#: ../setup/setup.ui.h:54 +msgid "Emoji annotation language:" +msgstr "" -#: ../setup/keyboardshortcut.py:231 +#: ../setup/setup.ui.h:55 msgid "" -"Please press a key (or a key combination).\n" -"The dialog will be closed when the key is released." +"Match emoji annotations partially with the following condition and more than " +"the number of characters:" msgstr "" -"મહેરબાની કરીને કીને દબાવો (અથવા કી સંયોજન).\n" -"સંવાદ એ બંધ થયેલ હશે જ્યારે કી પ્રકાશિત થયેલ હોય તો." -#: ../setup/keyboardshortcut.py:233 -msgid "Please press a key (or a key combination)" -msgstr "મહેરબાની કરીને કી ને દબાવો (અથવા કી સંયોજન)" +#: ../setup/setup.ui.h:56 +msgid "" +"If emoji annotations can be matched with a partial string instead of the " +"exact match" +msgstr "" -#: ../setup/enginecombobox.py:120 -msgid "Select an input method" -msgstr "ઇનપુટ પદ્દતિને પસંદ કરો" +#: ../setup/setup.ui.h:57 +msgid "Prefix match" +msgstr "" -#. create im name & icon column -#: ../setup/enginetreeview.py:64 ../setup/setup.ui.h:33 -msgid "Input Method" -msgstr "ઇનપુટ પદ્દતિ" +#: ../setup/setup.ui.h:58 +msgid "Suffix match" +msgstr "" -#: ../setup/enginetreeview.py:92 -msgid "Kbd" -msgstr "Kbd" +#: ../setup/setup.ui.h:59 +msgid "Containing match" +msgstr "" -#: ../setup/ibus-setup.desktop.in.h:1 ../setup/setup.ui.h:32 -msgid "IBus Preferences" -msgstr "IBus પસંદગીઓ" +#: ../setup/setup.ui.h:60 +msgid "Emoji" +msgstr "" -#: ../setup/ibus-setup.desktop.in.h:2 -msgid "Set IBus Preferences" -msgstr "IBus પસંદગીઓને સુયોજિત કરો" +#: ../setup/setup.ui.h:61 ../data/ibus.schemas.in.h:44 +msgid "Use system keyboard layout" +msgstr "સિસ્ટમ કિબોર્ડ લેઆઉટને વાપરો" -#: ../data/ibus.schemas.in.h:1 -msgid "Auto hide" -msgstr "આપમેળે છુપાવો" +#: ../setup/setup.ui.h:62 ../data/ibus.schemas.in.h:45 +msgid "Use system keyboard (XKB) layout" +msgstr "સિસ્ટમ કિબોર્ડ (XKB) લેઆઉટને વાપરો" + +#: ../setup/setup.ui.h:63 +msgid "Keyboard Layout" +msgstr "કિબોર્ડ લેઆઉટ" + +#: ../setup/setup.ui.h:64 ../data/ibus.schemas.in.h:68 +msgid "Share the same input method among all applications" +msgstr "બધા કાર્યક્રમોમાં એજ ઇનપુટ પદ્દતિને વહેંચો" + +#: ../setup/setup.ui.h:65 +msgid "Global input method settings" +msgstr "વૈશ્ર્વિક ઇનપુટ પદ્દતિ સુયોજનો" + +#: ../setup/setup.ui.h:66 +msgid "Advanced" +msgstr "ઉન્નત" +#: ../setup/setup.ui.h:67 +msgid "" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" +msgstr "" +"IBus\n" +"હોશિયાર ઇનપુટ બસ\n" +"ઘરપાનું: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" + +#: ../setup/setup.ui.h:74 +msgid "Start ibus on login" +msgstr "પ્રવેશ પર ibus ને શરૂ કરો" + +#: ../setup/setup.ui.h:75 +msgid "Startup" +msgstr "શરૂઆત કરો" + +#: ../setup/setup.ui.h:76 ../setup/engineabout.py:37 ../ui/gtk3/panel.vala:1175 +msgid "About" +msgstr "વિશે" + +#: ../setup/setup.ui.h:77 ../setup/engineabout.py:40 +msgid "_Close" +msgstr "બંધ કરો (_C)" + +#. Translators: Here “Preload” is a verb #: ../data/ibus.schemas.in.h:2 -msgid "Custom font" -msgstr "વૈવિધ્ય ફોન્ટ" +msgid "Preload engines" +msgstr "એંજિનોને ફરીથી લોડ કરો" + +#. Translators: Tooltip for the button “Preload Engines” +#: ../data/ibus.schemas.in.h:4 +msgid "Preload engines during ibus starts up" +msgstr "ibus શરૂ કરવા દરમ્યાન એંજિનોને ફરીથી લોડ કરો" + +#: ../data/ibus.schemas.in.h:5 +msgid "Engines order" +msgstr "એંજિન ક્રમ" + +#: ../data/ibus.schemas.in.h:6 +msgid "Saved engines order in input method list" +msgstr "ઇનપુટ પદ્દતિ યાદીમાં સંગ્રહેલ એંજિન ક્રમ" + +#: ../data/ibus.schemas.in.h:7 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "IME સ્વીચર વિન્ડો માટે પોપઅપનો મિલીસેકંડનો વિલંબ" + +#: ../data/ibus.schemas.in.h:8 +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is 400." +" 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " +"show the window and switch prev/next engines." +msgstr "" +"IME સ્વીચર વિન્ડોને બતાવવા માટે મિલિસેકંડનો વિલંબ સુયોજિત કરો. મૂળભૂત 400 છે." +" 0 = વિન્ડોને તરત જ બતાવો. 0 < મિલિસેકંડમાં વિલંબ. 0 > વિન્ડોને બતાવો " +"નહિં અને પહેલાંનુ/પછીનાં એંજિનને બદલો." + +#: ../data/ibus.schemas.in.h:9 +msgid "Saved version number" +msgstr "સંગ્રહેલ આવૃત્તિ નંબર" + +#: ../data/ibus.schemas.in.h:10 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" +"પહેલાંની સ્થાપિત થયેલ ibus અને હાલની ibus ની એકની આવૃત્તિ વચ્ચે તફાવત ચકાસવા " +"માટે સંગ્રહેલ આવૃત્તિ નંબરને વાપરેલ હશે." + +#: ../data/ibus.schemas.in.h:11 +msgid "Latin layouts which have no ASCII" +msgstr "લેટિન લેઆઉટ કે જેની પાસે ASCII નથી" + +#: ../data/ibus.schemas.in.h:12 +msgid "US layout is appended to the Latin layouts. variant can be omitted." +msgstr "US લેઆઉટ એ લેટિન લેઆઉટ સાથે જોડાયેલ છે. ચલને કાઢી શકાય છે." + +#: ../data/ibus.schemas.in.h:13 +msgid "Use xmodmap" +msgstr "xmodmap ને વાપરો" + +#: ../data/ibus.schemas.in.h:14 +msgid "" +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." +msgstr "" +"xmodmap ને ચલાવો જો .xmodmap અથવા .Xmodmap અસ્તિત્વમાં હોય જ્યારે ibus એંજિન " +"બદલેલ હોય." + +#: ../data/ibus.schemas.in.h:15 +msgid "Trigger shortcut keys" +msgstr "ટ્રીગર ટૂંકાણ કીઓ" + +#: ../data/ibus.schemas.in.h:17 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "gtk_accelerator_parse માટે ટ્રીગર ટૂંકાણ કી" + +#: ../data/ibus.schemas.in.h:18 +msgid "Enable shortcut keys" +msgstr "ટૂંકાણ કીઓને સક્રિય કરો" + +#: ../data/ibus.schemas.in.h:19 +msgid "The shortcut keys for turning input method on" +msgstr "ઇનપુટ પદ્દતિને ચાલુ કરવા માટે ટૂંકાણ કીઓ" + +#: ../data/ibus.schemas.in.h:20 +msgid "Disable shortcut keys" +msgstr "ટૂંકાણ કીઓને નિષ્ક્રિય કરો" + +#: ../data/ibus.schemas.in.h:21 +msgid "The shortcut keys for turning input method off" +msgstr "ઇનપુટ પદ્દતિને બંધ કરવા માટે ટૂંકાણ કીઓ" + +#: ../data/ibus.schemas.in.h:22 +msgid "Next engine shortcut keys" +msgstr "પછીની એંજિન ટૂંકાણ કીઓ" + +#: ../data/ibus.schemas.in.h:23 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "યાદીમાં પછીની ઇનપુટ પદ્દતિને બદલવા માટે ટૂંકાણ કીઓ" + +#: ../data/ibus.schemas.in.h:24 +msgid "Prev engine shortcut keys" +msgstr "પહેલાંની એંજિન ટૂંકાણ કીઓ" + +#: ../data/ibus.schemas.in.h:25 +msgid "The shortcut keys for switching to the previous input method" +msgstr "યાદીમાં પહેલાંની ઇનપુટ પદ્દતિને લાવવા માટે ટૂંકાણ કીઓ" + +#: ../data/ibus.schemas.in.h:26 +msgid "Auto hide" +msgstr "આપમેળે છુપાવો" + +#: ../data/ibus.schemas.in.h:27 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "" +"ગુણધર્મ પેનલનું વર્તન. 0 = બતાવો નહિં, 1 = આપમેળે છુપાડો, 2 = હંમેસા બતાવો" + +#: ../data/ibus.schemas.in.h:28 +msgid "Language panel position" +msgstr "ભાષા પેનલ સ્થાન" + +#: ../data/ibus.schemas.in.h:29 +msgid "" +"The position of the language panel. 0 = Top left corner, 1 = Top right " +"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +msgstr "" +"ભાષા પેનલનું સ્થાન. ૦ = ઉંચે ડાબી બાજુનો ખૂણો, ૧ = ઉંચે જમણી બાજુનો ખૂણો, ૨ =" +" નીચે ડાબી બાજુનો ખૂણો, ૩ = નીચે જમણી બાજુનો ખૂણો, ૪ = વૈવિધ્ય" + +#: ../data/ibus.schemas.in.h:30 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "સ્થિતિમાં ઇનપુટ કર્સરને અનૂસરો જે પેનલ હંમેશા બતાવેલ હોય" + +#: ../data/ibus.schemas.in.h:31 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" +"જો true હોય તો, પેનલ હંમેશા બતાવેલ છે તે સ્થિતિમાં ઇનપુટ કર્સરને અનૂસરે છે. " +"જો false હોય તો, પેનલ સુધારેલ સ્થાન પર બતાવેલ છે." + +#: ../data/ibus.schemas.in.h:32 +msgid "The milliseconds to show property panel" +msgstr "ગુણધર્મ પેનલને બતાવવા માટે મિલિસેકંડ" + +#: ../data/ibus.schemas.in.h:33 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" +"પ્રકાશિત થાય પછી ગુણધર્મ પેનલને બતાવવા માટે મિલિસેકંડ અથવા ગુણધર્મો બદલેલ છે" + +#: ../data/ibus.schemas.in.h:34 +msgid "Orientation of lookup table" +msgstr "કોષ્ટકને જોવાની દિશા" + +#: ../data/ibus.schemas.in.h:35 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "કોષ્ટકને જોવાની દિશા. 0 = આડુ, 1 = ઊભુ " + +#: ../data/ibus.schemas.in.h:37 +msgid "Show input method name" +msgstr "ઇનપુટ પદ્દતિ નામને બતાવો" + +#: ../data/ibus.schemas.in.h:39 +msgid "RGBA value of XKB icon" +msgstr "XKB ચિહ્નની RGBA કિંમત" + +#: ../data/ibus.schemas.in.h:41 +#, no-c-format +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " +"'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " +"to 255 or percentage values in the range 0% to 100%, and 'a' is a floating " +"point value in the range 0 to 1 of the alpha." +msgstr "" +"XKB ચિહ્ન એ લેઆઉટ શબ્દમાળાને બતાવે છે અને શબ્દમાળા એ RGBA કિંમત સાથે રેન્ડર " +"થયેલ છે. RGBA કિંમત 1 હોઇ શકે છે. X11 માંથી રંગ નામ, 2. '#rrggbb' માંથી " +"હેક્સ કિંમત જ્યાં 'r', 'g' અને 'b' એ લાલ, લીલો, અને વાદળીનાં હેક્સ આંકડા છે, " +"3. 'rgb(r,g,b)' રૂપમાં RGB રંગ અથવા 4. 'rgba(r,g,b,a)' રૂપમાં RGBA રંગ " +"જ્યાં 'r', 'g', અને 'b' એ ક્યાંતો સીમા 0 થી 255 માં પૂર્ણાંકો અથવા સીમા 0% " +"થી 100% સીમામાં ટકાવારી કિંમતો, અને 'a' એ આલ્ફાની સીમા 0 થી 1 માં ફ્લોટીંગ " +"પોઇંટ કિંમત છે." + +#: ../data/ibus.schemas.in.h:42 +msgid "The milliseconds to show the panel icon for a property" +msgstr "" + +#: ../data/ibus.schemas.in.h:43 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" + +#: ../data/ibus.schemas.in.h:46 +msgid "Use custom font" +msgstr "વૈવિધ્ય ફોન્ટને વાપરો" + +#: ../data/ibus.schemas.in.h:47 +msgid "Use custom font name for language panel" +msgstr "ભાષા પેનલ માટે વૈવિધેય ફોન્ટ નામ ને વાપરો" + +#: ../data/ibus.schemas.in.h:48 +msgid "Custom font" +msgstr "વૈવિધ્ય ફોન્ટ" + +#: ../data/ibus.schemas.in.h:49 +msgid "Custom font name for language panel" +msgstr "ભાષા પેનલ માટે વૈવિધ્ય ફોન્ટ નામ" + +#: ../data/ibus.schemas.in.h:50 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "" + +#: ../data/ibus.schemas.in.h:51 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "" + +#: ../data/ibus.schemas.in.h:52 +msgid "Custom font name for emoji characters on emoji dialog" +msgstr "" + +#: ../data/ibus.schemas.in.h:53 +msgid "Default language for emoji dictionary" +msgstr "" + +#: ../data/ibus.schemas.in.h:54 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" +msgstr "" + +#: ../data/ibus.schemas.in.h:55 +msgid "favorite emoji list on emoji dialog" +msgstr "" + +#: ../data/ibus.schemas.in.h:56 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "" + +#: ../data/ibus.schemas.in.h:57 +msgid "favorite emoji annotation list on emoji dialog" +msgstr "" + +#: ../data/ibus.schemas.in.h:58 +msgid "You can assign an annotation for a favorite emoji in this list." +msgstr "" + +#: ../data/ibus.schemas.in.h:59 +msgid "Whether emoji annotations can be match partially or not" +msgstr "" + +#: ../data/ibus.schemas.in.h:60 +msgid "" +"Whether emoji annotations can be matched with a partial string instead of " +"the exact match or not." +msgstr "" + +#: ../data/ibus.schemas.in.h:61 +msgid "Match emoji annotations with the specified length" +msgstr "" + +#: ../data/ibus.schemas.in.h:62 +msgid "" +"Match emoji annotations partially with more than the specified number of " +"characters instead of the exact match." +msgstr "" + +#: ../data/ibus.schemas.in.h:63 +msgid "Choose a condition to match emoji annotations partially" +msgstr "" + +#: ../data/ibus.schemas.in.h:64 +msgid "" +"Choose one of the following conditions to match emoji annotations partially: " +"0 == Prefix match, 1 == Suffix match, 2 == Containing match" +msgstr "" + +#: ../data/ibus.schemas.in.h:65 +msgid "Embed Preedit Text" +msgstr "બેસાડેલ Preedit લખાણ" + +#: ../data/ibus.schemas.in.h:66 +msgid "Embed Preedit Text in Application Window" +msgstr "કાર્યક્રમ વિન્ડોમાં બેસાડેલ Preedit લખાણ" + +#: ../data/ibus.schemas.in.h:67 +msgid "Use global input method" +msgstr "વૈશ્ર્વિક ઇનપુટ પદ્દતિને વાપરો" + +#: ../data/ibus.schemas.in.h:69 +msgid "Enable input method by default" +msgstr "મૂળભૂત રીતે ઇનપુટ પદ્દતિને સક્રિય કરો" + +#: ../data/ibus.schemas.in.h:70 +msgid "Enable input method by default when the application gets input focus" +msgstr "" +"મૂળભૂત રીતે ઇનપુટ પદ્દતિને સક્રિય કરો જ્યારે કાર્યક્રમને ઇનપુટ ફોકસ મળે છે" + +#: ../data/ibus.schemas.in.h:71 +msgid "DConf preserve name prefixes" +msgstr "DConf નામ ઉપસર્ગને સાચવે છે" + +#: ../data/ibus.schemas.in.h:72 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "નામનું રૂપાંતરણને બંધ કરવા માટે DConf કીઓનાં ઉપસર્ગો" + +#: ../ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." + +#: ../ibus/lang.py:41 ../src/ibusutil.c:158 +msgid "Other" +msgstr "બીજા" + +#: ../setup/emojilang.py:67 +msgid "Select a language" +msgstr "" + +#: ../setup/emojilang.py:70 ../setup/enginedialog.py:60 +#: ../setup/keyboardshortcut.py:339 ../setup/main.py:552 +msgid "_Cancel" +msgstr "રદ કરો (_C)" + +#: ../setup/emojilang.py:71 ../setup/keyboardshortcut.py:340 +#: ../setup/main.py:553 +msgid "_OK" +msgstr "બરાબર (_O)" + +#: ../setup/emojilang.py:235 ../setup/enginedialog.py:205 +msgid "More…" +msgstr "વધારે..." + +#: ../setup/engineabout.py:72 +#, python-format +msgid "Language: %s\n" +msgstr "ભાષા: %s\n" + +#: ../setup/engineabout.py:75 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "કિબોર્ડ લેઆઉટ: %s\n" + +#: ../setup/engineabout.py:78 +#, python-format +msgid "Author: %s\n" +msgstr "લેખક: %s\n" + +#: ../setup/engineabout.py:81 +msgid "Description:\n" +msgstr "વર્ણન:\n" + +#: ../setup/enginecombobox.py:139 ../setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "ઇનપુટ પદ્દતિને પસંદ કરો" + +#: ../setup/enginetreeview.py:96 +msgid "Kbd" +msgstr "Kbd" + +#: ../setup/ibus-setup.desktop.in.h:2 +msgid "Set IBus Preferences" +msgstr "IBus પસંદગીઓને સુયોજિત કરો" + +#: ../setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "કિબોર્ડ ટૂંકાણો" + +#: ../setup/keyboardshortcut.py:67 +msgid "Key code:" +msgstr "કિ કોડ:" + +#: ../setup/keyboardshortcut.py:82 +msgid "Modifiers:" +msgstr "બદલનારો:" + +#. apply button +#: ../setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "અમલમાં મૂકો (_A)" + +#. delete button +#: ../setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "કાઢી નાંખો (_D)" + +#: ../setup/keyboardshortcut.py:252 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "" +"મહેરબાની કરીને કીને દબાવો (અથવા કી સંયોજન).\n" +"સંવાદ એ બંધ થયેલ હશે જ્યારે કી પ્રકાશિત થયેલ હોય તો." + +#: ../setup/keyboardshortcut.py:255 +msgid "Please press a key (or a key combination)" +msgstr "મહેરબાની કરીને કી ને દબાવો (અથવા કી સંયોજન)" + +#: ../setup/main.py:121 ../setup/main.py:580 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "પહેલાંની ઇનપુટ પદ્દતિને બદલવા shift સાથે ટૂંકાણ વાપરો" + +#: ../setup/main.py:507 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "IBus ડિમન ચાલી રહ્યુ નથી. શું તમે તેને શરૂ કરવા ઇચ્છો છો?" + +#: ../setup/main.py:528 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "" +"IBus ને શરૂ કરી દેવામાં આવી છે! જો તમે IBus ને વાપરી શકતા ન હોય તો, તમારી " +"$HOME/.bashrc માં નીચેના વાક્યોને ઉમેરો; પછી ડેસ્કટોપમાં પુન:લોગ કરો.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" + +#. Translators: %d == 5 currently +#: ../setup/main.py:542 +#, python-format +msgid "IBus daemon could not be started in %d seconds." +msgstr "IBus ડિમન %d સેકંડમાં શરૂ કરી શક્યા નહિં." + +#: ../setup/main.py:554 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "%s માટે કિબોર્ડ ટૂંકાણોને પસંદ કરો" + +#. Translators: Title of the window +#: ../setup/main.py:556 +msgid "switching input methods" +msgstr "ઇનપુટ પદ્દતિને બદલી રહ્યા છે" + +#: ../src/ibusemojigen.h:30 +msgid "Activities" +msgstr "" + +#: ../src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "" + +#: ../src/ibusemojigen.h:32 +msgid "Flags" +msgstr "" + +#: ../src/ibusemojigen.h:33 +msgid "Food & Drink" +msgstr "" + +#: ../src/ibusemojigen.h:34 +msgid "Objects" +msgstr "" + +#: ../src/ibusemojigen.h:35 +msgid "Smileys & People" +msgstr "" + +#: ../src/ibusemojigen.h:36 +msgid "Symbols" +msgstr "" + +#: ../src/ibusemojigen.h:37 +msgid "Travel & Places" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:33 +msgid "Basic Latin" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:37 +msgid "Latin-1 Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:41 +msgid "Latin Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:45 +msgid "Latin Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:49 +msgid "IPA Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:53 +msgid "Spacing Modifier Letters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:57 +msgid "Combining Diacritical Marks" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:61 +msgid "Greek and Coptic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:65 +msgid "Cyrillic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:69 +msgid "Cyrillic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:73 +msgid "Armenian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:77 +msgid "Hebrew" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:81 +msgid "Arabic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:85 +msgid "Syriac" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:89 +msgid "Arabic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:93 +msgid "Thaana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:97 +msgid "NKo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:101 +msgid "Samaritan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:105 +msgid "Mandaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:109 +msgid "Syriac Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:113 +msgid "Arabic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:117 +msgid "Devanagari" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:121 +msgid "Bengali" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:125 +msgid "Gurmukhi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:129 +msgid "Gujarati" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:133 +msgid "Oriya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:137 +msgid "Tamil" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:141 +msgid "Telugu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:145 +msgid "Kannada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:149 +msgid "Malayalam" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:153 +msgid "Sinhala" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:157 +msgid "Thai" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:161 +msgid "Lao" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:165 +msgid "Tibetan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:169 +msgid "Myanmar" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:173 +msgid "Georgian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:177 +msgid "Hangul Jamo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:181 +msgid "Ethiopic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:185 +msgid "Ethiopic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:189 +msgid "Cherokee" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:193 +msgid "Unified Canadian Aboriginal Syllabics" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:197 +msgid "Ogham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:201 +msgid "Runic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:205 +msgid "Tagalog" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:209 +msgid "Hanunoo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:213 +msgid "Buhid" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:217 +msgid "Tagbanwa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:221 +msgid "Khmer" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:225 +msgid "Mongolian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:229 +msgid "Unified Canadian Aboriginal Syllabics Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:233 +msgid "Limbu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:237 +msgid "Tai Le" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:241 +msgid "New Tai Lue" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:245 +msgid "Khmer Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:249 +msgid "Buginese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:253 +msgid "Tai Tham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:257 +msgid "Combining Diacritical Marks Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:261 +msgid "Balinese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:265 +msgid "Sundanese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:269 +msgid "Batak" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:273 +msgid "Lepcha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:277 +msgid "Ol Chiki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:281 +msgid "Cyrillic Extended-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:285 +msgid "Sundanese Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:289 +msgid "Vedic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:293 +msgid "Phonetic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:297 +msgid "Phonetic Extensions Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:301 +msgid "Combining Diacritical Marks Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:305 +msgid "Latin Extended Additional" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:309 +msgid "Greek Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:313 +msgid "General Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:317 +msgid "Superscripts and Subscripts" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:321 +msgid "Currency Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:325 +msgid "Combining Diacritical Marks for Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:329 +msgid "Letterlike Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:333 +msgid "Number Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:337 +msgid "Arrows" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:341 +msgid "Mathematical Operators" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:345 +msgid "Miscellaneous Technical" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:349 +msgid "Control Pictures" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:353 +msgid "Optical Character Recognition" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:357 +msgid "Enclosed Alphanumerics" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:361 +msgid "Box Drawing" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:365 +msgid "Block Elements" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:369 +msgid "Geometric Shapes" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:373 +msgid "Miscellaneous Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:377 +msgid "Dingbats" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:381 +msgid "Miscellaneous Mathematical Symbols-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:385 +msgid "Supplemental Arrows-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:389 +msgid "Braille Patterns" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:393 +msgid "Supplemental Arrows-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:397 +msgid "Miscellaneous Mathematical Symbols-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:401 +msgid "Supplemental Mathematical Operators" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:405 +msgid "Miscellaneous Symbols and Arrows" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:409 +msgid "Glagolitic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:413 +msgid "Latin Extended-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:417 +msgid "Coptic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:421 +msgid "Georgian Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:425 +msgid "Tifinagh" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:429 +msgid "Ethiopic Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:433 +msgid "Cyrillic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:437 +msgid "Supplemental Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:441 +msgid "CJK Radicals Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:445 +msgid "Kangxi Radicals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:449 +msgid "Ideographic Description Characters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:453 +msgid "CJK Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:457 +msgid "Hiragana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:461 +msgid "Katakana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:465 +msgid "Bopomofo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:469 +msgid "Hangul Compatibility Jamo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:473 +msgid "Kanbun" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:477 +msgid "Bopomofo Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:481 +msgid "CJK Strokes" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:485 +msgid "Katakana Phonetic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:489 +msgid "Enclosed CJK Letters and Months" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:493 +msgid "CJK Compatibility" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:497 +msgid "CJK Unified Ideographs Extension A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:501 +msgid "Yijing Hexagram Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:505 +msgid "CJK Unified Ideographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:509 +msgid "Yi Syllables" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:513 +msgid "Yi Radicals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:517 +msgid "Lisu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:521 +msgid "Vai" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:525 +msgid "Cyrillic Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:529 +msgid "Bamum" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:533 +msgid "Modifier Tone Letters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:537 +msgid "Latin Extended-D" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:541 +msgid "Syloti Nagri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:545 +msgid "Common Indic Number Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:549 +msgid "Phags-pa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:553 +msgid "Saurashtra" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:557 +msgid "Devanagari Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:561 +msgid "Kayah Li" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:565 +msgid "Rejang" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:569 +msgid "Hangul Jamo Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:573 +msgid "Javanese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:577 +msgid "Myanmar Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:581 +msgid "Cham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:585 +msgid "Myanmar Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:589 +msgid "Tai Viet" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:593 +msgid "Meetei Mayek Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:597 +msgid "Ethiopic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:601 +msgid "Latin Extended-E" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:605 +msgid "Cherokee Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:609 +msgid "Meetei Mayek" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:613 +msgid "Hangul Syllables" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:617 +msgid "Hangul Jamo Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:621 +msgid "High Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:625 +msgid "High Private Use Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:629 +msgid "Low Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:633 +msgid "Private Use Area" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:637 +msgid "CJK Compatibility Ideographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:641 +msgid "Alphabetic Presentation Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:645 +msgid "Arabic Presentation Forms-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:649 +msgid "Variation Selectors" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:653 +msgid "Vertical Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:657 +msgid "Combining Half Marks" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:661 +msgid "CJK Compatibility Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:665 +msgid "Small Form Variants" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:669 +msgid "Arabic Presentation Forms-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:673 +msgid "Halfwidth and Fullwidth Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:677 +msgid "Specials" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:681 +msgid "Linear B Syllabary" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:685 +msgid "Linear B Ideograms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:689 +msgid "Aegean Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:693 +msgid "Ancient Greek Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:697 +msgid "Ancient Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:701 +msgid "Phaistos Disc" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:705 +msgid "Lycian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:709 +msgid "Carian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:713 +msgid "Coptic Epact Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:717 +msgid "Old Italic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:721 +msgid "Gothic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:725 +msgid "Old Permic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:729 +msgid "Ugaritic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:733 +msgid "Old Persian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:737 +msgid "Deseret" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:741 +msgid "Shavian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:745 +msgid "Osmanya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:749 +msgid "Osage" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:753 +msgid "Elbasan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:757 +msgid "Caucasian Albanian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:761 +msgid "Linear A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:765 +msgid "Cypriot Syllabary" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:769 +msgid "Imperial Aramaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:773 +msgid "Palmyrene" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:777 +msgid "Nabataean" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:781 +msgid "Hatran" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:785 +msgid "Phoenician" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:789 +msgid "Lydian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:793 +msgid "Meroitic Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:797 +msgid "Meroitic Cursive" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:801 +msgid "Kharoshthi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:805 +msgid "Old South Arabian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:809 +msgid "Old North Arabian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:813 +msgid "Manichaean" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:817 +msgid "Avestan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:821 +msgid "Inscriptional Parthian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:825 +msgid "Inscriptional Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:829 +msgid "Psalter Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:833 +msgid "Old Turkic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:837 +msgid "Old Hungarian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:841 +msgid "Rumi Numeral Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:845 +msgid "Brahmi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:849 +msgid "Kaithi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:853 +msgid "Sora Sompeng" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:857 +msgid "Chakma" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:861 +msgid "Mahajani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:865 +msgid "Sharada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:869 +msgid "Sinhala Archaic Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:873 +msgid "Khojki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:877 +msgid "Multani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:881 +msgid "Khudawadi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:885 +msgid "Grantha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:889 +msgid "Newa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:893 +msgid "Tirhuta" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:897 +msgid "Siddham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:901 +msgid "Modi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:905 +msgid "Mongolian Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:909 +msgid "Takri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:913 +msgid "Ahom" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:917 +msgid "Warang Citi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:921 +msgid "Zanabazar Square" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:925 +msgid "Soyombo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:929 +msgid "Pau Cin Hau" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:933 +msgid "Bhaiksuki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:937 +msgid "Marchen" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:941 +msgid "Masaram Gondi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:945 +msgid "Cuneiform" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:949 +msgid "Cuneiform Numbers and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:953 +msgid "Early Dynastic Cuneiform" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:957 +msgid "Egyptian Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:961 +msgid "Anatolian Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:965 +msgid "Bamum Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:969 +msgid "Mro" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:973 +msgid "Bassa Vah" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:977 +msgid "Pahawh Hmong" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:981 +msgid "Miao" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:985 +msgid "Ideographic Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:989 +msgid "Tangut" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:993 +msgid "Tangut Components" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:997 +msgid "Kana Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1001 +msgid "Kana Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1005 +msgid "Nushu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1009 +msgid "Duployan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1013 +msgid "Shorthand Format Controls" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1017 +msgid "Byzantine Musical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1021 +msgid "Musical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1025 +msgid "Ancient Greek Musical Notation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1029 +msgid "Tai Xuan Jing Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1033 +msgid "Counting Rod Numerals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1037 +msgid "Mathematical Alphanumeric Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1041 +msgid "Sutton SignWriting" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1045 +msgid "Glagolitic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1049 +msgid "Mende Kikakui" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1053 +msgid "Adlam" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1057 +msgid "Arabic Mathematical Alphabetic Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1061 +msgid "Mahjong Tiles" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1065 +msgid "Domino Tiles" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1069 +msgid "Playing Cards" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1073 +msgid "Enclosed Alphanumeric Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1077 +msgid "Enclosed Ideographic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1081 +msgid "Miscellaneous Symbols and Pictographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1085 +msgid "Emoticons" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1089 +msgid "Ornamental Dingbats" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1093 +msgid "Transport and Map Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1097 +msgid "Alchemical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1101 +msgid "Geometric Shapes Extended" +msgstr "" -#: ../data/ibus.schemas.in.h:3 -msgid "Custom font name for language panel" -msgstr "ભાષા પેનલ માટે વૈવિધ્ય ફોન્ટ નામ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1105 +msgid "Supplemental Arrows-C" +msgstr "" -#: ../data/ibus.schemas.in.h:4 -msgid "Disable shortcut keys" -msgstr "ટૂંકાણ કીઓને નિષ્ક્રિય કરો" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1109 +msgid "Supplemental Symbols and Pictographs" +msgstr "" -#: ../data/ibus.schemas.in.h:5 -msgid "Embed Preedit Text" -msgstr "બેસાડેલ Preedit લખાણ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1113 +msgid "CJK Unified Ideographs Extension B" +msgstr "" -#: ../data/ibus.schemas.in.h:6 -msgid "Embed Preedit Text in Application Window" -msgstr "કાર્યક્રમ વિન્ડોમાં બેસાડેલ Preedit લખાણ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1117 +msgid "CJK Unified Ideographs Extension C" +msgstr "" -#: ../data/ibus.schemas.in.h:7 -msgid "Enable input method by default" -msgstr "મૂળભૂત રીતે ઇનપુટ પદ્દતિને સક્રિય કરો" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1121 +msgid "CJK Unified Ideographs Extension D" +msgstr "" -#: ../data/ibus.schemas.in.h:8 -msgid "Enable input method by default when the application gets input focus" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1125 +msgid "CJK Unified Ideographs Extension E" msgstr "" -"મૂળભૂત રીતે ઇનપુટ પદ્દતિને સક્રિય કરો જ્યારે કાર્યક્રમને ઇનપુટ ફોકસ મળે છે" -#: ../data/ibus.schemas.in.h:9 -msgid "Enable shortcut keys" -msgstr "ટૂંકાણ કીઓને સક્રિય કરો" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1129 +msgid "CJK Unified Ideographs Extension F" +msgstr "" -#: ../data/ibus.schemas.in.h:10 -msgid "Language panel position" -msgstr "ભાષા પેનલ સ્થાન" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1133 +msgid "CJK Compatibility Ideographs Supplement" +msgstr "" -#: ../data/ibus.schemas.in.h:11 -msgid "Next engine shortcut keys" -msgstr "પછીની એંજિન ટૂંકાણ કીઓ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1137 +msgid "Tags" +msgstr "" -#: ../data/ibus.schemas.in.h:12 -msgid "Orientation of lookup table" -msgstr "કોષ્ટકને જોવાની દિશા" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1141 +msgid "Variation Selectors Supplement" +msgstr "" -#: ../data/ibus.schemas.in.h:13 -msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" -msgstr "કોષ્ટકને જોવાની દિશા. 0 = આડુ, 1 = ઊભુ " +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1145 +msgid "Supplementary Private Use Area-A" +msgstr "" -#: ../data/ibus.schemas.in.h:14 -msgid "Preload engines" -msgstr "એંજિનોને ફરીથી લોડ કરો" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1149 +msgid "Supplementary Private Use Area-B" +msgstr "" -#: ../data/ibus.schemas.in.h:15 -msgid "Preload engines during ibus starts up" -msgstr "ibus શરૂ કરવા દરમ્યાન એંજિનોને ફરીથી લોડ કરો" +#: ../tools/main.vala:54 +msgid "List engine name only" +msgstr "ફક્ત એંજિન નામની યાદી કરો" -#: ../data/ibus.schemas.in.h:16 -msgid "Prev engine shortcut keys" -msgstr "પહેલાંની એંજિન ટૂંકાણ કીઓ" +#: ../tools/main.vala:70 ../tools/main.vala:195 ../tools/main.vala:205 +msgid "Can't connect to IBus.\n" +msgstr "IBus માં જોડી શકાતુ નથી.\n" -#: ../data/ibus.schemas.in.h:17 ../setup/setup.ui.h:42 -msgid "Share the same input method among all applications" -msgstr "બધા કાર્યક્રમોમાં એજ ઇનપુટ પદ્દતિને વહેંચો" +#: ../tools/main.vala:96 +#, c-format +msgid "language: %s\n" +msgstr "ભાષા: %s\n" -#: ../data/ibus.schemas.in.h:18 ../setup/setup.ui.h:43 -msgid "Show icon on system tray" -msgstr "સિસ્ટમ ટ્રે પર ચિહ્નને બતાવો" +#: ../tools/main.vala:164 +msgid "No engine is set.\n" +msgstr "એજિંન સુયોજિત નથી.\n" -#: ../data/ibus.schemas.in.h:19 -msgid "Show input method name" -msgstr "ઇનપુટ પદ્દતિ નામને બતાવો" +#: ../tools/main.vala:172 +msgid "Set global engine failed.\n" +msgstr "વૈશ્ર્વિક એંજિનને સુયોજિત કરવામાં નિષ્ફળતા.\n" -#: ../data/ibus.schemas.in.h:20 ../setup/setup.ui.h:45 -msgid "Show input method name on language bar" -msgstr "ભાષા પેનલ પર ઇનપુટ પદ્દતિ નામને બતાવો" +#: ../tools/main.vala:177 +msgid "Get global engine failed.\n" +msgstr "વૈશ્ર્વિક એંજિનને મેળવવામાં નિષ્ફળતા.\n" -#: ../data/ibus.schemas.in.h:21 -msgid "" -"The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = " -"Always show" -msgstr "" -"ભાષા પેનલની વર્ણતૂક. 0 = હંમેશા છુપાવો, 1 = આપમેળે છુપાવો, 2 = હંમેશા બતાવો" +#: ../tools/main.vala:220 +msgid "Read the system registry cache." +msgstr "સિસ્ટમ રજીસ્ટરી કેશને વાંચો." -#: ../data/ibus.schemas.in.h:22 -msgid "" -"The position of the language panel. 0 = Top left corner, 1 = Top right " -"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" -msgstr "" -"ભાષા પેનલનું સ્થાન. ૦ = ઉંચે ડાબી બાજુનો ખૂણો, ૧ = ઉંચે જમણી બાજુનો ખૂણો, ૨ " -"= નીચે ડાબી બાજુનો ખૂણો, ૩ = નીચે જમણી બાજુનો ખૂણો, ૪ = વૈવિધ્ય" +#: ../tools/main.vala:222 +msgid "Read the registry cache FILE." +msgstr "રજીસ્ટરી કેશ FILE ને વાંચો." -#: ../data/ibus.schemas.in.h:23 -msgid "The shortcut keys for switching to the next input method in the list" -msgstr "યાદીમાં પછીની ઇનપુટ પદ્દતિને બદલવા માટે ટૂંકાણ કીઓ" +#: ../tools/main.vala:240 ../tools/main.vala:245 +msgid "The registry cache is invalid.\n" +msgstr "રજીસ્ટરી કેશ અયોગ્ય છે.\n" -#: ../data/ibus.schemas.in.h:24 -msgid "The shortcut keys for switching to the previous input method" -msgstr "યાદીમાં પહેલાંની ઇનપુટ પદ્દતિને લાવવા માટે ટૂંકાણ કીઓ" +#: ../tools/main.vala:260 +msgid "Write the system registry cache." +msgstr "સિસ્ટમ રજીસ્ટરી કેશને લખો." -#: ../data/ibus.schemas.in.h:25 -msgid "The shortcut keys for turning input method off" -msgstr "ઇનપુટ પદ્દતિને બંધ કરવા માટે ટૂંકાણ કીઓ" +#: ../tools/main.vala:262 +msgid "Write the registry cache FILE." +msgstr "રજીસ્ટરી કેશ FILE ને લખો." -#: ../data/ibus.schemas.in.h:26 -msgid "The shortcut keys for turning input method on" -msgstr "ઇનપુટ પદ્દતિને ચાલુ કરવા માટે ટૂંકાણ કીઓ" +#: ../tools/main.vala:314 +msgid "Resetting…" +msgstr "પુન:સુયોજિત કરી રહ્યા છે.." -#: ../data/ibus.schemas.in.h:27 ../setup/setup.ui.h:51 -msgid "The shortcut keys for turning input method on or off" -msgstr "ઇનપુટ પદ્દતિને ફેરબદલી કરવાનું ચાલુ અથવા ા બંધ કરવા માટે ટૂંકાણ કીઓ" +#: ../tools/main.vala:328 +msgid "Done" +msgstr "પૂર્ણ" -#: ../data/ibus.schemas.in.h:28 -msgid "Trigger shortcut keys" -msgstr "ટ્રીગર ટૂંકાણ કીઓ" +#: ../tools/main.vala:373 +msgid "Set or get engine" +msgstr "એંજિનને સુયોજિત અથવા મેળવો" -#: ../data/ibus.schemas.in.h:29 -msgid "Use custom font" -msgstr "વૈવિધ્ય ફોન્ટને વાપરો" +#: ../tools/main.vala:374 +msgid "Exit ibus-daemon" +msgstr "ibus-daemon માંથી બહાર નીકળો" -#: ../data/ibus.schemas.in.h:30 -msgid "Use custom font name for language panel" -msgstr "ભાષા પેનલ માટે વૈવિધેય ફોન્ટ નામ ને વાપરો" +#: ../tools/main.vala:375 +msgid "Show available engines" +msgstr "ઉપલબ્ધ એંજિનને બતાવો" -#: ../data/ibus.schemas.in.h:31 -msgid "Use global input method" -msgstr "વૈશ્ર્વિક ઇનપુટ પદ્દતિને વાપરો" +#: ../tools/main.vala:376 +msgid "(Not implemented)" +msgstr "(અમલીકરણ થયેલ નથી)" -#: ../data/ibus.schemas.in.h:32 ../setup/setup.ui.h:55 -msgid "Use system keyboard (XKB) layout" -msgstr "સિસ્ટમ કિબોર્ડ (XKB) લેઆઉટને વાપરો" +#: ../tools/main.vala:377 +msgid "Restart ibus-daemon" +msgstr "ibus-daemon ને પુન:શરૂ કરો" -#: ../data/ibus.schemas.in.h:33 ../setup/setup.ui.h:56 -msgid "Use system keyboard layout" -msgstr "સિસ્ટમ કિબોર્ડ લેઆઉટને વાપરો" +#: ../tools/main.vala:378 +msgid "Show version" +msgstr "આવૃત્તિને બતાવો" -#: ../setup/setup.ui.h:1 -msgid "..." -msgstr "..." +#: ../tools/main.vala:379 +msgid "Show the content of registry cache" +msgstr "રજીસ્ટરી કેશનાં સમાવિષ્ટને બતાવો" -#: ../setup/setup.ui.h:2 -msgid "Font and Style" -msgstr "ફોન્ટ અને શૈલીઓ" +#: ../tools/main.vala:380 +msgid "Create registry cache" +msgstr "રજીસ્ટરી કેશને બનાવો" -#: ../setup/setup.ui.h:3 -msgid "Global input method settings" -msgstr "વૈશ્ર્વિક ઇનપુટ પદ્દતિ સુયોજનો" +#: ../tools/main.vala:381 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "ibus-daemon નાં D-Bus સરનામાંને છાપો" -#: ../setup/setup.ui.h:4 -msgid "Keyboard Layout" -msgstr "કિબોર્ડ લેઆઉટ" +#: ../tools/main.vala:382 +msgid "Show the configuration values" +msgstr "રૂપરેખાંકન કિંમતોને બતાવો" -#: ../setup/setup.ui.h:5 -msgid "Keyboard Shortcuts" -msgstr "કિબોર્ડ ટૂંકાણો" +#: ../tools/main.vala:383 +msgid "Reset the configuration values" +msgstr "રૂપરેખાંકન કિંમતોને પુન:સુયોજિત કરો" -#: ../setup/setup.ui.h:6 -msgid "Startup" -msgstr "શરૂઆત કરો" +#: ../tools/main.vala:385 +msgid "Save emoji on dialog to clipboard " +msgstr "" -#: ../setup/setup.ui.h:7 -msgid "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" +#: ../tools/main.vala:387 +msgid "Show this information" +msgstr "આ જાણકારીને બતાવો" + +#: ../tools/main.vala:393 +#, c-format +msgid "Usage: %s COMMAND [OPTION...]\n" "\n" +msgstr "વપરાશ: %s COMMAND [OPTION...]\n" "\n" + +#: ../tools/main.vala:394 +msgid "Commands:\n" +msgstr "આદેશો:\n" + +#: ../tools/main.vala:423 +#, c-format +msgid "%s is unknown command!\n" +msgstr "%s એ અજ્ઞાત આદેશ છે!\n" + +#: ../ui/gtk3/emojier.vala:245 +msgid "Show emoji variants" msgstr "" -"IBus\n" -"હોશિયાર ઇનપુટ બસ\n" -"ઘરપાનું: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" -#: ../setup/setup.ui.h:14 -msgid "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." +#: ../ui/gtk3/emojier.vala:250 +msgid "Menu" msgstr "" -"મૂળભૂત ઇનપુટ પદ્દતિ યાદીમાં ઉપર છે.\n" -"તેને બદલવા માટે તમે ઉપર કરો/નીચે કરો બટનોને વાપરી શકો છો." -#: ../setup/setup.ui.h:17 -msgid "Add the selected input method into the enabled input methods" -msgstr "સક્રિય થયેલ ઇનપુટ પદ્દતિઓમાં પસંદ થયેલ ઇનપુટ પદ્દતિને ઉમેરો" +#: ../ui/gtk3/emojier.vala:273 +msgid "Favorites" +msgstr "" -#: ../setup/setup.ui.h:18 -msgid "Advanced" -msgstr "ઉન્નત" +#: ../ui/gtk3/emojier.vala:274 +msgid "Others" +msgstr "" -#: ../setup/setup.ui.h:19 -msgid "Always" -msgstr "હંમેશા" +#: ../ui/gtk3/emojier.vala:275 +msgid "Open Unicode choice" +msgstr "" -#: ../setup/setup.ui.h:20 -msgid "Bottom left corner" -msgstr "નીચે ડાબી બાજુનો ખૂણો" +#: ../ui/gtk3/emojier.vala:445 ../ui/gtk3/emojier.vala:826 +#: ../ui/gtk3/panel.vala:1149 +msgid "Emoji Choice" +msgstr "" -#: ../setup/setup.ui.h:21 -msgid "Bottom right corner" -msgstr "નીચે જમણી બાજુનો ખૂણો" +#: ../ui/gtk3/emojier.vala:451 +msgid "Type annotation or choose emoji" +msgstr "" -#: ../setup/setup.ui.h:22 -msgid "Candidates orientation:" -msgstr "ઉમેદવારોની દિશા:" +#: ../ui/gtk3/emojier.vala:948 +msgid "Unicode Choice" +msgstr "" -#: ../setup/setup.ui.h:23 -msgid "Custom" -msgstr "વૈવિધ્ય" +#: ../ui/gtk3/emojier.vala:950 +msgid "Bring back emoji choice" +msgstr "" -#: ../setup/setup.ui.h:24 -msgid "Disable:" -msgstr "નિષ્ક્રિય:" +#: ../ui/gtk3/emojier.vala:1016 +msgid "Loading a Unicode dictionary:" +msgstr "" -#: ../setup/setup.ui.h:25 -msgid "Embed preedit text in application window" -msgstr "કાર્યક્રમ વિન્ડોમાં બેસાડેલ Preedit લખાણ" +#: ../ui/gtk3/emojier.vala:1071 +msgid "Page Down" +msgstr "" -#: ../setup/setup.ui.h:26 -msgid "Embed the preedit text of input method in the application window" -msgstr "કાર યક્મ વિન્ડોમાં ઇનપુટ પદ્દતિનાં preedit લખાણને બેસાડો" +#: ../ui/gtk3/emojier.vala:1082 +msgid "Page Up" +msgstr "" -#: ../setup/setup.ui.h:27 -msgid "Embedded in menu" -msgstr "મેનુમાં જડિત" +#: ../ui/gtk3/emojier.vala:1236 +#, c-format +msgid "Code point: %s" +msgstr "" -#: ../setup/setup.ui.h:28 -msgid "Enable or disable:" -msgstr "સક્રિય અથવા નિષ્ક્રિય:" +#: ../ui/gtk3/emojier.vala:1242 +msgid "Has emoji variants" +msgstr "" -#: ../setup/setup.ui.h:29 -msgid "Enable:" -msgstr "સક્રિય:" +#: ../ui/gtk3/emojier.vala:1377 ../ui/gtk3/emojier.vala:1391 +#, c-format +msgid "Description: %s" +msgstr "" -#: ../setup/setup.ui.h:30 -msgid "General" -msgstr "સામાન્ય" +#: ../ui/gtk3/emojier.vala:1377 +msgid "None" +msgstr "" -#: ../setup/setup.ui.h:31 -msgid "Horizontal" -msgstr "આડુ" +#: ../ui/gtk3/emojier.vala:1402 +#, c-format +msgid "Annotations: %s" +msgstr "" -#: ../setup/setup.ui.h:34 -msgid "Language panel position:" -msgstr "ભાષા પેનલનું સ્થાન:" +#: ../ui/gtk3/emojier.vala:1428 +#, c-format +msgid "Name: %s" +msgstr "" -#: ../setup/setup.ui.h:35 -msgid "Move down the selected input method in the enabled input methods" -msgstr "સક્રિય થયેલ ઇનપુટ પદ્દતિઓમાં પસંદ થયેલ ઇનપુટ પદ્દતિને નીચે ખસેડો" +#: ../ui/gtk3/emojier.vala:1436 +#, c-format +msgid "Alias: %s" +msgstr "" -#: ../setup/setup.ui.h:36 -msgid "Move up the selected input method in the enabled input methods list" -msgstr "સક્રિય થયેલ ઇનપુટ પદ્દતિઓ યાદીમાં પસંદ થયેલ ઇનપુટ પદ્દતિને ઉપર ખસેડો" +#: ../ui/gtk3/emojierapp.vala:56 +msgid "Canceled to choose an emoji." +msgstr "" -#: ../setup/setup.ui.h:37 -msgid "Next input method:" -msgstr "પછીની ઇનપુટ પદ્દતિ:" +#: ../ui/gtk3/emojierapp.vala:77 +msgid "Copied an emoji to your clipboard." +msgstr "" -#: ../setup/setup.ui.h:38 -msgid "Previous input method:" -msgstr "પહેલાંની ઇનપુટ પદ્દતિ:" +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ../ui/gtk3/emojierapp.vala:97 +msgid "\"FONT\" for emoji characters on emoji dialog" +msgstr "" -#: ../setup/setup.ui.h:39 -msgid "Remove the selected input method from the enabled input methods" -msgstr "સક્રિય થયેલ ઇનપુટ પદ્દતિઓ માંથી પસંદ થયેલ ઇનપુટ પદ્દતિને દૂર કરો" +#: ../ui/gtk3/emojierapp.vala:98 +msgid "FONT" +msgstr "" -#: ../setup/setup.ui.h:40 -msgid "Set the behavior of ibus how to show or hide language bar" +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ../ui/gtk3/emojierapp.vala:103 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" -"ભાષા પેનલને કેવી રીતે બતાવવી અથવા છુપાડવી તે માટે ibus નાં વર્ણતૂકને સુયોજિત" -" કરો" -#: ../setup/setup.ui.h:41 -msgid "Set the orientation of candidates in lookup table" -msgstr "કોષ્ટક જોવામાં સભ્યોની દિશાને સુયોજિત કરો" +#: ../ui/gtk3/emojierapp.vala:104 +msgid "LANG" +msgstr "" -#: ../setup/setup.ui.h:44 -msgid "Show information of the selected input method" -msgstr "પસંદ થયેલ ઇનપુટ પદ્દતિની જાણકારીને બતાવો" +#: ../ui/gtk3/emojierapp.vala:106 +msgid "Emoji annotations can be match partially" +msgstr "" -#: ../setup/setup.ui.h:46 -msgid "Show input method's name on language bar when check the checkbox" +#: ../ui/gtk3/emojierapp.vala:110 +msgid "Match with the length of the specified integer" msgstr "" -"જ્યારે ચેકબોક્સને ચકાસતા હોય ત્યારે ભાષા પેનલ પર ઇનપુટ પદ્દતિનાં નામને બતાવો" -#: ../setup/setup.ui.h:47 -msgid "Show language panel:" -msgstr "ભાષા પેનલને બતાવો:" +#: ../ui/gtk3/emojierapp.vala:114 +msgid "Match with the condition of the specified integer" +msgstr "" -#: ../setup/setup.ui.h:48 -msgid "Start ibus on login" -msgstr "પ્રવેશ પર ibus ને શરૂ કરો" +#: ../ui/gtk3/panel.vala:282 ../ui/gtk3/panel.vala:313 +msgid "IBus Panel" +msgstr "" -#: ../setup/setup.ui.h:49 -msgid "The shortcut keys for switching to next input method in the list" -msgstr "યાદીમાં પછીની ઇનપુટ પદ્દતિને ખસેડવા માટે ટૂંકાણ કીઓ" +#: ../ui/gtk3/panel.vala:710 +msgid "IBus Update" +msgstr "IBus સુધારો" -#: ../setup/setup.ui.h:50 -msgid "The shortcut keys for switching to previous input method in the list" -msgstr "યાદીમાં પહેલાંની ઇનપુટ પદ્દતિને ખસેડવા માટે ટૂંકાણ કીઓ" +#: ../ui/gtk3/panel.vala:711 ../ui/gtk3/panel.vala:722 +msgid "Super+space is now the default hotkey." +msgstr "Super+space એ હવે મૂળભૂત હોટકી છે." -#: ../setup/setup.ui.h:52 -msgid "Top left corner" -msgstr "ઉંચે ડાબી બાજુનો ખૂણો" +#: ../ui/gtk3/panel.vala:1121 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus એ Linux/Unix માટે હોશિયાર ઇનપુટ બસ છે." -#: ../setup/setup.ui.h:53 -msgid "Top right corner" -msgstr "ઉંચે જમણી બાજુનો ખૂણો" +#: ../ui/gtk3/panel.vala:1125 +msgid "translator-credits" +msgstr "શ્ર્વેતા કોઠારી " -#: ../setup/setup.ui.h:54 -msgid "Use custom font:" -msgstr "વૈવિધ્યપૂર્ણ ફોન્ટ વાપરો:" +#: ../ui/gtk3/panel.vala:1144 +msgid "Preferences" +msgstr "પસંદગીઓ " -#: ../setup/setup.ui.h:57 -msgid "Vertical" -msgstr "ઊભું" +#: ../ui/gtk3/panel.vala:1181 +msgid "Restart" +msgstr "પુન:શરૂ કરો" -#: ../setup/setup.ui.h:58 -msgid "When active" -msgstr "જ્યારે સક્રિય હોય" +#: ../ui/gtk3/panel.vala:1185 +msgid "Quit" +msgstr "બહાર નીકળો " + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ../ui/gtk3/propertypanel.vala:368 ../ui/gtk3/propertypanel.vala:376 +msgid "default:LTR" +msgstr "default:LTR" diff --git a/po/he.po b/po/he.po new file mode 100644 index 000000000..8a0c49181 --- /dev/null +++ b/po/he.po @@ -0,0 +1,3319 @@ +# Hebrew translation of ibus. +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2020 Takao Fujiwara +# This file is distributed under the same license as the ibus package. +# +# Translators: +# Yaron Shahrabani , 2020. +msgid "" +msgstr "" +"Project-Id-Version: IBus\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2020-09-03 21:21+0900\n" +"PO-Revision-Date: 2020-09-07 13:29+0000\n" +"Last-Translator: Yaron Shahrabani \n" +"Language-Team: Hebrew \n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Weblate 4.2.2\n" + +#. Translators: Here “Preload” is a verb +#: data/dconf/org.freedesktop.ibus.gschema.xml:11 +msgid "Preload engines" +msgstr "לטעון מנועים מראש" + +#. Translators: Tooltip for the button “Preload Engines” +#: data/dconf/org.freedesktop.ibus.gschema.xml:13 +msgid "Preload engines during ibus starts up" +msgstr "לטעון מנועים במהלך הטעינה של ibus" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:17 +msgid "Engines order" +msgstr "סדר מנועים" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:18 +msgid "Saved engines order in input method list" +msgstr "סדר מנועים שמור ברשימת שיטות קלט" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:22 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "השהיית חלונית קופצת במילישניות לחלון בורר IME" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:23 +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is " +"400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " +"show the window and switch prev/next engines." +msgstr "" +"הגדרת השהיית חלונית קופצת במילישניות כדי להציג חלון בורר IME. בררת המחדל היא " +"400. 0 = להציג את החלון מיידית. 0 < ההשהיה במילישניות. 0 > לא להציג את החלון " +"ולהחליף למנוע הקודם/הבא." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:27 +msgid "Saved version number" +msgstr "מספר גרסה שמור" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:28 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" +"מספר הגרסה השמור ישמש לבדוק את ההבדל בין הגרסה של ה־ibus הקודם שהותקן לזאת " +"של ה־ibus הנוכחי." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:32 +msgid "Latin layouts which have no ASCII" +msgstr "פריסות לטיניות שאין להן ASCII" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:33 +msgid "US layout is appended to the Latin layouts. variant can be omitted." +msgstr "פריסת ארה״ב נוספת לסוף הפריסות הלטיניות. אפשר להשמיט את ההגוון." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:37 +msgid "Use xmodmap" +msgstr "להשתמש ב־xmodmap" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:38 +msgid "" +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." +msgstr "להריץ את xmodmap אם קיימים ‎.xmodmap או ‎.Xmodmap בעת החלפת מנועי ibus." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 +msgid "Use system keyboard layout" +msgstr "להשתמש בפריסת המקלדת של המערכת" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 +msgid "Use system keyboard (XKB) layout" +msgstr "להשתמש בפריסת המקלדת של המערכת (XKB)" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:47 +msgid "Embed Preedit Text" +msgstr "הטעמת טקסט שנערך מראש" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:48 +msgid "Embed Preedit Text in Application Window" +msgstr "הטמעת טקסט שנערך מראש בחלון היישום" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:52 +msgid "Use global input method" +msgstr "להשתמש בשיטת קלט גלובלית" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 +msgid "Share the same input method among all applications" +msgstr "לשתף את אותה שיטת הקלט בין כל היישומים" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:57 +msgid "Enable input method by default" +msgstr "הפעלת שיטת קלט כבררת מחדל" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:58 +msgid "Enable input method by default when the application gets input focus" +msgstr "הפעלת שיטת שלט כבררת מחדל כאשר היישום מקבל מיקוד על קלט" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:62 +msgid "DConf preserve name prefixes" +msgstr "שימור קידומות שמות ב־DConf" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:63 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "קידומות של מפתחות ב־DConf להפסקת המרת שמות עבורן" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:70 +msgid "Trigger shortcut keys" +msgstr "מקשי קיצור להקפצה" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:71 +#: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 +msgid "The shortcut keys for turning input method on or off" +msgstr "מקשי הקיצור להפעלה או השבתה של שיטת קלט" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:75 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "מקשי קיצור להקפצה של gtk_accelerator_parse" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:80 +msgid "Enable shortcut keys" +msgstr "הפעלת מקשי קיצור" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:81 +msgid "The shortcut keys for turning input method on" +msgstr "מקשי הקיצור להפעלת שיטת קלט" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:85 +msgid "Disable shortcut keys" +msgstr "השבתת מקשי קיצור" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:86 +msgid "The shortcut keys for turning input method off" +msgstr "מקשי הקיצור לכיבוי שיטת קלט" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:90 +#: data/dconf/org.freedesktop.ibus.gschema.xml:95 +msgid "Next engine shortcut keys" +msgstr "מקשי הקיצור למנוע הבא" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:91 +#: data/dconf/org.freedesktop.ibus.gschema.xml:96 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "מקשי הקיצור למעבר לשיטת הקלט הבאה ברשימה" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:100 +#: data/dconf/org.freedesktop.ibus.gschema.xml:105 +msgid "Prev engine shortcut keys" +msgstr "מקשי הקיצור למנוע הקודם" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:101 +#: data/dconf/org.freedesktop.ibus.gschema.xml:106 +msgid "The shortcut keys for switching to the previous input method" +msgstr "מקשי הקיצור למעבר לשיטת הקלט הקודמת ברשימה" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:112 +msgid "Auto hide" +msgstr "הסתרה אוטומטית" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:113 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "" +"התנהגות חלונית המאפיינים. 0 = לא להציג, 1 = להסתיר אוטומטית, 2 = להציג תמיד" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:117 +#: data/dconf/org.freedesktop.ibus.gschema.xml:121 +msgid "Language panel position" +msgstr "מיקום חלונית שפה" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:125 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "לעקוב אחר סמן הקלט במקרה שהחלונית תמיד מופיעה" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:126 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" +"אם true (אמת), החלונית עוקבת אחר סמן הקלט במקרה שהחלונית מופיעה תמיד. אם " +"false (שקר), החלונית מופיעה במקום קבוע." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:130 +msgid "The milliseconds to show property panel" +msgstr "המילישניות להצגת חלונית המאפיינים" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:131 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "המילישניות להצגת חלונית מאפיינים לאחר שינויים במיקוד או במאפיינים." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:135 +msgid "Orientation of lookup table" +msgstr "כיוון טבלת החיפוש" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:136 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "כיוון טבלת החיפוש. 0 = אופקית, 1 = אנכית" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:140 +#: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 +#: setup/setup.ui:475 +msgid "Show icon on system tray" +msgstr "הצגת סמל במגש המערכת" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:145 +msgid "Show input method name" +msgstr "להציג את שם שיטת הקלט" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 +msgid "Show input method name on language bar" +msgstr "הצגת שם שיטת הקלט בסרגל השפה" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:150 +msgid "RGBA value of XKB icon" +msgstr "ערך RGBA של סמל XKB" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:151 +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form 'rgba(r," +"g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 to 255 or " +"percentage values in the range 0% to 100%, and 'a' is a floating point value " +"in the range 0 to 1 of the alpha." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:155 +msgid "The milliseconds to show the panel icon for a property" +msgstr "המילישניות להצגת סמל חלונית למאפיין" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:156 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:160 +msgid "Use custom font" +msgstr "להשתמש בגופן מותאם אישית" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:161 +msgid "Use custom font name for language panel" +msgstr "להשתמש בשם של גופן בהתאמה אישית ללוח השפה" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:165 +#: data/dconf/org.freedesktop.ibus.gschema.xml:192 +msgid "Custom font" +msgstr "גופן בהתאמה אישית" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:166 +msgid "Custom font name for language panel" +msgstr "שם גופן בהתאמה אישית לחלונית גופן" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:170 setup/setup.ui:1305 +msgid "Choose glyphs with input method's language on candidate window" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:171 +msgid "" +"Some code points have the different glyphs and Pango determines the glyphs " +"from the language attribute. Pango chooses glyphs from the IBus engine's " +"language if the value is true and choose them from the desktop locale if the " +"value is false." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:182 +msgid "Unicode shortcut keys for gtk_accelerator_parse" +msgstr "מקשי קיצור יוניקוד של gtk_accelerator_parse" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:183 +msgid "The shortcut keys for turning Unicode typing on or off" +msgstr "מקשי הקיצור להפעלה או השבתה של הקלדת יוניקוד" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:187 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "מקשי קיצור לאמוג׳י של gtk_accelerator_parse" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:188 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "מקשי הקיצור להפעלה או השבתה של הקלדת אמוג׳י" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:193 +msgid "Custom font name for emoji characters on emoji dialog" +msgstr "שם גופן בהתאמה אישית לתווי אמוג׳י בחלונית אמוג׳י" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:197 +msgid "Default language for emoji dictionary" +msgstr "שפת בררת מחדל ליומן אמוג׳י" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:198 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict ." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:202 +msgid "favorite emoji list on emoji dialog" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:203 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:207 +msgid "favorite emoji annotation list on emoji dialog" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:208 +msgid "You can assign an annotation for a favorite emoji in this list." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:212 +msgid "Whether emoji annotations can be match partially or not" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:213 +msgid "" +"Whether emoji annotations can be matched with a partial string instead of " +"the exact match or not." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:217 +msgid "Match emoji annotations with the specified length" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:218 +msgid "" +"Match emoji annotations partially with more than the specified number of " +"characters instead of the exact match." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:222 +msgid "Choose a condition to match emoji annotations partially" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:223 +msgid "" +"Choose one of the following conditions to match emoji annotations partially: " +"0 == Prefix match, 1 == Suffix match, 2 == Containing match" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:227 +msgid "Load the emoji data at the time of startup" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:228 +msgid "" +"Load the emoji data at the time of startup if true. About 10MB memory is " +"needed to load the data. Load the emoji data when open the emoji dialog at " +"the beginning if false." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:232 +msgid "Load the Unicode data at the time of startup" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:233 +msgid "" +"Load the Unicode data at the time of startup if true. About 15MB memory is " +"needed to load the data. Load the Unicode data when open the emoji dialog at " +"the beginning if false. The Unicode data is always loaded after the emoji " +"data is loaded even if true." +msgstr "" + +#: ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "" +"כל הזכויות שמורות (c) 2007‏-2010 פנג הואנג\n" +"כל הזכויות שמורות (c) 2007‏-2010 רד הט בע״מ." + +#: ibus/lang.py:41 src/ibusutil.c:209 +msgid "Other" +msgstr "אחר" + +#: setup/emojilang.py:67 +msgid "Select a language" +msgstr "נא לבחור שפה" + +#: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 +#: setup/main.py:560 +msgid "_Cancel" +msgstr "" + +#: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 +msgid "_OK" +msgstr "" + +#: setup/emojilang.py:235 setup/enginedialog.py:205 +msgid "More…" +msgstr "" + +#: setup/engineabout.py:37 setup/setup.ui:1368 ui/gtk3/panel.vala:1162 +msgid "About" +msgstr "על אודות" + +#: setup/engineabout.py:40 setup/setup.ui:1391 +msgid "_Close" +msgstr "_סגירה" + +#: setup/engineabout.py:72 +#, python-format +msgid "Language: %s\n" +msgstr "שפה: %s\n" + +#: setup/engineabout.py:75 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "פריסת מקלדת: %s\n" + +#: setup/engineabout.py:78 +#, python-format +msgid "Author: %s\n" +msgstr "יצירה: %s\n" + +#: setup/engineabout.py:81 +msgid "Description:\n" +msgstr "תיאור:\n" + +#: setup/enginecombobox.py:139 setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "נא לבחור שיטת קלט" + +#. add button +#: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 +msgid "_Add" +msgstr "הו_ספה" + +#. create im name & icon column +#: setup/enginetreeview.py:69 setup/setup.ui:838 +msgid "Input Method" +msgstr "שיטת קלט" + +#: setup/ibus-setup.desktop:3 setup/setup.ui:69 +msgid "IBus Preferences" +msgstr "העדפות IBus" + +#: setup/ibus-setup.desktop:4 +msgid "Set IBus Preferences" +msgstr "הגדרת העדפות IBus" + +#: setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "קיצורי מקלדת" + +#: setup/keyboardshortcut.py:67 +msgid "Key code:" +msgstr "קוד מקש:" + +#: setup/keyboardshortcut.py:82 +msgid "Modifiers:" +msgstr "מקשי החלפה:" + +#. apply button +#: setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "" + +#. delete button +#: setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "" + +#: setup/keyboardshortcut.py:252 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "" +"נא ללחוץ על מקש (או על צירוף מקשים).\n" +"תיבת הדו־שיח תיסגר עם שחרור המקשים." + +#: setup/keyboardshortcut.py:255 +msgid "Please press a key (or a key combination)" +msgstr "נא ללחוץ על מקש (או על צירוף מקשים)" + +#: setup/main.py:121 setup/main.py:588 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "יש להשתמש במקש קיצור עם shift כדי לעבור לשיטת הקלט הקודמת" + +#: setup/main.py:515 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "הסוכן של IBus אינו פעיל. להפעיל אותו?" + +#: setup/main.py:536 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "" +"IBus הופעל! אם אין לך אפשרות להשתמש ב־IBus, עליך להוסיף את השורות הבאות אל ‎" +"$HOME/.bashrc;‎ ואז להיכנס מחדש לשולחן העבודה עם המשתמש שלך.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" + +#. Translators: %d == 5 currently +#: setup/main.py:550 +#, python-format +msgid "IBus daemon could not be started in %d seconds." +msgstr "לא ניתן להפעיל את הסוכן של IBus תוך %d שניות." + +#: setup/main.py:562 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "נא לבחור קיצור מקלדת עבור %s" + +#. Translators: Title of the window +#: setup/main.py:564 +msgid "switching input methods" +msgstr "החלפת שיטות קלט" + +#: setup/setup.ui:11 +msgid "Horizontal" +msgstr "אופקי" + +#: setup/setup.ui:14 +msgid "Vertical" +msgstr "אנכי" + +#: setup/setup.ui:25 +msgid "Top left corner" +msgstr "פינה שמאלית עליונה" + +#: setup/setup.ui:28 +msgid "Top right corner" +msgstr "פינה ימנית עליונה" + +#: setup/setup.ui:31 +msgid "Bottom left corner" +msgstr "פינה שמאלית תחתונה" + +#: setup/setup.ui:34 +msgid "Bottom right corner" +msgstr "פינה ימנית תחתונה" + +#: setup/setup.ui:37 +msgid "Custom" +msgstr "בהתאמה אישית" + +#: setup/setup.ui:48 +msgid "Do not show" +msgstr "לא להציג" + +#: setup/setup.ui:51 +msgid "Hide automatically" +msgstr "להסתיר אוטומטית" + +#: setup/setup.ui:54 +msgid "Always" +msgstr "תמיד" + +#: setup/setup.ui:113 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "מקשי הקיצור להחלפה לשיטת הקלט הבאה ברשימה" + +#: setup/setup.ui:115 +msgid "Next input method:" +msgstr "שיטת הקלט הבאה:" + +#: setup/setup.ui:127 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "מקשי הקיצור להחלפה לשיטת הקלט הקודמת ברשימה" + +#: setup/setup.ui:129 +msgid "Previous input method:" +msgstr "שיטת הקלט הקודמת:" + +#: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 +#: setup/setup.ui:903 setup/setup.ui:957 +msgid "..." +msgstr "…" + +#: setup/setup.ui:226 +msgid "Enable or disable:" +msgstr "הפעלה או השבתה:" + +#: setup/setup.ui:238 +msgid "Enable:" +msgstr "הפעלה:" + +#: setup/setup.ui:291 +msgid "Disable:" +msgstr "השבתה:" + +#: setup/setup.ui:345 setup/setup.ui:983 +msgid "Keyboard Shortcuts" +msgstr "קיצורי מקלדת" + +#: setup/setup.ui:374 +msgid "Set the orientation of candidates in lookup table" +msgstr "הגדרת כיוון המועמדים בטבלת החיפוש" + +#: setup/setup.ui:376 +msgid "Candidates orientation:" +msgstr "כיוון המועמדים:" + +#: setup/setup.ui:407 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "הגדרת ההתנהגות של ibus בנוגע להצגת או הסתרת סרגל השפה" + +#: setup/setup.ui:409 +msgid "Show property panel:" +msgstr "הצגת לוח מאפיינים:" + +#: setup/setup.ui:423 +msgid "Language panel position:" +msgstr "מיקום לוח השפה:" + +#: setup/setup.ui:494 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "להציג את שם שיטת הקלט בסרגל השפה כשהתיבה מסומנת" + +#: setup/setup.ui:508 +msgid "Embed preedit text in application window" +msgstr "הטמעת טקסט שנערך מראש בחלון היישום" + +#: setup/setup.ui:513 +msgid "Embed the preedit text of input method in the application window" +msgstr "הטמעת הטקסט שנערך מראש של שיטת קלט בחלון היישום" + +#: setup/setup.ui:527 +msgid "Use custom font:" +msgstr "להשתמש בגופן בהתאמה אישית:" + +#: setup/setup.ui:562 setup/setup.ui:1156 +msgid "Font and Style" +msgstr "גופן וסגנון" + +#: setup/setup.ui:579 +msgid "General" +msgstr "כללי" + +#: setup/setup.ui:671 +msgid "Add the selected input method into the enabled input methods" +msgstr "להוסיף את שיטת הקלט הנבחרת לשיטות הקלט הפעילות" + +#: setup/setup.ui:682 +msgid "_Remove" +msgstr "הס_רה" + +#: setup/setup.ui:689 +msgid "Remove the selected input method from the enabled input methods" +msgstr "להסיר את שיטת הקלט הנבחרת משיטות הקלט הפעילות" + +#: setup/setup.ui:700 +msgid "_Up" +msgstr "למ_עלה" + +#: setup/setup.ui:707 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "להעלות את שיטת הקלט ברשימת שיטות הקלט הפעילות" + +#: setup/setup.ui:718 +msgid "_Down" +msgstr "למ_טה" + +#: setup/setup.ui:725 +msgid "Move down the selected input method in the enabled input methods" +msgstr "להוריד את שיטת הקלט ברשימת שיטות הקלט הפעילות" + +#: setup/setup.ui:736 +msgid "_About" +msgstr "על _אודות" + +#: setup/setup.ui:743 +msgid "Show information of the selected input method" +msgstr "להציג מידע על שיטת הקלט הנבחרת" + +#: setup/setup.ui:754 +msgid "_Preferences" +msgstr "הע_דפות" + +#: setup/setup.ui:761 +msgid "Show setup of the selected input method" +msgstr "להציג את הגדרות שיטת הקלט הנבחרת" + +#: setup/setup.ui:812 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" +"ניתן להחליף את שיטת הקלט באופן מחזורי מתוך הנבחרות שברשימה הבאה על " +"ידי לחיצה על מקשי הקיצור במקלדת או על ידי לחיצה על הסמל שבלוח." + +#: setup/setup.ui:873 +msgid "" +"The shortcut keys to enable conversions of emoji annotations or Unicode names" +msgstr "" + +#: setup/setup.ui:875 +msgid "Emoji annotation:" +msgstr "" + +#: setup/setup.ui:927 +msgid "The shortcut keys to enable Unicode code point conversions" +msgstr "מקשי הקיצור להפעלת המרת נקודות קוד של יוניקוד" + +#: setup/setup.ui:929 +msgid "Unicode code point:" +msgstr "" + +#: setup/setup.ui:1013 +msgid "Set a font of Unicode candidates on the emoji dialog" +msgstr "" + +#: setup/setup.ui:1015 +msgid "Unicode font:" +msgstr "גופן יוניקוד:" + +#: setup/setup.ui:1038 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "" + +#: setup/setup.ui:1040 +msgid "Emoji annotation language:" +msgstr "" + +#: setup/setup.ui:1062 +msgid "" +"Match emoji annotations partially with the following condition and more than " +"the number of characters:" +msgstr "" + +#: setup/setup.ui:1067 +msgid "" +"If emoji annotations can be matched with a partial string instead of the " +"exact match" +msgstr "" + +#: setup/setup.ui:1101 +msgid "Prefix match" +msgstr "" + +#: setup/setup.ui:1115 +msgid "Suffix match" +msgstr "" + +#: setup/setup.ui:1130 +msgid "Containing match" +msgstr "" + +#: setup/setup.ui:1176 +msgid "Emoji" +msgstr "" + +#: setup/setup.ui:1230 +msgid "Keyboard Layout" +msgstr "פריסת מקלדת" + +#: setup/setup.ui:1278 +msgid "Global input method settings" +msgstr "הגדרות גלובליות לשיטות קלט" + +#: setup/setup.ui:1310 +msgid "" +"Choose glyphs with the input method's language on the candidate window for " +"the duplicated code points" +msgstr "" + +#: setup/setup.ui:1327 +msgid "Fonts" +msgstr "גופנים" + +#: setup/setup.ui:1347 +msgid "Advanced" +msgstr "מתקדם" + +#: src/ibusemojigen.h:30 +msgid "Activities" +msgstr "" + +#: src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "" + +#: src/ibusemojigen.h:32 +msgid "Component" +msgstr "" + +#: src/ibusemojigen.h:33 +msgid "Flags" +msgstr "" + +#: src/ibusemojigen.h:34 +msgid "Food & Drink" +msgstr "" + +#: src/ibusemojigen.h:35 +msgid "Objects" +msgstr "" + +#: src/ibusemojigen.h:36 +msgid "People & Body" +msgstr "" + +#: src/ibusemojigen.h:37 +msgid "Smileys & Emotion" +msgstr "" + +#: src/ibusemojigen.h:38 +msgid "Symbols" +msgstr "" + +#: src/ibusemojigen.h:39 +msgid "Travel & Places" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:33 +msgid "Basic Latin" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:37 +msgid "Latin-1 Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:41 +msgid "Latin Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:45 +msgid "Latin Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:49 +msgid "IPA Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:53 +msgid "Spacing Modifier Letters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:57 +msgid "Combining Diacritical Marks" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:61 +msgid "Greek and Coptic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:65 +msgid "Cyrillic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:69 +msgid "Cyrillic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:73 +msgid "Armenian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:77 +msgid "Hebrew" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:81 +msgid "Arabic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:85 +msgid "Syriac" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:89 +msgid "Arabic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:93 +msgid "Thaana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:97 +msgid "NKo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:101 +msgid "Samaritan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:105 +msgid "Mandaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:109 +msgid "Syriac Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:113 +msgid "Arabic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:117 +msgid "Devanagari" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:121 +msgid "Bengali" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:125 +msgid "Gurmukhi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:129 +msgid "Gujarati" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:133 +msgid "Oriya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:137 +msgid "Tamil" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:141 +msgid "Telugu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:145 +msgid "Kannada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:149 +msgid "Malayalam" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:153 +msgid "Sinhala" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:157 +msgid "Thai" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:161 +msgid "Lao" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:165 +msgid "Tibetan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:169 +msgid "Myanmar" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:173 +msgid "Georgian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:177 +msgid "Hangul Jamo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:181 +msgid "Ethiopic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:185 +msgid "Ethiopic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:189 +msgid "Cherokee" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:193 +msgid "Unified Canadian Aboriginal Syllabics" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:197 +msgid "Ogham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:201 +msgid "Runic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:205 +msgid "Tagalog" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:209 +msgid "Hanunoo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:213 +msgid "Buhid" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:217 +msgid "Tagbanwa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:221 +msgid "Khmer" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:225 +msgid "Mongolian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:229 +msgid "Unified Canadian Aboriginal Syllabics Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:233 +msgid "Limbu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:237 +msgid "Tai Le" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:241 +msgid "New Tai Lue" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:245 +msgid "Khmer Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:249 +msgid "Buginese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:253 +msgid "Tai Tham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:257 +msgid "Combining Diacritical Marks Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:261 +msgid "Balinese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:265 +msgid "Sundanese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:269 +msgid "Batak" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:273 +msgid "Lepcha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:277 +msgid "Ol Chiki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:281 +msgid "Cyrillic Extended-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:285 +msgid "Georgian Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:289 +msgid "Sundanese Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:293 +msgid "Vedic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:297 +msgid "Phonetic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:301 +msgid "Phonetic Extensions Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:305 +msgid "Combining Diacritical Marks Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:309 +msgid "Latin Extended Additional" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:313 +msgid "Greek Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:317 +msgid "General Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:321 +msgid "Superscripts and Subscripts" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:325 +msgid "Currency Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:329 +msgid "Combining Diacritical Marks for Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:333 +msgid "Letterlike Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:337 +msgid "Number Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:341 +msgid "Arrows" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:345 +msgid "Mathematical Operators" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:349 +msgid "Miscellaneous Technical" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:353 +msgid "Control Pictures" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:357 +msgid "Optical Character Recognition" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:361 +msgid "Enclosed Alphanumerics" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:365 +msgid "Box Drawing" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:369 +msgid "Block Elements" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:373 +msgid "Geometric Shapes" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:377 +msgid "Miscellaneous Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:381 +msgid "Dingbats" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:385 +msgid "Miscellaneous Mathematical Symbols-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:389 +msgid "Supplemental Arrows-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:393 +msgid "Braille Patterns" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:397 +msgid "Supplemental Arrows-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:401 +msgid "Miscellaneous Mathematical Symbols-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:405 +msgid "Supplemental Mathematical Operators" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:409 +msgid "Miscellaneous Symbols and Arrows" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:413 +msgid "Glagolitic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:417 +msgid "Latin Extended-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:421 +msgid "Coptic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:425 +msgid "Georgian Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:429 +msgid "Tifinagh" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:433 +msgid "Ethiopic Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:437 +msgid "Cyrillic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:441 +msgid "Supplemental Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:445 +msgid "CJK Radicals Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:449 +msgid "Kangxi Radicals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:453 +msgid "Ideographic Description Characters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:457 +msgid "CJK Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:461 +msgid "Hiragana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:465 +msgid "Katakana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:469 +msgid "Bopomofo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:473 +msgid "Hangul Compatibility Jamo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:477 +msgid "Kanbun" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:481 +msgid "Bopomofo Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:485 +msgid "CJK Strokes" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:489 +msgid "Katakana Phonetic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:493 +msgid "Enclosed CJK Letters and Months" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:497 +msgid "CJK Compatibility" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:501 +msgid "CJK Unified Ideographs Extension A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:505 +msgid "Yijing Hexagram Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:509 +msgid "CJK Unified Ideographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:513 +msgid "Yi Syllables" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:517 +msgid "Yi Radicals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:521 +msgid "Lisu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:525 +msgid "Vai" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:529 +msgid "Cyrillic Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:533 +msgid "Bamum" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:537 +msgid "Modifier Tone Letters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:541 +msgid "Latin Extended-D" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:545 +msgid "Syloti Nagri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:549 +msgid "Common Indic Number Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:553 +msgid "Phags-pa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:557 +msgid "Saurashtra" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:561 +msgid "Devanagari Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:565 +msgid "Kayah Li" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:569 +msgid "Rejang" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:573 +msgid "Hangul Jamo Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:577 +msgid "Javanese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:581 +msgid "Myanmar Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:585 +msgid "Cham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:589 +msgid "Myanmar Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:593 +msgid "Tai Viet" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:597 +msgid "Meetei Mayek Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:601 +msgid "Ethiopic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:605 +msgid "Latin Extended-E" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:609 +msgid "Cherokee Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:613 +msgid "Meetei Mayek" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:617 +msgid "Hangul Syllables" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:621 +msgid "Hangul Jamo Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:625 +msgid "High Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:629 +msgid "High Private Use Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:633 +msgid "Low Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:637 +msgid "Private Use Area" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:641 +msgid "CJK Compatibility Ideographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:645 +msgid "Alphabetic Presentation Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:649 +msgid "Arabic Presentation Forms-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:653 +msgid "Variation Selectors" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:657 +msgid "Vertical Forms" +msgstr "צורות אנכיות" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:661 +msgid "Combining Half Marks" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:665 +msgid "CJK Compatibility Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:669 +msgid "Small Form Variants" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:673 +msgid "Arabic Presentation Forms-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:677 +msgid "Halfwidth and Fullwidth Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:681 +msgid "Specials" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:685 +msgid "Linear B Syllabary" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:689 +msgid "Linear B Ideograms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:693 +msgid "Aegean Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:697 +msgid "Ancient Greek Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:701 +msgid "Ancient Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:705 +msgid "Phaistos Disc" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:709 +msgid "Lycian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:713 +msgid "Carian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:717 +msgid "Coptic Epact Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:721 +msgid "Old Italic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:725 +msgid "Gothic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:729 +msgid "Old Permic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:733 +msgid "Ugaritic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:737 +msgid "Old Persian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:741 +msgid "Deseret" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:745 +msgid "Shavian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:749 +msgid "Osmanya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:753 +msgid "Osage" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:757 +msgid "Elbasan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:761 +msgid "Caucasian Albanian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:765 +msgid "Linear A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:769 +msgid "Cypriot Syllabary" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:773 +msgid "Imperial Aramaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:777 +msgid "Palmyrene" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:781 +msgid "Nabataean" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:785 +msgid "Hatran" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:789 +msgid "Phoenician" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:793 +msgid "Lydian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:797 +msgid "Meroitic Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:801 +msgid "Meroitic Cursive" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:805 +msgid "Kharoshthi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:809 +msgid "Old South Arabian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:813 +msgid "Old North Arabian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:817 +msgid "Manichaean" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:821 +msgid "Avestan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:825 +msgid "Inscriptional Parthian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:829 +msgid "Inscriptional Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:833 +msgid "Psalter Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:837 +msgid "Old Turkic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:841 +msgid "Old Hungarian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:845 +msgid "Hanifi Rohingya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:849 +msgid "Rumi Numeral Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:853 +msgid "Yezidi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:857 +msgid "Old Sogdian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:861 +msgid "Sogdian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:865 +msgid "Chorasmian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:869 +msgid "Elymaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:873 +msgid "Brahmi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:877 +msgid "Kaithi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:881 +msgid "Sora Sompeng" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:885 +msgid "Chakma" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:889 +msgid "Mahajani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:893 +msgid "Sharada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:897 +msgid "Sinhala Archaic Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:901 +msgid "Khojki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:905 +msgid "Multani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:909 +msgid "Khudawadi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:913 +msgid "Grantha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:917 +msgid "Newa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:921 +msgid "Tirhuta" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:925 +msgid "Siddham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:929 +msgid "Modi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:933 +msgid "Mongolian Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:937 +msgid "Takri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:941 +msgid "Ahom" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:945 +msgid "Dogra" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:949 +msgid "Warang Citi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:953 +msgid "Dives Akuru" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:957 +msgid "Nandinagari" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:961 +msgid "Zanabazar Square" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:965 +msgid "Soyombo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:969 +msgid "Pau Cin Hau" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:973 +msgid "Bhaiksuki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:977 +msgid "Marchen" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:981 +msgid "Masaram Gondi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:985 +msgid "Gunjala Gondi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:989 +msgid "Makasar" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:993 +msgid "Lisu Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:997 +msgid "Tamil Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1001 +msgid "Cuneiform" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1005 +msgid "Cuneiform Numbers and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1009 +msgid "Early Dynastic Cuneiform" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1013 +msgid "Egyptian Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1017 +msgid "Egyptian Hieroglyph Format Controls" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1021 +msgid "Anatolian Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1025 +msgid "Bamum Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1029 +msgid "Mro" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1033 +msgid "Bassa Vah" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1037 +msgid "Pahawh Hmong" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1041 +msgid "Medefaidrin" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1045 +msgid "Miao" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1049 +msgid "Ideographic Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1053 +msgid "Tangut" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1057 +msgid "Tangut Components" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1061 +msgid "Khitan Small Script" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1065 +msgid "Tangut Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1069 +msgid "Kana Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1073 +msgid "Kana Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1077 +msgid "Small Kana Extension" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1081 +msgid "Nushu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1085 +msgid "Duployan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1089 +msgid "Shorthand Format Controls" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1093 +msgid "Byzantine Musical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1097 +msgid "Musical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1101 +msgid "Ancient Greek Musical Notation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1105 +msgid "Mayan Numerals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1109 +msgid "Tai Xuan Jing Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1113 +msgid "Counting Rod Numerals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1117 +msgid "Mathematical Alphanumeric Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1121 +msgid "Sutton SignWriting" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1125 +msgid "Glagolitic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1129 +msgid "Nyiakeng Puachue Hmong" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1133 +msgid "Wancho" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1137 +msgid "Mende Kikakui" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1141 +msgid "Adlam" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1145 +msgid "Indic Siyaq Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1149 +msgid "Ottoman Siyaq Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1153 +msgid "Arabic Mathematical Alphabetic Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1157 +msgid "Mahjong Tiles" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1161 +msgid "Domino Tiles" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1165 +msgid "Playing Cards" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1169 +msgid "Enclosed Alphanumeric Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1173 +msgid "Enclosed Ideographic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1177 +msgid "Miscellaneous Symbols and Pictographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1181 +msgid "Emoticons" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1185 +msgid "Ornamental Dingbats" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1189 +msgid "Transport and Map Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1193 +msgid "Alchemical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1197 +msgid "Geometric Shapes Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1201 +msgid "Supplemental Arrows-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1205 +msgid "Supplemental Symbols and Pictographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1209 +msgid "Chess Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1213 +msgid "Symbols and Pictographs Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1217 +msgid "Symbols for Legacy Computing" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1221 +msgid "CJK Unified Ideographs Extension B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1225 +msgid "CJK Unified Ideographs Extension C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1229 +msgid "CJK Unified Ideographs Extension D" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1233 +msgid "CJK Unified Ideographs Extension E" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1237 +msgid "CJK Unified Ideographs Extension F" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1241 +msgid "CJK Compatibility Ideographs Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1245 +msgid "CJK Unified Ideographs Extension G" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1249 +msgid "Tags" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1253 +msgid "Variation Selectors Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1257 +msgid "Supplementary Private Use Area-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1261 +msgid "Supplementary Private Use Area-B" +msgstr "" + +#: tools/main.vala:51 +msgid "List engine name only" +msgstr "List engine name only" + +#: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 +msgid "Can't connect to IBus.\n" +msgstr "Can't connect to IBus.\n" + +#: tools/main.vala:93 +#, c-format +msgid "language: %s\n" +msgstr "language: %s\n" + +#: tools/main.vala:161 +msgid "No engine is set.\n" +msgstr "No engine is set.\n" + +#: tools/main.vala:169 +msgid "Set global engine failed.\n" +msgstr "Set global engine failed.\n" + +#: tools/main.vala:174 +msgid "Get global engine failed.\n" +msgstr "Get global engine failed.\n" + +#: tools/main.vala:217 +msgid "Read the system registry cache." +msgstr "Read the system registry cache." + +#: tools/main.vala:219 +msgid "Read the registry cache FILE." +msgstr "Read the registry cache FILE." + +#: tools/main.vala:237 tools/main.vala:242 +msgid "The registry cache is invalid.\n" +msgstr "The registry cache is invalid.\n" + +#: tools/main.vala:257 +msgid "Write the system registry cache." +msgstr "Write the system registry cache." + +#: tools/main.vala:259 +msgid "Write the registry cache FILE." +msgstr "Write the registry cache FILE." + +#: tools/main.vala:295 +msgid "" +"Use engine schema paths instead of ibus core, which can be comma-separated " +"values." +msgstr "" +"Use engine schema paths instead of ibus core, which can be comma-separated " +"values." + +#: tools/main.vala:381 +msgid "Resetting…" +msgstr "Resetting…" + +#: tools/main.vala:399 +msgid "Done" +msgstr "Done" + +#: tools/main.vala:444 +msgid "Set or get engine" +msgstr "Set or get engine" + +#: tools/main.vala:445 +msgid "Exit ibus-daemon" +msgstr "Exit ibus-daemon" + +#: tools/main.vala:446 +msgid "Show available engines" +msgstr "Show available engines" + +#: tools/main.vala:447 +msgid "(Not implemented)" +msgstr "(Not implemented)" + +#: tools/main.vala:448 +msgid "Restart ibus-daemon" +msgstr "Restart ibus-daemon" + +#: tools/main.vala:449 +msgid "Show version" +msgstr "Show version" + +#: tools/main.vala:450 +msgid "Show the content of registry cache" +msgstr "Show the content of registry cache" + +#: tools/main.vala:451 +msgid "Create registry cache" +msgstr "Create registry cache" + +#: tools/main.vala:452 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "Print the D-Bus address of ibus-daemon" + +#: tools/main.vala:453 +msgid "Show the configuration values" +msgstr "Show the configuration values" + +#: tools/main.vala:454 +msgid "Reset the configuration values" +msgstr "Reset the configuration values" + +#: tools/main.vala:456 +msgid "Save emoji on dialog to clipboard" +msgstr "Save emoji on dialog to clipboard" + +#: tools/main.vala:458 +msgid "Show this information" +msgstr "Show this information" + +#: tools/main.vala:464 +#, c-format +msgid "" +"Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "" +"Usage: %s COMMAND [OPTION...]\n" +"\n" + +#: tools/main.vala:465 +msgid "Commands:\n" +msgstr "Commands:\n" + +#: tools/main.vala:494 +#, c-format +msgid "%s is unknown command!\n" +msgstr "%s is unknown command!\n" + +#: ui/gtk3/emojier.vala:233 +msgid "Favorites" +msgstr "מועדפים" + +#: ui/gtk3/emojier.vala:234 +msgid "Others" +msgstr "אחרים" + +#: ui/gtk3/emojier.vala:235 +msgid "Open Unicode choice" +msgstr "" + +#: ui/gtk3/emojier.vala:995 +msgid "Bring back emoji choice" +msgstr "" + +#: ui/gtk3/emojier.vala:1097 +msgid "Page Down" +msgstr "" + +#: ui/gtk3/emojier.vala:1108 +msgid "Page Up" +msgstr "" + +#: ui/gtk3/emojier.vala:1111 +msgid "Show emoji variants" +msgstr "" + +#: ui/gtk3/emojier.vala:1112 +msgid "Close" +msgstr "סגירה" + +#: ui/gtk3/emojier.vala:1118 +msgid "Menu" +msgstr "" + +#: ui/gtk3/emojier.vala:1129 +msgid "Click to view a warning message" +msgstr "" + +#: ui/gtk3/emojier.vala:1173 +msgid "Loading a Unicode dictionary:" +msgstr "" + +#: ui/gtk3/emojier.vala:1419 +#, c-format +msgid "Code point: %s" +msgstr "" + +#: ui/gtk3/emojier.vala:1425 +msgid "Has emoji variants" +msgstr "" + +#: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 +#, c-format +msgid "Description: %s" +msgstr "תיאור: %s" + +#: ui/gtk3/emojier.vala:1592 +msgid "None" +msgstr "" + +#: ui/gtk3/emojier.vala:1616 +#, c-format +msgid "Annotations: %s" +msgstr "" + +#: ui/gtk3/emojier.vala:1642 +#, c-format +msgid "Name: %s" +msgstr "" + +#: ui/gtk3/emojier.vala:1650 +#, c-format +msgid "Alias: %s" +msgstr "" + +#: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 +#: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1147 +msgid "Emoji Choice" +msgstr "" + +#: ui/gtk3/emojier.vala:2142 +msgid "Unicode Choice" +msgstr "" + +#: ui/gtk3/emojier.vala:2432 +msgid "" +"Failed to get the current text application. Please re-focus your " +"application. E.g. Press Esc key several times to release the emoji typing " +"mode, click your desktop and click your text application again." +msgstr "" + +#: ui/gtk3/emojierapp.vala:47 +msgid "Canceled to choose an emoji." +msgstr "" + +#: ui/gtk3/emojierapp.vala:67 +msgid "Copied an emoji to your clipboard." +msgstr "" + +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ui/gtk3/emojierapp.vala:126 +msgid "\"FONT\" for emoji characters on emoji dialog" +msgstr "" + +#: ui/gtk3/emojierapp.vala:127 +msgid "FONT" +msgstr "" + +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ui/gtk3/emojierapp.vala:132 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" +msgstr "" + +#: ui/gtk3/emojierapp.vala:133 +msgid "LANG" +msgstr "" + +#: ui/gtk3/emojierapp.vala:135 +msgid "Emoji annotations can be match partially" +msgstr "" + +#: ui/gtk3/emojierapp.vala:139 +msgid "Match with the length of the specified integer" +msgstr "" + +#: ui/gtk3/emojierapp.vala:143 +msgid "Match with the condition of the specified integer" +msgstr "" + +#: ui/gtk3/panel.vala:292 ui/gtk3/panel.vala:323 +msgid "IBus Panel" +msgstr "לוח IBus" + +#: ui/gtk3/panel.vala:1119 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus היא אפיק קלט חכם ללינוקס/יוניקס." + +#: ui/gtk3/panel.vala:1123 +msgid "translator-credits" +msgstr "Yaron Shahrabani " + +#: ui/gtk3/panel.vala:1142 +msgid "Preferences" +msgstr "העדפות" + +#: ui/gtk3/panel.vala:1168 +msgid "Restart" +msgstr "הפעלה מחדש" + +#: ui/gtk3/panel.vala:1172 +msgid "Quit" +msgstr "יציאה" + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 +msgid "default:LTR" +msgstr "default:RTL" + +#~ msgid "" +#~ "IBus\n" +#~ "The intelligent input bus\n" +#~ "Homepage: https://github.com/ibus/ibus/wiki\n" +#~ "\n" +#~ "\n" +#~ "\n" +#~ msgstr "" +#~ "IBus\n" +#~ "אפיק הקלט החכם\n" +#~ "דף הבית: https://github.com/ibus/ibus/wiki\n" +#~ "\n" +#~ "\n" +#~ "\n" + +#~ msgid "Start ibus on login" +#~ msgstr "להפעיל את ibus עם הכניסה למערכת" + +#~ msgid "Startup" +#~ msgstr "התחלה" + +#~ msgid "" +#~ "The position of the language panel. 0 = Top left corner, 1 = Top right " +#~ "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +#~ msgstr "" +#~ "מיקום חלונית השפה. 0 = פינה שמאלית עליונה, 1 = פינה ימנית עליונה, 2 = " +#~ "פינה שמאלית תחתונה, 3 = פינה ימנית תחתונה, 4 = בהתאמה אישית" + +#~ msgid "Super+space is now the default hotkey." +#~ msgstr "Super+רווח הוא מקש הקיצור כבררת המחדל מעכשיו." diff --git a/po/hi.po b/po/hi.po index 9c8057387..b7a405579 100644 --- a/po/hi.po +++ b/po/hi.po @@ -1,541 +1,695 @@ -# translation of ibus.master.po to Hindi +# translation of ibus.pot to Hindi # Hindi translation of ibus. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # -# Rajesh Ranjan , 2009. -# Rajesh Ranjan , 2009-2011. +# Translators: +# Rajesh Ranjan , 2009 +# Rajesh Ranjan , 2009,2011-2013 +# Rajesh Ranjan , 2013 msgid "" msgstr "" -"Project-Id-Version: ibus.master\n" -"Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/list\n" -"POT-Creation-Date: 2011-03-08 12:32+0900\n" -"PO-Revision-Date: 2011-03-22 15:23+0000\n" +"Project-Id-Version: IBus\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2014-02-18 13:46+0900\n" +"PO-Revision-Date: 2014-02-18 05:46+0000\n" "Last-Translator: Rajesh Ranjan \n" -"Language-Team: Hindi \n" -"Language: hi\n" +"Language-Team: Hindi \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.11.4\n" +"Language: hi\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ../bus/ibus.desktop.in.h:1 -msgid "IBus" -msgstr "IBus" +#: ../setup/setup.ui.h:1 +msgid "Horizontal" +msgstr "क्षैतिज" -#: ../bus/ibus.desktop.in.h:2 -msgid "Input Method Framework" -msgstr "IBus विधि फ्रेमवर्क" +#: ../setup/setup.ui.h:2 +msgid "Vertical" +msgstr "लंबवत" -#: ../bus/ibus.desktop.in.h:3 -msgid "Start IBus Input Method Framework" -msgstr "IBus इनपुट विधि फ्रेमवर्क आरंभ करें" +#: ../setup/setup.ui.h:3 +msgid "Top left corner" +msgstr "ऊपरी बायां कोना" -#: ../ibus/_config.py.in:39 -msgid "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." -msgstr "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +#: ../setup/setup.ui.h:4 +msgid "Top right corner" +msgstr "ऊपरी दाहिना कोना" -#: ../ibus/lang.py:41 -msgid "Other" -msgstr "अन्य" +#: ../setup/setup.ui.h:5 +msgid "Bottom left corner" +msgstr "निचला बायां कोना" -#: ../ui/gtk/candidatepanel.py:264 -msgid "Previous page" -msgstr "पिछला पृष्ठ" +#: ../setup/setup.ui.h:6 +msgid "Bottom right corner" +msgstr "निचला दाहिना कोना" -#: ../ui/gtk/candidatepanel.py:269 -msgid "Next page" -msgstr "अगला पृष्ठ" +#: ../setup/setup.ui.h:7 +msgid "Custom" +msgstr "मनपसंद" -#: ../ui/gtk/main.py:55 -msgid "" -"Some input methods have been installed, removed or updated. Please restart " -"ibus input platform." +#: ../setup/setup.ui.h:8 +msgid "Do not show" msgstr "" -"कुछ इनपुट विधियाँ संस्थापित, हटाई या अद्यतन की गई हैं. कृपया ibus इनपुट " -"प्लैटफॉर्म को फिर आरंभ करें." -#: ../ui/gtk/main.py:59 -msgid "Restart Now" -msgstr "अब फिर प्रारंभ करें" +#: ../setup/setup.ui.h:9 +msgid "Hide automatically" +msgstr "" -#: ../ui/gtk/main.py:60 -msgid "Later" -msgstr "बाद में" +#: ../setup/setup.ui.h:10 +msgid "Always" +msgstr "हमेशा" -#: ../ui/gtk/panel.py:109 -msgid "IBus input method framework" -msgstr "IBus इनपुट विधि फ्रेमवर्क" +#: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 +msgid "IBus Preferences" +msgstr "IBus वरीयता" -#: ../ui/gtk/panel.py:327 -msgid "Restart" -msgstr "पुनः प्रारंभ करें" +#: ../setup/setup.ui.h:12 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "सूची में अगली इनपुट विधि में जाने के लिए शॉर्टकट कुंजी" -#: ../ui/gtk/panel.py:414 -msgid "Turn off input method" -msgstr "इनपुट विधि बंद करें" +#: ../setup/setup.ui.h:13 +msgid "Next input method:" +msgstr "अगली इनपुट विधि :" -#: ../ui/gtk/panel.py:453 -msgid "No input window" -msgstr "कोई इनपुट विंडो नहीं" +#: ../setup/setup.ui.h:14 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "सूची में पिछली इनपुट विधि में जाने के लिए शॉर्टकट कुंजी" -#: ../ui/gtk/panel.py:484 -msgid "IBus is an intelligent input bus for Linux/Unix." -msgstr "IBus Linux/Unix के लिए तेज तर्रार इनपुट बस है." +#: ../setup/setup.ui.h:15 +msgid "Previous input method:" +msgstr "पिछली इनपुट विधि:" -#: ../ui/gtk/panel.py:488 -msgid "translator-credits" -msgstr "राजेश रंजन (rranjan@redhat.com)" +#: ../setup/setup.ui.h:16 +msgid "..." +msgstr "..." -#: ../ui/gtk/languagebar.py:106 -msgid "About the input method" -msgstr "इनपुट विधि का परिचय" +#: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 +msgid "The shortcut keys for turning input method on or off" +msgstr "इनपुट विधि को चालू या बंद रखने के लिए शॉर्टकट कुंजी" -#: ../ui/gtk/languagebar.py:214 -msgid "Switch input method" -msgstr "इनपुट विधि बदलें" +#: ../setup/setup.ui.h:18 +msgid "Enable or disable:" +msgstr "सक्रिय या निष्क्रिय करें:" -#: ../ui/gtk/languagebar.py:357 ../ui/gtk/engineabout.py:33 -#: ../setup/engineabout.py:33 ../setup/setup.ui.h:16 -msgid "About" -msgstr "परिचय" +#: ../setup/setup.ui.h:19 +msgid "Enable:" +msgstr "सक्रिय करें:" -#: ../ui/gtk/languagebar.py:361 -msgid "About the Input Method" -msgstr "इनपुट विधि का परिचय" +#: ../setup/setup.ui.h:20 +msgid "Disable:" +msgstr "निष्क्रिय करें:" -#: ../ui/gtk/engineabout.py:61 ../setup/engineabout.py:61 -#, python-format -msgid "Language: %s\n" -msgstr "भाषा: %s\n" +#: ../setup/setup.ui.h:21 +msgid "Keyboard Shortcuts" +msgstr "कुंजीपटल शॉर्टकट" -#: ../ui/gtk/engineabout.py:63 ../setup/engineabout.py:63 -#, python-format -msgid "Keyboard layout: %s\n" -msgstr "कुंजीपट लेआउट: %s\n" +#: ../setup/setup.ui.h:22 +msgid "Set the orientation of candidates in lookup table" +msgstr "लुकअप सारणी में कंडीडेट की दिशा सेट करें" -#: ../ui/gtk/engineabout.py:65 ../setup/engineabout.py:65 -#, python-format -msgid "Author: %s\n" -msgstr "लेखक: %s\n" +#: ../setup/setup.ui.h:23 +msgid "Candidates orientation:" +msgstr "कंडीडेट दिशा:" -#: ../ui/gtk/engineabout.py:67 ../setup/engineabout.py:67 -msgid "Description:\n" -msgstr "विवरण:\n" +#: ../setup/setup.ui.h:24 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "ibus का आचरण सेट करें कि कैसे भाषा पट्टी को दिखाना या छिपाना है" -#: ../setup/main.py:102 -msgid "trigger" -msgstr "ट्रिगर" +#: ../setup/setup.ui.h:25 +msgid "Show property panel:" +msgstr "" -#: ../setup/main.py:113 -msgid "enable" -msgstr "सक्रिय करें" +#: ../setup/setup.ui.h:26 +msgid "Language panel position:" +msgstr "भाषा पैनल स्थिति:" -#: ../setup/main.py:124 -msgid "disable" -msgstr "निष्क्रिय करें" +#: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 +msgid "Show icon on system tray" +msgstr "तंत्र तश्तरी पर प्रतीक दिखाएँ" -#: ../setup/main.py:135 -msgid "next input method" -msgstr "अगली इनपुट विधि" +#: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 +msgid "Show input method name on language bar" +msgstr "भाषा पट्टी पर इनपुट विधि नाम दिखाएँ" -#: ../setup/main.py:146 -msgid "previous input method" -msgstr "पिछली इनपुट विधि" +#: ../setup/setup.ui.h:29 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "भाषा पट्टी पर इनपुट विधि नाम दिखाएँ जब जाँचपेटी जाँचा गया है" -#: ../setup/main.py:286 -msgid "IBus daemon is not started. Do you want to start it now?" -msgstr "IBus अबतक आरंभ नहीं हुआ है. क्या आप इसे आरंभ करना चाहते हैं?" +#: ../setup/setup.ui.h:30 +msgid "Embed preedit text in application window" +msgstr "अनुप्रयोग विंडो में पूर्वसंपादित पाठ अंतःस्थापित करें" -#: ../setup/main.py:301 -msgid "" -"IBus has been started! If you can not use IBus, please add below lines in $HOME/.bashrc, and relogin your desktop.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" -msgstr "" -"IBus आरंभ किया गया है! यदि आप IBus का प्रयोग नहीं कर सकते हैं, कृपया नीचे की पंक्ति को $HOME/.bashrc में जोड़ें, और अपने डेस्कटॉप में फिर लॉगिन करें.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +#: ../setup/setup.ui.h:31 +msgid "Embed the preedit text of input method in the application window" +msgstr "इनपुट विधि के पूर्वसंपादित पाठ को अनुप्रयोग विंडो में अंतःस्थापित करें" -#: ../setup/main.py:316 -#, python-format -msgid "Select keyboard shortcut for %s" -msgstr "%s के लिए कुंजीपटल शॉर्टकर्ट चुनें" +#: ../setup/setup.ui.h:32 +msgid "Use custom font:" +msgstr "मनपसंद फ़ॉन्ट का प्रयोग करें:" -#: ../setup/keyboardshortcut.py:52 -msgid "Keyboard shortcuts" -msgstr "कुंजीपटल शॉर्टकर्ट" +#: ../setup/setup.ui.h:33 +msgid "Font and Style" +msgstr "फ़ॉन्ट व शैली" -#: ../setup/keyboardshortcut.py:63 -msgid "Key code:" -msgstr "कुंजी कोड:" +#: ../setup/setup.ui.h:34 +msgid "General" +msgstr "सामान्य" -#: ../setup/keyboardshortcut.py:78 -msgid "Modifiers:" -msgstr "परिवर्तनकर्ता:" +#. add button +#: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 +msgid "_Add" +msgstr "जोड़ें (_A)" -#: ../setup/keyboardshortcut.py:231 -msgid "" -"Please press a key (or a key combination).\n" -"The dialog will be closed when the key is released." -msgstr "" -"कृपया कोई कुंजी दबाएँ (या कोई कुंजी संयोग).\n" -"यह संवाद कुंजी छोड़े जाने पर बंद हो जाएगा." +#: ../setup/setup.ui.h:36 +msgid "Add the selected input method into the enabled input methods" +msgstr "सक्रिय किए गए इनपुट विधि में चुनी गई इनपुट विधियों को जोड़ें" -#: ../setup/keyboardshortcut.py:233 -msgid "Please press a key (or a key combination)" -msgstr "कृपया कोई कुंजी दबाएँ (या कोई कुंजी संयोग)" +#: ../setup/setup.ui.h:37 +msgid "_Remove" +msgstr "हटाएँ (_R)" -#: ../setup/enginecombobox.py:120 -msgid "Select an input method" -msgstr "कोई इनपुट विधि चुनें" +#: ../setup/setup.ui.h:38 +msgid "Remove the selected input method from the enabled input methods" +msgstr "सक्रिय की गई इनपुट विधियों में चुनी गई इनपुट विधियों हटाएँ" + +#: ../setup/setup.ui.h:39 +msgid "_Up" +msgstr "ऊपर (_U)" + +#: ../setup/setup.ui.h:40 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "सक्रिय की गई इनपुट विधि सूची में चुनी गई इनपुट विधियों को ले जाएँ" + +#: ../setup/setup.ui.h:41 +msgid "_Down" +msgstr "नीचे (_D)" + +#: ../setup/setup.ui.h:42 +msgid "Move down the selected input method in the enabled input methods" +msgstr "सक्रिय की गई इनपुट विधियों में चुनी गई इनपुट विधियों को खिसकाएँ" + +#: ../setup/setup.ui.h:43 +msgid "_About" +msgstr "परिचय (_A)" + +#: ../setup/setup.ui.h:44 +msgid "Show information of the selected input method" +msgstr "चुनी गई इनपुट विधि की सूचना दिखाएँ" + +#: ../setup/setup.ui.h:45 +msgid "_Preferences" +msgstr "वरीयता (_P)" + +#: ../setup/setup.ui.h:46 +msgid "Show setup of the selected input method" +msgstr "चुने गए इनपुट विधि का सेटअप दिखाएँ" + +#: ../setup/setup.ui.h:47 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" #. create im name & icon column -#: ../setup/enginetreeview.py:64 ../setup/setup.ui.h:33 +#: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "इनपुट विधि" -#: ../setup/enginetreeview.py:92 -msgid "Kbd" -msgstr "Kbd" +#: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 +msgid "Use system keyboard layout" +msgstr "तंत्र कुंजीपट लेआउट का प्रयोग करें" -#: ../setup/ibus-setup.desktop.in.h:1 ../setup/setup.ui.h:32 -msgid "IBus Preferences" -msgstr "IBus वरीयता" +#: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 +msgid "Use system keyboard (XKB) layout" +msgstr "तंत्र कुंजीपट (XKB) लेआउट का प्रयोग करें" -#: ../setup/ibus-setup.desktop.in.h:2 -msgid "Set IBus Preferences" -msgstr "IBus वरीयताएँ सेट करें" +#: ../setup/setup.ui.h:51 +msgid "Keyboard Layout" +msgstr "कुंजीपट लेआउट" + +#: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 +msgid "Share the same input method among all applications" +msgstr "सभी अनुप्रयोगों के बीच समान इनपुट विधि को साझा करें" + +#: ../setup/setup.ui.h:53 +msgid "Global input method settings" +msgstr "कोई इनपुट विधि चुनें" + +#: ../setup/setup.ui.h:54 +msgid "Advanced" +msgstr "उन्नत" + +#: ../setup/setup.ui.h:55 +msgid "" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" +msgstr "IBus\nतेज-तर्रार इनपुट बस\nहोमपेज: https://github.com/ibus/ibus/wiki\n\n\n\n" + +#: ../setup/setup.ui.h:62 +msgid "Start ibus on login" +msgstr "लॉगिन पर ibus आरंभ करें" + +#: ../setup/setup.ui.h:63 +msgid "Startup" +msgstr "स्टार्टअप" + +#: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 +msgid "About" +msgstr "परिचय" + +#: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 +msgid "_Close" +msgstr "बंद करें (_C)" #: ../data/ibus.schemas.in.h:1 -msgid "Auto hide" -msgstr "स्वतः छुपाएँ" +msgid "Preload engines" +msgstr "पहले से लोड इंजन" #: ../data/ibus.schemas.in.h:2 -msgid "Custom font" -msgstr "मनपसंद फ़ॉन्ट" +msgid "Preload engines during ibus starts up" +msgstr "ibus आरंभन के दौरान पहले से लोड इंजन" #: ../data/ibus.schemas.in.h:3 -msgid "Custom font name for language panel" -msgstr "भाषा पटल के लिए मनपसंद फ़ॉन्ट नाम" +msgid "Engines order" +msgstr "इंजन क्रम" #: ../data/ibus.schemas.in.h:4 -msgid "Disable shortcut keys" -msgstr "शॉर्टकट कुँजियाँ निष्क्रिय करें" +msgid "Saved engines order in input method list" +msgstr "इंजन क्रम को इनपुट विधि सूची में सहेजा" #: ../data/ibus.schemas.in.h:5 -msgid "Embed Preedit Text" -msgstr "पूर्वसंपादित पाठ अंतःस्थापित करें" +msgid "Popup delay milliseconds for IME switcher window" +msgstr "IME स्विचर विंडो के लिए आरंभिक विलम्ब मिलीसकेण्ड में" #: ../data/ibus.schemas.in.h:6 -msgid "Embed Preedit Text in Application Window" -msgstr "अनुप्रयोग विंडो में पूर्वसंपादित पाठ अंतःस्थापित करें" +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is " +"400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " +"not show the window and switch prev/next engines." +msgstr "IME स्विचर विंडो दिखाने के लिए पॉपअप विलंब को मिलीसेकेंड में सेट करें. तयशुदा है400. 0 = विंडो को तत्काल दिखाएँ. 0 < मिलीसेकेंड विलंब. 0 > विंडो को मत दिखाएँ और पिछला/अगला इंजन में स्विच करें." #: ../data/ibus.schemas.in.h:7 -msgid "Enable input method by default" -msgstr "इनपुट विधि को तयशुदा रूप से सक्रिय करें" +msgid "Saved version number" +msgstr "" #: ../data/ibus.schemas.in.h:8 -msgid "Enable input method by default when the application gets input focus" +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." msgstr "" -"जब अनुप्रयोग इनपुट फोकस पाता है तो इनपुट विधि को तयशुदा रूप से सक्रिय करें" #: ../data/ibus.schemas.in.h:9 -msgid "Enable shortcut keys" -msgstr "शॉर्टकट कुँजियाँ सक्रिय करें" - -#: ../data/ibus.schemas.in.h:10 -msgid "Language panel position" -msgstr "भाषा पैनल स्थिति" +msgid "Trigger shortcut keys" +msgstr "शॉर्टकट कुंजी ट्रिगर करें" #: ../data/ibus.schemas.in.h:11 -msgid "Next engine shortcut keys" -msgstr "अगला इंजन शॉर्टकट कुंजी" +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "gtk_accelerator_parse के लिए शॉर्टकट कुंजी ट्रिगर करें" #: ../data/ibus.schemas.in.h:12 -msgid "Orientation of lookup table" -msgstr "लुकअप सारणी की दिशा" +msgid "Enable shortcut keys" +msgstr "शॉर्टकट कुँजियाँ सक्रिय करें" #: ../data/ibus.schemas.in.h:13 -msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" -msgstr "सारणी देखने के लिए दिशा. 0 = क्षैतिज, 1 = लंबवत" +msgid "The shortcut keys for turning input method on" +msgstr "इनपुट विधि को चालू करने के लिए शॉर्टकट कुँजियाँ" #: ../data/ibus.schemas.in.h:14 -msgid "Preload engines" -msgstr "पहले से लोड इंजन" +msgid "Disable shortcut keys" +msgstr "शॉर्टकट कुँजियाँ निष्क्रिय करें" #: ../data/ibus.schemas.in.h:15 -msgid "Preload engines during ibus starts up" -msgstr "ibus आरंभन के दौरान पहले से लोड इंजन" - +msgid "The shortcut keys for turning input method off" +msgstr "इनपुट विधि को बंद करने के लिए शॉर्टकट कुँजियाँ" + #: ../data/ibus.schemas.in.h:16 -msgid "Prev engine shortcut keys" -msgstr "पिछला इंजन शॉर्टकट कुंजी" +msgid "Next engine shortcut keys" +msgstr "अगला इंजन शॉर्टकट कुंजी" -#: ../data/ibus.schemas.in.h:17 ../setup/setup.ui.h:42 -msgid "Share the same input method among all applications" -msgstr "सभी अनुप्रयोगों के बीच समान इनपुट विधि को साझा करें" +#: ../data/ibus.schemas.in.h:17 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "सूची में अगली इनपुट विधि में जाने के लिए शॉर्टकट कुंजियाँ" -#: ../data/ibus.schemas.in.h:18 ../setup/setup.ui.h:43 -msgid "Show icon on system tray" -msgstr "तंत्र तश्तरी पर प्रतीक दिखाएँ" +#: ../data/ibus.schemas.in.h:18 +msgid "Prev engine shortcut keys" +msgstr "पिछला इंजन शॉर्टकट कुंजी" #: ../data/ibus.schemas.in.h:19 -msgid "Show input method name" -msgstr "इनपुट विधि नाम दिखाएँ" +msgid "The shortcut keys for switching to the previous input method" +msgstr "सूची में पिछली इनपुट विधि में जाने के लिए शॉर्टकट कुंजियाँ" -#: ../data/ibus.schemas.in.h:20 ../setup/setup.ui.h:45 -msgid "Show input method name on language bar" -msgstr "भाषा पट्टी पर इनपुट विधि नाम दिखाएँ" +#: ../data/ibus.schemas.in.h:20 +msgid "Auto hide" +msgstr "स्वतः छुपाएँ" #: ../data/ibus.schemas.in.h:21 msgid "" -"The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = " -"Always show" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" msgstr "" -"भाषा फलक का व्यवहार. 0 = मेन्यू में अंतःस्थापित, 1 = स्वतः छिपाएँ, 2 = हमेशा" -" दिखाएँ" #: ../data/ibus.schemas.in.h:22 +msgid "Language panel position" +msgstr "भाषा पैनल स्थिति" + +#: ../data/ibus.schemas.in.h:23 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" -msgstr "" -"भाषा पटल की स्थिति. 0 = ऊपरी बायाँ कोना, 1 = ऊपरी दाहिना कोना, 2 = निचला " -"बायां कोना, 3 = निचला दाहिना कोना, 4 = पसंदीदा" - -#: ../data/ibus.schemas.in.h:23 -msgid "The shortcut keys for switching to the next input method in the list" -msgstr "सूची में अगली इनपुट विधि में जाने के लिए शॉर्टकट कुंजियाँ" +msgstr "भाषा पटल की स्थिति. 0 = ऊपरी बायाँ कोना, 1 = ऊपरी दाहिना कोना, 2 = निचला बायां कोना, 3 = निचला दाहिना कोना, 4 = पसंदीदा" #: ../data/ibus.schemas.in.h:24 -msgid "The shortcut keys for switching to the previous input method" -msgstr "सूची में पिछली इनपुट विधि में जाने के लिए शॉर्टकट कुंजियाँ" +msgid "Follow the input cursor in case the panel is always shown" +msgstr "" #: ../data/ibus.schemas.in.h:25 -msgid "The shortcut keys for turning input method off" -msgstr "इनपुट विधि को बंद करने के लिए शॉर्टकट कुँजियाँ" +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" #: ../data/ibus.schemas.in.h:26 -msgid "The shortcut keys for turning input method on" -msgstr "इनपुट विधि को चालू करने के लिए शॉर्टकट कुँजियाँ" +msgid "The milliseconds to show property panel" +msgstr "" -#: ../data/ibus.schemas.in.h:27 ../setup/setup.ui.h:51 -msgid "The shortcut keys for turning input method on or off" -msgstr "इनपुट विधि को चालू या बंद रखने के लिए शॉर्टकट कुंजी" +#: ../data/ibus.schemas.in.h:27 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" #: ../data/ibus.schemas.in.h:28 -msgid "Trigger shortcut keys" -msgstr "शॉर्टकट कुंजी ट्रिगर करें" +msgid "Orientation of lookup table" +msgstr "लुकअप सारणी की दिशा" #: ../data/ibus.schemas.in.h:29 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "सारणी देखने के लिए दिशा. 0 = क्षैतिज, 1 = लंबवत" + +#: ../data/ibus.schemas.in.h:31 +msgid "Show input method name" +msgstr "इनपुट विधि नाम दिखाएँ" + +#: ../data/ibus.schemas.in.h:35 msgid "Use custom font" msgstr "मनपसंद फ़ॉन्ट का प्रयोग करें" -#: ../data/ibus.schemas.in.h:30 +#: ../data/ibus.schemas.in.h:36 msgid "Use custom font name for language panel" msgstr "भाषा पटल के लिए मनपसंद फ़ॉन्ट नाम का प्रयोग करें" -#: ../data/ibus.schemas.in.h:31 +#: ../data/ibus.schemas.in.h:37 +msgid "Custom font" +msgstr "मनपसंद फ़ॉन्ट" + +#: ../data/ibus.schemas.in.h:38 +msgid "Custom font name for language panel" +msgstr "भाषा पटल के लिए मनपसंद फ़ॉन्ट नाम" + +#: ../data/ibus.schemas.in.h:39 +msgid "Embed Preedit Text" +msgstr "पूर्वसंपादित पाठ अंतःस्थापित करें" + +#: ../data/ibus.schemas.in.h:40 +msgid "Embed Preedit Text in Application Window" +msgstr "अनुप्रयोग विंडो में पूर्वसंपादित पाठ अंतःस्थापित करें" + +#: ../data/ibus.schemas.in.h:41 msgid "Use global input method" msgstr "लक्ष्य इनपुट विधि का प्रयोग करें" -#: ../data/ibus.schemas.in.h:32 ../setup/setup.ui.h:55 -msgid "Use system keyboard (XKB) layout" -msgstr "तंत्र कुंजीपट (XKB) लेआउट का प्रयोग करें" +#: ../data/ibus.schemas.in.h:43 +msgid "Enable input method by default" +msgstr "इनपुट विधि को तयशुदा रूप से सक्रिय करें" -#: ../data/ibus.schemas.in.h:33 ../setup/setup.ui.h:56 -msgid "Use system keyboard layout" -msgstr "तंत्र कुंजीपट लेआउट का प्रयोग करें" +#: ../data/ibus.schemas.in.h:44 +msgid "Enable input method by default when the application gets input focus" +msgstr "जब अनुप्रयोग इनपुट फोकस पाता है तो इनपुट विधि को तयशुदा रूप से सक्रिय करें" -#: ../setup/setup.ui.h:1 -msgid "..." -msgstr "..." +#: ../data/ibus.schemas.in.h:45 +msgid "DConf preserve name prefixes" +msgstr "DConf नाम उपसर्ग को संरक्षित करता है" -#: ../setup/setup.ui.h:2 -msgid "Font and Style" -msgstr "फ़ॉन्ट व शैली" +#: ../data/ibus.schemas.in.h:46 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "DConf कुँजी का उपसर्ग नाम वार्तालाप रोकने के लिए" -#: ../setup/setup.ui.h:3 -msgid "Global input method settings" +#: ../ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "Copyright (c) 2007-2010 Peng Huang\nCopyright (c) 2007-2010 Red Hat, Inc." + +#: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 +msgid "Other" +msgstr "अन्य" + +#: ../setup/engineabout.py:68 +#, python-format +msgid "Language: %s\n" +msgstr "भाषा: %s\n" + +#: ../setup/engineabout.py:71 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "कुंजीपट लेआउट: %s\n" + +#: ../setup/engineabout.py:74 +#, python-format +msgid "Author: %s\n" +msgstr "लेखक: %s\n" + +#: ../setup/engineabout.py:77 +msgid "Description:\n" +msgstr "विवरण:\n" + +#: ../setup/enginecombobox.py:139 +msgid "Select an input method" msgstr "कोई इनपुट विधि चुनें" -#: ../setup/setup.ui.h:4 -msgid "Keyboard Layout" -msgstr "कुंजीपट लेआउट" +#: ../setup/enginetreeview.py:94 +msgid "Kbd" +msgstr "Kbd" -#: ../setup/setup.ui.h:5 -msgid "Keyboard Shortcuts" -msgstr "कुंजीपटल शॉर्टकट" +#: ../setup/ibus-setup.desktop.in.h:2 +msgid "Set IBus Preferences" +msgstr "IBus वरीयताएँ सेट करें" -#: ../setup/setup.ui.h:6 -msgid "Startup" -msgstr "स्टार्टअप" +#: ../setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "कुंजीपटल शॉर्टकर्ट" -#: ../setup/setup.ui.h:7 +#: ../setup/keyboardshortcut.py:66 +msgid "Key code:" +msgstr "कुंजी कोड:" + +#: ../setup/keyboardshortcut.py:81 +msgid "Modifiers:" +msgstr "परिवर्तनकर्ता:" + +#. apply button +#: ../setup/keyboardshortcut.py:133 +msgid "_Apply" +msgstr "लागू करें (_A)" + +#. delete button +#: ../setup/keyboardshortcut.py:139 +msgid "_Delete" +msgstr "मिटाएँ (_D)" + +#: ../setup/keyboardshortcut.py:254 msgid "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" -msgstr "" -"IBus\n" -"तेज-तर्रार इनपुट बस\n" -"होमपेज: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "कृपया कोई कुंजी दबाएँ (या कोई कुंजी संयोग).\nयह संवाद कुंजी छोड़े जाने पर बंद हो जाएगा." -#: ../setup/setup.ui.h:14 +#: ../setup/keyboardshortcut.py:256 +msgid "Please press a key (or a key combination)" +msgstr "कृपया कोई कुंजी दबाएँ (या कोई कुंजी संयोग)" + +#: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 +msgid "_Cancel" +msgstr "रद्द करें (_C)" + +#: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 +msgid "_OK" +msgstr "ठीक (_O)" + +#: ../setup/main.py:102 ../setup/main.py:395 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "पिछले इनपुट विधि में जाने के लिए शिफ्ट के साथ शॉर्टकट का उपयोग करें" + +#: ../setup/main.py:329 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "IBus डेमॉन चल नहीं रहा है. क्या आप इसे आरंभ करना चाहते हैं?" + +#: ../setup/main.py:350 msgid "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." -msgstr "" -"तयशुदा इनपुट विधि सूची में सबसे ऊपर है.\n" -"आप ऊपर/नीचे बटन को इसे बदलने के लिए प्रयोग कर सकते हैं." +"IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "IBus को आरंभ किया गया है! यदि आप IBus का उपयोग नहीं करना चाहते हैं, अपने $HOME/.bashrc; में निम्नलिखित पंक्ति जोड़ें फिर अपने डेस्कटॉप में लॉग करें.\n export GTK_IM_MODULE=ibus\n export XMODIFIERS=@im=ibus\n export QT_IM_MODULE=ibus" -#: ../setup/setup.ui.h:17 -msgid "Add the selected input method into the enabled input methods" -msgstr "सक्रिय किए गए इनपुट विधि में चुनी गई इनपुट विधियों को जोड़ें" +#. Translators: %d == 5 currently +#: ../setup/main.py:364 +#, python-format +msgid "IBus daemon could not be started in %d seconds" +msgstr "IBus %d सेकेंड में आरंभ नहीं हो सका" -#: ../setup/setup.ui.h:18 -msgid "Advanced" -msgstr "उन्नत" +#: ../setup/main.py:376 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "%s के लिए कुंजीपटल शॉर्टकर्ट चुनें" -#: ../setup/setup.ui.h:19 -msgid "Always" -msgstr "हमेशा" +#: ../setup/main.py:377 +msgid "switching input methods" +msgstr "इनपुट विधि स्विच कर रहा है" -#: ../setup/setup.ui.h:20 -msgid "Bottom left corner" -msgstr "निचला बायां कोना" +#: ../tools/main.vala:42 +msgid "List engine name only" +msgstr "इंजन नाम को केवल सूचीबद्ध करता है" -#: ../setup/setup.ui.h:21 -msgid "Bottom right corner" -msgstr "निचला दाहिना कोना" +#: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 +#, c-format +msgid "Can't connect to IBus.\n" +msgstr "IBus में कनेक्ट नहीं हो सकता है.\n" -#: ../setup/setup.ui.h:22 -msgid "Candidates orientation:" -msgstr "कंडीडेट दिशा:" +#: ../tools/main.vala:84 +#, c-format +msgid "language: %s\n" +msgstr "भाषा: %s\n" -#: ../setup/setup.ui.h:23 -msgid "Custom" -msgstr "मनपसंद" +#: ../tools/main.vala:152 +#, c-format +msgid "No engine is set.\n" +msgstr "कोई इंजन सेट नहीं.\n" -#: ../setup/setup.ui.h:24 -msgid "Disable:" -msgstr "निष्क्रिय करें:" +#: ../tools/main.vala:160 +#, c-format +msgid "Set global engine failed.\n" +msgstr "वैश्विक इंजन विफल के रूप में सेट करें.\n" -#: ../setup/setup.ui.h:25 -msgid "Embed preedit text in application window" -msgstr "अनुप्रयोग विंडो में पूर्वसंपादित पाठ अंतःस्थापित करें" +#: ../tools/main.vala:165 +#, c-format +msgid "Get global engine failed.\n" +msgstr "वैश्विक इंजन विफल पाएँ.\n" -#: ../setup/setup.ui.h:26 -msgid "Embed the preedit text of input method in the application window" +#: ../tools/main.vala:204 +msgid "Read the system registry cache." msgstr "" -"इनपुट विधि के पूर्वसंपादित पाठ को अनुप्रयोग विंडो में अंतःस्थापित करें" -#: ../setup/setup.ui.h:27 -msgid "Embedded in menu" -msgstr "मेन्यू में अंतःस्थापित" +#: ../tools/main.vala:206 +msgid "Read the registry cache FILE." +msgstr "" -#: ../setup/setup.ui.h:28 -msgid "Enable or disable:" -msgstr "सक्रिय या निष्क्रिय करें:" +#: ../tools/main.vala:224 ../tools/main.vala:229 +#, c-format +msgid "The registry cache is invalid.\n" +msgstr "" -#: ../setup/setup.ui.h:29 -msgid "Enable:" -msgstr "सक्रिय करें:" +#: ../tools/main.vala:244 +msgid "Write the system registry cache." +msgstr "" -#: ../setup/setup.ui.h:30 -msgid "General" -msgstr "सामान्य" +#: ../tools/main.vala:246 +msgid "Write the registry cache FILE." +msgstr "" -#: ../setup/setup.ui.h:31 -msgid "Horizontal" -msgstr "क्षैतिज" +#: ../tools/main.vala:293 +msgid "Set or get engine" +msgstr "" -#: ../setup/setup.ui.h:34 -msgid "Language panel position:" -msgstr "भाषा पैनल स्थिति:" +#: ../tools/main.vala:294 +msgid "Exit ibus-daemon" +msgstr "" -#: ../setup/setup.ui.h:35 -msgid "Move down the selected input method in the enabled input methods" -msgstr "सक्रिय की गई इनपुट विधियों में चुनी गई इनपुट विधियों को खिसकाएँ" +#: ../tools/main.vala:295 +msgid "Show available engines" +msgstr "" -#: ../setup/setup.ui.h:36 -msgid "Move up the selected input method in the enabled input methods list" -msgstr "सक्रिय की गई इनपुट विधि सूची में चुनी गई इनपुट विधियों को ले जाएँ" +#: ../tools/main.vala:296 +msgid "(Not implemented)" +msgstr "" -#: ../setup/setup.ui.h:37 -msgid "Next input method:" -msgstr "अगली इनपुट विधि :" +#: ../tools/main.vala:297 +msgid "Restart ibus-daemon" +msgstr "" -#: ../setup/setup.ui.h:38 -msgid "Previous input method:" -msgstr "पिछली इनपुट विधि:" +#: ../tools/main.vala:298 +msgid "Show version" +msgstr "" -#: ../setup/setup.ui.h:39 -msgid "Remove the selected input method from the enabled input methods" -msgstr "सक्रिय की गई इनपुट विधियों में चुनी गई इनपुट विधियों हटाएँ" +#: ../tools/main.vala:299 +msgid "Show the content of registry cache" +msgstr "" -#: ../setup/setup.ui.h:40 -msgid "Set the behavior of ibus how to show or hide language bar" -msgstr "ibus का आचरण सेट करें कि कैसे भाषा पट्टी को दिखाना या छिपाना है" +#: ../tools/main.vala:300 +msgid "Create registry cache" +msgstr "" -#: ../setup/setup.ui.h:41 -msgid "Set the orientation of candidates in lookup table" -msgstr "लुकअप सारणी में कंडीडेट की दिशा सेट करें" +#: ../tools/main.vala:301 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "" -#: ../setup/setup.ui.h:44 -msgid "Show information of the selected input method" -msgstr "चुनी गई इनपुट विधि की सूचना दिखाएँ" +#: ../tools/main.vala:302 +msgid "Show this information" +msgstr "" -#: ../setup/setup.ui.h:46 -msgid "Show input method's name on language bar when check the checkbox" -msgstr "भाषा पट्टी पर इनपुट विधि नाम दिखाएँ जब जाँचपेटी जाँचा गया है" +#: ../tools/main.vala:308 +#, c-format +msgid "" +"Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "प्रयोग: %s COMMAND [OPTION...]\n\n" -#: ../setup/setup.ui.h:47 -msgid "Show language panel:" -msgstr "भाषा पैनल दिखाएँ:" +#: ../tools/main.vala:309 +#, c-format +msgid "Commands:\n" +msgstr "कमांड:\n" -#: ../setup/setup.ui.h:48 -msgid "Start ibus on login" -msgstr "लॉगिन पर ibus आरंभ करें" +#: ../tools/main.vala:338 +#, c-format +msgid "%s is unknown command!\n" +msgstr "%s अज्ञात कमांड है!\n" -#: ../setup/setup.ui.h:49 -msgid "The shortcut keys for switching to next input method in the list" -msgstr "सूची में अगली इनपुट विधि में जाने के लिए शॉर्टकट कुंजी" +#: ../ui/gtk3/panel.vala:425 +msgid "IBus Update" +msgstr "" -#: ../setup/setup.ui.h:50 -msgid "The shortcut keys for switching to previous input method in the list" -msgstr "सूची में पिछली इनपुट विधि में जाने के लिए शॉर्टकट कुंजी" +#: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 +msgid "Super+space is now the default hotkey." +msgstr "" -#: ../setup/setup.ui.h:52 -msgid "Top left corner" -msgstr "ऊपरी बायां कोना" +#: ../ui/gtk3/panel.vala:707 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus Linux/Unix के लिए तेज तर्रार इनपुट बस है." -#: ../setup/setup.ui.h:53 -msgid "Top right corner" -msgstr "ऊपरी दाहिना कोना" +#: ../ui/gtk3/panel.vala:711 +msgid "translator-credits" +msgstr "राजेश रंजन (rranjan@redhat.com)" -#: ../setup/setup.ui.h:54 -msgid "Use custom font:" -msgstr "मनपसंद फ़ॉन्ट का प्रयोग करें:" +#: ../ui/gtk3/panel.vala:732 +msgid "Preferences" +msgstr "वरीयता " -#: ../setup/setup.ui.h:57 -msgid "Vertical" -msgstr "लंबवत" +#: ../ui/gtk3/panel.vala:742 +msgid "Restart" +msgstr "पुनः प्रारंभ करें" + +#: ../ui/gtk3/panel.vala:746 +msgid "Quit" +msgstr "बाहर जाएँ" -#: ../setup/setup.ui.h:58 -msgid "When active" -msgstr "जब सक्रिय हो" +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ../ui/gtk3/propertypanel.vala:374 +msgid "default:LTR" +msgstr "default:LTR" diff --git a/po/hu.po b/po/hu.po index 1f04a9639..2415a2175 100644 --- a/po/hu.po +++ b/po/hu.po @@ -1,200 +1,531 @@ -# translation of ibus.pot to Hungarian # Hungarian translation of ibus. -# Copyright (C) 2008 Peng Huang +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2020 Takao Fujiwara # This file is distributed under the same license as the ibus package. -# +# # Translators: -# kelemeng , 2011. -# Sulyok Péter , 2009. +# kelemeng , 2011 +# kelemeng , 2011 +# Sulyok Péter , 2009 +# Zoltan Hoppár , 2012-2013 +# Meskó Balázs , 2017. #zanata +# Meskó Balázs , 2018. #zanata +# Meskó Balázs , 2019. #zanata +# Balázs Meskó , 2020. +# Balázs Meskó , 2020. msgid "" msgstr "" -"Project-Id-Version: IBus\n" -"Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/list\n" -"POT-Creation-Date: 2011-05-13 11:21+0900\n" -"PO-Revision-Date: 2011-09-01 00:45+0000\n" -"Last-Translator: kelemeng \n" -"Language-Team: Hungarian \n" +"Project-Id-Version: ibus 1.5.20\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2020-01-08 12:40+0900\n" +"PO-Revision-Date: 2020-07-21 19:28+0000\n" +"Last-Translator: Balázs Meskó \n" +"Language-Team: Hungarian \n" +"Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: hu\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.1.1\n" + +#. Translators: Here “Preload” is a verb +#: data/dconf/org.freedesktop.ibus.gschema.xml:11 +msgid "Preload engines" +msgstr "Alrendszerek előtöltése" + +#. Translators: Tooltip for the button “Preload Engines” +#: data/dconf/org.freedesktop.ibus.gschema.xml:13 +msgid "Preload engines during ibus starts up" +msgstr "Alrendszerek előtöltése az ibus indításakor" -#: ../bus/ibus.desktop.in.h:1 -msgid "IBus" -msgstr "IBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:17 +msgid "Engines order" +msgstr "Alrendszerek sorrendje" -#: ../bus/ibus.desktop.in.h:2 -msgid "Input Method Framework" -msgstr "Bevitelimód-keretrendszer" +#: data/dconf/org.freedesktop.ibus.gschema.xml:18 +msgid "Saved engines order in input method list" +msgstr "Mentett alrendszerek sorrendje a beviteli módok listájában" -#: ../bus/ibus.desktop.in.h:3 -msgid "Start IBus Input Method Framework" -msgstr "IBus bevitelimód-keretrendszer elindítása" +#: data/dconf/org.freedesktop.ibus.gschema.xml:22 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "Felugró ablak késleltetése az IME váltóablaknál" -#: ../ibus/_config.py.in:40 +#: data/dconf/org.freedesktop.ibus.gschema.xml:23 msgid "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +"Set popup delay milliseconds to show IME switcher window. The default is " +"400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " +"show the window and switch prev/next engines." msgstr "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +"Beállítja a felugró ablak késleltetését az IME váltóablaknál. Az " +"alapértelmezett 400.0 = Ablak azonnali megjelenítése. 0 < Késleltetés " +"ezredmásodpercben. 0 > Nem jeleníti meg az ablakot, és átvált a következő/" +"előző alrendszerre." -#: ../ibus/lang.py:41 -msgid "Other" -msgstr "Más" +#: data/dconf/org.freedesktop.ibus.gschema.xml:27 +msgid "Saved version number" +msgstr "Mentett verziószám" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:28 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" +"A mentett verziószám arra lesz használva, hogy ellenőrizve legyen az " +"előzőleg telepített ibus, és az ibus jelenlegi verziója közti különbség." -#: ../ui/gtk/candidatepanel.py:264 -msgid "Previous page" -msgstr "Előző oldal" +#: data/dconf/org.freedesktop.ibus.gschema.xml:32 +msgid "Latin layouts which have no ASCII" +msgstr "Latin kiosztások, amelyekben nincs ASCII" -#: ../ui/gtk/candidatepanel.py:269 -msgid "Next page" -msgstr "Következő oldal" +#: data/dconf/org.freedesktop.ibus.gschema.xml:33 +msgid "US layout is appended to the Latin layouts. variant can be omitted." +msgstr "USA kiosztás a Latin kiosztások mögé fűzve. A változat elhagyható." -#: ../ui/gtk/main.py:62 +#: data/dconf/org.freedesktop.ibus.gschema.xml:37 +msgid "Use xmodmap" +msgstr "Xmodmap használata" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" -"Some input methods have been installed, removed or updated. Please restart " -"ibus input platform." +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" -"Néhány beviteli mód telepítésre, eltávolításra vagy frissítésre került. " -"Indítsa újra az ibus beviteli rendszert." +"Az xmodmap futtatása, ha létezik .xmodmap vagy .Xmodmap fájl az ibus " +"alrendszerváltáskor." -#: ../ui/gtk/main.py:66 -msgid "Restart Now" -msgstr "Újraindítás most" +#: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 +msgid "Use system keyboard layout" +msgstr "Rendszer billentyűzetkiosztásának használata" -#: ../ui/gtk/main.py:67 -msgid "Later" -msgstr "Később" +#: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 +msgid "Use system keyboard (XKB) layout" +msgstr "A rendszer billentyűzetkiosztásának (XKB) használata" -#: ../ui/gtk/panel.py:116 -msgid "IBus Panel" -msgstr "IBus panel" +#: data/dconf/org.freedesktop.ibus.gschema.xml:47 +msgid "Embed Preedit Text" +msgstr "Előszerkesztett szöveg beágyazása" -#: ../ui/gtk/panel.py:122 -msgid "IBus input method framework" -msgstr "IBus bevitelimód-keretrendszer" +#: data/dconf/org.freedesktop.ibus.gschema.xml:48 +msgid "Embed Preedit Text in Application Window" +msgstr "Előszerkesztett szöveg beágyazása az alkalmazásablakba" -#: ../ui/gtk/panel.py:352 -msgid "Restart" -msgstr "Újraindítás" +#: data/dconf/org.freedesktop.ibus.gschema.xml:52 +msgid "Use global input method" +msgstr "Globális beviteli mód használata" -#: ../ui/gtk/panel.py:439 -msgid "Turn off input method" -msgstr "Beviteli mód kikapcsolása" +#: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 +msgid "Share the same input method among all applications" +msgstr "Azonos beviteli mód megosztása minden alkalmazás közt" -#: ../ui/gtk/panel.py:478 -msgid "No input window" -msgstr "Nincs beviteli ablak" +#: data/dconf/org.freedesktop.ibus.gschema.xml:57 +msgid "Enable input method by default" +msgstr "Beviteli mód engedélyezése alapértelmezésben" -#: ../ui/gtk/panel.py:509 -msgid "IBus is an intelligent input bus for Linux/Unix." -msgstr "Az IBus egy intelligens beviteli busz Linux/Unix rendszerekhez" +#: data/dconf/org.freedesktop.ibus.gschema.xml:58 +msgid "Enable input method by default when the application gets input focus" +msgstr "" +"Beviteli mód engedélyezése alapértelmezésben, amikor az alkalmazás beviteli " +"fókuszba kerül" -#: ../ui/gtk/panel.py:513 -msgid "translator-credits" +#: data/dconf/org.freedesktop.ibus.gschema.xml:62 +msgid "DConf preserve name prefixes" +msgstr "A DConf megőrzi a név előtagokat" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:63 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "A DConf előtaggal látja el a kulcsokat, hogy ne legyenek névkonverziók" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:70 +msgid "Trigger shortcut keys" +msgstr "Gyorsbillentyűk aktiválása" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:71 +#: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 +msgid "The shortcut keys for turning input method on or off" +msgstr "Gyorsbillentyűk a beviteli mód ki- vagy bekapcsolásához" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:75 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "Aktiválja a gyorsbillentyűket a gtk_accelerator_parse részére" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:80 +msgid "Enable shortcut keys" +msgstr "Gyorsbillentyűk engedélyezése" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:81 +msgid "The shortcut keys for turning input method on" +msgstr "A beviteli mód bekapcsolásához használt gyorsbillentyűk" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:85 +msgid "Disable shortcut keys" +msgstr "Gyorsbillentyűk letiltása" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:86 +msgid "The shortcut keys for turning input method off" +msgstr "A beviteli mód kikapcsolásához használt gyorsbillentyűk" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:90 +#: data/dconf/org.freedesktop.ibus.gschema.xml:95 +msgid "Next engine shortcut keys" +msgstr "Következő alrendszer gyorsbillentyűi" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:91 +#: data/dconf/org.freedesktop.ibus.gschema.xml:96 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "A lista következő beviteli módjára váltásához használt gyorsbillentyű" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:100 +#: data/dconf/org.freedesktop.ibus.gschema.xml:105 +msgid "Prev engine shortcut keys" +msgstr "Előző alrendszer gyorsbillentyűi" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:101 +#: data/dconf/org.freedesktop.ibus.gschema.xml:106 +msgid "The shortcut keys for switching to the previous input method" +msgstr "A lista előző beviteli módjára váltásához használt gyorsbillentyű" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:112 +msgid "Auto hide" +msgstr "Automatikus elrejtés" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:113 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" msgstr "" -"Sulyok Péter , 2009.\n" -"\n" -"Launchpad Contributions:\n" -" Gabor Kelemen https://launchpad.net/~kelemeng\n" -" Muszela Balázs https://launchpad.net/~bazsi86-deactivatedaccount\n" -" Ocsovszki Dorián https://launchpad.net/~gorkhaan\n" -" Robert Roth https://launchpad.net/~evfool\n" -" Token https://launchpad.net/~kozmad\n" -" fergekolferol https://launchpad.net/~ferge-kolferol" - -#: ../ui/gtk/languagebar.py:106 -msgid "About the input method" -msgstr "A beviteli mód névjegye" - -#: ../ui/gtk/languagebar.py:214 -msgid "Switch input method" -msgstr "Beviteli mód váltása" - -#: ../ui/gtk/languagebar.py:357 ../ui/gtk/engineabout.py:33 -#: ../setup/engineabout.py:33 ../setup/setup.ui.h:16 +"A tulajdonságpanel viselkedése. 0 = Nem jelenik meg, 1 = Automatikus " +"elrejtés, 2 = Mindig látszik" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:117 +#: data/dconf/org.freedesktop.ibus.gschema.xml:121 +msgid "Language panel position" +msgstr "Nyelvi panel pozíciója" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:125 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "A bemeneti kurzor követése, ha a panel mindig megjelenik" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:126 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" +"Ha igaz, akkor a panel követi a bemeneti kurzort abban az esetben, ha a " +"panel mindig megjelenik. Ha hamis, akkor a panel egy fix helyen jelenik meg." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:130 +msgid "The milliseconds to show property panel" +msgstr "A tulajdonságpanel megjelenítési ideje ezredmásodpercben" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:131 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" +"Hány ezredmásodpercig jelenjen meg a tulajdonságpanel a fókuszálás, vagy a " +"tulajdonságok változása után." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:135 +msgid "Orientation of lookup table" +msgstr "Kikeresési tábla tájolása" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:136 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "Kikeresési tábla tájolása. 0 = vízszintes, 1 = függőleges" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:140 +#: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 +#: setup/setup.ui:475 +msgid "Show icon on system tray" +msgstr "Ikon megjelenítése az értesítési területen" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:145 +msgid "Show input method name" +msgstr "Beviteli mód nevének megjelenítése" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 +msgid "Show input method name on language bar" +msgstr "Beviteli mód nevének megjelenítése a nyelvi eszköztáron" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:150 +msgid "RGBA value of XKB icon" +msgstr "Az XKB ikon RGBA értéke" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:151 +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form 'rgba(r," +"g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 to 255 or " +"percentage values in the range 0% to 100%, and 'a' is a floating point value " +"in the range 0 to 1 of the alpha." +msgstr "" +"Az XKB ikon a kiosztási karakterláncot mutatja, és a karakterlánc RGBA " +"értékként jelenik meg. Az RGA érték a következők egyike lehet. 1. egy X11 " +"színnév, 2. egy hexadecimális érték „#rrggbb” formában, ahol az „r”, „g” és " +"„b” a vörös, zöld és kék színek értékei hexadecimális számjegyekkel, 3. egy " +"RGB szín „rgb(r,g,b,a)” vagy 4. egy RGBA szín „rgba(r,g,b,a)” alakban, ahol " +"az „r”, „g” és „b” egész számok 0 és 255 között, vagy százalékos értékek 0% " +"és 100% között, az „a” pedig az alfa lebegőpontos értéke 0 és 1 között." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:155 +msgid "The milliseconds to show the panel icon for a property" +msgstr "A panel ikon megjelenítési ideje egy tulajdonsághoz ezredmásodpercben" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:156 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" +"A panel ikon megjelenítési ideje egy tulajdonsághoz ezredmásodpercben, ha az " +"alrendszerek között vált, és ha a tulajdonság az icon-prop-key értékeként " +"van megadva az IBusEngineDesc-ben. Ha az érték 0, akkor nincs késleltetés, " +"és a tulajdonságikon azonnal megjelenik." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:160 +msgid "Use custom font" +msgstr "Egyéni betűkészlet használata" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:161 +msgid "Use custom font name for language panel" +msgstr "Egyéni betűkészlet használata a nyelv panelen" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:165 +#: data/dconf/org.freedesktop.ibus.gschema.xml:183 +msgid "Custom font" +msgstr "Egyéni betűkészlet" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:166 +msgid "Custom font name for language panel" +msgstr "Egyéni betűkészlet neve a nyelv panelhez" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:173 +msgid "Unicode shortcut keys for gtk_accelerator_parse" +msgstr "Unicode gyorsbillentyű a gtk_accelerator_parse részére" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:174 +msgid "The shortcut keys for turning Unicode typing on or off" +msgstr "Gyorsbillentyű az Unicode bevitel ki- vagy bekapcsolásához" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:178 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "Emodzsi gyorsbillentyűket a gtk_accelerator_parse részére" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:179 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "Gyorsbillentyűk az emodzsi bevitel ki- vagy bekapcsolásához" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:184 +msgid "Custom font name for emoji characters on emoji dialog" +msgstr "Egyéni emodzsi betűkészlet neve az emodzsi párbeszédablakon" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:188 +msgid "Default language for emoji dictionary" +msgstr "Emodzsi szótár alapértelmezett neve" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:189 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict ." +msgstr "" +"Válassza ki az emodzsi párbeszédablakon megjelenő emodzsi szótárak " +"alapértelmezett nyelvét. A $lang érték ebbe lesz behelyettesítve: /usr/share/" +"ibus/dicts/emoji-$lang.dict ." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:193 +msgid "favorite emoji list on emoji dialog" +msgstr "kedvenc emodzsik listája az emodzsi párbeszédablakon" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:194 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "" +"Megjelenítheti a kedvenc emodzsijait a listában, ha vannak ilyen karakterek." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:198 +msgid "favorite emoji annotation list on emoji dialog" +msgstr "kedvenc emodzsik annotációinak listája az emodzsi párbeszédablakon" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:199 +msgid "You can assign an annotation for a favorite emoji in this list." +msgstr "Annotációkat adhat hozzá a kedvenc, listában szereplő emodzsijainak." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:203 +msgid "Whether emoji annotations can be match partially or not" +msgstr "Az emodzsi annotációkra lehet-e részlegesen illeszteni" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:204 +msgid "" +"Whether emoji annotations can be matched with a partial string instead of " +"the exact match or not." +msgstr "" +"Illeszthetőek-e részleges karakterláncokra az emodzsi annotációk, a pontos " +"egyezés helyett." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:208 +msgid "Match emoji annotations with the specified length" +msgstr "Illesztés a megadott hosszúságú emodzsi annotációkra" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:209 +msgid "" +"Match emoji annotations partially with more than the specified number of " +"characters instead of the exact match." +msgstr "" +"Az emodzsi annotációk részleges illesztése, a pontos egyezés helyett, ha " +"több mint ennyi karakter lett megadva." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:213 +msgid "Choose a condition to match emoji annotations partially" +msgstr "Válasszon egy feltételt az emodzsi annotációk részleges illesztéséhez" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:214 +msgid "" +"Choose one of the following conditions to match emoji annotations partially: " +"0 == Prefix match, 1 == Suffix match, 2 == Containing match" +msgstr "" +"Válasszon egyet a következő feltételek közül, az emodzsi annotációk " +"részleges illesztéséhez: 0 == szó elejére illesztés, 1 == szó végére " +"illesztés, 2 == tartalmazási illesztés" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:218 +msgid "Load the emoji data at the time of startup" +msgstr "Emodzsi adatok betöltése indításkor" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:219 +msgid "" +"Load the emoji data at the time of startup if true. About 10MB memory is " +"needed to load the data. Load the emoji data when open the emoji dialog at " +"the beginning if false." +msgstr "" +"Emodzsi adatok betöltése indításkor, ha igaz. Körülbelül 10 MB memória " +"szükséges az adatok betöltéséhez. Ha hamis, akkor az emodzsi adatok a " +"párbeszédablak megnyitásakor lesznek betöltve." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:223 +msgid "Load the Unicode data at the time of startup" +msgstr "Unicode adatok betöltése indításkor" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:224 +msgid "" +"Load the Unicode data at the time of startup if true. About 15MB memory is " +"needed to load the data. Load the Unicode data when open the emoji dialog at " +"the beginning if false. The Unicode data is always loaded after the emoji " +"data is loaded even if true." +msgstr "" +"Unicode adatok betöltése indításkor, ha igaz. Körülbelül 15 MB memória " +"szükséges az adatok betöltéséhez. Ha hamis, akkor a Unicode adatok a " +"párbeszédablak megnyitásakor lesznek betöltve. A Unicode adatok mindenképpen " +"az emodzsi adatok után lesznek betöltve, akkor is ha igaz." + +#: ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." + +#: ibus/lang.py:41 src/ibusutil.c:209 +msgid "Other" +msgstr "Egyéb" + +#: setup/emojilang.py:67 +msgid "Select a language" +msgstr "Válasszon nyelvet" + +#: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 +#: setup/main.py:560 +msgid "_Cancel" +msgstr "_Mégse" + +#: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 +msgid "_OK" +msgstr "_OK" + +#: setup/emojilang.py:235 setup/enginedialog.py:205 +msgid "More…" +msgstr "Tovább…" + +#: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "Névjegy" -#: ../ui/gtk/languagebar.py:361 -msgid "About the Input Method" -msgstr "A beviteli mód névjegye" +#: setup/engineabout.py:40 setup/setup.ui:1401 +msgid "_Close" +msgstr "_Bezárás" -#: ../ui/gtk/engineabout.py:61 ../setup/engineabout.py:61 +#: setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "Nyelv: %s\n" -#: ../ui/gtk/engineabout.py:63 ../setup/engineabout.py:63 +#: setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "Billentyűzetkiosztás: %s\n" -#: ../ui/gtk/engineabout.py:65 ../setup/engineabout.py:65 +#: setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "Szerző: %s\n" -#: ../ui/gtk/engineabout.py:67 ../setup/engineabout.py:67 +#: setup/engineabout.py:81 msgid "Description:\n" msgstr "Leírás:\n" -#: ../setup/main.py:102 -msgid "trigger" -msgstr "aktiváló" - -#: ../setup/main.py:113 -msgid "enable" -msgstr "engedélyezés" - -#: ../setup/main.py:124 -msgid "disable" -msgstr "letiltás" +#: setup/enginecombobox.py:139 setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "Válasszon beviteli módot" -#: ../setup/main.py:135 -msgid "next input method" -msgstr "következő beviteli mód" +#. add button +#: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 +msgid "_Add" +msgstr "Hozzá_adás" -#: ../setup/main.py:146 -msgid "previous input method" -msgstr "előző beviteli mód" +#. create im name & icon column +#: setup/enginetreeview.py:69 setup/setup.ui:838 +msgid "Input Method" +msgstr "Beviteli mód" -#: ../setup/main.py:286 -msgid "IBus daemon is not started. Do you want to start it now?" -msgstr "Az IBus szolgáltatás áll. Beindítja?" +#: setup/enginetreeview.py:96 +msgid "Kbd" +msgstr "Bill." -#: ../setup/main.py:301 -msgid "" -"IBus has been started! If you can not use IBus, please add below lines in $HOME/.bashrc, and relogin your desktop.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" -msgstr "" -"IBus működik! Ha nem tudja IBus-t használni, kérem fűzze az \n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibussorokat a $HOME/.bashrc fájlhoz, majd lépjen be újra." +#: setup/ibus-setup.desktop:3 setup/setup.ui:69 +msgid "IBus Preferences" +msgstr "IBus beállítások" -#: ../setup/main.py:316 -#, python-format -msgid "Select keyboard shortcut for %s" -msgstr "%s gyorsbillentyűjének kiválasztása" +#: setup/ibus-setup.desktop:4 +msgid "Set IBus Preferences" +msgstr "IBus beállítások megadása" -#: ../setup/keyboardshortcut.py:52 +#: setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Gyorsbillentyűk" -#: ../setup/keyboardshortcut.py:63 +#: setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "Billentyűkód:" -#: ../setup/keyboardshortcut.py:78 +#: setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "Módosítók:" -#: ../setup/keyboardshortcut.py:231 +#. apply button +#: setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "_Alkalmaz" + +#. delete button +#: setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "_Törlés" + +#: setup/keyboardshortcut.py:252 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." @@ -202,362 +533,2777 @@ msgstr "" "Nyomjon meg egy billentyűt (vagy billentyűkombinációt).\n" "Az ablak a billentyű felengedésekor bezáródik." -#: ../setup/keyboardshortcut.py:233 +#: setup/keyboardshortcut.py:255 msgid "Please press a key (or a key combination)" -msgstr "Nyomjon meg egy billentyűt (vagy billentyűkombinációt)." +msgstr "Nyomjon meg egy billentyűt (vagy billentyűkombinációt)" -#: ../setup/enginecombobox.py:120 -msgid "Select an input method" -msgstr "Válasszon beviteli módot" +#: setup/main.py:121 setup/main.py:588 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "" +"Használja a Shift billentyűt a gyors visszaváltáshoz a korábbi beviteli módra" -#. create im name & icon column -#: ../setup/enginetreeview.py:64 ../setup/setup.ui.h:33 -msgid "Input Method" -msgstr "Beviteli mód" +#: setup/main.py:515 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "Az IBus démon nem fut. Elindítja?" -#: ../setup/enginetreeview.py:92 -msgid "Kbd" -msgstr "Bill" +#: setup/main.py:536 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "" +"Az IBus elindult. Ha nem tudja használni az IBust, adja a következő sorokat " +"a $HOME/.bashrc fájlhoz; majd jelentkezzen be újra.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" -#: ../setup/ibus-setup.desktop.in.h:1 ../setup/setup.ui.h:32 -msgid "IBus Preferences" -msgstr "IBus beállítások" +#. Translators: %d == 5 currently +#: setup/main.py:550 +#, python-format +msgid "IBus daemon could not be started in %d seconds." +msgstr "Az IBus démon nem indítható el %d másodpercen belül." -#: ../setup/ibus-setup.desktop.in.h:2 -msgid "Set IBus Preferences" -msgstr "IBus beállításai" +#: setup/main.py:562 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "%s gyorsbillentyűjének kiválasztása" -#: ../data/ibus.schemas.in.h:1 -msgid "Auto hide" +#. Translators: Title of the window +#: setup/main.py:564 +msgid "switching input methods" +msgstr "beviteli módok váltása" + +#: setup/setup.ui:11 +msgid "Horizontal" +msgstr "Vízszintes" + +#: setup/setup.ui:14 +msgid "Vertical" +msgstr "Függőleges" + +#: setup/setup.ui:25 +msgid "Top left corner" +msgstr "Bal felső sarok" + +#: setup/setup.ui:28 +msgid "Top right corner" +msgstr "Jobb felső sarok" + +#: setup/setup.ui:31 +msgid "Bottom left corner" +msgstr "Bal alsó sarok" + +#: setup/setup.ui:34 +msgid "Bottom right corner" +msgstr "Jobb alsó sarok" + +#: setup/setup.ui:37 +msgid "Custom" +msgstr "Egyéni" + +#: setup/setup.ui:48 +msgid "Do not show" +msgstr "Ne mutassa" + +#: setup/setup.ui:51 +msgid "Hide automatically" msgstr "Automatikus elrejtés" -#: ../data/ibus.schemas.in.h:2 -msgid "Custom font" -msgstr "Egyéni betűkészlet" +#: setup/setup.ui:54 +msgid "Always" +msgstr "Mindig" -#: ../data/ibus.schemas.in.h:3 -msgid "Custom font name for language panel" -msgstr "Egyéni betűkészlet neve a nyelv panelhez" +#: setup/setup.ui:113 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "Gyorsbillentyűk a következő beviteli módra váltáshoz" -#: ../data/ibus.schemas.in.h:4 -msgid "Disable shortcut keys" -msgstr "Gyorsbillentyűk letiltása" +#: setup/setup.ui:115 +msgid "Next input method:" +msgstr "Következő beviteli mód:" -#: ../data/ibus.schemas.in.h:5 -msgid "Embed Preedit Text" -msgstr "Előszerkesztett szöveg beágyazása" +#: setup/setup.ui:127 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "Gyorsbillentyűk az előző beviteli módra való váltáshoz" -#: ../data/ibus.schemas.in.h:6 -msgid "Embed Preedit Text in Application Window" -msgstr "Előszerkesztett szöveg beágyazása az alkalmazásablakba" +#: setup/setup.ui:129 +msgid "Previous input method:" +msgstr "Előző beviteli mód:" -#: ../data/ibus.schemas.in.h:7 -msgid "Enable input method by default" -msgstr "Beviteli mód engedélyezése alapértelmezésben" +#: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 +#: setup/setup.ui:903 setup/setup.ui:957 +msgid "..." +msgstr "…" -#: ../data/ibus.schemas.in.h:8 -msgid "Enable input method by default when the application gets input focus" +#: setup/setup.ui:226 +msgid "Enable or disable:" +msgstr "Engedélyezés vagy tiltás:" + +#: setup/setup.ui:238 +msgid "Enable:" +msgstr "Engedélyezés:" + +#: setup/setup.ui:291 +msgid "Disable:" +msgstr "Letiltás:" + +#: setup/setup.ui:345 setup/setup.ui:983 +msgid "Keyboard Shortcuts" +msgstr "Gyorsbillentyűk" + +#: setup/setup.ui:374 +msgid "Set the orientation of candidates in lookup table" +msgstr "Jelöltek tájolásának beállítása a keresési táblában" + +#: setup/setup.ui:376 +msgid "Candidates orientation:" +msgstr "Jelöltek tájolása:" + +#: setup/setup.ui:407 +msgid "Set the behavior of ibus how to show or hide language bar" msgstr "" -"Beviteli mód engedélyezése alapértelmezésben, amikor az alkalmazás beviteli " -"fókuszba kerül" +"Az ibus viselkedésének megadása, hogyan jelenítse meg vagy rejtse el a " +"nyelvi sávot" -#: ../data/ibus.schemas.in.h:9 -msgid "Enable shortcut keys" -msgstr "Gyorsbillentyűk engedélyezése" +#: setup/setup.ui:409 +msgid "Show property panel:" +msgstr "Tulajdonságpanel megjelenítése:" -#: ../data/ibus.schemas.in.h:10 -msgid "Language panel position" -msgstr "Nyelvi panel pozíciója" +#: setup/setup.ui:423 +msgid "Language panel position:" +msgstr "Nyelvi panel elhelyezése:" -#: ../data/ibus.schemas.in.h:11 -msgid "Next engine shortcut keys" -msgstr "Következő alrendszer gyorsbillentyűi" +#: setup/setup.ui:494 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "" +"A beviteli mód nevének megjelenítése a nyelvi eszköztáron, ha be van jelölve " +"a mező" -#: ../data/ibus.schemas.in.h:12 -msgid "Orientation of lookup table" -msgstr "Keresési tábla tájolása" +#: setup/setup.ui:508 +msgid "Embed preedit text in application window" +msgstr "Előszerkesztett szöveg beágyazása az alkalmazás ablakába" -#: ../data/ibus.schemas.in.h:13 -msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" -msgstr "Kikeresési tábla tájolása. 0 = vízszintes, 1 = függőleges" +#: setup/setup.ui:513 +msgid "Embed the preedit text of input method in the application window" +msgstr "" +"A beviteli mód előszerkesztett szövegének beágyazása az alkalmazás ablakába" -#: ../data/ibus.schemas.in.h:14 -msgid "Preload engines" -msgstr "Alrendszerek előtöltése" +#: setup/setup.ui:527 +msgid "Use custom font:" +msgstr "Egyéni betűkészlet használata:" -#: ../data/ibus.schemas.in.h:15 -msgid "Preload engines during ibus starts up" -msgstr "Alrendszerek előtöltése az ibus indításakor" +#: setup/setup.ui:562 setup/setup.ui:1156 +msgid "Font and Style" +msgstr "Betűkészlet és stílus" -#: ../data/ibus.schemas.in.h:16 -msgid "Prev engine shortcut keys" -msgstr "Előző alrendszer gyorsbillentyűi" +#: setup/setup.ui:579 +msgid "General" +msgstr "Általános" -#: ../data/ibus.schemas.in.h:17 ../setup/setup.ui.h:42 -msgid "Share the same input method among all applications" -msgstr "Azonos beviteli mód megosztása minden alkalmazás közt" +#: setup/setup.ui:671 +msgid "Add the selected input method into the enabled input methods" +msgstr "" +"A kiválasztott beviteli mód hozzáadása az engedélyezett beviteli módokhoz" -#: ../data/ibus.schemas.in.h:18 ../setup/setup.ui.h:43 -msgid "Show icon on system tray" -msgstr "Ikon megjelenítése az értesítési területen" +#: setup/setup.ui:682 +msgid "_Remove" +msgstr "_Eltávolítás" -#: ../data/ibus.schemas.in.h:19 -msgid "Show input method name" -msgstr "Beviteli mód megjelenítése" +#: setup/setup.ui:689 +msgid "Remove the selected input method from the enabled input methods" +msgstr "" +"A kiválasztott beviteli mód eltávolítása az engedélyezett beviteli módok " +"közül" -#: ../data/ibus.schemas.in.h:20 ../setup/setup.ui.h:45 -msgid "Show input method name on language bar" -msgstr "Beviteli mód megjelenítése a nyelvi eszköztáron" +#: setup/setup.ui:700 +msgid "_Up" +msgstr "_Fel" -#: ../data/ibus.schemas.in.h:21 -msgid "" -"The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = " -"Always show" +#: setup/setup.ui:707 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "" +"A kiválasztott beviteli mód mozgatása felfelé az engedélyezett beviteli " +"módok között" + +#: setup/setup.ui:718 +msgid "_Down" +msgstr "_Le" + +#: setup/setup.ui:725 +msgid "Move down the selected input method in the enabled input methods" msgstr "" -"A nyelvi panel viselkedése. 0 = beágyazva a menübe, 1 = automatikus " -"elrejtés, 2 = megjelenítés mindig" +"A kiválasztott beviteli mód mozgatása lefelé az engedélyezett beviteli módok " +"között" + +#: setup/setup.ui:736 +msgid "_About" +msgstr "_Névjegy" + +#: setup/setup.ui:743 +msgid "Show information of the selected input method" +msgstr "Információk megjelenítése a kiválasztott beviteli módról" + +#: setup/setup.ui:754 +msgid "_Preferences" +msgstr "B_eállítások" -#: ../data/ibus.schemas.in.h:22 +#: setup/setup.ui:761 +msgid "Show setup of the selected input method" +msgstr "Jelenítse meg a kiválasztott beviteli mód beállításait" + +#: setup/setup.ui:812 msgid "" -"The position of the language panel. 0 = Top left corner, 1 = Top right " -"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." msgstr "" -"A nyelv panel pozíciója. 0 = bal felső sarok, 1 = jobb felső sarok, 2 = bal " -"alsó sarok, 3 = jobb alsó sarok, 4 = egyéni" +"Az aktív beviteli mód a fenti listában szereplők közül állítható " +"be, a gyorsbillentyűk megnyomásával, vagy a panel ikonra kattintva." -#: ../data/ibus.schemas.in.h:23 -msgid "The shortcut keys for switching to the next input method in the list" +#: setup/setup.ui:873 +msgid "" +"The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" -"A lista következő beviteli módjára váltáshoz használandó gyorsbillentyű" +"Gyorsbillentyű az emodzsi annotációk vagy a Unicode nevek átalakításának " +"engedélyezéséhez" -#: ../data/ibus.schemas.in.h:24 -msgid "The shortcut keys for switching to the previous input method" -msgstr "A lista előző beviteli módjára váltáshoz használandó gyorsbillentyű" +#: setup/setup.ui:875 +msgid "Emoji annotation:" +msgstr "Emodzsi annotáció:" -#: ../data/ibus.schemas.in.h:25 -msgid "The shortcut keys for turning input method off" -msgstr "Gyorsbillentyűk a beviteli mód kikapcsolásához " +#: setup/setup.ui:927 +msgid "The shortcut keys to enable Unicode code point conversions" +msgstr "Gyorsbillentyű az Unicode kódpont-átalakítások engedélyezéséhez" -#: ../data/ibus.schemas.in.h:26 -msgid "The shortcut keys for turning input method on" -msgstr "Gyorsbillentyűk a beviteli mód bekapcsolásához " +#: setup/setup.ui:929 +msgid "Unicode code point:" +msgstr "Unicode kódpont:" -#: ../data/ibus.schemas.in.h:27 ../setup/setup.ui.h:51 -msgid "The shortcut keys for turning input method on or off" -msgstr "Gyorsbillentyűk a beviteli mód ki- vagy bekapcsolásához" +#: setup/setup.ui:1013 +msgid "Set a font of Unicode candidates on the emoji dialog" +msgstr "" +"Unicode jelöltekből álló betűkészlet beállítása az emodzsi párbeszédablakon" -#: ../data/ibus.schemas.in.h:28 -msgid "Trigger shortcut keys" -msgstr "Aktiváló gyorsbillentyűk" +#: setup/setup.ui:1015 +msgid "Unicode font:" +msgstr "Unicode betűkészlet:" -#: ../data/ibus.schemas.in.h:29 -msgid "Use custom font" -msgstr "Egyéni betűkészlet használata" +#: setup/setup.ui:1038 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "Emodzsi annotációk nyelvének beállítása az emodzsi párbeszédablakon" -#: ../data/ibus.schemas.in.h:30 -msgid "Use custom font name for language panel" -msgstr "Egyéni betűkészlet használata a nyelv panelen" +#: setup/setup.ui:1040 +msgid "Emoji annotation language:" +msgstr "Emodzsi annotációk nyelve:" -#: ../data/ibus.schemas.in.h:31 -msgid "Use global input method" -msgstr "Globális beviteli mód használata" +#: setup/setup.ui:1062 +msgid "" +"Match emoji annotations partially with the following condition and more than " +"the number of characters:" +msgstr "" +"Az emodzsi annotációk részleges illesztése a következő feltétel szerint, ha " +"több mint ennyi karakter lett megadva:" -#: ../data/ibus.schemas.in.h:32 ../setup/setup.ui.h:55 -msgid "Use system keyboard (XKB) layout" -msgstr "A rendszer billentyűzetkiosztásának (XKB) használata" +#: setup/setup.ui:1067 +msgid "" +"If emoji annotations can be matched with a partial string instead of the " +"exact match" +msgstr "" +"Ha az emodzsi annotációkat részleges szövegre kell illeszteni, pontos " +"egyezés helyett" -#: ../data/ibus.schemas.in.h:33 ../setup/setup.ui.h:56 -msgid "Use system keyboard layout" -msgstr "Rendszer-billentyűzetkiosztás használata" +#: setup/setup.ui:1101 +msgid "Prefix match" +msgstr "Előtag illeszkedés" -#: ../setup/setup.ui.h:1 -msgid "..." -msgstr "…" +#: setup/setup.ui:1115 +msgid "Suffix match" +msgstr "Utótag illeszkedés" -#: ../setup/setup.ui.h:2 -msgid "Font and Style" -msgstr "Betűkészlet és stílus" +#: setup/setup.ui:1130 +msgid "Containing match" +msgstr "Tartalmazó illeszkedés" -#: ../setup/setup.ui.h:3 -msgid "Global input method settings" -msgstr "Globális bevitelimód-beállítások" +#: setup/setup.ui:1176 +msgid "Emoji" +msgstr "Emodzsi" -#: ../setup/setup.ui.h:4 +#: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "Billentyűzetkiosztás" -#: ../setup/setup.ui.h:5 -msgid "Keyboard Shortcuts" -msgstr "Gyorsbillentyűk" +#: setup/setup.ui:1278 +msgid "Global input method settings" +msgstr "Globális bevitelimód-beállítások" -#: ../setup/setup.ui.h:6 -msgid "Startup" -msgstr "Indulás" +#: setup/setup.ui:1298 +msgid "Advanced" +msgstr "Speciális" -#: ../setup/setup.ui.h:7 +#: setup/setup.ui:1317 msgid "" "IBus\n" "The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" "IBus\n" "Az intelligens beviteli busz\n" -"Honlap: http://code.google.com/p/ibus\n" +"Honlap: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" -#: ../setup/setup.ui.h:14 +#: setup/setup.ui:1341 +msgid "Start ibus on login" +msgstr "Az IBus indítása bejelentkezéskor" + +#: setup/setup.ui:1358 +msgid "Startup" +msgstr "Indulás" + +#: src/ibusemojigen.h:30 +msgid "Activities" +msgstr "Tevékenységek" + +#: src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "Állatok és természet" + +#: src/ibusemojigen.h:32 +msgid "Component" +msgstr "Összetevő" + +#: src/ibusemojigen.h:33 +msgid "Flags" +msgstr "Zászlók" + +#: src/ibusemojigen.h:34 +msgid "Food & Drink" +msgstr "Étel és ital" + +#: src/ibusemojigen.h:35 +msgid "Objects" +msgstr "Tárgyak" + +#: src/ibusemojigen.h:36 +msgid "People & Body" +msgstr "Emberek és test" + +#: src/ibusemojigen.h:37 +msgid "Smileys & Emotion" +msgstr "Hangulatjelek és érzelmek" + +#: src/ibusemojigen.h:38 +msgid "Symbols" +msgstr "Szimbólumok" + +#: src/ibusemojigen.h:39 +msgid "Travel & Places" +msgstr "Utazás és helyek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:33 +msgid "Basic Latin" +msgstr "Alap latin" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:37 +msgid "Latin-1 Supplement" +msgstr "Latin-1 kiegészítés" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:41 +msgid "Latin Extended-A" +msgstr "Latin bővített – A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:45 +msgid "Latin Extended-B" +msgstr "Latin bővített – B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:49 +msgid "IPA Extensions" +msgstr "IPA kiegészítések" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:53 +msgid "Spacing Modifier Letters" +msgstr "Térköz módosító betűk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:57 +msgid "Combining Diacritical Marks" +msgstr "Egyesítő diakritikus jelek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:61 +msgid "Greek and Coptic" +msgstr "Görög és kopt" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:65 +msgid "Cyrillic" +msgstr "Cirill" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:69 +msgid "Cyrillic Supplement" +msgstr "Cirill kiegészítés" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:73 +msgid "Armenian" +msgstr "Örmény" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:77 +msgid "Hebrew" +msgstr "Héber" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:81 +msgid "Arabic" +msgstr "Arab" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:85 +msgid "Syriac" +msgstr "Szír" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:89 +msgid "Arabic Supplement" +msgstr "Arab kiegészítés" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:93 +msgid "Thaana" +msgstr "Thaana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:97 +msgid "NKo" +msgstr "NKo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:101 +msgid "Samaritan" +msgstr "Szamaritánus" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:105 +msgid "Mandaic" +msgstr "Mandeus" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:109 +msgid "Syriac Supplement" +msgstr "Szír kiegészítés" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:113 +msgid "Arabic Extended-A" +msgstr "Arab bővített – A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:117 +msgid "Devanagari" +msgstr "Dévanágari" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:121 +msgid "Bengali" +msgstr "Bengáli" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:125 +msgid "Gurmukhi" +msgstr "Gurmukhi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:129 +msgid "Gujarati" +msgstr "Gudzsaráti" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:133 +msgid "Oriya" +msgstr "Orija" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:137 +msgid "Tamil" +msgstr "Tamil" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:141 +msgid "Telugu" +msgstr "Telugu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:145 +msgid "Kannada" +msgstr "Kannada" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:149 +msgid "Malayalam" +msgstr "Malajálam" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:153 +msgid "Sinhala" +msgstr "Szingaléz" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:157 +msgid "Thai" +msgstr "Thai" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:161 +msgid "Lao" +msgstr "Lao" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:165 +msgid "Tibetan" +msgstr "Tibeti" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:169 +msgid "Myanmar" +msgstr "Burmai" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:173 +msgid "Georgian" +msgstr "Grúz" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:177 +msgid "Hangul Jamo" +msgstr "Hangul jamo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:181 +msgid "Ethiopic" +msgstr "Etióp" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:185 +msgid "Ethiopic Supplement" +msgstr "Etióp kiegészítés" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:189 +msgid "Cherokee" +msgstr "Cseroki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:193 +msgid "Unified Canadian Aboriginal Syllabics" +msgstr "Egyesített kanadai őslakos szótagírás" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:197 +msgid "Ogham" +msgstr "Ogham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:201 +msgid "Runic" +msgstr "Rúnák" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:205 +msgid "Tagalog" +msgstr "Tagalog" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:209 +msgid "Hanunoo" +msgstr "Hanunoo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:213 +msgid "Buhid" +msgstr "Buhid" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:217 +msgid "Tagbanwa" +msgstr "Tagbanwa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:221 +msgid "Khmer" +msgstr "Khmer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:225 +msgid "Mongolian" +msgstr "Mongol" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:229 +msgid "Unified Canadian Aboriginal Syllabics Extended" +msgstr "Egyesített kanadai őslakos szótagírás bővített" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:233 +msgid "Limbu" +msgstr "Limbu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:237 +msgid "Tai Le" +msgstr "Tai Le" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:241 +msgid "New Tai Lue" +msgstr "Új Tai Lü" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:245 +msgid "Khmer Symbols" +msgstr "Khmer szimbólumok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:249 +msgid "Buginese" +msgstr "Buginéz" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:253 +msgid "Tai Tham" +msgstr "Tai Tham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:257 +msgid "Combining Diacritical Marks Extended" +msgstr "Egyesítő diakritikus jelek bővített" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:261 +msgid "Balinese" +msgstr "Balinéz" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:265 +msgid "Sundanese" +msgstr "Szundai" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:269 +msgid "Batak" +msgstr "Batak" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:273 +msgid "Lepcha" +msgstr "Lepcha" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:277 +msgid "Ol Chiki" +msgstr "Ol Chiki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:281 +msgid "Cyrillic Extended-C" +msgstr "Cirill bővített – C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:285 +msgid "Georgian Extended" +msgstr "Grúz bővített" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:289 +msgid "Sundanese Supplement" +msgstr "Szundai kiegészítés" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:293 +msgid "Vedic Extensions" +msgstr "Védikus bővítések" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:297 +msgid "Phonetic Extensions" +msgstr "Fonetikus bővítések" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:301 +msgid "Phonetic Extensions Supplement" +msgstr "Fonetikus bővítések kiegészítése" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:305 +msgid "Combining Diacritical Marks Supplement" +msgstr "Egyesítő diakritikus jelek kiegészítése" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:309 +msgid "Latin Extended Additional" +msgstr "Latin további bővített" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:313 +msgid "Greek Extended" +msgstr "Görög bővített" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:317 +msgid "General Punctuation" +msgstr "Általános központozás" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:321 +msgid "Superscripts and Subscripts" +msgstr "Alsó és felső index" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:325 +msgid "Currency Symbols" +msgstr "Pénznemek szimbólumai" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:329 +msgid "Combining Diacritical Marks for Symbols" +msgstr "Egyesítő diakritikus jelek szimbólumokhoz" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:333 +msgid "Letterlike Symbols" +msgstr "Betűszerű szimbólumok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:337 +msgid "Number Forms" +msgstr "Számalakok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:341 +msgid "Arrows" +msgstr "Nyilak" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:345 +msgid "Mathematical Operators" +msgstr "Matematikai operátorok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:349 +msgid "Miscellaneous Technical" +msgstr "Egyéb műszaki jelek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:353 +msgid "Control Pictures" +msgstr "Vezérlőkarakterek jelei" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:357 +msgid "Optical Character Recognition" +msgstr "Optikai karakterfelismerés" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:361 +msgid "Enclosed Alphanumerics" +msgstr "Közrezárt alfanumerikus karakterek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:365 +msgid "Box Drawing" +msgstr "Dobozrajzolás" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:369 +msgid "Block Elements" +msgstr "Blokkelemek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:373 +msgid "Geometric Shapes" +msgstr "Geometriai alakzatok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:377 +msgid "Miscellaneous Symbols" +msgstr "Egyéb szimbólumok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:381 +msgid "Dingbats" +msgstr "Ábrácskák" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:385 +msgid "Miscellaneous Mathematical Symbols-A" +msgstr "Kiegészítő matematikai szimbólumok – A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:389 +msgid "Supplemental Arrows-A" +msgstr "Kiegészítő nyilak A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:393 +msgid "Braille Patterns" +msgstr "Braille-jelek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:397 +msgid "Supplemental Arrows-B" +msgstr "Kiegészítő nyilak B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:401 +msgid "Miscellaneous Mathematical Symbols-B" +msgstr "Kiegészítő matematikai szimbólumok – B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:405 +msgid "Supplemental Mathematical Operators" +msgstr "Kiegészítő matematikai operátorok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:409 +msgid "Miscellaneous Symbols and Arrows" +msgstr "Egyéb szimbólumok és nyilak" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:413 +msgid "Glagolitic" +msgstr "Glagolita" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:417 +msgid "Latin Extended-C" +msgstr "Latin bővített – C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:421 +msgid "Coptic" +msgstr "Kopt" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:425 +msgid "Georgian Supplement" +msgstr "Grúz kiegészítés" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:429 +msgid "Tifinagh" +msgstr "Tifinagh" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:433 +msgid "Ethiopic Extended" +msgstr "Etióp bővített" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:437 +msgid "Cyrillic Extended-A" +msgstr "Cirill bővített – A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:441 +msgid "Supplemental Punctuation" +msgstr "Központozási kiegészítés" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:445 +msgid "CJK Radicals Supplement" +msgstr "CJK radikális kiegészítés" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:449 +msgid "Kangxi Radicals" +msgstr "Kang-hszi radikálisok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:453 +msgid "Ideographic Description Characters" +msgstr "Képírásjel leíró karakterek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:457 +msgid "CJK Symbols and Punctuation" +msgstr "CJK szimbólumok és központozás" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:461 +msgid "Hiragana" +msgstr "Hiragana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:465 +msgid "Katakana" +msgstr "Katakana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:469 +msgid "Bopomofo" +msgstr "Bopomofo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:473 +msgid "Hangul Compatibility Jamo" +msgstr "Hangul jamo kompatibilitás" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:477 +msgid "Kanbun" +msgstr "Kanbun" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:481 +msgid "Bopomofo Extended" +msgstr "Bopomofo bővített" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:485 +msgid "CJK Strokes" +msgstr "CJK vonalak" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:489 +msgid "Katakana Phonetic Extensions" +msgstr "Katakana fonetikus bővítések" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:493 +msgid "Enclosed CJK Letters and Months" +msgstr "Közrezárt CJK betűk és hónapok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:497 +msgid "CJK Compatibility" +msgstr "CJK kompatibilitás" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:501 +msgid "CJK Unified Ideographs Extension A" +msgstr "CJK egyesített képírásjel kiegészítés – F" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:505 +msgid "Yijing Hexagram Symbols" +msgstr "Ji csing hexagram szimbólumok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:509 +msgid "CJK Unified Ideographs" +msgstr "CJK egyesített képírásjelek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:513 +msgid "Yi Syllables" +msgstr "Yi szótagok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:517 +msgid "Yi Radicals" +msgstr "Yi radikálisok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:521 +msgid "Lisu" +msgstr "Lisu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:525 +msgid "Vai" +msgstr "Vai" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:529 +msgid "Cyrillic Extended-B" +msgstr "Cirill bővített – B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:533 +msgid "Bamum" +msgstr "Bamum" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:537 +msgid "Modifier Tone Letters" +msgstr "Módosító hangjelek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:541 +msgid "Latin Extended-D" +msgstr "Latin bővített – D" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:545 +msgid "Syloti Nagri" +msgstr "Syloti Nagri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:549 +msgid "Common Indic Number Forms" +msgstr "Általános indiai számalakok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:553 +msgid "Phags-pa" +msgstr "Phags-pa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:557 +msgid "Saurashtra" +msgstr "Saurashtra" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:561 +msgid "Devanagari Extended" +msgstr "Dévanágari bővített" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:565 +msgid "Kayah Li" +msgstr "Kayah Li" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:569 +msgid "Rejang" +msgstr "Rejang" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:573 +msgid "Hangul Jamo Extended-A" +msgstr "Hangul jamo bővített – A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:577 +msgid "Javanese" +msgstr "Jávai" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:581 +msgid "Myanmar Extended-B" +msgstr "Burmai bővített – B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:585 +msgid "Cham" +msgstr "Cham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:589 +msgid "Myanmar Extended-A" +msgstr "Bburmai bővített – A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:593 +msgid "Tai Viet" +msgstr "Tai Viet" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:597 +msgid "Meetei Mayek Extensions" +msgstr "Meetei Mayek kiegészítések" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:601 +msgid "Ethiopic Extended-A" +msgstr "Etióp bővített – A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:605 +msgid "Latin Extended-E" +msgstr "Latin bővített – E" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:609 +msgid "Cherokee Supplement" +msgstr "Cseroki kiegészítés" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:613 +msgid "Meetei Mayek" +msgstr "Meetei Mayek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:617 +msgid "Hangul Syllables" +msgstr "Hangul szótagok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:621 +msgid "Hangul Jamo Extended-B" +msgstr "Hangul jamo bővített – B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:625 +msgid "High Surrogates" +msgstr "Felső pótlások" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:629 +msgid "High Private Use Surrogates" +msgstr "Felső pótlások személyes használatra" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:633 +msgid "Low Surrogates" +msgstr "Alsó pótlások" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:637 +msgid "Private Use Area" +msgstr "Személyes használatra kijelölt tartomány" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:641 +msgid "CJK Compatibility Ideographs" +msgstr "CJK kompatibilitási képírásjelek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:645 +msgid "Alphabetic Presentation Forms" +msgstr "Alfabetikus megjelenítési alakok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:649 +msgid "Arabic Presentation Forms-A" +msgstr "Arab megjelenítési alakok – A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:653 +msgid "Variation Selectors" +msgstr "Változatválasztók" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:657 +msgid "Vertical Forms" +msgstr "Függőleges alakok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:661 +msgid "Combining Half Marks" +msgstr "Egyesítő féljelek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:665 +msgid "CJK Compatibility Forms" +msgstr "CJK kompatibilitási alakok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:669 +msgid "Small Form Variants" +msgstr "Kisalakú változatok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:673 +msgid "Arabic Presentation Forms-B" +msgstr "Arab megjelenítési alakok – B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:677 +msgid "Halfwidth and Fullwidth Forms" +msgstr "Fél- és teljes szélességű alakok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:681 +msgid "Specials" +msgstr "Különleges" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:685 +msgid "Linear B Syllabary" +msgstr "Lineáris B szótagírás" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:689 +msgid "Linear B Ideograms" +msgstr "Lineáris B képírásjelek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:693 +msgid "Aegean Numbers" +msgstr "Égei számok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:697 +msgid "Ancient Greek Numbers" +msgstr "Ógörög számok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:701 +msgid "Ancient Symbols" +msgstr "Ősi szimbólumok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:705 +msgid "Phaistos Disc" +msgstr "Phaisztoszi korong" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:709 +msgid "Lycian" +msgstr "Lükiai" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:713 +msgid "Carian" +msgstr "Kariai" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:717 +msgid "Coptic Epact Numbers" +msgstr "Kopt epact számok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:721 +msgid "Old Italic" +msgstr "Régi itáliai" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:725 +msgid "Gothic" +msgstr "Gót" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:729 +msgid "Old Permic" +msgstr "Régi permi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:733 +msgid "Ugaritic" +msgstr "Ugariti" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:737 +msgid "Old Persian" +msgstr "Óperzsa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:741 +msgid "Deseret" +msgstr "Deseret" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:745 +msgid "Shavian" +msgstr "Shaw-féle ábécé" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:749 +msgid "Osmanya" +msgstr "Osmanya" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:753 +msgid "Osage" +msgstr "Osage" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:757 +msgid "Elbasan" +msgstr "Elbasan" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:761 +msgid "Caucasian Albanian" +msgstr "Kaukázusi albaniai" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:765 +msgid "Linear A" +msgstr "Lineáris A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:769 +msgid "Cypriot Syllabary" +msgstr "Ciprióta szótagírás" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:773 +msgid "Imperial Aramaic" +msgstr "Birodalmi arámi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:777 +msgid "Palmyrene" +msgstr "Palmürai" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:781 +msgid "Nabataean" +msgstr "Nabateus" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:785 +msgid "Hatran" +msgstr "Hatran" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:789 +msgid "Phoenician" +msgstr "Föníciai" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:793 +msgid "Lydian" +msgstr "Lüd" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:797 +msgid "Meroitic Hieroglyphs" +msgstr "Meroita hieroglifák" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:801 +msgid "Meroitic Cursive" +msgstr "Meroita dőlt" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:805 +msgid "Kharoshthi" +msgstr "Kharosti" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:809 +msgid "Old South Arabian" +msgstr "Régi déli arab" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:813 +msgid "Old North Arabian" +msgstr "Régi északi arab" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:817 +msgid "Manichaean" +msgstr "Manicheai" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:821 +msgid "Avestan" +msgstr "Avesztán" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:825 +msgid "Inscriptional Parthian" +msgstr "Feliratos pártus" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:829 +msgid "Inscriptional Pahlavi" +msgstr "Feliratos pahlavi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:833 +msgid "Psalter Pahlavi" +msgstr "Zsoltáros pahlavi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:837 +msgid "Old Turkic" +msgstr "Régi török" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:841 +msgid "Old Hungarian" +msgstr "Székely–magyar rovásírás" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:845 +msgid "Hanifi Rohingya" +msgstr "Hanifi rohingja" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:849 +msgid "Rumi Numeral Symbols" +msgstr "Rumi számszimbólumok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:853 +msgid "Old Sogdian" +msgstr "Régi szogd" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:857 +msgid "Sogdian" +msgstr "Szogd" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:861 +msgid "Elymaic" +msgstr "Elámi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:865 +msgid "Brahmi" +msgstr "Bráhmi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:869 +msgid "Kaithi" +msgstr "Kaithi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:873 +msgid "Sora Sompeng" +msgstr "Szora szompeng" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:877 +msgid "Chakma" +msgstr "Csakma" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:881 +msgid "Mahajani" +msgstr "Mahajani" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:885 +msgid "Sharada" +msgstr "Sharada" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:889 +msgid "Sinhala Archaic Numbers" +msgstr "Szinhala archaikus számok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:893 +msgid "Khojki" +msgstr "Khodzski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:897 +msgid "Multani" +msgstr "Multani" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:901 +msgid "Khudawadi" +msgstr "Khudawadi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:905 +msgid "Grantha" +msgstr "Grantha" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:909 +msgid "Newa" +msgstr "Newa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:913 +msgid "Tirhuta" +msgstr "Tirhuta" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:917 +msgid "Siddham" +msgstr "Sziddham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:921 +msgid "Modi" +msgstr "Modi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:925 +msgid "Mongolian Supplement" +msgstr "Mongol kiegészítés" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:929 +msgid "Takri" +msgstr "Takri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:933 +msgid "Ahom" +msgstr "Ahom" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:937 +msgid "Dogra" +msgstr "Dogra" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:941 +msgid "Warang Citi" +msgstr "Warang Citi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:945 +msgid "Nandinagari" +msgstr "Nandinágari" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:949 +msgid "Zanabazar Square" +msgstr "Zanabazar-féle négyzet" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:953 +msgid "Soyombo" +msgstr "Szojombo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:957 +msgid "Pau Cin Hau" +msgstr "Pau Cin Hau" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:961 +msgid "Bhaiksuki" +msgstr "Bhaiksuki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:965 +msgid "Marchen" +msgstr "Marchen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:969 +msgid "Masaram Gondi" +msgstr "Masaram-féle gondi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:973 +msgid "Gunjala Gondi" +msgstr "Gunjalai gondi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:977 +msgid "Makasar" +msgstr "Makasar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:981 +msgid "Tamil Supplement" +msgstr "Tamil kiegészítés" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:985 +msgid "Cuneiform" +msgstr "Ékírás" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:989 +msgid "Cuneiform Numbers and Punctuation" +msgstr "Ékírásos szimbólumok és írásjelek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:993 +msgid "Early Dynastic Cuneiform" +msgstr "Kora dinasztiai ékírás" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:997 +msgid "Egyptian Hieroglyphs" +msgstr "Egyiptomi hieroglifák" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1001 +msgid "Egyptian Hieroglyph Format Controls" +msgstr "Egyiptomi hieroglifa formátumvezérlők" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1005 +msgid "Anatolian Hieroglyphs" +msgstr "Anatóliai hieroglifák" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1009 +msgid "Bamum Supplement" +msgstr "Bamum kiegészítés" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1013 +msgid "Mro" +msgstr "Mro" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1017 +msgid "Bassa Vah" +msgstr "Bassa Vah" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1021 +msgid "Pahawh Hmong" +msgstr "Pahawh Hmong" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1025 +msgid "Medefaidrin" +msgstr "Medefaidrin" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1029 +msgid "Miao" +msgstr "Miao" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1033 +msgid "Ideographic Symbols and Punctuation" +msgstr "Ideografikus szimbólumok és írásjelek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1037 +msgid "Tangut" +msgstr "Tangut" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1041 +msgid "Tangut Components" +msgstr "Tangut komponensek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1045 +msgid "Kana Supplement" +msgstr "Kana kiegészítés" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1049 +msgid "Kana Extended-A" +msgstr "Kana bővített – A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1053 +msgid "Small Kana Extension" +msgstr "Kis kana bővítés" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1057 +msgid "Nushu" +msgstr "Nü-su" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1061 +msgid "Duployan" +msgstr "Duployan" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1065 +msgid "Shorthand Format Controls" +msgstr "Gyorsírás formátum vezérlők" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1069 +msgid "Byzantine Musical Symbols" +msgstr "Bizánci zenei szimbólumok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1073 +msgid "Musical Symbols" +msgstr "Zenei szimbólumok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1077 +msgid "Ancient Greek Musical Notation" +msgstr "Ógörög zenei jelölés" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1081 +msgid "Mayan Numerals" +msgstr "Maja számjegyek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1085 +msgid "Tai Xuan Jing Symbols" +msgstr "Tai Xuan Jing szimbólumok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1089 +msgid "Counting Rod Numerals" +msgstr "Számolórúd számjegyek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1093 +msgid "Mathematical Alphanumeric Symbols" +msgstr "Matematikai alfanumerikus szimbólumok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1097 +msgid "Sutton SignWriting" +msgstr "Sutton-féle jelnyelv" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1101 +msgid "Glagolitic Supplement" +msgstr "Glagolita kiegészítés" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1105 +msgid "Nyiakeng Puachue Hmong" +msgstr "Nyiakeng Puachue Hmong" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1109 +msgid "Wancho" +msgstr "Wancho" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1113 +msgid "Mende Kikakui" +msgstr "Mende Kikakui" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1117 +msgid "Adlam" +msgstr "Adlam" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1121 +msgid "Indic Siyaq Numbers" +msgstr "Indiai siyaq számjegyek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1125 +msgid "Ottoman Siyaq Numbers" +msgstr "Oszmán siyaq számjegyek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1129 +msgid "Arabic Mathematical Alphabetic Symbols" +msgstr "Arab matematikai ábécészimbólumok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1133 +msgid "Mahjong Tiles" +msgstr "Madzsong kövek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1137 +msgid "Domino Tiles" +msgstr "Dominók" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1141 +msgid "Playing Cards" +msgstr "Játékkártyák" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1145 +msgid "Enclosed Alphanumeric Supplement" +msgstr "Közrezárt alfanumerikus kiegészítés" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1149 +msgid "Enclosed Ideographic Supplement" +msgstr "Közrezárt képírásjel kiegészítés" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1153 +msgid "Miscellaneous Symbols and Pictographs" +msgstr "Egyéb szimbólumok és piktogramok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1157 +msgid "Emoticons" +msgstr "Emotikonok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1161 +msgid "Ornamental Dingbats" +msgstr "Díszítő apróságok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1165 +msgid "Transport and Map Symbols" +msgstr "Közlekedési és térkép szimbólumok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1169 +msgid "Alchemical Symbols" +msgstr "Alkímiai szimbólumok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1173 +msgid "Geometric Shapes Extended" +msgstr "Geometriai alakzatok bővített" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1177 +msgid "Supplemental Arrows-C" +msgstr "Kiegészítő nyilak C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1181 +msgid "Supplemental Symbols and Pictographs" +msgstr "Kiegészítő szimbólumok és piktogramok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1185 +msgid "Chess Symbols" +msgstr "Sakk szimbólumok" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1189 +msgid "Symbols and Pictographs Extended-A" +msgstr "Szimbólumok és piktogramok bővített – A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1193 +msgid "CJK Unified Ideographs Extension B" +msgstr "CJK egyesített képírásjel kiegészítés – B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1197 +msgid "CJK Unified Ideographs Extension C" +msgstr "CJK egyesített képírásjel kiegészítés – C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1201 +msgid "CJK Unified Ideographs Extension D" +msgstr "CJK egyesített képírásjel kiegészítés – D" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1205 +msgid "CJK Unified Ideographs Extension E" +msgstr "CJK egyesített képírásjel kiegészítés – E" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1209 +msgid "CJK Unified Ideographs Extension F" +msgstr "CJK egyesített képírásjel kiegészítés – F" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1213 +msgid "CJK Compatibility Ideographs Supplement" +msgstr "CJK kompatibilitási képírásjel kiegészítés" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1217 +msgid "Tags" +msgstr "Címkék" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1221 +msgid "Variation Selectors Supplement" +msgstr "Variációválasztó kiegészítés" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1225 +msgid "Supplementary Private Use Area-A" +msgstr "Kiegészítő személyes használatú terület A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1229 +msgid "Supplementary Private Use Area-B" +msgstr "Kiegészítő személyes használatú terület B" + +#: tools/main.vala:51 +msgid "List engine name only" +msgstr "Csak az alrendszerek nevének listázása" + +#: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 +msgid "Can't connect to IBus.\n" +msgstr "Nem lehet csatlakozni a IBushoz.\n" + +#: tools/main.vala:93 +#, c-format +msgid "language: %s\n" +msgstr "nyelv: %s\n" + +#: tools/main.vala:161 +msgid "No engine is set.\n" +msgstr "Nincs alrendszer beállítva.\n" + +#: tools/main.vala:169 +msgid "Set global engine failed.\n" +msgstr "Nem sikerült az általános alrendszer beállítása.\n" + +#: tools/main.vala:174 +msgid "Get global engine failed.\n" +msgstr "Nem sikerült az általános alrendszer lekérése.\n" + +#: tools/main.vala:217 +msgid "Read the system registry cache." +msgstr "A rendszer regisztrációs gyorsítótárának olvasása." + +#: tools/main.vala:219 +msgid "Read the registry cache FILE." +msgstr "A rendszer regisztrációs FÁJLjának olvasása." + +#: tools/main.vala:237 tools/main.vala:242 +msgid "The registry cache is invalid.\n" +msgstr "A regisztrációs gyorsítótár érvénytelen.\n" + +#: tools/main.vala:257 +msgid "Write the system registry cache." +msgstr "A rendszer regisztrációs gyorsítótárának írása." + +#: tools/main.vala:259 +msgid "Write the registry cache FILE." +msgstr "A rendszer regisztrációs FÁJLjának írása." + +#: tools/main.vala:295 msgid "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." +"Use engine schema paths instead of ibus core, which can be comma-separated " +"values." msgstr "" -"Az alapértelmezett beviteli mód a listában a legfelső.\n" -"Ezt a fel/le billentyűk segítségével változtathatja meg." +"A motor séma útvonalainak használata az ibus mag helyett, mely vesszővel " +"elválasztott értékekből állhat." -#: ../setup/setup.ui.h:17 -msgid "Add the selected input method into the enabled input methods" -msgstr "" -"A kiválasztott beviteli mód hozzáadása az engedélyezett beviteli módokhoz" +#: tools/main.vala:381 +msgid "Resetting…" +msgstr "Visszaállítás…" -#: ../setup/setup.ui.h:18 -msgid "Advanced" -msgstr "Speciális" +#: tools/main.vala:399 +msgid "Done" +msgstr "Kész" -#: ../setup/setup.ui.h:19 -msgid "Always" -msgstr "Mindig" +#: tools/main.vala:444 +msgid "Set or get engine" +msgstr "Alrendszer beállítása vagy lekérése" -#: ../setup/setup.ui.h:20 -msgid "Bottom left corner" -msgstr "Bal alsó sarok" +#: tools/main.vala:445 +msgid "Exit ibus-daemon" +msgstr "Kilépés az ibus-daemon-ból" -#: ../setup/setup.ui.h:21 -msgid "Bottom right corner" -msgstr "Jobb alsó sarok" +#: tools/main.vala:446 +msgid "Show available engines" +msgstr "Elérhető alrendszerek megjelenítése" -#: ../setup/setup.ui.h:22 -msgid "Candidates orientation:" -msgstr "Jelöltek tájolása:" +#: tools/main.vala:447 +msgid "(Not implemented)" +msgstr "(Nincs megvalósítva)" -#: ../setup/setup.ui.h:23 -msgid "Custom" -msgstr "Egyéni" +#: tools/main.vala:448 +msgid "Restart ibus-daemon" +msgstr "Az ibus-daemon újraindítása" -#: ../setup/setup.ui.h:24 -msgid "Disable:" -msgstr "Letiltás:" +#: tools/main.vala:449 +msgid "Show version" +msgstr "Verzió megjelenítése" -#: ../setup/setup.ui.h:25 -msgid "Embed preedit text in application window" -msgstr "Előszerkesztett szöveg beágyazása az alkalmazásablakba" +#: tools/main.vala:450 +msgid "Show the content of registry cache" +msgstr "A regisztrációs gyorsítótár tartalmának megjelenítése" -#: ../setup/setup.ui.h:26 -msgid "Embed the preedit text of input method in the application window" -msgstr "" -"A beviteli mód előszerkesztett szövegének beágyazása az alkalmazásablakba" +#: tools/main.vala:451 +msgid "Create registry cache" +msgstr "Regisztrációs gyorsítótár létrehozása" -#: ../setup/setup.ui.h:27 -msgid "Embedded in menu" -msgstr "Beágyazva a menübe" +#: tools/main.vala:452 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "Az ibus-daemon D-Bus címének kiírása" -#: ../setup/setup.ui.h:28 -msgid "Enable or disable:" -msgstr "Engedélyezés vagy tiltás:" +#: tools/main.vala:453 +msgid "Show the configuration values" +msgstr "Beállítási értékek megjelenítése" -#: ../setup/setup.ui.h:29 -msgid "Enable:" -msgstr "Engedélyezés:" +#: tools/main.vala:454 +msgid "Reset the configuration values" +msgstr "A beállítási értékek visszaállítása" -#: ../setup/setup.ui.h:30 -msgid "General" -msgstr "Általános" +#: tools/main.vala:456 +msgid "Save emoji on dialog to clipboard" +msgstr "A párbeszédablakon lévő emodzsi vágólapra mentése" -#: ../setup/setup.ui.h:31 -msgid "Horizontal" -msgstr "Vízszintes" +#: tools/main.vala:458 +msgid "Show this information" +msgstr "Ezen információk megjelenítése" -#: ../setup/setup.ui.h:34 -msgid "Language panel position:" -msgstr "A nyelvi panel elhelyezése:" - -#: ../setup/setup.ui.h:35 -msgid "Move down the selected input method in the enabled input methods" +#: tools/main.vala:464 +#, c-format +msgid "" +"Usage: %s COMMAND [OPTION...]\n" +"\n" msgstr "" -"A kiválasztott beviteli mód mozgatása lefelé az engedélyezett beviteli módok" -" között" +"Használat: %s PARANCS [KAPCSOLÓK…]\n" +"\n" -#: ../setup/setup.ui.h:36 -msgid "Move up the selected input method in the enabled input methods list" +#: tools/main.vala:465 +msgid "Commands:\n" +msgstr "Parancsok:\n" + +#: tools/main.vala:494 +#, c-format +msgid "%s is unknown command!\n" +msgstr "%s: ismeretlen parancs!\n" + +#: ui/gtk3/emojier.vala:233 +msgid "Favorites" +msgstr "Kedvencek" + +#: ui/gtk3/emojier.vala:234 +msgid "Others" +msgstr "Többi" + +#: ui/gtk3/emojier.vala:235 +msgid "Open Unicode choice" +msgstr "Unicode választás megnyitása" + +#: ui/gtk3/emojier.vala:994 +msgid "Bring back emoji choice" +msgstr "Emodzsi választás visszahozása" + +#: ui/gtk3/emojier.vala:1096 +msgid "Page Down" +msgstr "Page Down" + +#: ui/gtk3/emojier.vala:1107 +msgid "Page Up" +msgstr "Page Up" + +#: ui/gtk3/emojier.vala:1110 +msgid "Show emoji variants" +msgstr "Emodzsi változatok megjelenítése" + +#: ui/gtk3/emojier.vala:1111 +msgid "Close" +msgstr "Bezárás" + +#: ui/gtk3/emojier.vala:1117 +msgid "Menu" +msgstr "Menü" + +#: ui/gtk3/emojier.vala:1128 +msgid "Click to view a warning message" +msgstr "Kattintson a figyelmeztető üzenet megtekintéséhez" + +#: ui/gtk3/emojier.vala:1172 +msgid "Loading a Unicode dictionary:" +msgstr "Unicode szótár betöltése:" + +#: ui/gtk3/emojier.vala:1418 +#, c-format +msgid "Code point: %s" +msgstr "Kódpont: %s" + +#: ui/gtk3/emojier.vala:1424 +msgid "Has emoji variants" +msgstr "Vannak emodzsi változatai" + +#: ui/gtk3/emojier.vala:1591 ui/gtk3/emojier.vala:1604 +#, c-format +msgid "Description: %s" +msgstr "Leírás: %s" + +#: ui/gtk3/emojier.vala:1591 +msgid "None" +msgstr "Nincs" + +#: ui/gtk3/emojier.vala:1615 +#, c-format +msgid "Annotations: %s" +msgstr "Annotációk: %s" + +#: ui/gtk3/emojier.vala:1641 +#, c-format +msgid "Name: %s" +msgstr "Név: %s" + +#: ui/gtk3/emojier.vala:1649 +#, c-format +msgid "Alias: %s" +msgstr "Álnév: %s" + +#: ui/gtk3/emojier.vala:2139 ui/gtk3/ibus-extension-gtk3.desktop.in:3 +#: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 +msgid "Emoji Choice" +msgstr "Emodzsi választás" + +#: ui/gtk3/emojier.vala:2141 +msgid "Unicode Choice" +msgstr "Unicode választás" + +#: ui/gtk3/emojier.vala:2429 +msgid "" +"Failed to get the current text application. Please re-focus your " +"application. E.g. Press Esc key several times to release the emoji typing " +"mode, click your desktop and click your text application again." msgstr "" -"A kiválasztott beviteli mód mozgatása felfelé az engedélyezett beviteli " -"módok között" - -#: ../setup/setup.ui.h:37 -msgid "Next input method:" -msgstr "Következő beviteli mód:" +"Nem sikerült lekérni a jelenlegi szöveges alkalmazást. Hozza újra fókuszba " +"az alkalmazást. Például nyomja meg többször az Esc gombot az emodzsi beírási " +"módból kilépéshez, kattintson az asztalra, majd újra a szöveges alkalmazásra." + +#: ui/gtk3/emojierapp.vala:58 +msgid "Canceled to choose an emoji." +msgstr "Emodzsi kiválasztás megszakítva." + +#: ui/gtk3/emojierapp.vala:93 +msgid "Copied an emoji to your clipboard." +msgstr "Emodzsi vágólapra másolva." + +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ui/gtk3/emojierapp.vala:114 +msgid "\"FONT\" for emoji characters on emoji dialog" +msgstr "„BETŰKÉSZLET” az emodzsiválasztó párbeszédablakon" + +#: ui/gtk3/emojierapp.vala:115 +msgid "FONT" +msgstr "BETŰKÉSZLET" + +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ui/gtk3/emojierapp.vala:120 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" +msgstr "„NYELV” az emodzsi párbeszédablak annotációhoz. Például „en”" + +#: ui/gtk3/emojierapp.vala:121 +msgid "LANG" +msgstr "NYELV" + +#: ui/gtk3/emojierapp.vala:123 +msgid "Emoji annotations can be match partially" +msgstr "Az emodzsi annotációkra lehet részlegesen illeszteni" + +#: ui/gtk3/emojierapp.vala:127 +msgid "Match with the length of the specified integer" +msgstr "Illesztés a megadott egész számmal egyező hosszra" + +#: ui/gtk3/emojierapp.vala:131 +msgid "Match with the condition of the specified integer" +msgstr "Illesztés a megadott egész szám feltételével" + +#: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 +msgid "IBus Panel" +msgstr "IBus panel" -#: ../setup/setup.ui.h:38 -msgid "Previous input method:" -msgstr "Előző beviteli mód:" +#: ui/gtk3/panel.vala:1095 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "Az IBus egy intelligens beviteli busz Linux/Unix rendszerekhez." -#: ../setup/setup.ui.h:39 -msgid "Remove the selected input method from the enabled input methods" +#: ui/gtk3/panel.vala:1099 +msgid "translator-credits" msgstr "" -"A kiválasztott beviteli mód eltávolítása az engedélyezett beviteli módok " -"közül" - -#: ../setup/setup.ui.h:40 -msgid "Set the behavior of ibus how to show or hide language bar" -msgstr "A nyelv panel megjelenítési vagy elrejtési módjának beállítása" - -#: ../setup/setup.ui.h:41 -msgid "Set the orientation of candidates in lookup table" -msgstr "Jelöltek tájolásának beállítása a keresési táblában" - -#: ../setup/setup.ui.h:44 -msgid "Show information of the selected input method" -msgstr "Információk megjelenítése a kiválasztott beviteli módról" - -#: ../setup/setup.ui.h:46 -msgid "Show input method's name on language bar when check the checkbox" -msgstr "Beviteli mód nevének megjelenítése a nyelv panelen" - -#: ../setup/setup.ui.h:47 -msgid "Show language panel:" -msgstr "Nyelv panel megjelenítése:" - -#: ../setup/setup.ui.h:48 -msgid "Start ibus on login" -msgstr "Az IBus indítása bejelentkezéskor" - -#: ../setup/setup.ui.h:49 -msgid "The shortcut keys for switching to next input method in the list" -msgstr "Gyorsbillentyűk a következő beviteli módra váltáshoz" +"Zoltan Hoppar , 2012.\n" +"Meskó Balázs , 2017,2020." -#: ../setup/setup.ui.h:50 -msgid "The shortcut keys for switching to previous input method in the list" -msgstr "Gyorsbillentyűk az előző beviteli módra való váltáshoz" - -#: ../setup/setup.ui.h:52 -msgid "Top left corner" -msgstr "Bal felső sarok" - -#: ../setup/setup.ui.h:53 -msgid "Top right corner" -msgstr "Jobb felső sarok" +#: ui/gtk3/panel.vala:1118 +msgid "Preferences" +msgstr "Beállítások" -#: ../setup/setup.ui.h:54 -msgid "Use custom font:" -msgstr "Egyéni betűkészlet használata:" +#: ui/gtk3/panel.vala:1144 +msgid "Restart" +msgstr "Újraindítás" -#: ../setup/setup.ui.h:57 -msgid "Vertical" -msgstr "Függőleges" +#: ui/gtk3/panel.vala:1148 +msgid "Quit" +msgstr "Kilépés" -#: ../setup/setup.ui.h:58 -msgid "When active" -msgstr "Amikor aktív" +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 +msgid "default:LTR" +msgstr "default:LTR" diff --git a/po/ia.po b/po/ia.po new file mode 100644 index 000000000..03d630121 --- /dev/null +++ b/po/ia.po @@ -0,0 +1,694 @@ +# translation of ibus.pot to Interlingua +# Interlingua translation of ibus. +# Copyright (C) 2008-2015 Peng Huang +# This file is distributed under the same license as the ibus package. +# +# Translators: +# Nik Kalach , 2013 +# Nik Kalach , 2013 +msgid "" +msgstr "" +"Project-Id-Version: IBus\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2014-02-18 13:46+0900\n" +"PO-Revision-Date: 2014-02-18 05:47+0000\n" +"Last-Translator: Nik Kalach \n" +"Language-Team: Interlingua \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ia\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ../setup/setup.ui.h:1 +msgid "Horizontal" +msgstr "Horizontal" + +#: ../setup/setup.ui.h:2 +msgid "Vertical" +msgstr "Vertical" + +#: ../setup/setup.ui.h:3 +msgid "Top left corner" +msgstr "Angulo superior siniste" + +#: ../setup/setup.ui.h:4 +msgid "Top right corner" +msgstr "Angelo superior dextere" + +#: ../setup/setup.ui.h:5 +msgid "Bottom left corner" +msgstr "Angulo inferior sinistre" + +#: ../setup/setup.ui.h:6 +msgid "Bottom right corner" +msgstr "Angulo inferior dextere" + +#: ../setup/setup.ui.h:7 +msgid "Custom" +msgstr "Personalisate" + +#: ../setup/setup.ui.h:8 +msgid "Do not show" +msgstr "" + +#: ../setup/setup.ui.h:9 +msgid "Hide automatically" +msgstr "" + +#: ../setup/setup.ui.h:10 +msgid "Always" +msgstr "Sempre" + +#: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 +msgid "IBus Preferences" +msgstr "Preferentias IBus" + +#: ../setup/setup.ui.h:12 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "Le claves acceleratori pro cambiar al methodo de ingresso sequente in le lista" + +#: ../setup/setup.ui.h:13 +msgid "Next input method:" +msgstr "Methodo de ingresso sequente:" + +#: ../setup/setup.ui.h:14 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "Le claves acceleratori pro cambiar al methodo de ingresso precedente in le lista" + +#: ../setup/setup.ui.h:15 +msgid "Previous input method:" +msgstr "Methodo de ingresso precedente" + +#: ../setup/setup.ui.h:16 +msgid "..." +msgstr "..." + +#: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 +msgid "The shortcut keys for turning input method on or off" +msgstr "Le claves acceleratori pro activar e disactivar le methodo de ingresso" + +#: ../setup/setup.ui.h:18 +msgid "Enable or disable:" +msgstr "Activar o disactivar:" + +#: ../setup/setup.ui.h:19 +msgid "Enable:" +msgstr "Activar:" + +#: ../setup/setup.ui.h:20 +msgid "Disable:" +msgstr "Disactivar:" + +#: ../setup/setup.ui.h:21 +msgid "Keyboard Shortcuts" +msgstr "Claves acceleratori" + +#: ../setup/setup.ui.h:22 +msgid "Set the orientation of candidates in lookup table" +msgstr "Configurar le orientation del tabula de cerca de candidatos" + +#: ../setup/setup.ui.h:23 +msgid "Candidates orientation:" +msgstr "Orientation de candidatos:" + +#: ../setup/setup.ui.h:24 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "Configurar le comportamento de ibus super como monstrar o occultar le barra de lingua" + +#: ../setup/setup.ui.h:25 +msgid "Show property panel:" +msgstr "" + +#: ../setup/setup.ui.h:26 +msgid "Language panel position:" +msgstr "Position del pannello de lingua:" + +#: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 +msgid "Show icon on system tray" +msgstr "Monstrar le icone in le area de indicatores" + +#: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 +msgid "Show input method name on language bar" +msgstr "Monstrar le nomine del methodo de ingresso sur le barra de lingua" + +#: ../setup/setup.ui.h:29 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "Monstar le nomine del methodo de ingresso sur le barra de lingua quando le quadrato de selection es marcate " + +#: ../setup/setup.ui.h:30 +msgid "Embed preedit text in application window" +msgstr "Inserer le texto pre-editate in le fenestra de application" + +#: ../setup/setup.ui.h:31 +msgid "Embed the preedit text of input method in the application window" +msgstr "Inserer le texto pre-editate del methodo de ingresso in le fenestra de application" + +#: ../setup/setup.ui.h:32 +msgid "Use custom font:" +msgstr "Usar characteres personalisate:" + +#: ../setup/setup.ui.h:33 +msgid "Font and Style" +msgstr "Typo de characteres e stilo" + +#: ../setup/setup.ui.h:34 +msgid "General" +msgstr "General" + +#. add button +#: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 +msgid "_Add" +msgstr "_Adder" + +#: ../setup/setup.ui.h:36 +msgid "Add the selected input method into the enabled input methods" +msgstr "Adder le methodo de ingresso seligite al methodos de ingresso active" + +#: ../setup/setup.ui.h:37 +msgid "_Remove" +msgstr "_Remover" + +#: ../setup/setup.ui.h:38 +msgid "Remove the selected input method from the enabled input methods" +msgstr "Remover le methodo de ingresso seligite del methodos de ingresso active" + +#: ../setup/setup.ui.h:39 +msgid "_Up" +msgstr "_Supra" + +#: ../setup/setup.ui.h:40 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "Mover in alto le methodo de ingresso seligite in le lista de methodos de ingresso active" + +#: ../setup/setup.ui.h:41 +msgid "_Down" +msgstr "_Infra" + +#: ../setup/setup.ui.h:42 +msgid "Move down the selected input method in the enabled input methods" +msgstr "Mover in basso le methodo de ingresso seligite in le lista de methodos de ingresso" + +#: ../setup/setup.ui.h:43 +msgid "_About" +msgstr "A _proposito" + +#: ../setup/setup.ui.h:44 +msgid "Show information of the selected input method" +msgstr "Monstrar le information del methodo de ingresso seligite" + +#: ../setup/setup.ui.h:45 +msgid "_Preferences" +msgstr "_Preferentias" + +#: ../setup/setup.ui.h:46 +msgid "Show setup of the selected input method" +msgstr "Monstrar le configuration del methodo de ingresso seligite" + +#: ../setup/setup.ui.h:47 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" + +#. create im name & icon column +#: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 +msgid "Input Method" +msgstr "Methodo de ingresso" + +#: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 +msgid "Use system keyboard layout" +msgstr "Usar le disposition de claviero del systema" + +#: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 +msgid "Use system keyboard (XKB) layout" +msgstr "Usar le disposition de claviero del systema (XKB)" + +#: ../setup/setup.ui.h:51 +msgid "Keyboard Layout" +msgstr "Disposition de claviero" + +#: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 +msgid "Share the same input method among all applications" +msgstr "Usar le mesme methodo de ingresso pro tote le applicationes" + +#: ../setup/setup.ui.h:53 +msgid "Global input method settings" +msgstr "Configuration del methodo de ingresso global" + +#: ../setup/setup.ui.h:54 +msgid "Advanced" +msgstr "Avantiate" + +#: ../setup/setup.ui.h:55 +msgid "" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" +msgstr "IBus\nLe bus de ingresso intelligente\nPagina del projecto: https://github.com/ibus/ibus/wiki\n\n\n\n" + +#: ../setup/setup.ui.h:62 +msgid "Start ibus on login" +msgstr "Initiar ibus al connexion" + +#: ../setup/setup.ui.h:63 +msgid "Startup" +msgstr "Initiation" + +#: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 +msgid "About" +msgstr "A proposito" + +#: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 +msgid "_Close" +msgstr "_Clauder" + +#: ../data/ibus.schemas.in.h:1 +msgid "Preload engines" +msgstr "Precargar le ingenios" + +#: ../data/ibus.schemas.in.h:2 +msgid "Preload engines during ibus starts up" +msgstr "Precargar le ingenios durante le initiation de ibus" + +#: ../data/ibus.schemas.in.h:3 +msgid "Engines order" +msgstr "Ordine de ingenios" + +#: ../data/ibus.schemas.in.h:4 +msgid "Saved engines order in input method list" +msgstr "Le ordine de ingenios registrate in le lista de methodos de ingresso" + +#: ../data/ibus.schemas.in.h:5 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "Demora in millisecundas ante le demonstration del fenestra de commutator de methodos de ingresso" + +#: ../data/ibus.schemas.in.h:6 +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is " +"400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " +"not show the window and switch prev/next engines." +msgstr "Definir le demora (in ms) ante le demonstration del fenestra de commutator de methodos de ingresso. Le valor predefinite es 400. 0 = monstrar immediatemente le fenestra. 0 < demora (in ms). 0 > non monstrar le fenestra e commutar inter ingenios precedente o sequente." + +#: ../data/ibus.schemas.in.h:7 +msgid "Saved version number" +msgstr "" + +#: ../data/ibus.schemas.in.h:8 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" + +#: ../data/ibus.schemas.in.h:9 +msgid "Trigger shortcut keys" +msgstr "Activator de claves acceleratori" + +#: ../data/ibus.schemas.in.h:11 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "Activator de claves acceleratori pro gtk_accelerator_parse" + +#: ../data/ibus.schemas.in.h:12 +msgid "Enable shortcut keys" +msgstr "Activar claves acceleratori" + +#: ../data/ibus.schemas.in.h:13 +msgid "The shortcut keys for turning input method on" +msgstr "Le combination de claves pro activar le methodo de ingresso" + +#: ../data/ibus.schemas.in.h:14 +msgid "Disable shortcut keys" +msgstr "Disactivar claves acceleratori" + +#: ../data/ibus.schemas.in.h:15 +msgid "The shortcut keys for turning input method off" +msgstr "Le combination de claves pro disactivar le methodo de ingresso" + +#: ../data/ibus.schemas.in.h:16 +msgid "Next engine shortcut keys" +msgstr "Claves acceleratori del ingenio sequente" + +#: ../data/ibus.schemas.in.h:17 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "Le combination de claves pro cambiar al methodo de ingresso sequente in le lista" + +#: ../data/ibus.schemas.in.h:18 +msgid "Prev engine shortcut keys" +msgstr "Claves acceleratori del ingenio precedente" + +#: ../data/ibus.schemas.in.h:19 +msgid "The shortcut keys for switching to the previous input method" +msgstr "Le combination de claves pro cambiar al methodo de ingresso precedente in le lista" + +#: ../data/ibus.schemas.in.h:20 +msgid "Auto hide" +msgstr "Occultar automaticamente" + +#: ../data/ibus.schemas.in.h:21 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "" + +#: ../data/ibus.schemas.in.h:22 +msgid "Language panel position" +msgstr "Position del pannello de lingua" + +#: ../data/ibus.schemas.in.h:23 +msgid "" +"The position of the language panel. 0 = Top left corner, 1 = Top right " +"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +msgstr "Le position del pannello de lingua. 0 = angulo superior siniste, 1 = angulo superior dextere, 2 = angulo inferior sinistre, 3 = angulo inferior dextere, 4 = Personalisate" + +#: ../data/ibus.schemas.in.h:24 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "" + +#: ../data/ibus.schemas.in.h:25 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" + +#: ../data/ibus.schemas.in.h:26 +msgid "The milliseconds to show property panel" +msgstr "" + +#: ../data/ibus.schemas.in.h:27 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" + +#: ../data/ibus.schemas.in.h:28 +msgid "Orientation of lookup table" +msgstr "Orientation del tabula de cerca" + +#: ../data/ibus.schemas.in.h:29 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "Orientation del tabula de cerca. 0 = horizontal, 1 = vertical" + +#: ../data/ibus.schemas.in.h:31 +msgid "Show input method name" +msgstr "Monstrar le nomine del methodo de ingresso" + +#: ../data/ibus.schemas.in.h:35 +msgid "Use custom font" +msgstr "Usar characteres personalisate" + +#: ../data/ibus.schemas.in.h:36 +msgid "Use custom font name for language panel" +msgstr "Usar un typo de characteres personalisate pro le pannello de lingua" + +#: ../data/ibus.schemas.in.h:37 +msgid "Custom font" +msgstr "Characteres personalisate" + +#: ../data/ibus.schemas.in.h:38 +msgid "Custom font name for language panel" +msgstr "Nomine del typo de characteres personalisate pro le pannello de lingua" + +#: ../data/ibus.schemas.in.h:39 +msgid "Embed Preedit Text" +msgstr "Inserer le texto pre-editate" + +#: ../data/ibus.schemas.in.h:40 +msgid "Embed Preedit Text in Application Window" +msgstr "Inserer le texto pre-editate in le fenestra de application" + +#: ../data/ibus.schemas.in.h:41 +msgid "Use global input method" +msgstr "Usar le methodo de ingresso global" + +#: ../data/ibus.schemas.in.h:43 +msgid "Enable input method by default" +msgstr "Activar le methodo de ingresso predefinite" + +#: ../data/ibus.schemas.in.h:44 +msgid "Enable input method by default when the application gets input focus" +msgstr "Activar le methodo de ingresso predefinite quando le application recipe le foco de ingresso" + +#: ../data/ibus.schemas.in.h:45 +msgid "DConf preserve name prefixes" +msgstr "DConf preserva le prefixos de nomines" + +#: ../data/ibus.schemas.in.h:46 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "Prefixos de claves DConf pro parar le conversion de nomines" + +#: ../ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "Copyright (c) 2007-2010 Peng Huang\nCopyright (c) 2007-2010 Red Hat, Inc." + +#: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 +msgid "Other" +msgstr "Altere" + +#: ../setup/engineabout.py:68 +#, python-format +msgid "Language: %s\n" +msgstr "Lingua: %s\n" + +#: ../setup/engineabout.py:71 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "Disposition de claviero: %s\n" + +#: ../setup/engineabout.py:74 +#, python-format +msgid "Author: %s\n" +msgstr "Autor: %s\n" + +#: ../setup/engineabout.py:77 +msgid "Description:\n" +msgstr "Description:\n" + +#: ../setup/enginecombobox.py:139 +msgid "Select an input method" +msgstr "Seliger un methodo de ingresso" + +#: ../setup/enginetreeview.py:94 +msgid "Kbd" +msgstr "Kbd" + +#: ../setup/ibus-setup.desktop.in.h:2 +msgid "Set IBus Preferences" +msgstr "Definir preferentias IBus" + +#: ../setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "Claves acceleratori" + +#: ../setup/keyboardshortcut.py:66 +msgid "Key code:" +msgstr "Codice de clave:" + +#: ../setup/keyboardshortcut.py:81 +msgid "Modifiers:" +msgstr "Modificatores:" + +#. apply button +#: ../setup/keyboardshortcut.py:133 +msgid "_Apply" +msgstr "_Applicar" + +#. delete button +#: ../setup/keyboardshortcut.py:139 +msgid "_Delete" +msgstr "_Deler" + +#: ../setup/keyboardshortcut.py:254 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "Preme un clave (o un combination de claves).\nLe dialogo se claudera quando le clave es liberate." + +#: ../setup/keyboardshortcut.py:256 +msgid "Please press a key (or a key combination)" +msgstr "Preme un clave (o combination de claves)" + +#: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 +msgid "_Cancel" +msgstr "A_nnullar" + +#: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 +msgid "_OK" +msgstr "_OK" + +#: ../setup/main.py:102 ../setup/main.py:395 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "Usa accellerator con majuscula pro revinir al methodo previe de ingresso" + +#: ../setup/main.py:329 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "Le demonio IBus non functiona. Initiar lo?" + +#: ../setup/main.py:350 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "IBus se ha initiate! Si tu non pote usar IBus, adde le lineas sequente al file $HOME/.bashrc e reconnecte.\n export GTK_IM_MODULE=ibus\n export XMODIFIERS=@im=ibus\n export QT_IM_MODULE=ibus" + +#. Translators: %d == 5 currently +#: ../setup/main.py:364 +#, python-format +msgid "IBus daemon could not be started in %d seconds." +msgstr "Le demonio IBus non pote initiar se in %d secundas." + +#: ../setup/main.py:376 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "Selige le clave acceleratori pro %s" + +#: ../setup/main.py:377 +msgid "switching input methods" +msgstr "cambiamento de methodos de ingresso" + +#: ../tools/main.vala:42 +msgid "List engine name only" +msgstr "Monstrar solmente nomines de ingenios" + +#: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 +#, c-format +msgid "Can't connect to IBus.\n" +msgstr "Le connexion a IBus es impossibile.\n" + +#: ../tools/main.vala:84 +#, c-format +msgid "language: %s\n" +msgstr "lingua: %s\n" + +#: ../tools/main.vala:152 +#, c-format +msgid "No engine is set.\n" +msgstr "Necun ingenio es configurate.\n" + +#: ../tools/main.vala:160 +#, c-format +msgid "Set global engine failed.\n" +msgstr "Falta al configuration del ingenio global.\n" + +#: ../tools/main.vala:165 +#, c-format +msgid "Get global engine failed.\n" +msgstr "Falta al obtener le ingenio global.\n" + +#: ../tools/main.vala:204 +msgid "Read the system registry cache." +msgstr "" + +#: ../tools/main.vala:206 +msgid "Read the registry cache FILE." +msgstr "" + +#: ../tools/main.vala:224 ../tools/main.vala:229 +#, c-format +msgid "The registry cache is invalid.\n" +msgstr "" + +#: ../tools/main.vala:244 +msgid "Write the system registry cache." +msgstr "" + +#: ../tools/main.vala:246 +msgid "Write the registry cache FILE." +msgstr "" + +#: ../tools/main.vala:293 +msgid "Set or get engine" +msgstr "" + +#: ../tools/main.vala:294 +msgid "Exit ibus-daemon" +msgstr "" + +#: ../tools/main.vala:295 +msgid "Show available engines" +msgstr "" + +#: ../tools/main.vala:296 +msgid "(Not implemented)" +msgstr "" + +#: ../tools/main.vala:297 +msgid "Restart ibus-daemon" +msgstr "" + +#: ../tools/main.vala:298 +msgid "Show version" +msgstr "" + +#: ../tools/main.vala:299 +msgid "Show the content of registry cache" +msgstr "" + +#: ../tools/main.vala:300 +msgid "Create registry cache" +msgstr "" + +#: ../tools/main.vala:301 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "" + +#: ../tools/main.vala:302 +msgid "Show this information" +msgstr "" + +#: ../tools/main.vala:308 +#, c-format +msgid "" +"Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "Usage: %s COMMANDO [OPTION...]\n\n" + +#: ../tools/main.vala:309 +#, c-format +msgid "Commands:\n" +msgstr "Commandos:\n" + +#: ../tools/main.vala:338 +#, c-format +msgid "%s is unknown command!\n" +msgstr "%s es un commando incognite!\n" + +#: ../ui/gtk3/panel.vala:425 +msgid "IBus Update" +msgstr "" + +#: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 +msgid "Super+space is now the default hotkey." +msgstr "" + +#: ../ui/gtk3/panel.vala:707 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus es un bus de ingresso intelligente pro Linux/Unix." + +#: ../ui/gtk3/panel.vala:711 +msgid "translator-credits" +msgstr "Nik Kalach " + +#: ../ui/gtk3/panel.vala:732 +msgid "Preferences" +msgstr "Preferentias" + +#: ../ui/gtk3/panel.vala:742 +msgid "Restart" +msgstr "Reinitiar" + +#: ../ui/gtk3/panel.vala:746 +msgid "Quit" +msgstr "Quitar" + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ../ui/gtk3/propertypanel.vala:374 +msgid "default:LTR" +msgstr "default:LTR" diff --git a/po/ibus10.pot b/po/ibus10.pot new file mode 100644 index 000000000..3f9843ddd --- /dev/null +++ b/po/ibus10.pot @@ -0,0 +1,3425 @@ +# Source translation of ibus. +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2022 Takao Fujiwara +# This file is distributed under the same license as the ibus package. +# +msgid "" +msgstr "" +"Project-Id-Version: ibus 1.5.26\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2022-06-20 20:30+0900\n" +"PO-Revision-Date: 2022-06-20 20:30+0900\n" +"Last-Translator: Takao Fujiwara \n" +"Language-Team: Source\n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Translators: Here “Preload” is a verb +#: data/dconf/org.freedesktop.ibus.gschema.xml:11 +msgid "Preload engines" +msgstr "" + +#. Translators: Tooltip for the button “Preload Engines” +#: data/dconf/org.freedesktop.ibus.gschema.xml:13 +msgid "Preload engines during ibus starts up" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:17 +msgid "Engines order" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:18 +msgid "Saved engines order in input method list" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:22 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:23 +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is " +"400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " +"show the window and switch prev/next engines." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:27 +msgid "Saved version number" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:28 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:77 +msgid "Latin layouts which have no ASCII" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:78 +msgid "US layout is appended to the Latin layouts. variant can be omitted." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:82 +msgid "Use xmodmap" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:83 +msgid "" +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:87 setup/setup.ui:1220 +msgid "Use system keyboard layout" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:88 setup/setup.ui:1225 +msgid "Use system keyboard (XKB) layout" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:92 +msgid "Embed Preedit Text" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:93 +msgid "Embed Preedit Text in Application Window" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:97 +msgid "Use global input method" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:98 setup/setup.ui:1269 +msgid "Share the same input method among all applications" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:102 +msgid "Enable input method by default" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:103 +msgid "Enable input method by default when the application gets input focus" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:107 +msgid "DConf preserve name prefixes" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:108 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:115 +msgid "Trigger shortcut keys" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:116 +#: data/dconf/org.freedesktop.ibus.gschema.xml:121 setup/setup.ui:236 +msgid "The shortcut keys for turning input method on or off" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:120 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:125 +msgid "Enable shortcut keys" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:126 +msgid "The shortcut keys for turning input method on" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:130 +msgid "Disable shortcut keys" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:131 +msgid "The shortcut keys for turning input method off" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:135 +#: data/dconf/org.freedesktop.ibus.gschema.xml:140 +msgid "Next engine shortcut keys" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:136 +#: data/dconf/org.freedesktop.ibus.gschema.xml:141 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:145 +#: data/dconf/org.freedesktop.ibus.gschema.xml:150 +msgid "Prev engine shortcut keys" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:146 +#: data/dconf/org.freedesktop.ibus.gschema.xml:151 +msgid "The shortcut keys for switching to the previous input method" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:157 +msgid "Auto hide" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:158 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:162 +#: data/dconf/org.freedesktop.ibus.gschema.xml:166 +msgid "Language panel position" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:170 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:171 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:175 +msgid "The milliseconds to show property panel" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:176 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:180 +msgid "Orientation of lookup table" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:181 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:185 +#: data/dconf/org.freedesktop.ibus.gschema.xml:186 setup/setup.ui:482 +#: setup/setup.ui:487 +msgid "Show icon on system tray" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:190 +msgid "Show input method name" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:191 setup/setup.ui:501 +msgid "Show input method name on language bar" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:195 +msgid "RGBA value of XKB icon" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:196 +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form 'rgba(r," +"g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 to 255 or " +"percentage values in the range 0% to 100%, and 'a' is a floating point value " +"in the range 0 to 1 of the alpha." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:200 +msgid "The milliseconds to show the panel icon for a property" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:201 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:205 +msgid "Use custom font" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:206 +msgid "Use custom font name for language panel" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:210 +#: data/dconf/org.freedesktop.ibus.gschema.xml:257 +msgid "Custom font" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:211 +msgid "Custom font name for language panel" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:215 +msgid "Use custom theme" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:216 +msgid "Use custom theme name for language panel" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:220 +msgid "Custom theme" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:221 +msgid "Custom theme name for language panel" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:225 +msgid "Use custom icon" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:226 +msgid "Use custom icon name for arrow buttons on candidate window" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:230 +msgid "Custom icon" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:231 +msgid "Custom icon name for arrow buttons on candidate window" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:235 setup/setup.ui:1317 +msgid "Choose glyphs with input method's language on candidate window" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:236 +msgid "" +"Some code points have the different glyphs and Pango determines the glyphs " +"from the language attribute. Pango chooses glyphs from the IBus engine's " +"language if the value is true and choose them from the desktop locale if the " +"value is false." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:247 +msgid "Unicode shortcut keys for gtk_accelerator_parse" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:248 +msgid "The shortcut keys for turning Unicode typing on or off" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:252 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:253 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:258 +msgid "Custom font name for emoji characters on emoji dialog" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:262 +msgid "Default language for emoji dictionary" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:263 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict ." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:267 +msgid "favorite emoji list on emoji dialog" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:268 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:272 +msgid "favorite emoji annotation list on emoji dialog" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:273 +msgid "You can assign an annotation for a favorite emoji in this list." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:277 +msgid "Whether emoji annotations can be match partially or not" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:278 +msgid "" +"Whether emoji annotations can be matched with a partial string instead of " +"the exact match or not." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:282 +msgid "Match emoji annotations with the specified length" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:283 +msgid "" +"Match emoji annotations partially with more than the specified number of " +"characters instead of the exact match." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:287 +msgid "Choose a condition to match emoji annotations partially" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:288 +msgid "" +"Choose one of the following conditions to match emoji annotations partially: " +"0 == Prefix match, 1 == Suffix match, 2 == Containing match" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:292 +msgid "Load the emoji data at the time of startup" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:293 +msgid "" +"Load the emoji data at the time of startup if true. About 10MB memory is " +"needed to load the data. Load the emoji data when open the emoji dialog at " +"the beginning if false." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:297 +msgid "Load the Unicode data at the time of startup" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:298 +msgid "" +"Load the Unicode data at the time of startup if true. About 15MB memory is " +"needed to load the data. Load the Unicode data when open the emoji dialog at " +"the beginning if false. The Unicode data is always loaded after the emoji " +"data is loaded even if true." +msgstr "" + +#: ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "" + +#: ibus/lang.py:41 src/ibusutil.c:209 ui/gtk3/panel.vala:1323 +msgid "Other" +msgstr "" + +#: setup/emojilang.py:67 +msgid "Select a language" +msgstr "" + +#: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 +#: setup/main.py:634 +msgid "_Cancel" +msgstr "" + +#: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:635 +msgid "_OK" +msgstr "" + +#: setup/emojilang.py:235 setup/enginedialog.py:222 +msgid "More…" +msgstr "" + +#: setup/engineabout.py:37 setup/setup.ui:1465 ui/gtk3/panel.vala:1288 +msgid "About" +msgstr "" + +#: setup/engineabout.py:40 setup/setup.ui:1488 +msgid "_Close" +msgstr "" + +#: setup/engineabout.py:72 +#, python-format +msgid "Language: %s\n" +msgstr "" + +#: setup/engineabout.py:75 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "" + +#: setup/engineabout.py:78 +#, python-format +msgid "Author: %s\n" +msgstr "" + +#: setup/engineabout.py:81 +msgid "Description:\n" +msgstr "" + +#: setup/enginecombobox.py:139 setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "" + +#. add button +#: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:676 +msgid "_Add" +msgstr "" + +#. create im name & icon column +#: setup/enginetreeview.py:69 setup/setup.ui:850 +msgid "Input Method" +msgstr "" + +#: setup/ibus-setup.desktop:3 setup/setup.ui:81 +msgid "IBus Preferences" +msgstr "" + +#: setup/ibus-setup.desktop:4 +msgid "Set IBus Preferences" +msgstr "" + +#: setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "" + +#: setup/keyboardshortcut.py:67 +msgid "Key code:" +msgstr "" + +#: setup/keyboardshortcut.py:82 +msgid "Modifiers:" +msgstr "" + +#. apply button +#: setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "" + +#. delete button +#: setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "" + +#: setup/keyboardshortcut.py:252 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "" + +#: setup/keyboardshortcut.py:255 +msgid "Please press a key (or a key combination)" +msgstr "" + +#: setup/main.py:122 setup/main.py:662 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "" + +#: setup/main.py:589 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "" + +#: setup/main.py:610 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "" + +#. Translators: %d == 5 currently +#: setup/main.py:624 +#, python-format +msgid "IBus daemon could not be started in %d seconds." +msgstr "" + +#: setup/main.py:636 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "" + +#. Translators: Title of the window +#: setup/main.py:638 +msgid "switching input methods" +msgstr "" + +#: setup/setup.ui:11 +msgid "Horizontal" +msgstr "" + +#: setup/setup.ui:14 +msgid "Vertical" +msgstr "" + +#: setup/setup.ui:25 +msgid "Top left corner" +msgstr "" + +#: setup/setup.ui:28 +msgid "Top right corner" +msgstr "" + +#: setup/setup.ui:31 +msgid "Bottom left corner" +msgstr "" + +#: setup/setup.ui:34 +msgid "Bottom right corner" +msgstr "" + +#: setup/setup.ui:37 +msgid "Custom" +msgstr "" + +#: setup/setup.ui:48 +msgid "Do not show" +msgstr "" + +#: setup/setup.ui:51 +msgid "Hide automatically" +msgstr "" + +#: setup/setup.ui:54 +msgid "Always" +msgstr "" + +#: setup/setup.ui:125 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "" + +#: setup/setup.ui:127 +msgid "Next input method:" +msgstr "" + +#: setup/setup.ui:139 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "" + +#: setup/setup.ui:141 +msgid "Previous input method:" +msgstr "" + +#: setup/setup.ui:169 setup/setup.ui:211 setup/setup.ui:278 setup/setup.ui:331 +#: setup/setup.ui:915 setup/setup.ui:969 +msgid "..." +msgstr "" + +#: setup/setup.ui:238 +msgid "Enable or disable:" +msgstr "" + +#: setup/setup.ui:250 +msgid "Enable:" +msgstr "" + +#: setup/setup.ui:303 +msgid "Disable:" +msgstr "" + +#: setup/setup.ui:357 setup/setup.ui:995 +msgid "Keyboard Shortcuts" +msgstr "" + +#: setup/setup.ui:386 +msgid "Set the orientation of candidates in lookup table" +msgstr "" + +#: setup/setup.ui:388 +msgid "Candidates orientation:" +msgstr "" + +#: setup/setup.ui:419 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "" + +#: setup/setup.ui:421 +msgid "Show property panel:" +msgstr "" + +#: setup/setup.ui:435 +msgid "Language panel position:" +msgstr "" + +#: setup/setup.ui:506 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "" + +#: setup/setup.ui:520 +msgid "Embed preedit text in application window" +msgstr "" + +#: setup/setup.ui:525 +msgid "Embed the preedit text of input method in the application window" +msgstr "" + +#: setup/setup.ui:539 +msgid "Use custom font:" +msgstr "" + +#: setup/setup.ui:574 setup/setup.ui:1168 +msgid "Font and Style" +msgstr "" + +#: setup/setup.ui:591 +msgid "General" +msgstr "" + +#: setup/setup.ui:683 +msgid "Add the selected input method into the enabled input methods" +msgstr "" + +#: setup/setup.ui:694 +msgid "_Remove" +msgstr "" + +#: setup/setup.ui:701 +msgid "Remove the selected input method from the enabled input methods" +msgstr "" + +#: setup/setup.ui:712 +msgid "_Up" +msgstr "" + +#: setup/setup.ui:719 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "" + +#: setup/setup.ui:730 +msgid "_Down" +msgstr "" + +#: setup/setup.ui:737 +msgid "Move down the selected input method in the enabled input methods" +msgstr "" + +#: setup/setup.ui:748 +msgid "_About" +msgstr "" + +#: setup/setup.ui:755 +msgid "Show information of the selected input method" +msgstr "" + +#: setup/setup.ui:766 +msgid "_Preferences" +msgstr "" + +#: setup/setup.ui:773 +msgid "Show setup of the selected input method" +msgstr "" + +#: setup/setup.ui:824 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" + +#: setup/setup.ui:885 +msgid "" +"The shortcut keys to enable conversions of emoji annotations or Unicode names" +msgstr "" + +#: setup/setup.ui:887 +msgid "Emoji annotation:" +msgstr "" + +#: setup/setup.ui:939 +msgid "The shortcut keys to enable Unicode code point conversions" +msgstr "" + +#: setup/setup.ui:941 +msgid "Unicode code point:" +msgstr "" + +#: setup/setup.ui:1025 +msgid "Set a font of Unicode candidates on the emoji dialog" +msgstr "" + +#: setup/setup.ui:1027 +msgid "Unicode font:" +msgstr "" + +#: setup/setup.ui:1050 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "" + +#: setup/setup.ui:1052 +msgid "Emoji annotation language:" +msgstr "" + +#: setup/setup.ui:1074 +msgid "" +"Match emoji annotations partially with the following condition and more than " +"the number of characters:" +msgstr "" + +#: setup/setup.ui:1079 +msgid "" +"If emoji annotations can be matched with a partial string instead of the " +"exact match" +msgstr "" + +#: setup/setup.ui:1113 +msgid "Prefix match" +msgstr "" + +#: setup/setup.ui:1127 +msgid "Suffix match" +msgstr "" + +#: setup/setup.ui:1142 +msgid "Containing match" +msgstr "" + +#: setup/setup.ui:1188 +msgid "Emoji" +msgstr "" + +#: setup/setup.ui:1242 +msgid "Keyboard Layout" +msgstr "" + +#: setup/setup.ui:1290 +msgid "Global input method settings" +msgstr "" + +#: setup/setup.ui:1322 +msgid "" +"Choose glyphs with the input method's language on the candidate window for " +"the duplicated code points" +msgstr "" + +#: setup/setup.ui:1341 +msgid "Use custom theme:" +msgstr "" + +#: setup/setup.ui:1342 +msgid "Choose a theme of the candidate window" +msgstr "" + +#: setup/setup.ui:1378 +msgid "Use custom icon:" +msgstr "" + +#: setup/setup.ui:1379 +msgid "Choose a theme of the arrow buttons on the candidate window" +msgstr "" + +#: setup/setup.ui:1424 +msgid "Font and Theme" +msgstr "" + +#: setup/setup.ui:1444 +msgid "Advanced" +msgstr "" + +#: src/ibusemojigen.h:30 +msgid "Activities" +msgstr "" + +#: src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "" + +#: src/ibusemojigen.h:32 +msgid "Component" +msgstr "" + +#: src/ibusemojigen.h:33 +msgid "Flags" +msgstr "" + +#: src/ibusemojigen.h:34 +msgid "Food & Drink" +msgstr "" + +#: src/ibusemojigen.h:35 +msgid "Objects" +msgstr "" + +#: src/ibusemojigen.h:36 +msgid "People & Body" +msgstr "" + +#: src/ibusemojigen.h:37 +msgid "Smileys & Emotion" +msgstr "" + +#: src/ibusemojigen.h:38 +msgid "Symbols" +msgstr "" + +#: src/ibusemojigen.h:39 +msgid "Travel & Places" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:33 +msgid "Basic Latin" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:37 +msgid "Latin-1 Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:41 +msgid "Latin Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:45 +msgid "Latin Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:49 +msgid "IPA Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:53 +msgid "Spacing Modifier Letters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:57 +msgid "Combining Diacritical Marks" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:61 +msgid "Greek and Coptic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:65 +msgid "Cyrillic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:69 +msgid "Cyrillic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:73 +msgid "Armenian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:77 +msgid "Hebrew" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:81 +msgid "Arabic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:85 +msgid "Syriac" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:89 +msgid "Arabic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:93 +msgid "Thaana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:97 +msgid "NKo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:101 +msgid "Samaritan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:105 +msgid "Mandaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:109 +msgid "Syriac Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:113 +msgid "Arabic Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:117 +msgid "Arabic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:121 +msgid "Devanagari" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:125 +msgid "Bengali" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:129 +msgid "Gurmukhi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:133 +msgid "Gujarati" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:137 +msgid "Oriya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:141 +msgid "Tamil" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:145 +msgid "Telugu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:149 +msgid "Kannada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:153 +msgid "Malayalam" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:157 +msgid "Sinhala" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:161 +msgid "Thai" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:165 +msgid "Lao" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:169 +msgid "Tibetan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:173 +msgid "Myanmar" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:177 +msgid "Georgian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:181 +msgid "Hangul Jamo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:185 +msgid "Ethiopic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:189 +msgid "Ethiopic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:193 +msgid "Cherokee" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:197 +msgid "Unified Canadian Aboriginal Syllabics" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:201 +msgid "Ogham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:205 +msgid "Runic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:209 +msgid "Tagalog" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:213 +msgid "Hanunoo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:217 +msgid "Buhid" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:221 +msgid "Tagbanwa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:225 +msgid "Khmer" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:229 +msgid "Mongolian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:233 +msgid "Unified Canadian Aboriginal Syllabics Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:237 +msgid "Limbu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:241 +msgid "Tai Le" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:245 +msgid "New Tai Lue" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:249 +msgid "Khmer Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:253 +msgid "Buginese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:257 +msgid "Tai Tham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:261 +msgid "Combining Diacritical Marks Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:265 +msgid "Balinese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:269 +msgid "Sundanese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:273 +msgid "Batak" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:277 +msgid "Lepcha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:281 +msgid "Ol Chiki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:285 +msgid "Cyrillic Extended-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:289 +msgid "Georgian Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:293 +msgid "Sundanese Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:297 +msgid "Vedic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:301 +msgid "Phonetic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:305 +msgid "Phonetic Extensions Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:309 +msgid "Combining Diacritical Marks Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:313 +msgid "Latin Extended Additional" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:317 +msgid "Greek Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:321 +msgid "General Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:325 +msgid "Superscripts and Subscripts" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:329 +msgid "Currency Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:333 +msgid "Combining Diacritical Marks for Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:337 +msgid "Letterlike Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:341 +msgid "Number Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:345 +msgid "Arrows" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:349 +msgid "Mathematical Operators" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:353 +msgid "Miscellaneous Technical" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:357 +msgid "Control Pictures" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:361 +msgid "Optical Character Recognition" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:365 +msgid "Enclosed Alphanumerics" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:369 +msgid "Box Drawing" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:373 +msgid "Block Elements" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:377 +msgid "Geometric Shapes" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:381 +msgid "Miscellaneous Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:385 +msgid "Dingbats" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:389 +msgid "Miscellaneous Mathematical Symbols-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:393 +msgid "Supplemental Arrows-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:397 +msgid "Braille Patterns" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:401 +msgid "Supplemental Arrows-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:405 +msgid "Miscellaneous Mathematical Symbols-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:409 +msgid "Supplemental Mathematical Operators" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:413 +msgid "Miscellaneous Symbols and Arrows" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:417 +msgid "Glagolitic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:421 +msgid "Latin Extended-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:425 +msgid "Coptic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:429 +msgid "Georgian Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:433 +msgid "Tifinagh" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:437 +msgid "Ethiopic Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:441 +msgid "Cyrillic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:445 +msgid "Supplemental Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:449 +msgid "CJK Radicals Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:453 +msgid "Kangxi Radicals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:457 +msgid "Ideographic Description Characters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:461 +msgid "CJK Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:465 +msgid "Hiragana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:469 +msgid "Katakana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:473 +msgid "Bopomofo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:477 +msgid "Hangul Compatibility Jamo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:481 +msgid "Kanbun" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:485 +msgid "Bopomofo Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:489 +msgid "CJK Strokes" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:493 +msgid "Katakana Phonetic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:497 +msgid "Enclosed CJK Letters and Months" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:501 +msgid "CJK Compatibility" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:505 +msgid "CJK Unified Ideographs Extension A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:509 +msgid "Yijing Hexagram Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:513 +msgid "CJK Unified Ideographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:517 +msgid "Yi Syllables" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:521 +msgid "Yi Radicals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:525 +msgid "Lisu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:529 +msgid "Vai" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:533 +msgid "Cyrillic Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:537 +msgid "Bamum" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:541 +msgid "Modifier Tone Letters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:545 +msgid "Latin Extended-D" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:549 +msgid "Syloti Nagri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:553 +msgid "Common Indic Number Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:557 +msgid "Phags-pa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:561 +msgid "Saurashtra" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:565 +msgid "Devanagari Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:569 +msgid "Kayah Li" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:573 +msgid "Rejang" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:577 +msgid "Hangul Jamo Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:581 +msgid "Javanese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:585 +msgid "Myanmar Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:589 +msgid "Cham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:593 +msgid "Myanmar Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:597 +msgid "Tai Viet" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:601 +msgid "Meetei Mayek Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:605 +msgid "Ethiopic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:609 +msgid "Latin Extended-E" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:613 +msgid "Cherokee Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:617 +msgid "Meetei Mayek" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:621 +msgid "Hangul Syllables" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:625 +msgid "Hangul Jamo Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:629 +msgid "High Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:633 +msgid "High Private Use Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:637 +msgid "Low Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:641 +msgid "Private Use Area" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:645 +msgid "CJK Compatibility Ideographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:649 +msgid "Alphabetic Presentation Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:653 +msgid "Arabic Presentation Forms-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:657 +msgid "Variation Selectors" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:661 +msgid "Vertical Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:665 +msgid "Combining Half Marks" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:669 +msgid "CJK Compatibility Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:673 +msgid "Small Form Variants" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:677 +msgid "Arabic Presentation Forms-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:681 +msgid "Halfwidth and Fullwidth Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:685 +msgid "Specials" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:689 +msgid "Linear B Syllabary" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:693 +msgid "Linear B Ideograms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:697 +msgid "Aegean Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:701 +msgid "Ancient Greek Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:705 +msgid "Ancient Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:709 +msgid "Phaistos Disc" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:713 +msgid "Lycian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:717 +msgid "Carian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:721 +msgid "Coptic Epact Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:725 +msgid "Old Italic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:729 +msgid "Gothic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:733 +msgid "Old Permic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:737 +msgid "Ugaritic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:741 +msgid "Old Persian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:745 +msgid "Deseret" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:749 +msgid "Shavian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:753 +msgid "Osmanya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:757 +msgid "Osage" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:761 +msgid "Elbasan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:765 +msgid "Caucasian Albanian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:769 +msgid "Vithkuqi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:773 +msgid "Linear A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:777 +msgid "Latin Extended-F" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:781 +msgid "Cypriot Syllabary" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:785 +msgid "Imperial Aramaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:789 +msgid "Palmyrene" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:793 +msgid "Nabataean" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:797 +msgid "Hatran" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:801 +msgid "Phoenician" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:805 +msgid "Lydian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:809 +msgid "Meroitic Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:813 +msgid "Meroitic Cursive" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:817 +msgid "Kharoshthi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:821 +msgid "Old South Arabian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:825 +msgid "Old North Arabian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:829 +msgid "Manichaean" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:833 +msgid "Avestan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:837 +msgid "Inscriptional Parthian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:841 +msgid "Inscriptional Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:845 +msgid "Psalter Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:849 +msgid "Old Turkic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:853 +msgid "Old Hungarian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:857 +msgid "Hanifi Rohingya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:861 +msgid "Rumi Numeral Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:865 +msgid "Yezidi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:869 +msgid "Old Sogdian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:873 +msgid "Sogdian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:877 +msgid "Old Uyghur" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:881 +msgid "Chorasmian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:885 +msgid "Elymaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:889 +msgid "Brahmi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:893 +msgid "Kaithi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:897 +msgid "Sora Sompeng" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:901 +msgid "Chakma" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:905 +msgid "Mahajani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:909 +msgid "Sharada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:913 +msgid "Sinhala Archaic Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:917 +msgid "Khojki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:921 +msgid "Multani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:925 +msgid "Khudawadi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:929 +msgid "Grantha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:933 +msgid "Newa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:937 +msgid "Tirhuta" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:941 +msgid "Siddham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:945 +msgid "Modi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:949 +msgid "Mongolian Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:953 +msgid "Takri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:957 +msgid "Ahom" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:961 +msgid "Dogra" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:965 +msgid "Warang Citi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:969 +msgid "Dives Akuru" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:973 +msgid "Nandinagari" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:977 +msgid "Zanabazar Square" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:981 +msgid "Soyombo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:985 +msgid "Unified Canadian Aboriginal Syllabics Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:989 +msgid "Pau Cin Hau" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:993 +msgid "Bhaiksuki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:997 +msgid "Marchen" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1001 +msgid "Masaram Gondi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1005 +msgid "Gunjala Gondi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1009 +msgid "Makasar" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1013 +msgid "Lisu Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1017 +msgid "Tamil Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1021 +msgid "Cuneiform" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1025 +msgid "Cuneiform Numbers and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1029 +msgid "Early Dynastic Cuneiform" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1033 +msgid "Cypro-Minoan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1037 +msgid "Egyptian Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1041 +msgid "Egyptian Hieroglyph Format Controls" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1045 +msgid "Anatolian Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1049 +msgid "Bamum Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1053 +msgid "Mro" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1057 +msgid "Tangsa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1061 +msgid "Bassa Vah" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1065 +msgid "Pahawh Hmong" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1069 +msgid "Medefaidrin" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1073 +msgid "Miao" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1077 +msgid "Ideographic Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1081 +msgid "Tangut" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1085 +msgid "Tangut Components" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1089 +msgid "Khitan Small Script" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1093 +msgid "Tangut Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1097 +msgid "Kana Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1101 +msgid "Kana Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1105 +msgid "Kana Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1109 +msgid "Small Kana Extension" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1113 +msgid "Nushu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1117 +msgid "Duployan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1121 +msgid "Shorthand Format Controls" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1125 +msgid "Znamenny Musical Notation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1129 +msgid "Byzantine Musical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1133 +msgid "Musical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1137 +msgid "Ancient Greek Musical Notation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1141 +msgid "Mayan Numerals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1145 +msgid "Tai Xuan Jing Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1149 +msgid "Counting Rod Numerals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1153 +msgid "Mathematical Alphanumeric Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1157 +msgid "Sutton SignWriting" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1161 +msgid "Latin Extended-G" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1165 +msgid "Glagolitic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1169 +msgid "Nyiakeng Puachue Hmong" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1173 +msgid "Toto" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1177 +msgid "Wancho" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1181 +msgid "Ethiopic Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1185 +msgid "Mende Kikakui" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1189 +msgid "Adlam" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1193 +msgid "Indic Siyaq Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1197 +msgid "Ottoman Siyaq Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1201 +msgid "Arabic Mathematical Alphabetic Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1205 +msgid "Mahjong Tiles" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1209 +msgid "Domino Tiles" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1213 +msgid "Playing Cards" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1217 +msgid "Enclosed Alphanumeric Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1221 +msgid "Enclosed Ideographic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1225 +msgid "Miscellaneous Symbols and Pictographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1229 +msgid "Emoticons" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1233 +msgid "Ornamental Dingbats" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1237 +msgid "Transport and Map Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1241 +msgid "Alchemical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1245 +msgid "Geometric Shapes Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1249 +msgid "Supplemental Arrows-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1253 +msgid "Supplemental Symbols and Pictographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1257 +msgid "Chess Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1261 +msgid "Symbols and Pictographs Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1265 +msgid "Symbols for Legacy Computing" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1269 +msgid "CJK Unified Ideographs Extension B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1273 +msgid "CJK Unified Ideographs Extension C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1277 +msgid "CJK Unified Ideographs Extension D" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1281 +msgid "CJK Unified Ideographs Extension E" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1285 +msgid "CJK Unified Ideographs Extension F" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1289 +msgid "CJK Compatibility Ideographs Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1293 +msgid "CJK Unified Ideographs Extension G" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1297 +msgid "Tags" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1301 +msgid "Variation Selectors Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1305 +msgid "Supplementary Private Use Area-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1309 +msgid "Supplementary Private Use Area-B" +msgstr "" + +#: tools/main.vala:51 +msgid "List engine name only" +msgstr "" + +#: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 +msgid "Can't connect to IBus.\n" +msgstr "" + +#: tools/main.vala:93 +#, c-format +msgid "language: %s\n" +msgstr "" + +#: tools/main.vala:161 +msgid "No engine is set.\n" +msgstr "" + +#: tools/main.vala:169 +msgid "Set global engine failed.\n" +msgstr "" + +#: tools/main.vala:174 +msgid "Get global engine failed.\n" +msgstr "" + +#: tools/main.vala:217 +msgid "Read the system registry cache." +msgstr "" + +#: tools/main.vala:219 +msgid "Read the registry cache FILE." +msgstr "" + +#: tools/main.vala:237 tools/main.vala:242 +msgid "The registry cache is invalid.\n" +msgstr "" + +#: tools/main.vala:257 +msgid "Write the system registry cache." +msgstr "" + +#: tools/main.vala:259 +msgid "Write the registry cache FILE." +msgstr "" + +#: tools/main.vala:295 +msgid "" +"Use engine schema paths instead of ibus core, which can be comma-separated " +"values." +msgstr "" + +#: tools/main.vala:381 +msgid "Resetting…" +msgstr "" + +#: tools/main.vala:399 +msgid "Done" +msgstr "" + +#: tools/main.vala:444 +msgid "Set or get engine" +msgstr "" + +#: tools/main.vala:445 +msgid "Exit ibus-daemon" +msgstr "" + +#: tools/main.vala:446 +msgid "Show available engines" +msgstr "" + +#: tools/main.vala:447 +msgid "(Not implemented)" +msgstr "" + +#: tools/main.vala:448 +msgid "Restart ibus-daemon" +msgstr "" + +#: tools/main.vala:449 +msgid "Show version" +msgstr "" + +#: tools/main.vala:450 +msgid "Show the content of registry cache" +msgstr "" + +#: tools/main.vala:451 +msgid "Create registry cache" +msgstr "" + +#: tools/main.vala:452 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "" + +#: tools/main.vala:453 +msgid "Show the configuration values" +msgstr "" + +#: tools/main.vala:454 +msgid "Reset the configuration values" +msgstr "" + +#: tools/main.vala:456 +msgid "Save emoji on dialog to clipboard" +msgstr "" + +#: tools/main.vala:458 +msgid "Show this information" +msgstr "" + +#: tools/main.vala:464 +#, c-format +msgid "" +"Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "" + +#: tools/main.vala:465 +msgid "Commands:\n" +msgstr "" + +#: tools/main.vala:494 +#, c-format +msgid "%s is unknown command!\n" +msgstr "" + +#: ui/gtk3/emojier.vala:235 +msgid "Favorites" +msgstr "" + +#: ui/gtk3/emojier.vala:236 +msgid "Others" +msgstr "" + +#: ui/gtk3/emojier.vala:237 +msgid "Open Unicode choice" +msgstr "" + +#: ui/gtk3/emojier.vala:1000 +msgid "Bring back emoji choice" +msgstr "" + +#: ui/gtk3/emojier.vala:1103 +msgid "Page Down" +msgstr "" + +#: ui/gtk3/emojier.vala:1114 +msgid "Page Up" +msgstr "" + +#: ui/gtk3/emojier.vala:1117 +msgid "Show emoji variants" +msgstr "" + +#: ui/gtk3/emojier.vala:1118 +msgid "Close" +msgstr "" + +#: ui/gtk3/emojier.vala:1124 +msgid "Menu" +msgstr "" + +#: ui/gtk3/emojier.vala:1135 +msgid "Click to view a warning message" +msgstr "" + +#: ui/gtk3/emojier.vala:1179 +msgid "Loading a Unicode dictionary:" +msgstr "" + +#: ui/gtk3/emojier.vala:1425 +#, c-format +msgid "Code point: %s" +msgstr "" + +#: ui/gtk3/emojier.vala:1431 +msgid "Has emoji variants" +msgstr "" + +#: ui/gtk3/emojier.vala:1599 ui/gtk3/emojier.vala:1612 +#, c-format +msgid "Description: %s" +msgstr "" + +#: ui/gtk3/emojier.vala:1599 +msgid "None" +msgstr "" + +#: ui/gtk3/emojier.vala:1623 +#, c-format +msgid "Annotations: %s" +msgstr "" + +#: ui/gtk3/emojier.vala:1649 +#, c-format +msgid "Name: %s" +msgstr "" + +#: ui/gtk3/emojier.vala:1657 +#, c-format +msgid "Alias: %s" +msgstr "" + +#: ui/gtk3/emojier.vala:2180 ui/gtk3/ibus-extension-gtk3.desktop.in:3 +#: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1273 +msgid "Emoji Choice" +msgstr "" + +#: ui/gtk3/emojier.vala:2182 +msgid "Unicode Choice" +msgstr "" + +#: ui/gtk3/emojier.vala:2485 +msgid "" +"Failed to get the current text application. Please re-focus your " +"application. E.g. Press Esc key several times to release the emoji typing " +"mode, click your desktop and click your text application again." +msgstr "" + +#: ui/gtk3/emojierapp.vala:47 +msgid "Canceled to choose an emoji." +msgstr "" + +#: ui/gtk3/emojierapp.vala:67 +msgid "Copied an emoji to your clipboard." +msgstr "" + +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ui/gtk3/emojierapp.vala:126 +msgid "\"FONT\" for emoji characters on emoji dialog" +msgstr "" + +#: ui/gtk3/emojierapp.vala:127 +msgid "FONT" +msgstr "" + +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ui/gtk3/emojierapp.vala:132 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" +msgstr "" + +#: ui/gtk3/emojierapp.vala:133 +msgid "LANG" +msgstr "" + +#: ui/gtk3/emojierapp.vala:135 +msgid "Emoji annotations can be match partially" +msgstr "" + +#: ui/gtk3/emojierapp.vala:139 +msgid "Match with the length of the specified integer" +msgstr "" + +#: ui/gtk3/emojierapp.vala:143 +msgid "Match with the condition of the specified integer" +msgstr "" + +#: ui/gtk3/panel.vala:337 ui/gtk3/panel.vala:368 +msgid "IBus Panel" +msgstr "" + +#: ui/gtk3/panel.vala:767 +msgid "" +"Keymap changes do not work in Plasma Wayland at present. Please use " +"systemsettings5 instead." +msgstr "" + +#: ui/gtk3/panel.vala:775 +msgid "IBus Notification" +msgstr "" + +#: ui/gtk3/panel.vala:1068 +#, c-format +msgid "" +"Your configured input method %s does not exist in IBus input methods so " +"\"US\" layout was configured instead of your input method." +msgstr "" + +#: ui/gtk3/panel.vala:1073 +msgid "" +"At least one of your configured input methods does not exist in IBus input " +"methods." +msgstr "" + +#: ui/gtk3/panel.vala:1076 +msgid "" +"Please run `ibus-setup` command, open \"Input Method\" tab, and configure " +"your input methods again." +msgstr "" + +#: ui/gtk3/panel.vala:1245 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "" + +#: ui/gtk3/panel.vala:1249 +msgid "translator-credits" +msgstr "" + +#: ui/gtk3/panel.vala:1268 +msgid "Preferences" +msgstr "" + +#: ui/gtk3/panel.vala:1294 +msgid "Restart" +msgstr "" + +#: ui/gtk3/panel.vala:1298 +msgid "Quit" +msgstr "" + +#: ui/gtk3/panel.vala:1324 +msgid "No input method" +msgstr "" + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 +msgid "default:LTR" +msgstr "" diff --git a/po/id.po b/po/id.po new file mode 100644 index 000000000..5fd914e75 --- /dev/null +++ b/po/id.po @@ -0,0 +1,735 @@ +# translation of ibus.pot to Indonesia +# Indonesia translation of ibus. +# Copyright (C) 2008-2015 Peng Huang +# This file is distributed under the same license as the ibus package. +# +# Translators: +# Rahman Yusri Aftian , 2019 +msgid "" +msgstr "" +"Project-Id-Version: IBus\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2014-02-18 13:46+0900\n" +"PO-Revision-Date: 2019-07-16 11:19+0700\n" +"Language-Team: Indonesian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 2.2.1\n" +"Last-Translator: Rahman Yusri Aftian \n" +"Language: id\n" + +#: ../setup/setup.ui.h:1 +msgid "Horizontal" +msgstr "Horisontal" + +#: ../setup/setup.ui.h:2 +msgid "Vertical" +msgstr "Vertikal" + +#: ../setup/setup.ui.h:3 +msgid "Top left corner" +msgstr "Pojok kiri atas" + +#: ../setup/setup.ui.h:4 +msgid "Top right corner" +msgstr "Ujung kanan atas" + +#: ../setup/setup.ui.h:5 +msgid "Bottom left corner" +msgstr "Pojok kiri bawah" + +#: ../setup/setup.ui.h:6 +msgid "Bottom right corner" +msgstr "Pojok kanan bawah" + +#: ../setup/setup.ui.h:7 +msgid "Custom" +msgstr "Custom" + +#: ../setup/setup.ui.h:8 +msgid "Do not show" +msgstr "Jangan ditampilkan" + +#: ../setup/setup.ui.h:9 +msgid "Hide automatically" +msgstr "Otomatis sembunyikan" + +#: ../setup/setup.ui.h:10 +msgid "Always" +msgstr "Selalu" + +#: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 +msgid "IBus Preferences" +msgstr "Preferensi IBus" + +#: ../setup/setup.ui.h:12 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "Tombol pintas untuk beralih ke metode input berikutnya dalam daftar" + +#: ../setup/setup.ui.h:13 +msgid "Next input method:" +msgstr "Metode input selanjutnya:" + +#: ../setup/setup.ui.h:14 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "Tombol pintas untuk beralih ke metode input sebelumnya dalam daftar" + +#: ../setup/setup.ui.h:15 +msgid "Previous input method:" +msgstr "Metode input sebelumnya:" + +#: ../setup/setup.ui.h:16 +msgid "..." +msgstr "..." + +#: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 +msgid "The shortcut keys for turning input method on or off" +msgstr "Tombol pintas untuk mengaktifkan atau menonaktifkan metode input" + +#: ../setup/setup.ui.h:18 +msgid "Enable or disable:" +msgstr "Aktifkan atau nonaktifkan:" + +#: ../setup/setup.ui.h:19 +msgid "Enable:" +msgstr "Aktifkan:" + +#: ../setup/setup.ui.h:20 +msgid "Disable:" +msgstr "Nonaktifkan:" + +#: ../setup/setup.ui.h:21 +msgid "Keyboard Shortcuts" +msgstr "Keyboard Shortcuts" + +#: ../setup/setup.ui.h:22 +msgid "Set the orientation of candidates in lookup table" +msgstr "Atur orientasi kandidat di tabel pencarian" + +#: ../setup/setup.ui.h:23 +msgid "Candidates orientation:" +msgstr "Orientasi kandidat:" + +#: ../setup/setup.ui.h:24 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "Atur perilaku ibus cara menampilkan atau menyembunyikan bilah bahasa" + +#: ../setup/setup.ui.h:25 +msgid "Show property panel:" +msgstr "Tampilkan panel properti:" + +#: ../setup/setup.ui.h:26 +msgid "Language panel position:" +msgstr "Posisi panel bahasa:" + +#: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 +msgid "Show icon on system tray" +msgstr "Tampilkan ikon pada baki sistem" + +#: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 +msgid "Show input method name on language bar" +msgstr "Tampilkan nama metode input pada bilah bahasa" + +#: ../setup/setup.ui.h:29 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "" +"Tampilkan nama metode input pada bilah bahasa saat mencentang kotak centang" + +#: ../setup/setup.ui.h:30 +msgid "Embed preedit text in application window" +msgstr "Sematkan teks yang sudah disiapkan di jendela aplikasi" + +#: ../setup/setup.ui.h:31 +msgid "Embed the preedit text of input method in the application window" +msgstr "Sematkan teks metode input yang sudah ada di jendela aplikasi" + +#: ../setup/setup.ui.h:32 +msgid "Use custom font:" +msgstr "Gunakan font khusus:" + +#: ../setup/setup.ui.h:33 +msgid "Font and Style" +msgstr "Font and Style" + +#: ../setup/setup.ui.h:34 +msgid "General" +msgstr "Umum" + +#. add button +#: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 +msgid "_Add" +msgstr "T_ambah" + +#: ../setup/setup.ui.h:36 +msgid "Add the selected input method into the enabled input methods" +msgstr "" +"Tambahkan metode input yang dipilih ke dalam metode input yang diaktifkan" + +#: ../setup/setup.ui.h:37 +msgid "_Remove" +msgstr "_Hapus" + +#: ../setup/setup.ui.h:38 +msgid "Remove the selected input method from the enabled input methods" +msgstr "Hapus metode input yang dipilih dari metode input yang diaktifkan" + +#: ../setup/setup.ui.h:39 +msgid "_Up" +msgstr "_Naik" + +#: ../setup/setup.ui.h:40 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "" +"Naikkan metode input yang dipilih dalam daftar metode input yang diaktifkan" + +#: ../setup/setup.ui.h:41 +msgid "_Down" +msgstr "_Turun" + +#: ../setup/setup.ui.h:42 +msgid "Move down the selected input method in the enabled input methods" +msgstr "" +"Naikkan metode input yang dipilih dalam daftar metode input yang diaktifkan" + +#: ../setup/setup.ui.h:43 +msgid "_About" +msgstr "Ihw_al" + +#: ../setup/setup.ui.h:44 +msgid "Show information of the selected input method" +msgstr "Tampilkan informasi tentang metode input yang dipilih" + +#: ../setup/setup.ui.h:45 +msgid "_Preferences" +msgstr "_Preferensi" + +#: ../setup/setup.ui.h:46 +msgid "Show setup of the selected input method" +msgstr "Tampilkan pengaturan metode input yang dipilih" + +#: ../setup/setup.ui.h:47 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" +" Metode input aktif dapat diubah dari yang dipilih dalam daftar " +"di atas dengan menekan tombol pintasan keyboard atau mengklik ikon panel. " + +#. create im name & icon column +#: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 +msgid "Input Method" +msgstr "Metode Input" + +#: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 +msgid "Use system keyboard layout" +msgstr "Gunakan tata letak keyboard sistem" + +#: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 +msgid "Use system keyboard (XKB) layout" +msgstr "Gunakan tata letak keyboard (XKB) sistem" + +#: ../setup/setup.ui.h:51 +msgid "Keyboard Layout" +msgstr "Keyboard Layout" + +#: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 +msgid "Share the same input method among all applications" +msgstr "Bagikan metode input yang sama di antara semua aplikasi" + +#: ../setup/setup.ui.h:53 +msgid "Global input method settings" +msgstr "Pengaturan metode input global" + +#: ../setup/setup.ui.h:54 +msgid "Advanced" +msgstr "Lanjutan" + +#: ../setup/setup.ui.h:55 +msgid "" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" +msgstr "" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" + +#: ../setup/setup.ui.h:62 +msgid "Start ibus on login" +msgstr "Mulai ibus saat masuk" + +#: ../setup/setup.ui.h:63 +msgid "Startup" +msgstr "Startup" + +#: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 +msgid "About" +msgstr "Ihwal" + +#: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 +msgid "_Close" +msgstr "_Keluar" + +#: ../data/ibus.schemas.in.h:1 +msgid "Preload engines" +msgstr "Sebelum memuat mesin" + +#: ../data/ibus.schemas.in.h:2 +msgid "Preload engines during ibus starts up" +msgstr "Sebelum memuat mesin selama ibus dimulai" + +#: ../data/ibus.schemas.in.h:3 +msgid "Engines order" +msgstr "Urutan mesin" + +#: ../data/ibus.schemas.in.h:4 +msgid "Saved engines order in input method list" +msgstr "Mesin yang disimpan memesan dalam daftar metode input" + +#: ../data/ibus.schemas.in.h:5 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "Popup delay milidetik untuk jendela pengalih IME" + +#: ../data/ibus.schemas.in.h:6 +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is " +"400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " +"not show the window and switch prev/next engines." +msgstr "" +"Tetapkan milidetik tunda munculan untuk menampilkan jendela pengalih IME. " +"Standarnya adalah 400. 0 = Tunjukkan jendela dengan segera. 0 < Tunda " +"milidetik. 0 > Jangan perlihatkan jendela dan alihkan mesin Sebelum/" +"Sesudah." + +#: ../data/ibus.schemas.in.h:7 +msgid "Saved version number" +msgstr "Nomor versi tersimpan" + +#: ../data/ibus.schemas.in.h:8 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" +"Nomor versi yang disimpan akan digunakan untuk memeriksa perbedaan antara " +"versi ibus yang diinstal sebelumnya dan salah satu ibus saat ini." + +#: ../data/ibus.schemas.in.h:9 +msgid "Trigger shortcut keys" +msgstr "Kunci pintas pemicu" + +#: ../data/ibus.schemas.in.h:11 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "Kunci pintas pemicu untuk gtk_accelerator_parse" + +#: ../data/ibus.schemas.in.h:12 +msgid "Enable shortcut keys" +msgstr "Aktifkan tombol pintas" + +#: ../data/ibus.schemas.in.h:13 +msgid "The shortcut keys for turning input method on" +msgstr "Tombol pintas untuk mengaktifkan metode input" + +#: ../data/ibus.schemas.in.h:14 +msgid "Disable shortcut keys" +msgstr "Nonaktifkan tombol pintasan" + +#: ../data/ibus.schemas.in.h:15 +msgid "The shortcut keys for turning input method off" +msgstr "Tombol pintas untuk mematikan metode input" + +#: ../data/ibus.schemas.in.h:16 +msgid "Next engine shortcut keys" +msgstr "Tombol pintas mesin berikutnya" + +#: ../data/ibus.schemas.in.h:17 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "Tombol pintas untuk beralih ke metode input berikutnya dalam daftar" + +#: ../data/ibus.schemas.in.h:18 +msgid "Prev engine shortcut keys" +msgstr "Prev engine shortcut keys" + +#: ../data/ibus.schemas.in.h:19 +msgid "The shortcut keys for switching to the previous input method" +msgstr "Tombol pintas untuk beralih ke metode input sebelumnya" + +#: ../data/ibus.schemas.in.h:20 +msgid "Auto hide" +msgstr "Sembunyi otomatis" + +#: ../data/ibus.schemas.in.h:21 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "" +"Perilaku panel properti. 0 = Jangan tampilkan, 1 = Sembunyikan otomatis, 2 " +"= Selalu tampilkan" + +#: ../data/ibus.schemas.in.h:22 +msgid "Language panel position" +msgstr "Posisi panel bahasa" + +#: ../data/ibus.schemas.in.h:23 +msgid "" +"The position of the language panel. 0 = Top left corner, 1 = Top right " +"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +msgstr "" +"Posisi panel bahasa. 0 = Pojok kiri atas, 1 = Pojok kanan atas, 2 = Pojok " +"kiri bawah, 3 = Pojok kanan bawah, 4 = Kustom" + +#: ../data/ibus.schemas.in.h:24 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "Ikuti kursor input jika panel selalu ditampilkan" + +#: ../data/ibus.schemas.in.h:25 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" +"Jika benar, panel mengikuti kursor input jika panel selalu ditampilkan. " +"Jika salah, panel ditampilkan di lokasi tetap." + +#: ../data/ibus.schemas.in.h:26 +msgid "The milliseconds to show property panel" +msgstr "Milidetik untuk menampilkan panel properti" + +#: ../data/ibus.schemas.in.h:27 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" +"Milidetik untuk menampilkan panel properti setelah fokus-masuk atau " +"properti diubah." + +#: ../data/ibus.schemas.in.h:28 +msgid "Orientation of lookup table" +msgstr "Orientation of lookup table" + +#: ../data/ibus.schemas.in.h:29 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "Orientasi tabel pencarian. 0 = Horisontal, 1 = Vertikal" + +#: ../data/ibus.schemas.in.h:31 +msgid "Show input method name" +msgstr "Tampilkan nama metode input" + +#: ../data/ibus.schemas.in.h:35 +msgid "Use custom font" +msgstr "Gunakan font khusus" + +#: ../data/ibus.schemas.in.h:36 +msgid "Use custom font name for language panel" +msgstr "Gunakan nama font khusus untuk panel bahasa" + +#: ../data/ibus.schemas.in.h:37 +msgid "Custom font" +msgstr "Fonta Khusus" + +#: ../data/ibus.schemas.in.h:38 +msgid "Custom font name for language panel" +msgstr "Nama font khusus untuk panel bahasa" + +#: ../data/ibus.schemas.in.h:39 +msgid "Embed Preedit Text" +msgstr "Sematkan Teks Preedit" + +#: ../data/ibus.schemas.in.h:40 +msgid "Embed Preedit Text in Application Window" +msgstr "Sematkan Teks Preedit di Jendela Aplikasi" + +#: ../data/ibus.schemas.in.h:41 +msgid "Use global input method" +msgstr "Gunakan metode input global" + +#: ../data/ibus.schemas.in.h:43 +msgid "Enable input method by default" +msgstr "Aktifkan metode input secara default" + +#: ../data/ibus.schemas.in.h:44 +msgid "Enable input method by default when the application gets input focus" +msgstr "" +"Aktifkan metode input secara default ketika aplikasi mendapat fokus input" + +#: ../data/ibus.schemas.in.h:45 +msgid "DConf preserve name prefixes" +msgstr "DConf menyimpan awalan nama" + +#: ../data/ibus.schemas.in.h:46 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "Awalan kunci DConf untuk menghentikan konversi nama" + +#: ../ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." + +#: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 +msgid "Other" +msgstr "Lain" + +#: ../setup/engineabout.py:68 +#, python-format +msgid "Language: %s\n" +msgstr "Bahasa: %s\n" + +#: ../setup/engineabout.py:71 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "Keyboard layout: %s\n" + +#: ../setup/engineabout.py:74 +#, python-format +msgid "Author: %s\n" +msgstr "Pembuat: %s\n" + +#: ../setup/engineabout.py:77 +msgid "Description:\n" +msgstr "Deskripsi:\n" + +#: ../setup/enginecombobox.py:139 +msgid "Select an input method" +msgstr "Pilih metode input" + +#: ../setup/enginetreeview.py:94 +msgid "Kbd" +msgstr "Kbd" + +#: ../setup/ibus-setup.desktop.in.h:2 +msgid "Set IBus Preferences" +msgstr "Setel Preferensi IBus" + +#: ../setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "Pintasan keyboard" + +#: ../setup/keyboardshortcut.py:66 +msgid "Key code:" +msgstr "Kata kunci:" + +#: ../setup/keyboardshortcut.py:81 +msgid "Modifiers:" +msgstr "Pengubah:" + +#. apply button +#: ../setup/keyboardshortcut.py:133 +msgid "_Apply" +msgstr "Mener_apkan" + +#. delete button +#: ../setup/keyboardshortcut.py:139 +msgid "_Delete" +msgstr "Men_ghapus" + +#: ../setup/keyboardshortcut.py:254 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "" +"Silakan tekan tombol (atau kombinasi tombol).\n" +"Dialog akan ditutup ketika kunci dilepaskan." + +#: ../setup/keyboardshortcut.py:256 +msgid "Please press a key (or a key combination)" +msgstr "Silakan tekan tombol (atau kombinasi tombol)" + +#: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 +msgid "_Cancel" +msgstr "Ba_tal" + +#: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 +msgid "_OK" +msgstr "_OK" + +#: ../setup/main.py:102 ../setup/main.py:395 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "" +"Gunakan pintasan dengan shift untuk beralih ke metode input sebelumnya" + +#: ../setup/main.py:329 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "Daemon IBus tidak berjalan. Apakah Anda ingin memulainya?" + +#: ../setup/main.py:350 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "" +"IBus telah dimulai! Jika Anda tidak dapat menggunakan IBus, tambahkan baris " +"berikut ke $ HOME / .bashrc Anda; kemudian masuk kembali ke desktop Anda.\n" +" ekspor GTK_IM_MODULE=ibus\n" +" export XMODIFIERS =@im= ibus\n" +" export QT_IM_MODULE=ibus" + +#. Translators: %d == 5 currently +#: ../setup/main.py:364 +#, python-format +msgid "IBus daemon could not be started in %d seconds." +msgstr "Daemon IBus tidak dapat dimulai dalam% d detik." + +#: ../setup/main.py:376 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "Pilih pintasan keyboard untuk %s" + +#: ../setup/main.py:377 +msgid "switching input methods" +msgstr "beralih metode input" + +#: ../tools/main.vala:42 +msgid "List engine name only" +msgstr "Daftar nama mesin saja" + +#: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 +#, c-format +msgid "Can't connect to IBus.\n" +msgstr "Tidak dapat terhubung ke IBus.\n" + +#: ../tools/main.vala:84 +#, c-format +msgid "language: %s\n" +msgstr "bahasa: %s\n" + +#: ../tools/main.vala:152 +#, c-format +msgid "No engine is set.\n" +msgstr "Tidak ada mesin yang diatur.\n" + +#: ../tools/main.vala:160 +#, c-format +msgid "Set global engine failed.\n" +msgstr "Setel mesin global gagal.\n" + +#: ../tools/main.vala:165 +#, c-format +msgid "Get global engine failed.\n" +msgstr "Dapatkan mesin global gagal.\n" + +#: ../tools/main.vala:204 +msgid "Read the system registry cache." +msgstr "Baca cache registri sistem." + +#: ../tools/main.vala:206 +msgid "Read the registry cache FILE." +msgstr "Baca FILE cache registri." + +#: ../tools/main.vala:224 ../tools/main.vala:229 +#, c-format +msgid "The registry cache is invalid.\n" +msgstr "Cache registri tidak valid.\n" + +#: ../tools/main.vala:244 +msgid "Write the system registry cache." +msgstr "Tulis cache registri sistem." + +#: ../tools/main.vala:246 +msgid "Write the registry cache FILE." +msgstr "Tulis FILE cache registri." + +#: ../tools/main.vala:293 +msgid "Set or get engine" +msgstr "Atur atau dapatkan mesin" + +#: ../tools/main.vala:294 +msgid "Exit ibus-daemon" +msgstr "Keluar dari ibus-daemon" + +#: ../tools/main.vala:295 +msgid "Show available engines" +msgstr "Tampilkan mesin yang tersedia" + +#: ../tools/main.vala:296 +msgid "(Not implemented)" +msgstr "(Tidak diterapkan)" + +#: ../tools/main.vala:297 +msgid "Restart ibus-daemon" +msgstr "Muat ulang ibus-daemon" + +#: ../tools/main.vala:298 +msgid "Show version" +msgstr "Tampilkan versi" + +#: ../tools/main.vala:299 +msgid "Show the content of registry cache" +msgstr "Tampilkan konten cache registri" + +#: ../tools/main.vala:300 +msgid "Create registry cache" +msgstr "Buat cache registri" + +#: ../tools/main.vala:301 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "Cetak alamat D-Bus ibus-daemon" + +#: ../tools/main.vala:302 +msgid "Show this information" +msgstr "Perlihatkan informasi ini" + +#: ../tools/main.vala:308 +#, c-format +msgid "" +"Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "" +"Menggunakan: %s COMMAND [OPTION...]\n" +"\n" + +#: ../tools/main.vala:309 +#, c-format +msgid "Commands:\n" +msgstr "Perintah:\n" + +#: ../tools/main.vala:338 +#, c-format +msgid "%s is unknown command!\n" +msgstr "%s perintah tidak dikenal!\n" + +#: ../ui/gtk3/panel.vala:425 +msgid "IBus Update" +msgstr "IBus Update" + +#: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 +msgid "Super+space is now the default hotkey." +msgstr "Super + space sekarang merupakan hotkey default." + +#: ../ui/gtk3/panel.vala:707 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus adalah bus input cerdas untuk Linux / Unix." + +#: ../ui/gtk3/panel.vala:711 +msgid "translator-credits" +msgstr "kredit-penerjemah" + +#: ../ui/gtk3/panel.vala:732 +msgid "Preferences" +msgstr "Prefensi" + +#: ../ui/gtk3/panel.vala:742 +msgid "Restart" +msgstr "Muat ulang" + +#: ../ui/gtk3/panel.vala:746 +msgid "Quit" +msgstr "Keluar" + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ../ui/gtk3/propertypanel.vala:374 +msgid "default:LTR" +msgstr "default:LTR" diff --git a/po/it.po b/po/it.po index 919a96a7a..f41aeed21 100644 --- a/po/it.po +++ b/po/it.po @@ -1,40 +1,404 @@ -# translation of ibus.master.po to -# translation of it.po to -# Italian translation for ibus -# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 -# Copyright (c) 2009 the ibus copyright holder +# Italian translation of ibus. +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2022 Takao Fujiwara # This file is distributed under the same license as the ibus package. -# Sergio Zanchetta 2009 +# +# Translators: +# fvalen , 2012-2013 +# fvalen , 2013 +# fvalen , 2012 # Gruppo traduzione Italiano di Ubuntu , 2009 -# Milo Casagrande , 2009. +# milo , 2009 +# milo , 2009 +# primes2h , 2009 +# primes2h , 2009 +# fujiwara , 2015. #zanata +# Alessio Ciregia , 2017. #zanata +# Andrea Masala , 2017. #zanata +# Luca Ciavatta , 2017. #zanata +# Luigi Toscano , 2017. #zanata, 2020. +# fujiwara , 2017. #zanata +# fujiwara , 2018. #zanata +# Nathan , 2022. msgid "" msgstr "" -"Project-Id-Version: ibus.master\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-12 00:41+0900\n" -"PO-Revision-Date: 2010-07-30 08:36+1000\n" -"Last-Translator: \n" -"Language-Team: \n" -"Language: \n" +"Project-Id-Version: IBus\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2020-01-08 12:40+0900\n" +"PO-Revision-Date: 2022-04-25 08:17+0000\n" +"Last-Translator: Nathan \n" +"Language-Team: Italian \n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2009-12-01 17:40+0000\n" -"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.12\n" -#: ../bus/ibus.desktop.in.h:1 -msgid "IBus" -msgstr "IBus" +#. Translators: Here “Preload” is a verb +#: data/dconf/org.freedesktop.ibus.gschema.xml:11 +msgid "Preload engines" +msgstr "Pre-carica i motori" + +#. Translators: Tooltip for the button “Preload Engines” +#: data/dconf/org.freedesktop.ibus.gschema.xml:13 +msgid "Preload engines during ibus starts up" +msgstr "Precarica i motori durante l'avvio di ibus" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:17 +msgid "Engines order" +msgstr "Ordine motori" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:18 +msgid "Saved engines order in input method list" +msgstr "Ordine motori salvati nell'elenco del metodo di input" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:22 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "Ritardo popup in millisecondi per la finestra del selettore IME" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:23 +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is " +"400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " +"show the window and switch prev/next engines." +msgstr "" +"Imposta ritardo del popup in millisecondi per mostrare la finestra del " +"selettore IME. Il valore predefinito è 400. 0 = Mostra la finestra " +"immediatamente. 0 < Ritardo in millisecondi. 0 > Non mostrare la " +"finestra e passa ai motori prec/succ." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:27 +msgid "Saved version number" +msgstr "Numero di versione salvata" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:28 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" +"Il numero di versione salvato sarà usato per controllare la differenza tra " +"la versione dell'ibus precedentemente installato e quella dell'ibus attuale." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:32 +msgid "Latin layouts which have no ASCII" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:33 +msgid "US layout is appended to the Latin layouts. variant can be omitted." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:37 +msgid "Use xmodmap" +msgstr "Utilizza xmodmap" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:38 +msgid "" +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 +msgid "Use system keyboard layout" +msgstr "Usa la disposizione di tastiera del sistema" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 +msgid "Use system keyboard (XKB) layout" +msgstr "Usa la disposizione di tastiera del sistema (XKB)" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:47 +msgid "Embed Preedit Text" +msgstr "Inserire il testo pre-modificato" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:48 +msgid "Embed Preedit Text in Application Window" +msgstr "Inserire il testo pre-modificato nella finestra dell'applicazione" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:52 +msgid "Use global input method" +msgstr "Usa il metodo di input globale" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 +msgid "Share the same input method among all applications" +msgstr "Condivide lo stesso metodo di input tra le applicazioni" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:57 +msgid "Enable input method by default" +msgstr "Abilita per impostazione predefinita il metodo di input" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:58 +msgid "Enable input method by default when the application gets input focus" +msgstr "" +"Abilita per impostazione predefinita il metodo di input quando le " +"applicazioni ottengono l'input focus" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:62 +msgid "DConf preserve name prefixes" +msgstr "Mantieni i prefissi dei nomi DConf" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:63 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "Prefissi di chiavi DConf per arrestare la conversione dei nomi" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:70 +msgid "Trigger shortcut keys" +msgstr "Tasto di scelta rapida di avvio" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:71 +#: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 +msgid "The shortcut keys for turning input method on or off" +msgstr "I tasti scorciatoia per abilitare o disabilitare i metodi di input" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:75 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "Attiva i tasti scorciatoia per gtk_accelerator_parse" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:80 +msgid "Enable shortcut keys" +msgstr "Abilita i tasti scorciatoia" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:81 +msgid "The shortcut keys for turning input method on" +msgstr "I tasti scorciatoia per abilitare l'input method" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:85 +msgid "Disable shortcut keys" +msgstr "Disabilita i tasti scorciatoia" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:86 +msgid "The shortcut keys for turning input method off" +msgstr "I tasti scorciatoia per disabilitare l'input method" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:90 +#: data/dconf/org.freedesktop.ibus.gschema.xml:95 +msgid "Next engine shortcut keys" +msgstr "Motore dei tasti di scelta rapida successivo" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:91 +#: data/dconf/org.freedesktop.ibus.gschema.xml:96 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "" +"I tasti scorciatoia per passare al metodo di input successivo nell'elenco" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:100 +#: data/dconf/org.freedesktop.ibus.gschema.xml:105 +msgid "Prev engine shortcut keys" +msgstr "Motore dei tasti di scelta rapida precedente" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:101 +#: data/dconf/org.freedesktop.ibus.gschema.xml:106 +msgid "The shortcut keys for switching to the previous input method" +msgstr "I tasti scorciatoia per passare al metodo di input precedente" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:112 +msgid "Auto hide" +msgstr "Nasconde automaticamente" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:113 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "" +"Comportamento del pannello proprietario. 0 = Non mostrare, 1 = Nascondi " +"automaticamente, 2 = Mostra sempre" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:117 +#: data/dconf/org.freedesktop.ibus.gschema.xml:121 +msgid "Language panel position" +msgstr "Posizione pannello della lingua" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:125 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "" +"Segui il cursore di input nel caso in cui il pannello sia sempre visibile" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:126 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:130 +msgid "The milliseconds to show property panel" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:131 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:135 +msgid "Orientation of lookup table" +msgstr "Orientamento della tabella di ricerca" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:136 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "Orientamento della tabella di ricerca. 0 = Orizzontale, 1 = Verticale" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:140 +#: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 +#: setup/setup.ui:475 +msgid "Show icon on system tray" +msgstr "Mostrare l'icona nell'area di notifica" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:145 +msgid "Show input method name" +msgstr "Mostra il nome del metodo di input" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 +msgid "Show input method name on language bar" +msgstr "Mostrare il nome del metodo di input nella barra della lingua" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:150 +msgid "RGBA value of XKB icon" +msgstr "Valore RGBA dell'icona XKB" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:151 +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form 'rgba(r," +"g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 to 255 or " +"percentage values in the range 0% to 100%, and 'a' is a floating point value " +"in the range 0 to 1 of the alpha." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:155 +msgid "The milliseconds to show the panel icon for a property" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:156 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:160 +msgid "Use custom font" +msgstr "Usare carattere personalizzato" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:161 +msgid "Use custom font name for language panel" +msgstr "Usa un tipo di carattere personalizzato per il pannello della lingua" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:165 +#: data/dconf/org.freedesktop.ibus.gschema.xml:183 +msgid "Custom font" +msgstr "Carattere personalizzato" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:166 +msgid "Custom font name for language panel" +msgstr "Nome del tipo di carattere personalizzato per il pannello della lingua" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:173 +msgid "Unicode shortcut keys for gtk_accelerator_parse" +msgstr "Tasti scorciatoia Unicode per gtk_accelerator_parse" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:174 +msgid "The shortcut keys for turning Unicode typing on or off" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:178 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "Tasti scelta rapida Emoji per gtk_accelerator_parse" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:179 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:184 +msgid "Custom font name for emoji characters on emoji dialog" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:188 +msgid "Default language for emoji dictionary" +msgstr "Lingua predefinita per il dizionario degli emoji" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:189 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict ." +msgstr "" +"Scegliere una lingua predefinita di dizionari emoji nella finestra di " +"dialogo. Il valore di $lang viene applicato a /usr/share/ibus/dicts/emoji-" +"$lang.dict ." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:193 +msgid "favorite emoji list on emoji dialog" +msgstr "Lista di emoji preferite sulla finestra degli emoji" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:194 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:198 +msgid "favorite emoji annotation list on emoji dialog" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:199 +msgid "You can assign an annotation for a favorite emoji in this list." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:203 +msgid "Whether emoji annotations can be match partially or not" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:204 +msgid "" +"Whether emoji annotations can be matched with a partial string instead of " +"the exact match or not." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:208 +msgid "Match emoji annotations with the specified length" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:209 +msgid "" +"Match emoji annotations partially with more than the specified number of " +"characters instead of the exact match." +msgstr "" -#: ../bus/ibus.desktop.in.h:2 -msgid "Input Method Framework" -msgstr "Framework del metodo di input" +#: data/dconf/org.freedesktop.ibus.gschema.xml:213 +msgid "Choose a condition to match emoji annotations partially" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:214 +msgid "" +"Choose one of the following conditions to match emoji annotations partially: " +"0 == Prefix match, 1 == Suffix match, 2 == Containing match" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:218 +msgid "Load the emoji data at the time of startup" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:219 +msgid "" +"Load the emoji data at the time of startup if true. About 10MB memory is " +"needed to load the data. Load the emoji data when open the emoji dialog at " +"the beginning if false." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:223 +msgid "Load the Unicode data at the time of startup" +msgstr "" -#: ../bus/ibus.desktop.in.h:3 -msgid "Start IBus Input Method Framework" -msgstr "Avvia il framework del metodo di input di IBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:224 +msgid "" +"Load the Unicode data at the time of startup if true. About 15MB memory is " +"needed to load the data. Load the Unicode data when open the emoji dialog at " +"the beginning if false. The Unicode data is always loaded after the emoji " +"data is loaded even if true." +msgstr "" -#: ../ibus/_config.py.in:39 +#: ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." @@ -42,500 +406,2872 @@ msgstr "" "Copyright © 2007-2010 Peng Huang\n" "Copyright © 2007-2010 Red Hat, Inc." -#: ../ibus/lang.py:41 +#: ibus/lang.py:41 src/ibusutil.c:209 msgid "Other" msgstr "Altro" -#: ../ui/gtk/candidatepanel.py:264 -msgid "Previous page" -msgstr "Pagina precedente" +#: setup/emojilang.py:67 +msgid "Select a language" +msgstr "Selezionare una lingua" + +#: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 +#: setup/main.py:560 +msgid "_Cancel" +msgstr "A_nnulla" + +#: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 +msgid "_OK" +msgstr "_OK" + +#: setup/emojilang.py:235 setup/enginedialog.py:205 +msgid "More…" +msgstr "Altro..." + +#: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 +msgid "About" +msgstr "Informazioni" + +#: setup/engineabout.py:40 setup/setup.ui:1401 +msgid "_Close" +msgstr "_Chiudi" + +#: setup/engineabout.py:72 +#, python-format +msgid "Language: %s\n" +msgstr "Lingua: %s\n" + +#: setup/engineabout.py:75 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "Disposizione tastiera: %s\n" + +#: setup/engineabout.py:78 +#, python-format +msgid "Author: %s\n" +msgstr "Autore: %s\n" + +#: setup/engineabout.py:81 +msgid "Description:\n" +msgstr "Descrizione:\n" + +#: setup/enginecombobox.py:139 setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "Seleziona un metodo di input" + +#. add button +#: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 +msgid "_Add" +msgstr "A_ggiungi" + +#. create im name & icon column +#: setup/enginetreeview.py:69 setup/setup.ui:838 +msgid "Input Method" +msgstr "Metodo di input" + +#: setup/enginetreeview.py:96 +msgid "Kbd" +msgstr "Kbd" + +#: setup/ibus-setup.desktop:3 setup/setup.ui:69 +msgid "IBus Preferences" +msgstr "Preferenze di IBus" + +#: setup/ibus-setup.desktop:4 +msgid "Set IBus Preferences" +msgstr "Imposta Preferenze di IBus" + +#: setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "Scorciatoie da tastiera" + +#: setup/keyboardshortcut.py:67 +msgid "Key code:" +msgstr "Codice del tasto:" + +#: setup/keyboardshortcut.py:82 +msgid "Modifiers:" +msgstr "Modificatori:" + +#. apply button +#: setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "A_pplica" + +#. delete button +#: setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "Eli_mina" + +#: setup/keyboardshortcut.py:252 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "" +"Premere un tasto (o una combinazione di tasti).\n" +"La finestra verrà chiusa dopo il rilascio del tasto stesso." + +#: setup/keyboardshortcut.py:255 +msgid "Please press a key (or a key combination)" +msgstr "Premere un tasto (o una combinazione di tasti)" + +#: setup/main.py:121 setup/main.py:588 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "" +"Usa i tasti scorciatoia e shift per passare al metodo di input successivo" -#: ../ui/gtk/candidatepanel.py:269 -msgid "Next page" -msgstr "Pagina successiva" +#: setup/main.py:515 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "Il demone IBus non è in esecuzione. Desideri avviarlo?" -#: ../ui/gtk/main.py:55 +#: setup/main.py:536 msgid "" -"Some input methods have been installed, removed or updated. Please restart " -"ibus input platform." +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "" +"IBus è stato avviato! Se non puoi utilizzare IBus aggiungi le seguenti righe " +"in $HOME/.bashrc; successivamente eseguire una nuova registrazione sul " +"desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus\"" + +#. Translators: %d == 5 currently +#: setup/main.py:550 +#, python-format +msgid "IBus daemon could not be started in %d seconds." +msgstr "Impossibile avviare il demone IBus in %d secondi." + +#: setup/main.py:562 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "Selezione delle scorciatoie da tastiera per %s" + +#. Translators: Title of the window +#: setup/main.py:564 +msgid "switching input methods" +msgstr "selezione metodi di input in corso" + +#: setup/setup.ui:11 +msgid "Horizontal" +msgstr "Orizzontale" + +#: setup/setup.ui:14 +msgid "Vertical" +msgstr "Verticale" + +#: setup/setup.ui:25 +msgid "Top left corner" +msgstr "Angolo superiore sinistro" + +#: setup/setup.ui:28 +msgid "Top right corner" +msgstr "Angolo superiore destro" + +#: setup/setup.ui:31 +msgid "Bottom left corner" +msgstr "Angolo inferiore sinistro" + +#: setup/setup.ui:34 +msgid "Bottom right corner" +msgstr "Angolo inferiore destro" + +#: setup/setup.ui:37 +msgid "Custom" +msgstr "Personalizzato" + +#: setup/setup.ui:48 +msgid "Do not show" +msgstr "Non mostrare" + +#: setup/setup.ui:51 +msgid "Hide automatically" +msgstr "Nascondi automaticamente" + +#: setup/setup.ui:54 +msgid "Always" +msgstr "Sempre" + +#: setup/setup.ui:113 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "" +"I tasti scorciatoia per passare al metodo di input successivo nell'elenco" + +#: setup/setup.ui:115 +msgid "Next input method:" +msgstr "Metodo di input successivo:" + +#: setup/setup.ui:127 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "" +"I tasti scorciatoia per passare al metodo di input precedente nell'elenco" + +#: setup/setup.ui:129 +msgid "Previous input method:" +msgstr "Metodo di input precedente:" + +#: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 +#: setup/setup.ui:903 setup/setup.ui:957 +msgid "..." +msgstr "..." + +#: setup/setup.ui:226 +msgid "Enable or disable:" +msgstr "Abilitare o disabilitare:" + +#: setup/setup.ui:238 +msgid "Enable:" +msgstr "Abilita:" + +#: setup/setup.ui:291 +msgid "Disable:" +msgstr "Disabilita:" + +#: setup/setup.ui:345 setup/setup.ui:983 +msgid "Keyboard Shortcuts" +msgstr "Scorciatoie da tastiera" + +#: setup/setup.ui:374 +msgid "Set the orientation of candidates in lookup table" +msgstr "Imposta l'orientamento dei candidati nella tabella di ricerca" + +#: setup/setup.ui:376 +msgid "Candidates orientation:" +msgstr "Orientamento dei candidati:" + +#: setup/setup.ui:407 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "" +"Imposta il comportamento di IBus su come mostrare o nascondere la barra " +"della lingua" + +#: setup/setup.ui:409 +msgid "Show property panel:" +msgstr "Mostra il pannello delle proprietà:" + +#: setup/setup.ui:423 +msgid "Language panel position:" +msgstr "Posizione pannello della lingua:" + +#: setup/setup.ui:494 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "" +"Quando la casella è spuntata mostra il nome del metodo di input nella barra " +"della lingua" + +#: setup/setup.ui:508 +msgid "Embed preedit text in application window" +msgstr "Inserire il testo pre-modificato nella finestra dell'applicazione" + +#: setup/setup.ui:513 +msgid "Embed the preedit text of input method in the application window" +msgstr "" +"Inserisce il testo premodificato del metodo di input nella finestra " +"dell'applicazione" + +#: setup/setup.ui:527 +msgid "Use custom font:" +msgstr "Usare carattere personalizzato:" + +#: setup/setup.ui:562 setup/setup.ui:1156 +msgid "Font and Style" +msgstr "Tipo di carattere e stile" + +#: setup/setup.ui:579 +msgid "General" +msgstr "Generali" + +#: setup/setup.ui:671 +msgid "Add the selected input method into the enabled input methods" +msgstr "Aggiunge il metodo selezionato ai metodi di input abilitati" + +#: setup/setup.ui:682 +msgid "_Remove" +msgstr "_Rimuovi" + +#: setup/setup.ui:689 +msgid "Remove the selected input method from the enabled input methods" +msgstr "Rimuove il metodo selezionato dai metodi di input abilitati" + +#: setup/setup.ui:700 +msgid "_Up" +msgstr "_Su" + +#: setup/setup.ui:707 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "Sposta in alto il metodo selezionato nei metodi di input abilitati" + +#: setup/setup.ui:718 +msgid "_Down" +msgstr "_Giù" + +#: setup/setup.ui:725 +msgid "Move down the selected input method in the enabled input methods" +msgstr "Sposta in basso il metodo selezionato nei metodi di input abilitati" + +#: setup/setup.ui:736 +msgid "_About" +msgstr "I_nformazioni" + +#: setup/setup.ui:743 +msgid "Show information of the selected input method" +msgstr "Mostra le informazioni sul metodo di input selezionato" + +#: setup/setup.ui:754 +msgid "_Preferences" +msgstr "Preferen_ze" + +#: setup/setup.ui:761 +msgid "Show setup of the selected input method" +msgstr "Mostra l'impostazione dell'input method selezionato" + +#: setup/setup.ui:812 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" +"Il metodo di input attivo può essere commutato tra quelli " +"selezionati nella lista sopra premendo i tasti di scelta rapida della " +"tastiera o facendo clic sull'icona del pannello." + +#: setup/setup.ui:873 +msgid "" +"The shortcut keys to enable conversions of emoji annotations or Unicode names" +msgstr "" + +#: setup/setup.ui:875 +msgid "Emoji annotation:" +msgstr "Annotazione emoji:" + +#: setup/setup.ui:927 +#, fuzzy +#| msgid "The shortcut keys for turning input method on or off" +msgid "The shortcut keys to enable Unicode code point conversions" +msgstr "I tasti scorciatoia per abilitare o disabilitare i metodi di input" + +#: setup/setup.ui:929 +#, fuzzy +#| msgid "Code point: %s" +msgid "Unicode code point:" +msgstr "Punto di codice: %s" + +#: setup/setup.ui:1013 +msgid "Set a font of Unicode candidates on the emoji dialog" +msgstr "" + +#: setup/setup.ui:1015 +msgid "Unicode font:" +msgstr "Carattere Unicode:" + +#: setup/setup.ui:1038 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "" + +#: setup/setup.ui:1040 +msgid "Emoji annotation language:" +msgstr "" + +#: setup/setup.ui:1062 +msgid "" +"Match emoji annotations partially with the following condition and more than " +"the number of characters:" +msgstr "" + +#: setup/setup.ui:1067 +msgid "" +"If emoji annotations can be matched with a partial string instead of the " +"exact match" +msgstr "" + +#: setup/setup.ui:1101 +msgid "Prefix match" +msgstr "" + +#: setup/setup.ui:1115 +msgid "Suffix match" +msgstr "" + +#: setup/setup.ui:1130 +msgid "Containing match" +msgstr "" + +#: setup/setup.ui:1176 +msgid "Emoji" +msgstr "" + +#: setup/setup.ui:1230 +msgid "Keyboard Layout" +msgstr "Disposizione tastiera" + +#: setup/setup.ui:1278 +msgid "Global input method settings" +msgstr "Seleziona un metodo di input" + +#: setup/setup.ui:1298 +msgid "Advanced" +msgstr "Avanzate" + +#: setup/setup.ui:1317 +msgid "" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" +msgstr "" +"IBus\n" +"Il bus di input intelligente\n" +"Sito web: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" + +#: setup/setup.ui:1341 +msgid "Start ibus on login" +msgstr "Avvia IBus all'accesso" + +#: setup/setup.ui:1358 +msgid "Startup" +msgstr "Avvio" + +#: src/ibusemojigen.h:30 +msgid "Activities" +msgstr "" + +#: src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "" + +#: src/ibusemojigen.h:32 +msgid "Component" +msgstr "" + +#: src/ibusemojigen.h:33 +msgid "Flags" +msgstr "" + +#: src/ibusemojigen.h:34 +msgid "Food & Drink" +msgstr "" + +#: src/ibusemojigen.h:35 +msgid "Objects" +msgstr "" + +#: src/ibusemojigen.h:36 +msgid "People & Body" +msgstr "" + +#: src/ibusemojigen.h:37 +msgid "Smileys & Emotion" +msgstr "" + +#: src/ibusemojigen.h:38 +msgid "Symbols" +msgstr "" + +#: src/ibusemojigen.h:39 +msgid "Travel & Places" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:33 +msgid "Basic Latin" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:37 +msgid "Latin-1 Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:41 +msgid "Latin Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:45 +msgid "Latin Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:49 +msgid "IPA Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:53 +msgid "Spacing Modifier Letters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:57 +msgid "Combining Diacritical Marks" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:61 +msgid "Greek and Coptic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:65 +msgid "Cyrillic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:69 +msgid "Cyrillic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:73 +msgid "Armenian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:77 +msgid "Hebrew" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:81 +msgid "Arabic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:85 +msgid "Syriac" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:89 +msgid "Arabic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:93 +msgid "Thaana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:97 +msgid "NKo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:101 +msgid "Samaritan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:105 +msgid "Mandaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:109 +msgid "Syriac Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:113 +msgid "Arabic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:117 +msgid "Devanagari" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:121 +msgid "Bengali" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:125 +msgid "Gurmukhi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:129 +msgid "Gujarati" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:133 +msgid "Oriya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:137 +msgid "Tamil" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:141 +msgid "Telugu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:145 +msgid "Kannada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:149 +msgid "Malayalam" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:153 +msgid "Sinhala" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:157 +msgid "Thai" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:161 +msgid "Lao" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:165 +msgid "Tibetan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:169 +msgid "Myanmar" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:173 +msgid "Georgian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:177 +msgid "Hangul Jamo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:181 +msgid "Ethiopic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:185 +msgid "Ethiopic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:189 +msgid "Cherokee" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:193 +msgid "Unified Canadian Aboriginal Syllabics" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:197 +msgid "Ogham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:201 +msgid "Runic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:205 +msgid "Tagalog" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:209 +msgid "Hanunoo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:213 +msgid "Buhid" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:217 +msgid "Tagbanwa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:221 +msgid "Khmer" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:225 +msgid "Mongolian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:229 +msgid "Unified Canadian Aboriginal Syllabics Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:233 +msgid "Limbu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:237 +msgid "Tai Le" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:241 +msgid "New Tai Lue" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:245 +msgid "Khmer Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:249 +msgid "Buginese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:253 +msgid "Tai Tham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:257 +msgid "Combining Diacritical Marks Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:261 +msgid "Balinese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:265 +msgid "Sundanese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:269 +msgid "Batak" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:273 +msgid "Lepcha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:277 +msgid "Ol Chiki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:281 +msgid "Cyrillic Extended-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:285 +msgid "Georgian Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:289 +msgid "Sundanese Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:293 +msgid "Vedic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:297 +msgid "Phonetic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:301 +msgid "Phonetic Extensions Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:305 +msgid "Combining Diacritical Marks Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:309 +msgid "Latin Extended Additional" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:313 +msgid "Greek Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:317 +msgid "General Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:321 +msgid "Superscripts and Subscripts" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:325 +msgid "Currency Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:329 +msgid "Combining Diacritical Marks for Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:333 +msgid "Letterlike Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:337 +msgid "Number Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:341 +msgid "Arrows" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:345 +msgid "Mathematical Operators" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:349 +msgid "Miscellaneous Technical" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:353 +msgid "Control Pictures" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:357 +msgid "Optical Character Recognition" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:361 +msgid "Enclosed Alphanumerics" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:365 +msgid "Box Drawing" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:369 +msgid "Block Elements" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:373 +msgid "Geometric Shapes" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:377 +msgid "Miscellaneous Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:381 +msgid "Dingbats" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:385 +msgid "Miscellaneous Mathematical Symbols-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:389 +msgid "Supplemental Arrows-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:393 +msgid "Braille Patterns" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:397 +msgid "Supplemental Arrows-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:401 +msgid "Miscellaneous Mathematical Symbols-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:405 +msgid "Supplemental Mathematical Operators" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:409 +msgid "Miscellaneous Symbols and Arrows" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:413 +msgid "Glagolitic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:417 +msgid "Latin Extended-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:421 +msgid "Coptic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:425 +msgid "Georgian Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:429 +msgid "Tifinagh" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:433 +msgid "Ethiopic Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:437 +msgid "Cyrillic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:441 +msgid "Supplemental Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:445 +msgid "CJK Radicals Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:449 +msgid "Kangxi Radicals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:453 +msgid "Ideographic Description Characters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:457 +msgid "CJK Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:461 +msgid "Hiragana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:465 +msgid "Katakana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:469 +msgid "Bopomofo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:473 +msgid "Hangul Compatibility Jamo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:477 +msgid "Kanbun" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:481 +msgid "Bopomofo Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:485 +msgid "CJK Strokes" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:489 +msgid "Katakana Phonetic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:493 +msgid "Enclosed CJK Letters and Months" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:497 +msgid "CJK Compatibility" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:501 +msgid "CJK Unified Ideographs Extension A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:505 +msgid "Yijing Hexagram Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:509 +msgid "CJK Unified Ideographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:513 +msgid "Yi Syllables" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:517 +msgid "Yi Radicals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:521 +msgid "Lisu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:525 +msgid "Vai" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:529 +msgid "Cyrillic Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:533 +msgid "Bamum" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:537 +msgid "Modifier Tone Letters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:541 +msgid "Latin Extended-D" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:545 +msgid "Syloti Nagri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:549 +msgid "Common Indic Number Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:553 +msgid "Phags-pa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:557 +msgid "Saurashtra" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:561 +msgid "Devanagari Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:565 +msgid "Kayah Li" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:569 +msgid "Rejang" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:573 +msgid "Hangul Jamo Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:577 +msgid "Javanese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:581 +msgid "Myanmar Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:585 +msgid "Cham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:589 +msgid "Myanmar Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:593 +msgid "Tai Viet" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:597 +msgid "Meetei Mayek Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:601 +msgid "Ethiopic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:605 +msgid "Latin Extended-E" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:609 +msgid "Cherokee Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:613 +msgid "Meetei Mayek" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:617 +msgid "Hangul Syllables" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:621 +msgid "Hangul Jamo Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:625 +msgid "High Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:629 +msgid "High Private Use Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:633 +msgid "Low Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:637 +msgid "Private Use Area" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:641 +msgid "CJK Compatibility Ideographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:645 +msgid "Alphabetic Presentation Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:649 +msgid "Arabic Presentation Forms-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:653 +msgid "Variation Selectors" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:657 +msgid "Vertical Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:661 +msgid "Combining Half Marks" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:665 +msgid "CJK Compatibility Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:669 +msgid "Small Form Variants" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:673 +msgid "Arabic Presentation Forms-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:677 +msgid "Halfwidth and Fullwidth Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:681 +msgid "Specials" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:685 +msgid "Linear B Syllabary" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:689 +msgid "Linear B Ideograms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:693 +msgid "Aegean Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:697 +msgid "Ancient Greek Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:701 +msgid "Ancient Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:705 +msgid "Phaistos Disc" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:709 +msgid "Lycian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:713 +msgid "Carian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:717 +msgid "Coptic Epact Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:721 +msgid "Old Italic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:725 +msgid "Gothic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:729 +msgid "Old Permic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:733 +msgid "Ugaritic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:737 +msgid "Old Persian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:741 +msgid "Deseret" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:745 +msgid "Shavian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:749 +msgid "Osmanya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:753 +msgid "Osage" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:757 +msgid "Elbasan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:761 +msgid "Caucasian Albanian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:765 +msgid "Linear A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:769 +msgid "Cypriot Syllabary" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:773 +msgid "Imperial Aramaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:777 +msgid "Palmyrene" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:781 +msgid "Nabataean" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:785 +msgid "Hatran" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:789 +msgid "Phoenician" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:793 +msgid "Lydian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:797 +msgid "Meroitic Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:801 +msgid "Meroitic Cursive" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:805 +msgid "Kharoshthi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:809 +msgid "Old South Arabian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:813 +msgid "Old North Arabian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:817 +msgid "Manichaean" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:821 +msgid "Avestan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:825 +msgid "Inscriptional Parthian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:829 +msgid "Inscriptional Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:833 +msgid "Psalter Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:837 +msgid "Old Turkic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:841 +msgid "Old Hungarian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:845 +msgid "Hanifi Rohingya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:849 +msgid "Rumi Numeral Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:853 +msgid "Old Sogdian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:857 +msgid "Sogdian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:861 +msgid "Elymaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:865 +msgid "Brahmi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:869 +msgid "Kaithi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:873 +msgid "Sora Sompeng" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:877 +msgid "Chakma" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:881 +msgid "Mahajani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:885 +msgid "Sharada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:889 +msgid "Sinhala Archaic Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:893 +msgid "Khojki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:897 +msgid "Multani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:901 +msgid "Khudawadi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:905 +msgid "Grantha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:909 +msgid "Newa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:913 +msgid "Tirhuta" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:917 +msgid "Siddham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:921 +msgid "Modi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:925 +msgid "Mongolian Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:929 +msgid "Takri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:933 +msgid "Ahom" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:937 +msgid "Dogra" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:941 +msgid "Warang Citi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:945 +msgid "Nandinagari" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:949 +msgid "Zanabazar Square" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:953 +msgid "Soyombo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:957 +msgid "Pau Cin Hau" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:961 +msgid "Bhaiksuki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:965 +msgid "Marchen" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:969 +msgid "Masaram Gondi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:973 +msgid "Gunjala Gondi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:977 +msgid "Makasar" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:981 +msgid "Tamil Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:985 +msgid "Cuneiform" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:989 +msgid "Cuneiform Numbers and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:993 +msgid "Early Dynastic Cuneiform" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:997 +msgid "Egyptian Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1001 +msgid "Egyptian Hieroglyph Format Controls" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1005 +msgid "Anatolian Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1009 +msgid "Bamum Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1013 +msgid "Mro" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1017 +msgid "Bassa Vah" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1021 +msgid "Pahawh Hmong" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1025 +msgid "Medefaidrin" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1029 +msgid "Miao" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1033 +msgid "Ideographic Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1037 +msgid "Tangut" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1041 +msgid "Tangut Components" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1045 +msgid "Kana Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1049 +msgid "Kana Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1053 +msgid "Small Kana Extension" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1057 +msgid "Nushu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1061 +msgid "Duployan" msgstr "" -"Alcuni metodi di input sono stati installati, rimossi o aggiornati. " -"Riavviare la piattaforma di input di ibus." -#: ../ui/gtk/main.py:59 -msgid "Restart Now" -msgstr "Riavvia ora" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1065 +msgid "Shorthand Format Controls" +msgstr "" -#: ../ui/gtk/main.py:60 -msgid "Later" -msgstr "Più tardi" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1069 +msgid "Byzantine Musical Symbols" +msgstr "" -#: ../ui/gtk/panel.py:109 -msgid "IBus input method framework" -msgstr "Ambiente del metodo di input IBus" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1073 +msgid "Musical Symbols" +msgstr "" -#: ../ui/gtk/panel.py:327 -msgid "Restart" -msgstr "Riavvia" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1077 +msgid "Ancient Greek Musical Notation" +msgstr "" -#: ../ui/gtk/panel.py:414 -msgid "Turn off input method" -msgstr "Disabilita metodo di input" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1081 +msgid "Mayan Numerals" +msgstr "" -#: ../ui/gtk/panel.py:453 -msgid "No input window" -msgstr "Nessuna finestra di input" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1085 +msgid "Tai Xuan Jing Symbols" +msgstr "" -#: ../ui/gtk/panel.py:484 -msgid "IBus is an intelligent input bus for Linux/Unix." -msgstr "IBus è un bus di input intelligente per Linux/Unix." +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1089 +msgid "Counting Rod Numerals" +msgstr "" -#: ../ui/gtk/panel.py:488 -msgid "translator-credits" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1093 +msgid "Mathematical Alphanumeric Symbols" msgstr "" -"Launchpad Contributions:\n" -" Sergio Zanchetta https://launchpad.net/~primes2h" -#: ../ui/gtk/languagebar.py:106 -msgid "About the input method" -msgstr "Informazioni sul metodo di input" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1097 +msgid "Sutton SignWriting" +msgstr "" -#: ../ui/gtk/languagebar.py:214 -msgid "Switch input method" -msgstr "Cambia metodo di input" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1101 +msgid "Glagolitic Supplement" +msgstr "" -#: ../ui/gtk/languagebar.py:357 ../ui/gtk/engineabout.py:33 -#: ../setup/engineabout.py:33 ../setup/setup.ui.h:16 -msgid "About" -msgstr "Informazioni" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1105 +msgid "Nyiakeng Puachue Hmong" +msgstr "" -#: ../ui/gtk/languagebar.py:361 -msgid "About the Input Method" -msgstr "Informazioni sul metodo di input" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1109 +msgid "Wancho" +msgstr "" -#: ../ui/gtk/engineabout.py:61 ../setup/engineabout.py:61 -#, python-format -msgid "Language: %s\n" -msgstr "Lingua: %s\n" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1113 +msgid "Mende Kikakui" +msgstr "" -#: ../ui/gtk/engineabout.py:63 ../setup/engineabout.py:63 -#, python-format -msgid "Keyboard layout: %s\n" -msgstr "Disposizione tastiera: %s\n" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1117 +msgid "Adlam" +msgstr "" -#: ../ui/gtk/engineabout.py:65 ../setup/engineabout.py:65 -#, python-format -msgid "Author: %s\n" -msgstr "Autore: %s\n" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1121 +msgid "Indic Siyaq Numbers" +msgstr "" -#: ../ui/gtk/engineabout.py:67 ../setup/engineabout.py:67 -msgid "Description:\n" -msgstr "Descrizione:\n" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1125 +msgid "Ottoman Siyaq Numbers" +msgstr "" -#: ../setup/main.py:102 -msgid "trigger" -msgstr "l'avvio" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1129 +msgid "Arabic Mathematical Alphabetic Symbols" +msgstr "" -#: ../setup/main.py:113 -msgid "enable" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1133 +msgid "Mahjong Tiles" msgstr "" -#: ../setup/main.py:124 -msgid "disable" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1137 +msgid "Domino Tiles" msgstr "" -#: ../setup/main.py:135 -msgid "next input method" -msgstr "il metodo di input successivo" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1141 +msgid "Playing Cards" +msgstr "" -#: ../setup/main.py:146 -msgid "previous input method" -msgstr "il metodo di input precedente" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1145 +msgid "Enclosed Alphanumeric Supplement" +msgstr "" -#: ../setup/main.py:286 -msgid "IBus daemon is not started. Do you want to start it now?" -msgstr "Il demone IBus non è in esecuzione. Avviarlo ora?" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1149 +msgid "Enclosed Ideographic Supplement" +msgstr "" -#: ../setup/main.py:301 -msgid "" -"IBus has been started! If you can not use IBus, please add below lines in " -"$HOME/.bashrc, and relogin your desktop.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1153 +msgid "Miscellaneous Symbols and Pictographs" msgstr "" -"IBus è stato avviato. Se non è possibile usare IBus, aggiungere le righe " -"sottostanti in $HOME/.bashrc e rieseguire l'accesso.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" -#: ../setup/main.py:316 -#, python-format -msgid "Select keyboard shortcut for %s" -msgstr "Selezione delle scorciatoie da tastiera per %s" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1157 +msgid "Emoticons" +msgstr "" -#: ../setup/keyboardshortcut.py:52 -msgid "Keyboard shortcuts" -msgstr "Scorciatoie da tastiera" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1161 +msgid "Ornamental Dingbats" +msgstr "" -#: ../setup/keyboardshortcut.py:63 -msgid "Key code:" -msgstr "Codice del tasto:" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1165 +msgid "Transport and Map Symbols" +msgstr "" -#: ../setup/keyboardshortcut.py:78 -msgid "Modifiers:" -msgstr "Modificatori:" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1169 +msgid "Alchemical Symbols" +msgstr "" -#: ../setup/keyboardshortcut.py:231 -msgid "" -"Please press a key (or a key combination).\n" -"The dialog will be closed when the key is released." +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1173 +msgid "Geometric Shapes Extended" msgstr "" -"Premere un tasto (o una combinazione di tasti).\n" -"La finestra verrà chiusa dopo il rilascio del tasto stesso." -#: ../setup/keyboardshortcut.py:233 -msgid "Please press a key (or a key combination)" -msgstr "Premere un tasto (o una combinazione di tasti)" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1177 +msgid "Supplemental Arrows-C" +msgstr "" -#: ../setup/enginecombobox.py:120 -msgid "Select an input method" -msgstr "Seleziona un metodo di input" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1181 +msgid "Supplemental Symbols and Pictographs" +msgstr "" -#. create im name & icon column -#: ../setup/enginetreeview.py:64 ../setup/setup.ui.h:33 -msgid "Input Method" -msgstr "Metodo di input" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1185 +msgid "Chess Symbols" +msgstr "" -#: ../setup/enginetreeview.py:92 -msgid "Kbd" -msgstr "Kbd" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1189 +msgid "Symbols and Pictographs Extended-A" +msgstr "" -#: ../setup/ibus-setup.desktop.in.h:1 ../setup/setup.ui.h:32 -msgid "IBus Preferences" -msgstr "Preferenze di IBus" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1193 +msgid "CJK Unified Ideographs Extension B" +msgstr "" -#: ../setup/ibus-setup.desktop.in.h:2 -msgid "Set IBus Preferences" -msgstr "Imposta Preferenze di IBus" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1197 +msgid "CJK Unified Ideographs Extension C" +msgstr "" -#: ../data/ibus.schemas.in.h:1 -msgid "Auto hide" -msgstr "Nasconde automaticamente" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1201 +msgid "CJK Unified Ideographs Extension D" +msgstr "" -#: ../data/ibus.schemas.in.h:2 -msgid "Custom font" -msgstr "Carattere personalizzato" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1205 +msgid "CJK Unified Ideographs Extension E" +msgstr "" -#: ../data/ibus.schemas.in.h:3 -msgid "Custom font name for language panel" -msgstr "Nome del tipo di carattere personalizzato per il pannello della lingua" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1209 +msgid "CJK Unified Ideographs Extension F" +msgstr "" -#: ../data/ibus.schemas.in.h:4 -msgid "Embed Preedit Text" -msgstr "Inserire il testo pre-modificato" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1213 +msgid "CJK Compatibility Ideographs Supplement" +msgstr "" -#: ../data/ibus.schemas.in.h:5 -msgid "Embed Preedit Text in Application Window" -msgstr "Inserire il testo pre-modificato nella finestra dell'applicazione" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1217 +msgid "Tags" +msgstr "" -#: ../data/ibus.schemas.in.h:6 -msgid "Enable input method by default" -msgstr "Abilita per impostazione predefinita il metodo di input" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1221 +msgid "Variation Selectors Supplement" +msgstr "" -#: ../data/ibus.schemas.in.h:7 -msgid "Enable input method by default when the application gets input focus" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1225 +msgid "Supplementary Private Use Area-A" msgstr "" -"Abilita per impostazione predefinita il metodo di input quando le " -"applicazioni ottengono l'input focus" -#: ../data/ibus.schemas.in.h:8 -msgid "Language panel position" -msgstr "Posizione pannello della lingua" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1229 +msgid "Supplementary Private Use Area-B" +msgstr "" -#: ../data/ibus.schemas.in.h:9 -msgid "Next engine shortcut keys" -msgstr "Motore dei tasti di scelta rapida successivo" +#: tools/main.vala:51 +msgid "List engine name only" +msgstr "Elenca solo il nome del motore" -#: ../data/ibus.schemas.in.h:10 -msgid "Orientation of lookup table" -msgstr "Orientamento della tabella di ricerca" +#: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 +msgid "Can't connect to IBus.\n" +msgstr "Impossibile collegarsi a IBus.\n" -#: ../data/ibus.schemas.in.h:11 -msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" -msgstr "Orientamento della tabella di ricerca. 0 = Orizzontale, 1 = Verticale" +#: tools/main.vala:93 +#, c-format +msgid "language: %s\n" +msgstr "lingua: %s\n" -#: ../data/ibus.schemas.in.h:12 -msgid "Preload engines" -msgstr "Pre-carica i motori" +#: tools/main.vala:161 +msgid "No engine is set.\n" +msgstr "Nessun motore impostato.\n" -#: ../data/ibus.schemas.in.h:13 -msgid "Preload engines during ibus starts up" -msgstr "Precarica i motori durante l'avvio di ibus" +#: tools/main.vala:169 +msgid "Set global engine failed.\n" +msgstr "Impostazione motore globale fallita.\n" -#: ../data/ibus.schemas.in.h:14 -msgid "Prev engine shortcut keys" -msgstr "Motore dei tasti di scelta rapida precedente" +#: tools/main.vala:174 +msgid "Get global engine failed.\n" +msgstr "Acquisizione motore globale fallita.\n" -#: ../data/ibus.schemas.in.h:15 ../setup/setup.ui.h:42 -msgid "Share the same input method among all applications" -msgstr "Condivide lo stesso metodo di input tra le applicazioni" +#: tools/main.vala:217 +msgid "Read the system registry cache." +msgstr "Leggere la cache del registro di sistema." -#: ../data/ibus.schemas.in.h:16 ../setup/setup.ui.h:43 -msgid "Show icon on system tray" -msgstr "Mostrare l'icona nell'area di notifica" +#: tools/main.vala:219 +msgid "Read the registry cache FILE." +msgstr "Leggere la cache del registro dei FILE." -#: ../data/ibus.schemas.in.h:17 -msgid "Show input method name" -msgstr "Mostra il nome del metodo di input" +#: tools/main.vala:237 tools/main.vala:242 +msgid "The registry cache is invalid.\n" +msgstr "La cache del registro non è valida.\n" -#: ../data/ibus.schemas.in.h:18 ../setup/setup.ui.h:45 -msgid "Show input method name on language bar" -msgstr "Mostrare il nome del metodo di input nella barra della lingua" +#: tools/main.vala:257 +msgid "Write the system registry cache." +msgstr "Scrivere la cache del registro di sistema." -#: ../data/ibus.schemas.in.h:19 -msgid "" -"The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = " -"Always show" -msgstr "" -"Il comportamento del pannello della lingua. 0 = Inserito nel menu, 1 = " -"Nasconde automaticamente, 2 = Mostra sempre" +#: tools/main.vala:259 +msgid "Write the registry cache FILE." +msgstr "Scrivere la cache del registro dei FILE." -#: ../data/ibus.schemas.in.h:20 +#: tools/main.vala:295 msgid "" -"The position of the language panel. 0 = Top left corner, 1 = Top right " -"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +"Use engine schema paths instead of ibus core, which can be comma-separated " +"values." msgstr "" -"La posizione del pannello della lingua. 0 = Angolo in alto a sinistra, 1 = " -"Angolo in alto a destra, 2 = Angolo in basso a sinistra, 3 = Angolo in basso " -"a destra, 4 = Personalizzata" -#: ../data/ibus.schemas.in.h:21 -msgid "The shortcut keys for switching to the next input method in the list" +#: tools/main.vala:381 +msgid "Resetting…" msgstr "" -"I tasti scorciatoia per passare al metodo di input successivo nell'elenco" -#: ../data/ibus.schemas.in.h:22 -msgid "The shortcut keys for switching to the previous input method" -msgstr "I tasti scorciatoia per passare al metodo di input precedente" +#: tools/main.vala:399 +msgid "Done" +msgstr "Fatto" -#: ../data/ibus.schemas.in.h:23 ../setup/setup.ui.h:51 -msgid "The shortcut keys for turning input method on or off" -msgstr "I tasti scorciatoia per abilitare o disabilitare i metodi di input" +#: tools/main.vala:444 +msgid "Set or get engine" +msgstr "Impostare od ottenere motore" -#: ../data/ibus.schemas.in.h:24 -msgid "Trigger shortcut keys" -msgstr "Tasto di scelta rapida di avvio" +#: tools/main.vala:445 +msgid "Exit ibus-daemon" +msgstr "Esci ibus-daemon" -#: ../data/ibus.schemas.in.h:25 -msgid "Use custom font" -msgstr "Usare carattere personalizzato" +#: tools/main.vala:446 +msgid "Show available engines" +msgstr "Mostra motori disponibili" -#: ../data/ibus.schemas.in.h:26 -msgid "Use custom font name for language panel" -msgstr "Usa un tipo di carattere personalizzato per il pannello della lingua" +#: tools/main.vala:447 +msgid "(Not implemented)" +msgstr "(Non implementato)" -#: ../data/ibus.schemas.in.h:27 -msgid "Use global input method" -msgstr "Usa il metodo di input globale" +#: tools/main.vala:448 +msgid "Restart ibus-daemon" +msgstr "Fai ripartire il demone ibus" -#: ../data/ibus.schemas.in.h:28 ../setup/setup.ui.h:55 -msgid "Use system keyboard (XKB) layout" -msgstr "Usa la disposizione di tastiera del sistema (XKB)" +#: tools/main.vala:449 +msgid "Show version" +msgstr "Mostra la versione" -#: ../data/ibus.schemas.in.h:29 ../setup/setup.ui.h:56 -msgid "Use system keyboard layout" -msgstr "Usa la disposizione di tastiera del sistema" +#: tools/main.vala:450 +msgid "Show the content of registry cache" +msgstr "Mostra il contenuto della cache del registro" -#: ../setup/setup.ui.h:1 -msgid "..." -msgstr "..." +#: tools/main.vala:451 +msgid "Create registry cache" +msgstr "Creare cache del registro" -#: ../setup/setup.ui.h:2 -msgid "Font and Style" -msgstr "Tipo di carattere e stile" +#: tools/main.vala:452 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "Stampare l'indirizzo D-Bus di ibus-deamon" -#: ../setup/setup.ui.h:3 -msgid "Global input method settings" -msgstr "Seleziona un metodo di input" +#: tools/main.vala:453 +msgid "Show the configuration values" +msgstr "Mostrare i valori della configurazione" -#: ../setup/setup.ui.h:4 -msgid "Keyboard Layout" -msgstr "Disposizione tastiera" +#: tools/main.vala:454 +msgid "Reset the configuration values" +msgstr "Reimpostare i valori della configurazione" -#: ../setup/setup.ui.h:5 -msgid "Keyboard Shortcuts" -msgstr "Scorciatoie da tastiera" +#: tools/main.vala:456 +msgid "Save emoji on dialog to clipboard" +msgstr "Salvare emoji sulla finestra degli appunti" -#: ../setup/setup.ui.h:6 -msgid "Startup" -msgstr "Avvio" +#: tools/main.vala:458 +msgid "Show this information" +msgstr "Mostrare questa informazione" -#: ../setup/setup.ui.h:7 +#: tools/main.vala:464 +#, c-format msgid "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" -"\n" +"Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" -"IBus\n" -"Il bus di input intelligente\n" -"Sito web: http://code.google.com/p/ibus\n" -"\n" -"\n" +"Utilizzo: %s COMANDO [OPZIONE...]\n" "\n" -#: ../setup/setup.ui.h:14 -msgid "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." -msgstr "" -"Il metodo di input predefinito è il primo in alto nell'elenco.\n" -"Per cambiarlo è possibile usare i pulsanti su/giù." +#: tools/main.vala:465 +msgid "Commands:\n" +msgstr "Comandi:\n" -#: ../setup/setup.ui.h:17 -msgid "Add the selected input method into the enabled input methods" -msgstr "Aggiunge il metodo selezionato ai metodi di input abilitati" +#: tools/main.vala:494 +#, c-format +msgid "%s is unknown command!\n" +msgstr "%s è un comando sconosciuto!\n" -#: ../setup/setup.ui.h:18 -msgid "Advanced" -msgstr "Avanzate" +#: ui/gtk3/emojier.vala:233 +msgid "Favorites" +msgstr "Preferiti" -#: ../setup/setup.ui.h:19 -msgid "Always" -msgstr "Sempre" +#: ui/gtk3/emojier.vala:234 +msgid "Others" +msgstr "" -#: ../setup/setup.ui.h:20 -msgid "Bottom left corner" -msgstr "Angolo inferiore sinistro" +#: ui/gtk3/emojier.vala:235 +msgid "Open Unicode choice" +msgstr "" -#: ../setup/setup.ui.h:21 -msgid "Bottom right corner" -msgstr "Angolo inferiore destro" +#: ui/gtk3/emojier.vala:994 +msgid "Bring back emoji choice" +msgstr "" -#: ../setup/setup.ui.h:22 -msgid "Candidates orientation:" -msgstr "Orientamento dei candidati:" +#: ui/gtk3/emojier.vala:1096 +msgid "Page Down" +msgstr "" -#: ../setup/setup.ui.h:23 -msgid "Custom" -msgstr "Personalizzato" +#: ui/gtk3/emojier.vala:1107 +msgid "Page Up" +msgstr "" -#: ../setup/setup.ui.h:24 -msgid "Disable:" +#: ui/gtk3/emojier.vala:1110 +msgid "Show emoji variants" msgstr "" -#: ../setup/setup.ui.h:25 -msgid "Embed preedit text in application window" -msgstr "Inserire il testo pre-modificato nella finestra dell'applicazione" +#: ui/gtk3/emojier.vala:1111 +#, fuzzy +#| msgid "_Close" +msgid "Close" +msgstr "_Chiudi" -#: ../setup/setup.ui.h:26 -msgid "Embed the preedit text of input method in the application window" +#: ui/gtk3/emojier.vala:1117 +msgid "Menu" msgstr "" -"Inserisce il testo premodificato del metodo di input nella finestra " -"dell'applicazione" -#: ../setup/setup.ui.h:27 -msgid "Embedded in menu" -msgstr "Inserito nel menu" - -#: ../setup/setup.ui.h:28 -msgid "Enable or disable:" -msgstr "Abilitare o disabilitare:" +#: ui/gtk3/emojier.vala:1128 +msgid "Click to view a warning message" +msgstr "" -#: ../setup/setup.ui.h:29 -msgid "Enable:" +#: ui/gtk3/emojier.vala:1172 +msgid "Loading a Unicode dictionary:" msgstr "" -#: ../setup/setup.ui.h:30 -msgid "General" -msgstr "Generali" +#: ui/gtk3/emojier.vala:1418 +#, c-format +msgid "Code point: %s" +msgstr "Punto di codice: %s" -#: ../setup/setup.ui.h:31 -msgid "Horizontal" -msgstr "Orizzontale" +#: ui/gtk3/emojier.vala:1424 +msgid "Has emoji variants" +msgstr "" -#: ../setup/setup.ui.h:34 -msgid "Language panel position:" -msgstr "Posizione pannello della lingua:" +#: ui/gtk3/emojier.vala:1591 ui/gtk3/emojier.vala:1604 +#, c-format +msgid "Description: %s" +msgstr "Descrizione: %s" -#: ../setup/setup.ui.h:35 -msgid "Move down the selected input method in the enabled input methods" -msgstr "Sposta in basso il metodo selezionato nei metodi di input abilitati" +#: ui/gtk3/emojier.vala:1591 +msgid "None" +msgstr "Nessuno" -#: ../setup/setup.ui.h:36 -msgid "Move up the selected input method in the enabled input methods list" -msgstr "Sposta in alto il metodo selezionato nei metodi di input abilitati" +#: ui/gtk3/emojier.vala:1615 +#, c-format +msgid "Annotations: %s" +msgstr "Annotazioni: %s" -#: ../setup/setup.ui.h:37 -msgid "Next input method:" -msgstr "Metodo di input successivo:" +#: ui/gtk3/emojier.vala:1641 +#, c-format +msgid "Name: %s" +msgstr "" -#: ../setup/setup.ui.h:38 -msgid "Previous input method:" -msgstr "Metodo di input precedente:" +#: ui/gtk3/emojier.vala:1649 +#, c-format +msgid "Alias: %s" +msgstr "" -#: ../setup/setup.ui.h:39 -msgid "Remove the selected input method from the enabled input methods" -msgstr "Rimuove il metodo selezionato dai metodi di input abilitati" +#: ui/gtk3/emojier.vala:2139 ui/gtk3/ibus-extension-gtk3.desktop.in:3 +#: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 +msgid "Emoji Choice" +msgstr "" -#: ../setup/setup.ui.h:40 -msgid "Set the behavior of ibus how to show or hide language bar" +#: ui/gtk3/emojier.vala:2141 +msgid "Unicode Choice" msgstr "" -"Imposta il comportamento di IBus su come mostrare o nascondere la barra " -"della lingua" -#: ../setup/setup.ui.h:41 -msgid "Set the orientation of candidates in lookup table" -msgstr "Imposta l'orientamento dei candidati nella tabella di ricerca" +#: ui/gtk3/emojier.vala:2429 +msgid "" +"Failed to get the current text application. Please re-focus your " +"application. E.g. Press Esc key several times to release the emoji typing " +"mode, click your desktop and click your text application again." +msgstr "" -#: ../setup/setup.ui.h:44 -msgid "Show information of the selected input method" -msgstr "Mostra le informazioni sul metodo di input selezionato" +#: ui/gtk3/emojierapp.vala:58 +msgid "Canceled to choose an emoji." +msgstr "Annullato scegliere un emoji." + +#: ui/gtk3/emojierapp.vala:93 +msgid "Copied an emoji to your clipboard." +msgstr "Copiato un emoji negli appunti." + +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ui/gtk3/emojierapp.vala:114 +msgid "\"FONT\" for emoji characters on emoji dialog" +msgstr "\"FONT\" per i caratteri emoji sulla finestra degli emoji" + +#: ui/gtk3/emojierapp.vala:115 +msgid "FONT" +msgstr "FONT" + +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ui/gtk3/emojierapp.vala:120 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" +msgstr "\"LANG\" per le annotazioni sulla finestra degli emoji. es. \"en\"" + +#: ui/gtk3/emojierapp.vala:121 +msgid "LANG" +msgstr "LANG" + +#: ui/gtk3/emojierapp.vala:123 +msgid "Emoji annotations can be match partially" +msgstr "" -#: ../setup/setup.ui.h:46 -msgid "Show input method's name on language bar when check the checkbox" +#: ui/gtk3/emojierapp.vala:127 +msgid "Match with the length of the specified integer" msgstr "" -"Quando la casella è spuntata mostra il nome del metodo di input nella barra " -"della lingua" -#: ../setup/setup.ui.h:47 -msgid "Show language panel:" -msgstr "Mostrare pannello della lingua:" +#: ui/gtk3/emojierapp.vala:131 +msgid "Match with the condition of the specified integer" +msgstr "" -#: ../setup/setup.ui.h:48 -msgid "Start ibus on login" -msgstr "Avvia IBus all'accesso" +#: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 +msgid "IBus Panel" +msgstr "Pannello IBus" -#: ../setup/setup.ui.h:49 -msgid "The shortcut keys for switching to next input method in the list" -msgstr "" -"I tasti scorciatoia per passare al metodo di input successivo nell'elenco" +#: ui/gtk3/panel.vala:1095 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus è un bus di input intelligente per Linux/Unix." -#: ../setup/setup.ui.h:50 -msgid "The shortcut keys for switching to previous input method in the list" +#: ui/gtk3/panel.vala:1099 +msgid "translator-credits" msgstr "" -"I tasti scorciatoia per passare al metodo di input precedente nell'elenco" - -#: ../setup/setup.ui.h:52 -msgid "Top left corner" -msgstr "Angolo superiore sinistro" +"Launchpad Contributions:\n" +" Sergio Zanchetta https://launchpad.net/~primes2h" -#: ../setup/setup.ui.h:53 -msgid "Top right corner" -msgstr "Angolo superiore destro" +#: ui/gtk3/panel.vala:1118 +msgid "Preferences" +msgstr "Preferenze" -#: ../setup/setup.ui.h:54 -msgid "Use custom font:" -msgstr "Usare carattere personalizzato:" +#: ui/gtk3/panel.vala:1144 +msgid "Restart" +msgstr "Riavvia" -#: ../setup/setup.ui.h:57 -msgid "Vertical" -msgstr "Verticale" +#: ui/gtk3/panel.vala:1148 +msgid "Quit" +msgstr "Esci" -#: ../setup/setup.ui.h:58 -msgid "When active" -msgstr "Quando attivoB" +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 +msgid "default:LTR" +msgstr "default:LTR" diff --git a/po/ja.po b/po/ja.po index d4c5b91ae..451fc8bd1 100644 --- a/po/ja.po +++ b/po/ja.po @@ -1,548 +1,3477 @@ -# translation of ja.po to Japanese # Japanese translation of ibus. -# Copyright (C) 2008 Huang Peng +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2022 Takao Fujiwara # This file is distributed under the same license as the ibus package. # -# -# UTUMI Hirosi , 2008. -# IWAI, Masaharu , 2009. -# Hyu_gabaru Ryu_ichi , 2009. -# Kiyoto Hashida , 2010. -# Makoto Mizukami , 2010. -msgid "" -msgstr "" -"Project-Id-Version: ja\n" -"Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/list\n" -"POT-Creation-Date: 2011-12-13 16:43+0900\n" -"PO-Revision-Date: 2011-12-13 18:00+0000\n" -"Last-Translator: Makoto Mizukami \n" -"Language-Team: Japanese \n" +# Translators: +# Hajime Taira , 2012 +# hyuugabaru , 2009 +# IWAI, Masaharu , 2009 +# Kiyoto Hashida , 2010 +# Makoto Mizukami , 2010 +# noriko , 2013 +# UTUMI Hirosi , 2008 +# carrotsoft , 2012 +# fujiwara , 2015-2019. #zanata +# simmon , 2021. +msgid "" +msgstr "" +"Project-Id-Version: ibus 1.5.20\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2022-04-29 18:05+0900\n" +"PO-Revision-Date: 2021-06-20 19:04+0000\n" +"Last-Translator: simmon \n" +"Language-Team: Japanese \n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"X-Generator: KBabel 1.11.4\n" +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.7\n" + +#. Translators: Here “Preload” is a verb +#: data/dconf/org.freedesktop.ibus.gschema.xml:11 +msgid "Preload engines" +msgstr "プリロードエンジン" + +#. Translators: Tooltip for the button “Preload Engines” +#: data/dconf/org.freedesktop.ibus.gschema.xml:13 +msgid "Preload engines during ibus starts up" +msgstr "ibus 起動時のプリロードエンジン" -#: ../bus/ibus.desktop.in.h:1 -msgid "IBus" -msgstr "IBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:17 +msgid "Engines order" +msgstr "エンジンの順序" -#: ../bus/ibus.desktop.in.h:2 -msgid "Input Method Framework" -msgstr "インプットメソッドフレームワーク" +#: data/dconf/org.freedesktop.ibus.gschema.xml:18 +msgid "Saved engines order in input method list" +msgstr "入力メソッドの一覧の中から保存されたエンジンの順序" -#: ../bus/ibus.desktop.in.h:3 -msgid "Start IBus Input Method Framework" -msgstr "IBus インプットメソッドフレームワークを起動" +#: data/dconf/org.freedesktop.ibus.gschema.xml:22 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "IME 切り替えウィンドウのポップアップ遅延時間 (ミリ秒単位)" -#: ../ibus/_config.py.in:40 +#: data/dconf/org.freedesktop.ibus.gschema.xml:23 msgid "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +"Set popup delay milliseconds to show IME switcher window. The default is " +"400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " +"show the window and switch prev/next engines." msgstr "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +"IME 切り替えウィンドウのポップアップ表示を遅延させるミリ秒数を指定します。デ" +"フォルトは 400 ミリ秒です。「0 =」ならウィンドウが直ちに表示されます。「0 <」" +"にすると指定したミリ秒数遅延します。「0 >」の場合はウィンドウは表示されず前の" +"エンジンまたは次のエンジンに切り替わります。" -#: ../ibus/lang.py:41 -msgid "Other" -msgstr "その他" +#: data/dconf/org.freedesktop.ibus.gschema.xml:27 +msgid "Saved version number" +msgstr "保存されているバージョン番号" -#: ../ui/gtk/candidatepanel.py:264 -msgid "Previous page" -msgstr "前のページ" +#: data/dconf/org.freedesktop.ibus.gschema.xml:28 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" +"保存されているバージョン番号は、以前インストールした ibus のバージョンと現在" +"の ibus のバージョンの違いをチェックする場合に使用されます。" -#: ../ui/gtk/candidatepanel.py:269 -msgid "Next page" -msgstr "次のページ" +#: data/dconf/org.freedesktop.ibus.gschema.xml:32 +msgid "Latin layouts which have no ASCII" +msgstr "ASCII を持たないラテンレイアウト" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:33 +msgid "US layout is appended to the Latin layouts. variant can be omitted." +msgstr "" +"US レイアウトはラテンレイアウトに追加されます。variant は省略可能です。" -#: ../ui/gtk/main.py:62 +#: data/dconf/org.freedesktop.ibus.gschema.xml:37 +msgid "Use xmodmap" +msgstr "xmodmap を使用する" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" -"Some input methods have been installed, removed or updated. Please restart " -"ibus input platform." -msgstr "いくつかのインプットメソッドがインストール、削除、または更新されています。IBus 入力プラットフォームを再起動してください。" +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." +msgstr "" +"ibus エンジンが切り替えられたときに .xmodmap もしくは .Xmodmap が存在すれば " +"xmodmap を実行します。" -#: ../ui/gtk/main.py:66 -msgid "Restart Now" -msgstr "今すぐに再起動する" +#: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 +msgid "Use system keyboard layout" +msgstr "システムのキーボードレイアウトを使用する" -#: ../ui/gtk/main.py:67 -msgid "Later" -msgstr "後でする" +#: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 +msgid "Use system keyboard (XKB) layout" +msgstr "システムのキーボード (XKB) レイアウトを使用する" -#: ../ui/gtk/panel.py:116 -msgid "IBus Panel" -msgstr "IBus パネル" +#: data/dconf/org.freedesktop.ibus.gschema.xml:47 +msgid "Embed Preedit Text" +msgstr "前編集テキストを組み込む" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:48 +msgid "Embed Preedit Text in Application Window" +msgstr "アプリケーションウィンドウに前編集テキストを組み込みます" -#: ../ui/gtk/panel.py:122 -msgid "IBus input method framework" -msgstr "IBus インプットメソッドフレームワーク" +#: data/dconf/org.freedesktop.ibus.gschema.xml:52 +msgid "Use global input method" +msgstr "グローバル入力メソッドを使用する" -#: ../ui/gtk/panel.py:352 -msgid "Restart" -msgstr "再起動" +#: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 +msgid "Share the same input method among all applications" +msgstr "すべてのアプリケーション間で同じ入力メソッドを共有する" -#: ../ui/gtk/panel.py:439 -msgid "Turn off input method" -msgstr "インプットメソッドをオフにする" +#: data/dconf/org.freedesktop.ibus.gschema.xml:57 +msgid "Enable input method by default" +msgstr "デフォルトで入力メソッドを有効にする" -#: ../ui/gtk/panel.py:478 -msgid "No input window" -msgstr "入力ウィンドウがありません" +#: data/dconf/org.freedesktop.ibus.gschema.xml:58 +msgid "Enable input method by default when the application gets input focus" +msgstr "" +"アプリケーションで入力が必要とされる場合にはデフォルトで入力メソッドを有効に" +"します" -#: ../ui/gtk/panel.py:509 -msgid "IBus is an intelligent input bus for Linux/Unix." -msgstr "IBus は、Linux/Unix のためのインテリジェントなインプットバスです。" +#: data/dconf/org.freedesktop.ibus.gschema.xml:62 +msgid "DConf preserve name prefixes" +msgstr "DConf により名前のプレフィックスを維持する" -#: ../ui/gtk/panel.py:513 -msgid "translator-credits" +#: data/dconf/org.freedesktop.ibus.gschema.xml:63 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "名前の変換を阻止する DConf キーのプレフィックスです" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:70 +msgid "Trigger shortcut keys" +msgstr "トリガーショートカットキー" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:71 +#: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 +msgid "The shortcut keys for turning input method on or off" +msgstr "入力メソッドをオンまたはオフするためのショートカットキー" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:75 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "gtk_accelerator_parse のためのトリガーショートカットキー" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:80 +msgid "Enable shortcut keys" +msgstr "ショートカットキーを有効にする" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:81 +msgid "The shortcut keys for turning input method on" +msgstr "入力メソッドをオンに切り替えるためのショートカットキー" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:85 +msgid "Disable shortcut keys" +msgstr "ショートカットキーを無効にする" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:86 +msgid "The shortcut keys for turning input method off" +msgstr "入力メソッドをオフに切り替えるためのショートカットキー" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:90 +#: data/dconf/org.freedesktop.ibus.gschema.xml:95 +msgid "Next engine shortcut keys" +msgstr "次のエンジンへのショートカットキー" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:91 +#: data/dconf/org.freedesktop.ibus.gschema.xml:96 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "一覧内の次の入力メソッドに切り替えるためのショートカットキー" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:100 +#: data/dconf/org.freedesktop.ibus.gschema.xml:105 +msgid "Prev engine shortcut keys" +msgstr "前のエンジンへのショートカットキー" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:101 +#: data/dconf/org.freedesktop.ibus.gschema.xml:106 +msgid "The shortcut keys for switching to the previous input method" +msgstr "一覧内のひとつ前の入力メソッドに切り替えるためのショートカットキー" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:112 +msgid "Auto hide" +msgstr "自動的に隠す" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:113 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" msgstr "" -"UTUMI Hirosi \n" -"IWAI, Masaharu \n" -"日向原 龍一 " +"プロパティーパネルの挙動。 0 = 表示しない、1 = 自動的に隠す、2 = 常に表示する" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:117 +#: data/dconf/org.freedesktop.ibus.gschema.xml:121 +msgid "Language panel position" +msgstr "言語パネルの位置" -#: ../ui/gtk/languagebar.py:106 -msgid "About the input method" -msgstr "インプットメソッドについて" +#: data/dconf/org.freedesktop.ibus.gschema.xml:125 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "パネルが常に表示されている場合に入力カーソルに従う" -#: ../ui/gtk/languagebar.py:214 -msgid "Switch input method" -msgstr "インプットメソッドがありません" +#: data/dconf/org.freedesktop.ibus.gschema.xml:126 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" +"true ならば、パネルが常に表示されている場合にパネルは入力カーソルに従います。" +"false ならば、パネルは固定位置に表示されます。" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:130 +msgid "The milliseconds to show property panel" +msgstr "プロパティーパネルを表示するミリ秒" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:131 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" +"フォーカスインまたはプロパティが変更された後でプロパティーパネルを表示するミ" +"リ秒。" -#: ../ui/gtk/languagebar.py:357 ../ui/gtk/engineabout.py:33 -#: ../setup/engineabout.py:33 ../setup/setup.ui.h:16 +#: data/dconf/org.freedesktop.ibus.gschema.xml:135 +msgid "Orientation of lookup table" +msgstr "検索テーブルの向き" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:136 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "検索テーブルの向きです。0 = 横、1 = 縦" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:140 +#: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 +#: setup/setup.ui:475 +msgid "Show icon on system tray" +msgstr "システムトレイにアイコンを表示する" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:145 +msgid "Show input method name" +msgstr "入力メソッド名を表示する" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 +msgid "Show input method name on language bar" +msgstr "言語バーに入力メソッド名を表示する" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:150 +msgid "RGBA value of XKB icon" +msgstr "XKB アイコンの RGBA 値" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:151 +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form 'rgba(r," +"g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 to 255 or " +"percentage values in the range 0% to 100%, and 'a' is a floating point value " +"in the range 0 to 1 of the alpha." +msgstr "" +"XKB アイコンはレイアウト文字列を表示してその文字列は RGBA 値で描画されます。" +"RGBA 値は次のいずれかを選ぶことができます。1. X11 からの色彩名、2. 書式 " +"'#rrggbb' の16進数値で、その 'r', 'g', 'b' は赤、緑、青の16進数の数字のこと、" +"3. 書式 'rgb(r,g,b)' の RGB カラー、4. 書式 'rgba(r,g,b,a)' の RGBA カラー" +"で、その 'r', 'g', 'b' は 0 から 255 までの範囲内の整数値か 0% から 100% まで" +"の範囲内のパーセンテージのことで、'a' はアルファ値の 0 から 1 までの範囲内の" +"浮動小数値のこと。" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:155 +msgid "The milliseconds to show the panel icon for a property" +msgstr "プロパティー用にパネルアイコンを表示する遅延時間 (ミリ秒単位)" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:156 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" +"あるプロパティーが IBusEngineDesc の icon-prop-key の値に指定されている場合、" +"エンジンが切り替えられたときはいつでも、エンジンアイコンを表示の後にそのプロ" +"パティーをパネルアイコンを表示するためのミリ秒単位の遅延時間。値が 0 の場合、" +"遅延無くプロパティーアイコンが即時に表示される。" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:160 +msgid "Use custom font" +msgstr "カスタムフォントを使う" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:161 +msgid "Use custom font name for language panel" +msgstr "言語パネル用にカスタムフォント名を使用する" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:165 +#: data/dconf/org.freedesktop.ibus.gschema.xml:192 +msgid "Custom font" +msgstr "カスタムフォント" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:166 +msgid "Custom font name for language panel" +msgstr "言語パネル用のカスタムフォント名" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:170 setup/setup.ui:1305 +msgid "Choose glyphs with input method's language on candidate window" +msgstr "候補ウィンドウ上でインプットメソッドの言語でグリフを選択する" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:171 +msgid "" +"Some code points have the different glyphs and Pango determines the glyphs " +"from the language attribute. Pango chooses glyphs from the IBus engine's " +"language if the value is true and choose them from the desktop locale if the " +"value is false." +msgstr "" +"いくつかのコードポイントは異なるグリフを持ち、Pango は言語属性からグリフを決" +"定する。値が真の場合、Pango は IBus エンジンの言語からグリフを選択し、値が偽" +"の場合、デスクトップのロケールから選択する。" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:182 +msgid "Unicode shortcut keys for gtk_accelerator_parse" +msgstr "gtk_accelerator_parse のための Unicode ショートカットキー" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:183 +msgid "The shortcut keys for turning Unicode typing on or off" +msgstr "Unicode 入力の有効と無効を切り替えるためのショートカットキー" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:187 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "gtk_accelerator_parse のための絵文字ショートカットキー" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:188 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "絵文字入力の有効と無効を切り替えるためのショートカットキー" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:193 +msgid "Custom font name for emoji characters on emoji dialog" +msgstr "絵文字ダイアログ上の絵文字用のカスタムフォント名" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:197 +msgid "Default language for emoji dictionary" +msgstr "絵文字辞書用のデフォルトの言語" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:198 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict ." +msgstr "" +"絵文字ダイアログ上の絵文字辞書のデフォルトの言語を選択します。その値 $lang " +"は、/usr/share/ibus/dicts/emoji-$lang.dict に適用されます。" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:202 +msgid "favorite emoji list on emoji dialog" +msgstr "絵文字ダイアログ上のお気に入り絵文字リスト" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:203 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "" +"このリストが文字を含む場合、絵文字リスト上にお気に入りの絵文字を表示すること" +"ができます。" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:207 +msgid "favorite emoji annotation list on emoji dialog" +msgstr "絵文字ダイアログ上のお気に入りの絵文字ルビリスト" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:208 +msgid "You can assign an annotation for a favorite emoji in this list." +msgstr "このリストの中にお気に入りの絵文字用のルビを指定できます。" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:212 +msgid "Whether emoji annotations can be match partially or not" +msgstr "絵文字ルビを部分一致させることを可能にするか否か" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:213 +msgid "" +"Whether emoji annotations can be matched with a partial string instead of " +"the exact match or not." +msgstr "" +"絵文字ルビを完全一致ではなく部分文字列で一致させることを可能にするか否か。" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:217 +msgid "Match emoji annotations with the specified length" +msgstr "指定した長さで絵文字ルビを一致させる" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:218 +msgid "" +"Match emoji annotations partially with more than the specified number of " +"characters instead of the exact match." +msgstr "絵文字ルビを完全一致ではなく指定した文字数で部分一致させる。" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:222 +msgid "Choose a condition to match emoji annotations partially" +msgstr "絵文字ルビを部分一致させる条件を選ぶ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:223 +msgid "" +"Choose one of the following conditions to match emoji annotations partially: " +"0 == Prefix match, 1 == Suffix match, 2 == Containing match" +msgstr "" +"絵文字ルビを部分一致させる次の条件のうちの1つを選ぶ: 0 == 文頭一致、1 == 文" +"末一致、2 == 文中一致" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:227 +msgid "Load the emoji data at the time of startup" +msgstr "起動時に絵文字データを読み込む" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:228 +msgid "" +"Load the emoji data at the time of startup if true. About 10MB memory is " +"needed to load the data. Load the emoji data when open the emoji dialog at " +"the beginning if false." +msgstr "" +"true の場合、起動時に絵文字データを読み込みます。約 10 MBメモリーがデータを読" +"み込むために必要になります。false の場合、初めて絵文字ダイアログを開く時に絵" +"文字データを読み込みます。" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:232 +msgid "Load the Unicode data at the time of startup" +msgstr "起動時に Unicode データを読み込む" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:233 +msgid "" +"Load the Unicode data at the time of startup if true. About 15MB memory is " +"needed to load the data. Load the Unicode data when open the emoji dialog at " +"the beginning if false. The Unicode data is always loaded after the emoji " +"data is loaded even if true." +msgstr "" +"true の場合、起動時に Unicode データを読み込みます。約 15 MB メモリーがデータ" +"を読み込むために必要になります。false の場合、初めて絵文字ダイアログを開く時" +"に Unicode データを読み込みます。true の場合、常に絵文字データが読み込まれた" +"後で、Unicode データが読み込まれます。" + +#: ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "" +"Copyright © 2007-2010 Peng Huang\n" +"Copyright © 2007-2010 Red Hat, Inc." + +#: ibus/lang.py:41 src/ibusutil.c:209 +msgid "Other" +msgstr "その他" + +#: setup/emojilang.py:67 +msgid "Select a language" +msgstr "言語の選択" + +#: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 +#: setup/main.py:560 +msgid "_Cancel" +msgstr "キャンセル(_C)" + +#: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 +msgid "_OK" +msgstr "OK(_O)" + +#: setup/emojilang.py:235 setup/enginedialog.py:222 +msgid "More…" +msgstr "さらに…" + +#: setup/engineabout.py:37 setup/setup.ui:1368 ui/gtk3/panel.vala:1259 msgid "About" msgstr "情報" -#: ../ui/gtk/languagebar.py:361 -msgid "About the Input Method" -msgstr "インプットメソッドについて" +#: setup/engineabout.py:40 setup/setup.ui:1391 +msgid "_Close" +msgstr "閉じる(_C)" -#: ../ui/gtk/engineabout.py:61 ../setup/engineabout.py:61 +#: setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "言語: %s\n" -#: ../ui/gtk/engineabout.py:63 ../setup/engineabout.py:63 +#: setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "キーボードレイアウト: %s\n" -#: ../ui/gtk/engineabout.py:65 ../setup/engineabout.py:65 +#: setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "作者: %s\n" -#: ../ui/gtk/engineabout.py:67 ../setup/engineabout.py:67 +#: setup/engineabout.py:81 msgid "Description:\n" msgstr "説明:\n" -#: ../setup/main.py:102 -msgid "trigger" -msgstr "トリガー" +#: setup/enginecombobox.py:139 setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "入力メソッドの選択" + +#. add button +#: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 +msgid "_Add" +msgstr "追加(_A)" + +#. create im name & icon column +#: setup/enginetreeview.py:69 setup/setup.ui:838 +msgid "Input Method" +msgstr "入力メソッド" + +#: setup/ibus-setup.desktop:3 setup/setup.ui:69 +msgid "IBus Preferences" +msgstr "IBus の設定" + +#: setup/ibus-setup.desktop:4 +msgid "Set IBus Preferences" +msgstr "IBus を設定します" -#: ../setup/main.py:113 -msgid "enable" -msgstr "有効" +#: setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "キーボードショートカット" -#: ../setup/main.py:124 -msgid "disable" -msgstr "無効" +#: setup/keyboardshortcut.py:67 +msgid "Key code:" +msgstr "キーコード:" -#: ../setup/main.py:135 -msgid "next input method" -msgstr "次のインプットメソッド" +#: setup/keyboardshortcut.py:82 +msgid "Modifiers:" +msgstr "修飾キー:" -#: ../setup/main.py:146 -msgid "previous input method" -msgstr "ひとつ前のインプットメソッド" +#. apply button +#: setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "適用(_A)" -#: ../setup/main.py:332 -msgid "IBus daemon is not started. Do you want to start it now?" -msgstr "IBus デーモンが動いていません。起動しますか?" +#. delete button +#: setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "削除(_D)" -#: ../setup/main.py:347 +#: setup/keyboardshortcut.py:252 msgid "" -"IBus has been started! If you can not use IBus, please add below lines in $HOME/.bashrc, and relogin your desktop.\n" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "" +"キー (もしくはキーの組み合わせ) を入力してください。\n" +"キーを離すとダイアログを閉じます。" + +#: setup/keyboardshortcut.py:255 +msgid "Please press a key (or a key combination)" +msgstr "キー (もしくはキーの組み合わせ) を入力してください" + +#: setup/main.py:121 setup/main.py:588 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "" +"以前の入力メソッドに切り替えるにはショートカットにシフトキーを付けて使用しま" +"す" + +#: setup/main.py:515 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "IBus デーモンが実行されていません。起動しますか?" + +#: setup/main.py:536 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "" -"IBus を開始しました。IBus を使えない場合は次の行を$HOME/.bashrc に書き加えて再ログインしてください。\n" +"IBus は起動されています。IBus が使用できない場合は、次の行を $HOME/.bashrc に" +"追記し、デスクトップにログインし直してみてください。\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" -#: ../setup/main.py:362 +#. Translators: %d == 5 currently +#: setup/main.py:550 +#, python-format +msgid "IBus daemon could not be started in %d seconds." +msgstr "IBus デーモンを %d 秒以内に開始できませんでした。" + +#: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "%s のキーボードショートカットを選択" -#: ../setup/keyboardshortcut.py:52 -msgid "Keyboard shortcuts" -msgstr "キーボードショートカット" +#. Translators: Title of the window +#: setup/main.py:564 +msgid "switching input methods" +msgstr "入力メソッドの切り替え中" -#: ../setup/keyboardshortcut.py:63 -msgid "Key code:" -msgstr "キーコード:" - -#: ../setup/keyboardshortcut.py:78 -msgid "Modifiers:" -msgstr "モディファイア:" +#: setup/setup.ui:11 +msgid "Horizontal" +msgstr "横" -#: ../setup/keyboardshortcut.py:231 -msgid "" -"Please press a key (or a key combination).\n" -"The dialog will be closed when the key is released." -msgstr "" -"キーもしくはキーの組み合わせを入力してください。\n" -"キーを離すとダイアログを閉じます" +#: setup/setup.ui:14 +msgid "Vertical" +msgstr "縦" -#: ../setup/keyboardshortcut.py:233 -msgid "Please press a key (or a key combination)" -msgstr "キーもしくはキーの組み合わせを入力してください" +#: setup/setup.ui:25 +msgid "Top left corner" +msgstr "左上" -#: ../setup/enginecombobox.py:120 -msgid "Select an input method" -msgstr "インプットメソッドの選択" +#: setup/setup.ui:28 +msgid "Top right corner" +msgstr "右上" -#. create im name & icon column -#: ../setup/enginetreeview.py:64 ../setup/setup.ui.h:33 -msgid "Input Method" -msgstr "インプットメソッド" +#: setup/setup.ui:31 +msgid "Bottom left corner" +msgstr "左下" -#: ../setup/enginetreeview.py:92 -msgid "Kbd" -msgstr "Kbd" +#: setup/setup.ui:34 +msgid "Bottom right corner" +msgstr "右下" -#: ../setup/ibus-setup.desktop.in.h:1 ../setup/setup.ui.h:32 -msgid "IBus Preferences" -msgstr "IBus の設定" +#: setup/setup.ui:37 +msgid "Custom" +msgstr "カスタム" -#: ../setup/ibus-setup.desktop.in.h:2 -msgid "Set IBus Preferences" -msgstr "IBus の設定" +#: setup/setup.ui:48 +msgid "Do not show" +msgstr "表示しない" -#: ../data/ibus.schemas.in.h:1 -msgid "Auto hide" +#: setup/setup.ui:51 +msgid "Hide automatically" msgstr "自動的に隠す" -#: ../data/ibus.schemas.in.h:2 -msgid "Custom font" -msgstr "カスタムフォント" +#: setup/setup.ui:54 +msgid "Always" +msgstr "常に表示する" -#: ../data/ibus.schemas.in.h:3 -msgid "Custom font name for language panel" -msgstr "言語パネル用のカスタムフォント名" +#: setup/setup.ui:113 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "一覧内の次の入力メソッドに切り替えるためのショートカットキー" -#: ../data/ibus.schemas.in.h:4 -msgid "Disable shortcut keys" -msgstr "ショートカットキーを無効にする" +#: setup/setup.ui:115 +msgid "Next input method:" +msgstr "次の入力メソッド:" -#: ../data/ibus.schemas.in.h:5 -msgid "Embed Preedit Text" -msgstr "前編集テキストを組み込む" +#: setup/setup.ui:127 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "一覧内のひとつ前の入力メソッドに切り替えるためのショートカットキー" -#: ../data/ibus.schemas.in.h:6 -msgid "Embed Preedit Text in Application Window" -msgstr "アプリケーションウィンドウにプリエディットテキストを組み込む" +#: setup/setup.ui:129 +msgid "Previous input method:" +msgstr "ひとつ前の入力メソッド:" -#: ../data/ibus.schemas.in.h:7 -msgid "Enable input method by default" -msgstr "標準でインプットメソッドを有効にする" +#: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 +#: setup/setup.ui:903 setup/setup.ui:957 +msgid "..." +msgstr "…" -#: ../data/ibus.schemas.in.h:8 -msgid "Enable input method by default when the application gets input focus" -msgstr "アプリケーションに入力フォーカスが当たったとき標準でインプットメソッドを有効にする" +#: setup/setup.ui:226 +msgid "Enable or disable:" +msgstr "切り替え:" -#: ../data/ibus.schemas.in.h:9 -msgid "Enable shortcut keys" -msgstr "ショートカットキーを有効にする" +#: setup/setup.ui:238 +msgid "Enable:" +msgstr "有効:" -#: ../data/ibus.schemas.in.h:10 -msgid "Language panel position" -msgstr "言語パネルの位置" +#: setup/setup.ui:291 +msgid "Disable:" +msgstr "無効:" -#: ../data/ibus.schemas.in.h:11 -msgid "Next engine shortcut keys" -msgstr "次のエンジンへのショートカットキー" +#: setup/setup.ui:345 setup/setup.ui:983 +msgid "Keyboard Shortcuts" +msgstr "キーボードショートカット" -#: ../data/ibus.schemas.in.h:12 -msgid "Orientation of lookup table" -msgstr "検索テーブルの方位" +#: setup/setup.ui:374 +msgid "Set the orientation of candidates in lookup table" +msgstr "ルックアップテーブルの中で候補ウィンドウの向きを設定します" -#: ../data/ibus.schemas.in.h:13 -msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" -msgstr "検索テーブルの方位。0 = 横、1 = 縦" +#: setup/setup.ui:376 +msgid "Candidates orientation:" +msgstr "候補ウィンドウの向き:" -#: ../data/ibus.schemas.in.h:14 -msgid "Preload engines" -msgstr "エンジンのプリロード" +#: setup/setup.ui:407 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "言語バーをどのように表示するもしくは隠すかの ibus の動作を設定します" -#: ../data/ibus.schemas.in.h:15 -msgid "Preload engines during ibus starts up" -msgstr "ibus の開始中にエンジンをプリロード" +#: setup/setup.ui:409 +msgid "Show property panel:" +msgstr "プロパティーパネルを表示する:" -#: ../data/ibus.schemas.in.h:16 -msgid "Prev engine shortcut keys" -msgstr "前のエンジンへのショートカットキー" +#: setup/setup.ui:423 +msgid "Language panel position:" +msgstr "言語パネルの位置:" -#: ../data/ibus.schemas.in.h:17 ../setup/setup.ui.h:42 -msgid "Share the same input method among all applications" -msgstr "すべてのアプリケーション間で同じインプットメソッドを共有する" +#: setup/setup.ui:494 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "" +"チェックボックスにチェック付けると、言語バーに入力メソッド名が表示されます" -#: ../data/ibus.schemas.in.h:18 ../setup/setup.ui.h:43 -msgid "Show icon on system tray" -msgstr "システムトレイにアイコンを表示する" +#: setup/setup.ui:508 +msgid "Embed preedit text in application window" +msgstr "アプリケーションウィンドウに前編集テキストを組み込む" -#: ../data/ibus.schemas.in.h:19 -msgid "Show input method name" -msgstr "インプットメソッド名を表示する" +#: setup/setup.ui:513 +msgid "Embed the preedit text of input method in the application window" +msgstr "" +"アプリケーションウィンドウに入力メソッドのプリエディットテキストを組み込みま" +"す" -#: ../data/ibus.schemas.in.h:20 ../setup/setup.ui.h:45 -msgid "Show input method name on language bar" -msgstr "言語バーにインプットメソッド名を表示する" +#: setup/setup.ui:527 +msgid "Use custom font:" +msgstr "カスタムフォントを使う:" -#: ../data/ibus.schemas.in.h:21 -msgid "" -"The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = " -"Always show" -msgstr "言語パネルの動作。0 = メニューに組み込む、1 = 自動的に隠す、2 = 常に表示" +#: setup/setup.ui:562 setup/setup.ui:1156 +msgid "Font and Style" +msgstr "フォントとスタイル" -#: ../data/ibus.schemas.in.h:22 -msgid "" -"The position of the language panel. 0 = Top left corner, 1 = Top right " -"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" -msgstr "言語パネルの位置。0 = 左上隅、1 = 右上隅、2 = 左下隅、3 = 右下隅、4 = カスタム" +#: setup/setup.ui:579 +msgid "General" +msgstr "一般" -#: ../data/ibus.schemas.in.h:23 -msgid "The shortcut keys for switching to the next input method in the list" -msgstr "リスト中の次のインプットメソッドに切り替えるためのショートカットキー" +#: setup/setup.ui:671 +msgid "Add the selected input method into the enabled input methods" +msgstr "選択した入力メソッドを有効な入力メソッドへ追加します" -#: ../data/ibus.schemas.in.h:24 -msgid "The shortcut keys for switching to the previous input method" -msgstr "リスト中のひとつ前のインプットメソッドに切り替えるためのショートカットキー" +#: setup/setup.ui:682 +msgid "_Remove" +msgstr "削除(_R)" -#: ../data/ibus.schemas.in.h:25 -msgid "The shortcut keys for turning input method off" -msgstr "インプットメソッドをオフに切り替えるためのショートカットキー" +#: setup/setup.ui:689 +msgid "Remove the selected input method from the enabled input methods" +msgstr "選択した入力メソッドを有効な入力メソッドから削除します" -#: ../data/ibus.schemas.in.h:26 -msgid "The shortcut keys for turning input method on" -msgstr "インプットメソッドをオンに切り替えるためのショートカットキー" +#: setup/setup.ui:700 +msgid "_Up" +msgstr "上へ(_U)" -#: ../data/ibus.schemas.in.h:27 ../setup/setup.ui.h:52 -msgid "The shortcut keys for turning input method on or off" -msgstr "インプットメソッドをオン、オフするためのショートカットキーを設定します" +#: setup/setup.ui:707 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "有効な入力メソッド一覧内で選択した入力メソッドを上へ移動させます" -#: ../data/ibus.schemas.in.h:28 -msgid "Trigger shortcut keys" -msgstr "トリガーショートカットキー" +#: setup/setup.ui:718 +msgid "_Down" +msgstr "下へ(_D)" -#: ../data/ibus.schemas.in.h:29 -msgid "Use custom font" -msgstr "カスタムフォントを使う" +#: setup/setup.ui:725 +msgid "Move down the selected input method in the enabled input methods" +msgstr "有効な入力メソッド一覧内で選択した入力メソッドを下へ移動させます" -#: ../data/ibus.schemas.in.h:30 -msgid "Use custom font name for language panel" -msgstr "言語パネル用にカスタムフォント名を使用する" +#: setup/setup.ui:736 +msgid "_About" +msgstr "情報(_A)" -#: ../data/ibus.schemas.in.h:31 -msgid "Use global input method" -msgstr "グローバルインプットメソッドを使用する" +#: setup/setup.ui:743 +msgid "Show information of the selected input method" +msgstr "選択した入力メソッドの情報を表示します" -#: ../data/ibus.schemas.in.h:32 ../setup/setup.ui.h:56 -msgid "Use system keyboard (XKB) layout" -msgstr "システムキーボード (XKB) レイアウトを使用する" +#: setup/setup.ui:754 +msgid "_Preferences" +msgstr "設定(_P)" -#: ../data/ibus.schemas.in.h:33 ../setup/setup.ui.h:57 -msgid "Use system keyboard layout" -msgstr "システムキーボードレイアウトを使用する" +#: setup/setup.ui:761 +msgid "Show setup of the selected input method" +msgstr "選択した入力メソッドの設定を表示します" -#: ../setup/setup.ui.h:1 -msgid "..." -msgstr "..." +#: setup/setup.ui:812 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" +"アクティブなインプットメソッドは、キーボードショートカットキーを押" +"すかパネルアイコンをクリックすることによってリストされている中から1つのイン" +"プットメソッドを選択することで切り替えることが可能です。" -#: ../setup/setup.ui.h:2 -msgid "Font and Style" -msgstr "フォントとスタイル" +#: setup/setup.ui:873 +msgid "" +"The shortcut keys to enable conversions of emoji annotations or Unicode names" +msgstr "絵文字ルビまたは Unicode 名の変換を可能にするショートカットキー" -#: ../setup/setup.ui.h:3 -msgid "Global input method settings" -msgstr "グローバルインプットメソッドの設定" +#: setup/setup.ui:875 +msgid "Emoji annotation:" +msgstr "絵文字ルビ:" -#: ../setup/setup.ui.h:4 -msgid "Keyboard Layout" -msgstr "キーボードレイアウト" +#: setup/setup.ui:927 +msgid "The shortcut keys to enable Unicode code point conversions" +msgstr "Unicode コードポイント変換を可能にするショートかっトーキー" -#: ../setup/setup.ui.h:5 -msgid "Keyboard Shortcuts" -msgstr "キーボードショートカット" +#: setup/setup.ui:929 +msgid "Unicode code point:" +msgstr "Unicode コードポイント:" + +#: setup/setup.ui:1013 +msgid "Set a font of Unicode candidates on the emoji dialog" +msgstr "絵文字ダイアログ上の Unicode 候補のフォントを設定" -#: ../setup/setup.ui.h:6 -msgid "Startup" -msgstr "スタートアップ" +#: setup/setup.ui:1015 +msgid "Unicode font:" +msgstr "Unicode フォント:" -#: ../setup/setup.ui.h:7 +#: setup/setup.ui:1038 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "絵文字ダイアログ上の絵文字ルビの言語を設定します" + +#: setup/setup.ui:1040 +msgid "Emoji annotation language:" +msgstr "絵文字ルビの言語:" + +#: setup/setup.ui:1062 msgid "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" -msgstr "" -"IBus\n" -"インテリジェントなインプットバス\n" -"ホームページ: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" +"Match emoji annotations partially with the following condition and more than " +"the number of characters:" +msgstr "絵文字ルビを次の条件と文字数以上で部分一致させる:" + +#: setup/setup.ui:1067 +msgid "" +"If emoji annotations can be matched with a partial string instead of the " +"exact match" +msgstr "絵文字ルビを完全一致ではなく部分文字列で一致させることが可能かどうか" + +#: setup/setup.ui:1101 +msgid "Prefix match" +msgstr "文頭一致" + +#: setup/setup.ui:1115 +msgid "Suffix match" +msgstr "文末一致" -#: ../setup/setup.ui.h:14 +#: setup/setup.ui:1130 +msgid "Containing match" +msgstr "文中一致" + +#: setup/setup.ui:1176 +msgid "Emoji" +msgstr "絵文字" + +#: setup/setup.ui:1230 +msgid "Keyboard Layout" +msgstr "キーボードレイアウト" + +#: setup/setup.ui:1278 +msgid "Global input method settings" +msgstr "グローバル入力メソッドの設定" + +#: setup/setup.ui:1310 msgid "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." +"Choose glyphs with the input method's language on the candidate window for " +"the duplicated code points" msgstr "" -"デフォルトのインプットメソッドはリストの中で一番上のものです。\n" -"「上へ/下へ」ボタンを使ってデフォルトを変更できます。" +"重複したコードポイントのために候補ウィンドウ上でインプットメソッドの言語でグ" +"リフを選択する" -#: ../setup/setup.ui.h:17 -msgid "Add the selected input method into the enabled input methods" -msgstr "選択したインプットメソッドを有効なインプットメソッドへ追加します" +#: setup/setup.ui:1327 +msgid "Fonts" +msgstr "フォント" -#: ../setup/setup.ui.h:18 +#: setup/setup.ui:1347 msgid "Advanced" msgstr "詳細" -#: ../setup/setup.ui.h:19 -msgid "Always" -msgstr "常に表示する" +#: src/ibusemojigen.h:30 +msgid "Activities" +msgstr "活動" + +#: src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "動物と自然" + +#: src/ibusemojigen.h:32 +msgid "Component" +msgstr "構成要素" + +#: src/ibusemojigen.h:33 +msgid "Flags" +msgstr "国旗" + +#: src/ibusemojigen.h:34 +msgid "Food & Drink" +msgstr "食べ物と飲み物" + +#: src/ibusemojigen.h:35 +msgid "Objects" +msgstr "物体" + +#: src/ibusemojigen.h:36 +msgid "People & Body" +msgstr "人と体" + +#: src/ibusemojigen.h:37 +msgid "Smileys & Emotion" +msgstr "顔文字と感情" + +#: src/ibusemojigen.h:38 +msgid "Symbols" +msgstr "記号" + +#: src/ibusemojigen.h:39 +msgid "Travel & Places" +msgstr "旅行と場所" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:33 +msgid "Basic Latin" +msgstr "基本ラテン文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:37 +msgid "Latin-1 Supplement" +msgstr "ラテン1補助" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:41 +msgid "Latin Extended-A" +msgstr "ラテン文字拡張 A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:45 +msgid "Latin Extended-B" +msgstr "ラテン文字拡張 B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:49 +msgid "IPA Extensions" +msgstr "IPA 拡張" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:53 +msgid "Spacing Modifier Letters" +msgstr "前進を伴う修飾文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:57 +msgid "Combining Diacritical Marks" +msgstr "ダイアクリティカルマーク (合成可能)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:61 +msgid "Greek and Coptic" +msgstr "ギリシア文字及びコプト文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:65 +msgid "Cyrillic" +msgstr "キリール文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:69 +msgid "Cyrillic Supplement" +msgstr "キリール文字補助" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:73 +msgid "Armenian" +msgstr "アルメニア文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:77 +msgid "Hebrew" +msgstr "ヘブライ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:81 +msgid "Arabic" +msgstr "アラビア文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:85 +msgid "Syriac" +msgstr "シリア文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:89 +msgid "Arabic Supplement" +msgstr "アラビア文字補助" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:93 +msgid "Thaana" +msgstr "ターナ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:97 +msgid "NKo" +msgstr "ンコ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:101 +msgid "Samaritan" +msgstr "サマリア文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:105 +msgid "Mandaic" +msgstr "マンダ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:109 +msgid "Syriac Supplement" +msgstr "シリア文字補助" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:113 +msgid "Arabic Extended-B" +msgstr "アラビア文字拡張 B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:117 +msgid "Arabic Extended-A" +msgstr "アラビア文字拡張 A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:121 +msgid "Devanagari" +msgstr "デーヴァナーガリー文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:125 +msgid "Bengali" +msgstr "ベンガル文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:129 +msgid "Gurmukhi" +msgstr "グルムキー文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:133 +msgid "Gujarati" +msgstr "グジャラート文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:137 +msgid "Oriya" +msgstr "オリヤー文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:141 +msgid "Tamil" +msgstr "タミル文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:145 +msgid "Telugu" +msgstr "テルグ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:149 +msgid "Kannada" +msgstr "カンナダ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:153 +msgid "Malayalam" +msgstr "マラヤーラム文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:157 +msgid "Sinhala" +msgstr "シンハラ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:161 +msgid "Thai" +msgstr "タイ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:165 +msgid "Lao" +msgstr "ラオス文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:169 +msgid "Tibetan" +msgstr "チベット文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:173 +msgid "Myanmar" +msgstr "ミャンマー文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:177 +msgid "Georgian" +msgstr "グルジア文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:181 +msgid "Hangul Jamo" +msgstr "ハングル字母" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:185 +msgid "Ethiopic" +msgstr "エチオピア文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:189 +msgid "Ethiopic Supplement" +msgstr "エチオピア文字補助" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:193 +msgid "Cherokee" +msgstr "チェロキー文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:197 +msgid "Unified Canadian Aboriginal Syllabics" +msgstr "統合カナダ先住民音節" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:201 +msgid "Ogham" +msgstr "オガム文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:205 +msgid "Runic" +msgstr "ルーン文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:209 +msgid "Tagalog" +msgstr "タガログ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:213 +msgid "Hanunoo" +msgstr "ハヌノオ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:217 +msgid "Buhid" +msgstr "ブヒッド文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:221 +msgid "Tagbanwa" +msgstr "タグバヌア文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:225 +msgid "Khmer" +msgstr "クメール文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:229 +msgid "Mongolian" +msgstr "モンゴル文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:233 +msgid "Unified Canadian Aboriginal Syllabics Extended" +msgstr "統合カナダ先住民音節拡張" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:237 +msgid "Limbu" +msgstr "リンブ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:241 +msgid "Tai Le" +msgstr "タイ ロ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:245 +msgid "New Tai Lue" +msgstr "新タイ ロ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:249 +msgid "Khmer Symbols" +msgstr "クメール文字用記号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:253 +msgid "Buginese" +msgstr "ブギス文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:257 +msgid "Tai Tham" +msgstr "ラーンナー文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:261 +msgid "Combining Diacritical Marks Extended" +msgstr "ダイアクリティカルマーク (合成可能) 拡張" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:265 +msgid "Balinese" +msgstr "バリ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:269 +msgid "Sundanese" +msgstr "スンダ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:273 +msgid "Batak" +msgstr "バタク文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:277 +msgid "Lepcha" +msgstr "レプチャ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:281 +msgid "Ol Chiki" +msgstr "オル・チキ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:285 +msgid "Cyrillic Extended-C" +msgstr "キリール文字拡張 C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:289 +msgid "Georgian Extended" +msgstr "グルジア文字補助" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:293 +msgid "Sundanese Supplement" +msgstr "スンダ文字補助" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:297 +msgid "Vedic Extensions" +msgstr "ヴェーダ文字拡張" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:301 +msgid "Phonetic Extensions" +msgstr "音声記号拡張" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:305 +msgid "Phonetic Extensions Supplement" +msgstr "音声記号拡張補助" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:309 +msgid "Combining Diacritical Marks Supplement" +msgstr "ダイアクリティカルマーク (合成可能) 補助" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:313 +msgid "Latin Extended Additional" +msgstr "ラテン文字拡張追加" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:317 +msgid "Greek Extended" +msgstr "ギリシア文字拡張" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:321 +msgid "General Punctuation" +msgstr "一般句読点" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:325 +msgid "Superscripts and Subscripts" +msgstr "上付き・下付き" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:329 +msgid "Currency Symbols" +msgstr "通貨記号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:333 +msgid "Combining Diacritical Marks for Symbols" +msgstr "記号用ダイアクリティカルマーク (合成可能)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:337 +msgid "Letterlike Symbols" +msgstr "文字様記号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:341 +msgid "Number Forms" +msgstr "数字に準じるもの" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:345 +msgid "Arrows" +msgstr "矢印" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:349 +msgid "Mathematical Operators" +msgstr "数学記号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:353 +msgid "Miscellaneous Technical" +msgstr "その他の技術用記号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:357 +msgid "Control Pictures" +msgstr "制御機能用記号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:361 +msgid "Optical Character Recognition" +msgstr "光学的文字認識、OCR" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:365 +msgid "Enclosed Alphanumerics" +msgstr "囲み英数字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:369 +msgid "Box Drawing" +msgstr "けい線素片" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:373 +msgid "Block Elements" +msgstr "ブロック要素" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:377 +msgid "Geometric Shapes" +msgstr "幾何学模様" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:381 +msgid "Miscellaneous Symbols" +msgstr "その他の記号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:385 +msgid "Dingbats" +msgstr "装飾記号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:389 +msgid "Miscellaneous Mathematical Symbols-A" +msgstr "その他の数学記号 A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:393 +msgid "Supplemental Arrows-A" +msgstr "補助矢印 A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:397 +msgid "Braille Patterns" +msgstr "点字図形" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:401 +msgid "Supplemental Arrows-B" +msgstr "補助矢印 B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:405 +msgid "Miscellaneous Mathematical Symbols-B" +msgstr "その他の数学記号 B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:409 +msgid "Supplemental Mathematical Operators" +msgstr "補助数学記号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:413 +msgid "Miscellaneous Symbols and Arrows" +msgstr "その他の記号及び矢印" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:417 +msgid "Glagolitic" +msgstr "グラゴル文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:421 +msgid "Latin Extended-C" +msgstr "ラテン文字拡張 C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:425 +msgid "Coptic" +msgstr "コプト文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:429 +msgid "Georgian Supplement" +msgstr "グルジア文字補助" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:433 +msgid "Tifinagh" +msgstr "ティフナグ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:437 +msgid "Ethiopic Extended" +msgstr "エチオピア文字拡張" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:441 +msgid "Cyrillic Extended-A" +msgstr "キリール文字拡張 A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:445 +msgid "Supplemental Punctuation" +msgstr "補助句読点" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:449 +msgid "CJK Radicals Supplement" +msgstr "CJK 部首補助" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:453 +msgid "Kangxi Radicals" +msgstr "康熙部首" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:457 +msgid "Ideographic Description Characters" +msgstr "漢字構成記述文字、IDC" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:461 +msgid "CJK Symbols and Punctuation" +msgstr "CJK の記号及び句読点" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:465 +msgid "Hiragana" +msgstr "平仮名" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:469 +msgid "Katakana" +msgstr "片仮名" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:473 +msgid "Bopomofo" +msgstr "注音字母" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:477 +msgid "Hangul Compatibility Jamo" +msgstr "ハングル互換字母" + +# JIS のブロック名は KANBUN (CJK miscellaneous)、日本語による通用名称は「漢文用記号 (その他の CJK 文字)」 +# だが、メッセージは Kanbun のみなので訳は「漢文用記号」のみとした +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:481 +msgid "Kanbun" +msgstr "漢文用記号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:485 +msgid "Bopomofo Extended" +msgstr "注音字母拡張" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:489 +msgid "CJK Strokes" +msgstr "CJK の筆画" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:493 +msgid "Katakana Phonetic Extensions" +msgstr "片仮名拡張" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:497 +msgid "Enclosed CJK Letters and Months" +msgstr "囲み CJK 文字・月" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:501 +msgid "CJK Compatibility" +msgstr "CJK 互換用文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:505 +msgid "CJK Unified Ideographs Extension A" +msgstr "CJK 統合漢字拡張 A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:509 +msgid "Yijing Hexagram Symbols" +msgstr "易経記号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:513 +msgid "CJK Unified Ideographs" +msgstr "CJK 統合漢字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:517 +msgid "Yi Syllables" +msgstr "イ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:521 +msgid "Yi Radicals" +msgstr "イ文字部首" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:525 +msgid "Lisu" +msgstr "リス文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:529 +msgid "Vai" +msgstr "ヴァイ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:533 +msgid "Cyrillic Extended-B" +msgstr "キリール文字拡張 B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:537 +msgid "Bamum" +msgstr "バムン文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:541 +msgid "Modifier Tone Letters" +msgstr "声調修飾文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:545 +msgid "Latin Extended-D" +msgstr "ラテン文字拡張 D" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:549 +msgid "Syloti Nagri" +msgstr "シロティナグリ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:553 +msgid "Common Indic Number Forms" +msgstr "共通インド数字に準じるもの" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:557 +msgid "Phags-pa" +msgstr "パスパ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:561 +msgid "Saurashtra" +msgstr "サウラーシュトラ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:565 +msgid "Devanagari Extended" +msgstr "デーヴァナーガリー文字拡張" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:569 +msgid "Kayah Li" +msgstr "カヤー文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:573 +msgid "Rejang" +msgstr "ルジャン文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:577 +msgid "Hangul Jamo Extended-A" +msgstr "ハングル字母拡張 A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:581 +msgid "Javanese" +msgstr "ジャワ文字" + +# 「ミャンマー文字拡張 A」と合わせた +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:585 +msgid "Myanmar Extended-B" +msgstr "ミャンマー文字拡張 B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:589 +msgid "Cham" +msgstr "チャム文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:593 +msgid "Myanmar Extended-A" +msgstr "ミャンマー文字拡張 A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:597 +msgid "Tai Viet" +msgstr "タイ・ヴェト文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:601 +msgid "Meetei Mayek Extensions" +msgstr "マニプリ文字拡張" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:605 +msgid "Ethiopic Extended-A" +msgstr "エチオピア文字拡張 A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:609 +msgid "Latin Extended-E" +msgstr "ラテン文字拡張 E" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:613 +msgid "Cherokee Supplement" +msgstr "チェロキー文字補助" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:617 +msgid "Meetei Mayek" +msgstr "マニプリ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:621 +msgid "Hangul Syllables" +msgstr "ハングル音節文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:625 +msgid "Hangul Jamo Extended-B" +msgstr "ハングル字母拡張 B" + +# サロゲートペアは JIS(UCS) になし。 +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:629 +msgid "High Surrogates" +msgstr "上位代用符号位置" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:633 +msgid "High Private Use Surrogates" +msgstr "上位私用代用符号位置" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:637 +msgid "Low Surrogates" +msgstr "下位代用符号位置" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:641 +msgid "Private Use Area" +msgstr "私用領域" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:645 +msgid "CJK Compatibility Ideographs" +msgstr "CJK 互換漢字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:649 +msgid "Alphabetic Presentation Forms" +msgstr "アルファベット表示形" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:653 +msgid "Arabic Presentation Forms-A" +msgstr "アラビア表示形 A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:657 +msgid "Variation Selectors" +msgstr "字形選択子" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:661 +msgid "Vertical Forms" +msgstr "縦書き形" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:665 +msgid "Combining Half Marks" +msgstr "半記号 (合成可能)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:669 +msgid "CJK Compatibility Forms" +msgstr "CJK 互換形" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:673 +msgid "Small Form Variants" +msgstr "小字形" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:677 +msgid "Arabic Presentation Forms-B" +msgstr "アラビア表示形 B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:681 +msgid "Halfwidth and Fullwidth Forms" +msgstr "半角・全角形" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:685 +msgid "Specials" +msgstr "特殊用途文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:689 +msgid "Linear B Syllabary" +msgstr "線文字 B 音節文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:693 +msgid "Linear B Ideograms" +msgstr "線文字 B 表意文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:697 +msgid "Aegean Numbers" +msgstr "エーゲ数字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:701 +msgid "Ancient Greek Numbers" +msgstr "古代ギリシア数字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:705 +msgid "Ancient Symbols" +msgstr "古代記号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:709 +msgid "Phaistos Disc" +msgstr "ファイストスの円盤の文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:713 +msgid "Lycian" +msgstr "リキア文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:717 +msgid "Carian" +msgstr "カリア文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:721 +msgid "Coptic Epact Numbers" +msgstr "コプト・エパクト数字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:725 +msgid "Old Italic" +msgstr "古代イタリア文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:729 +msgid "Gothic" +msgstr "ゴート文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:733 +msgid "Old Permic" +msgstr "古代ペルム文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:737 +msgid "Ugaritic" +msgstr "ウガリト文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:741 +msgid "Old Persian" +msgstr "古代ペルシャ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:745 +msgid "Deseret" +msgstr "デザレット文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:749 +msgid "Shavian" +msgstr "シェイヴィアン文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:753 +msgid "Osmanya" +msgstr "オスマニア文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:757 +msgid "Osage" +msgstr "オセージ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:761 +msgid "Elbasan" +msgstr "エルバサン文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:765 +msgid "Caucasian Albanian" +msgstr "カフカース・アルバニア文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:769 +msgid "Vithkuqi" +msgstr "ビタクチェ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:773 +msgid "Linear A" +msgstr "線文字 A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:777 +msgid "Latin Extended-F" +msgstr "ラテン文字拡張 F" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:781 +msgid "Cypriot Syllabary" +msgstr "キプロス音節文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:785 +msgid "Imperial Aramaic" +msgstr "アラム文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:789 +msgid "Palmyrene" +msgstr "パラミラ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:793 +msgid "Nabataean" +msgstr "ナバテア文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:797 +msgid "Hatran" +msgstr "ハトラ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:801 +msgid "Phoenician" +msgstr "フェニキア文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:805 +msgid "Lydian" +msgstr "リディア文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:809 +msgid "Meroitic Hieroglyphs" +msgstr "メロエ記念碑文体" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:813 +msgid "Meroitic Cursive" +msgstr "メロエ草書体" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:817 +msgid "Kharoshthi" +msgstr "カローシュティー文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:821 +msgid "Old South Arabian" +msgstr "古典南アラビア文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:825 +msgid "Old North Arabian" +msgstr "古典北アラビア文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:829 +msgid "Manichaean" +msgstr "マニ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:833 +msgid "Avestan" +msgstr "アヴェスター文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:837 +msgid "Inscriptional Parthian" +msgstr "碑文パルティア文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:841 +msgid "Inscriptional Pahlavi" +msgstr "碑文パフラヴィー文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:845 +msgid "Psalter Pahlavi" +msgstr "聖詠パフラヴィー文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:849 +msgid "Old Turkic" +msgstr "古テュルク文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:853 +msgid "Old Hungarian" +msgstr "ロヴァーシュ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:857 +msgid "Hanifi Rohingya" +msgstr "ハニーフィー・ロヒンギャ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:861 +msgid "Rumi Numeral Symbols" +msgstr "ルーミー数字記号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:865 +msgid "Yezidi" +msgstr "ヤズィーディー文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:869 +msgid "Old Sogdian" +msgstr "旧ソグド文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:873 +msgid "Sogdian" +msgstr "ソグド文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:877 +msgid "Old Uyghur" +msgstr "古ウイグル文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:881 +msgid "Chorasmian" +msgstr "ホラズム文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:885 +msgid "Elymaic" +msgstr "エリマイス文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:889 +msgid "Brahmi" +msgstr "ブラーフミー文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:893 +msgid "Kaithi" +msgstr "カイティ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:897 +msgid "Sora Sompeng" +msgstr "ソラ・ソンペン文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:901 +msgid "Chakma" +msgstr "チャクマ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:905 +msgid "Mahajani" +msgstr "マハージャニー文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:909 +msgid "Sharada" +msgstr "シャラダ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:913 +msgid "Sinhala Archaic Numbers" +msgstr "シンハラ旧数字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:917 +msgid "Khojki" +msgstr "ホジャ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:921 +msgid "Multani" +msgstr "ムルターニー文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:925 +msgid "Khudawadi" +msgstr "フダーワーディー文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:929 +msgid "Grantha" +msgstr "グランタ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:933 +msgid "Newa" +msgstr "ネワ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:937 +msgid "Tirhuta" +msgstr "ティルフータ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:941 +msgid "Siddham" +msgstr "悉曇文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:945 +msgid "Modi" +msgstr "モーディー文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:949 +msgid "Mongolian Supplement" +msgstr "モンゴル文字補助" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:953 +msgid "Takri" +msgstr "タクリ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:957 +msgid "Ahom" +msgstr "アーホム文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:961 +msgid "Dogra" +msgstr "ドーグリー文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:965 +msgid "Warang Citi" +msgstr "ワラング・クシティ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:969 +msgid "Dives Akuru" +msgstr "ディヴェ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:973 +msgid "Nandinagari" +msgstr "ナンディナーガリー文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:977 +msgid "Zanabazar Square" +msgstr "ザナバザル方形文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:981 +msgid "Soyombo" +msgstr "ソヨンボ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:985 +msgid "Unified Canadian Aboriginal Syllabics Extended-A" +msgstr "統合カナダ先住民音節拡張 A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:989 +msgid "Pau Cin Hau" +msgstr "パウ・チン・ハウ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:993 +msgid "Bhaiksuki" +msgstr "バイクシュキー文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:997 +msgid "Marchen" +msgstr "マルチェン文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1001 +msgid "Masaram Gondi" +msgstr "マサラム・ゴーンディー文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1005 +msgid "Gunjala Gondi" +msgstr "グンジャラ・ゴーンディー文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1009 +msgid "Makasar" +msgstr "マカサル文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1013 +msgid "Lisu Supplement" +msgstr "リス文字補助" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1017 +msgid "Tamil Supplement" +msgstr "タミル文字補助" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1021 +msgid "Cuneiform" +msgstr "くさび形文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1025 +msgid "Cuneiform Numbers and Punctuation" +msgstr "くさび形文字の数字及び句読点" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1029 +msgid "Early Dynastic Cuneiform" +msgstr "シュメール楔形文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1033 +msgid "Cypro-Minoan" +msgstr "キュプロ・ミノア文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1037 +msgid "Egyptian Hieroglyphs" +msgstr "ヒエログリフ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1041 +msgid "Egyptian Hieroglyph Format Controls" +msgstr "ヒエログリフ文字書式制御記号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1045 +msgid "Anatolian Hieroglyphs" +msgstr "アナトリア・ヒエログリフ" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1049 +msgid "Bamum Supplement" +msgstr "バムン文字補助" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1053 +msgid "Mro" +msgstr "ムロ文字" + +# タングサ文字 or タンサ文字 in インド +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1057 +msgid "Tangsa" +msgstr "" -#: ../setup/setup.ui.h:20 -msgid "Bottom left corner" -msgstr "左下隅" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1061 +msgid "Bassa Vah" +msgstr "バサ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1065 +msgid "Pahawh Hmong" +msgstr "パハウ・フモン文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1069 +msgid "Medefaidrin" +msgstr "メデファイドリン文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1073 +msgid "Miao" +msgstr "ポラード文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1077 +msgid "Ideographic Symbols and Punctuation" +msgstr "漢字の記号及び句読点" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1081 +msgid "Tangut" +msgstr "西夏文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1085 +msgid "Tangut Components" +msgstr "西南文字の構成要素" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1089 +msgid "Khitan Small Script" +msgstr "契丹小さなスクリプト" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1093 +msgid "Tangut Supplement" +msgstr "西夏文字補助" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1097 +msgid "Kana Extended-B" +msgstr "仮名文字拡張 B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1101 +msgid "Kana Supplement" +msgstr "仮名文字補助" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1105 +msgid "Kana Extended-A" +msgstr "仮名文字拡張 A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1109 +msgid "Small Kana Extension" +msgstr "小書き仮名拡張" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1113 +msgid "Nushu" +msgstr "女書" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1117 +msgid "Duployan" +msgstr "デュプロワイエ式速記" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1121 +msgid "Shorthand Format Controls" +msgstr "速記書式制御記号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1125 +msgid "Znamenny Musical Notation" +msgstr "ズナメニ聖歌記譜法" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1129 +msgid "Byzantine Musical Symbols" +msgstr "ビザンチン音楽記号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1133 +msgid "Musical Symbols" +msgstr "音楽記号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1137 +msgid "Ancient Greek Musical Notation" +msgstr "古代ギリシア記譜法" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1141 +msgid "Mayan Numerals" +msgstr "マヤ数字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1145 +msgid "Tai Xuan Jing Symbols" +msgstr "太玄経記号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1149 +msgid "Counting Rod Numerals" +msgstr "算木用数字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1153 +msgid "Mathematical Alphanumeric Symbols" +msgstr "数学用英数字記号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1157 +msgid "Sutton SignWriting" +msgstr "サットン手話表記法" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1161 +msgid "Latin Extended-G" +msgstr "ラテン文字拡張 G" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1165 +msgid "Glagolitic Supplement" +msgstr "グラゴル文文字補助" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1169 +msgid "Nyiakeng Puachue Hmong" +msgstr "ニアケン・プアチェ・フモン文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1173 +msgid "Toto" +msgstr "トト文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1177 +msgid "Wancho" +msgstr "ワンチョ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1181 +msgid "Ethiopic Extended-B" +msgstr "エチオピア文字拡張 B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1185 +msgid "Mende Kikakui" +msgstr "メンデ文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1189 +msgid "Adlam" +msgstr "アドラム文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1193 +msgid "Indic Siyaq Numbers" +msgstr "インド・シヤク数字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1197 +msgid "Ottoman Siyaq Numbers" +msgstr "オスマン・シヤク数字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1201 +msgid "Arabic Mathematical Alphabetic Symbols" +msgstr "アラビア数学用英数字記号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1205 +msgid "Mahjong Tiles" +msgstr "麻雀牌" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1209 +msgid "Domino Tiles" +msgstr "ドミノ牌" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1213 +msgid "Playing Cards" +msgstr "トランプ" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1217 +msgid "Enclosed Alphanumeric Supplement" +msgstr "囲み英数字補助" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1221 +msgid "Enclosed Ideographic Supplement" +msgstr "囲み表意文字補助" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1225 +msgid "Miscellaneous Symbols and Pictographs" +msgstr "その他の記号と絵文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1229 +msgid "Emoticons" +msgstr "顔文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1233 +msgid "Ornamental Dingbats" +msgstr "オーナメント" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1237 +msgid "Transport and Map Symbols" +msgstr "交通と地図の記号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1241 +msgid "Alchemical Symbols" +msgstr "錬金術記号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1245 +msgid "Geometric Shapes Extended" +msgstr "幾何学模様拡張" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1249 +msgid "Supplemental Arrows-C" +msgstr "補助矢印 C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1253 +msgid "Supplemental Symbols and Pictographs" +msgstr "補助記号と絵文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1257 +msgid "Chess Symbols" +msgstr "チェス記号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1261 +msgid "Symbols and Pictographs Extended-A" +msgstr "記号と絵文字拡張 A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1265 +msgid "Symbols for Legacy Computing" +msgstr "レガシーコンピューティングのシンボル" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1269 +msgid "CJK Unified Ideographs Extension B" +msgstr "CJK 統合漢字拡張 B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1273 +msgid "CJK Unified Ideographs Extension C" +msgstr "CJK 統合漢字拡張 C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1277 +msgid "CJK Unified Ideographs Extension D" +msgstr "CJK 統合漢字拡張 D" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1281 +msgid "CJK Unified Ideographs Extension E" +msgstr "CJK 統合漢字拡張 E" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1285 +msgid "CJK Unified Ideographs Extension F" +msgstr "CJK 統合漢字拡張 F" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1289 +msgid "CJK Compatibility Ideographs Supplement" +msgstr "CJK 互換漢字補助" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1293 +msgid "CJK Unified Ideographs Extension G" +msgstr "CJK 統合漢字拡張 G" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1297 +msgid "Tags" +msgstr "タグ" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1301 +msgid "Variation Selectors Supplement" +msgstr "字形選択子補助" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1305 +msgid "Supplementary Private Use Area-A" +msgstr "補助私用領域 A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1309 +msgid "Supplementary Private Use Area-B" +msgstr "補助私用領域 B" + +#: tools/main.vala:51 +msgid "List engine name only" +msgstr "エンジン名のみ表示" + +#: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 +msgid "Can't connect to IBus.\n" +msgstr "IBus に接続できません。\n" + +#: tools/main.vala:93 +#, c-format +msgid "language: %s\n" +msgstr "言語: %s\n" -#: ../setup/setup.ui.h:21 -msgid "Bottom right corner" -msgstr "右下隅" +#: tools/main.vala:161 +msgid "No engine is set.\n" +msgstr "エンジンが設定されていません。\n" -#: ../setup/setup.ui.h:22 -msgid "Candidates orientation:" -msgstr "候補ウィンドウの向き:" +#: tools/main.vala:169 +msgid "Set global engine failed.\n" +msgstr "グローバルエンジンの設定に失敗しました。\n" -#: ../setup/setup.ui.h:23 -msgid "Custom" -msgstr "カスタム" +#: tools/main.vala:174 +msgid "Get global engine failed.\n" +msgstr "グローバルエンジンの取得に失敗しました。\n" -#: ../setup/setup.ui.h:24 -msgid "Disable:" -msgstr "無効:" +#: tools/main.vala:217 +msgid "Read the system registry cache." +msgstr "システムレジストリーキャッシュを読み込みます。" -#: ../setup/setup.ui.h:25 -msgid "Embed preedit text in application window" -msgstr "アプリケーションウィンドウに前編集テキストを組み込む" +#: tools/main.vala:219 +msgid "Read the registry cache FILE." +msgstr "レジストリーキャッシュ FILE を読み込みます。" -#: ../setup/setup.ui.h:26 -msgid "Embed the preedit text of input method in the application window" -msgstr "アプリケーションウィンドウにインプットメソッドのプリエディットテキストを組み込みます" +#: tools/main.vala:237 tools/main.vala:242 +msgid "The registry cache is invalid.\n" +msgstr "レジストリーキャッシュは無効です。\n" -#: ../setup/setup.ui.h:27 -msgid "Embedded in menu" -msgstr "メニューに組み込む" +#: tools/main.vala:257 +msgid "Write the system registry cache." +msgstr "システムレジストリーキャッシュを書き込みます。" -#: ../setup/setup.ui.h:28 -msgid "Enable or disable:" -msgstr "切り替え" +#: tools/main.vala:259 +msgid "Write the registry cache FILE." +msgstr "レジストリーキャッシュ FILE を書き込みます。" -#: ../setup/setup.ui.h:29 -msgid "Enable:" -msgstr "有効:" +#: tools/main.vala:295 +msgid "" +"Use engine schema paths instead of ibus core, which can be comma-separated " +"values." +msgstr "" +"ibus コアの代わりにエンジンのスキーマパスを使用し、コンマで区切られた値が可能" +"です。" -#: ../setup/setup.ui.h:30 -msgid "General" -msgstr "一般" +#: tools/main.vala:381 +msgid "Resetting…" +msgstr "初期化中…" -#: ../setup/setup.ui.h:31 -msgid "Horizontal" -msgstr "横" +#: tools/main.vala:399 +msgid "Done" +msgstr "完了" -#: ../setup/setup.ui.h:34 -msgid "Language panel position:" -msgstr "言語パネルの位置" +#: tools/main.vala:444 +msgid "Set or get engine" +msgstr "エンジンを設定もしくは表示する" -#: ../setup/setup.ui.h:35 -msgid "Move down the selected input method in the enabled input methods" -msgstr "選択したインプットメソッドを有効なインプットメソッドの中で下へ移動します" +#: tools/main.vala:445 +msgid "Exit ibus-daemon" +msgstr "ibus-daemon を終了する" -#: ../setup/setup.ui.h:36 -msgid "Move up the selected input method in the enabled input methods list" -msgstr "選択したインプットメソッドを有効なインプットメソッドの中で上へ移動します" +#: tools/main.vala:446 +msgid "Show available engines" +msgstr "利用可能なエンジンを表示する" -#: ../setup/setup.ui.h:37 -msgid "Next input method:" -msgstr "次のインプットメソッド:" +#: tools/main.vala:447 +msgid "(Not implemented)" +msgstr "(実装されていません)" -#: ../setup/setup.ui.h:38 -msgid "Previous input method:" -msgstr "ひとつ前のインプットメソッド:" +#: tools/main.vala:448 +msgid "Restart ibus-daemon" +msgstr "ibus-daemon を再起動する" -#: ../setup/setup.ui.h:39 -msgid "Remove the selected input method from the enabled input methods" -msgstr "選択したインプットメソッドを有効なインプットメソッドから削除します" +#: tools/main.vala:449 +msgid "Show version" +msgstr "バージョンを表示する" -#: ../setup/setup.ui.h:40 -msgid "Set the behavior of ibus how to show or hide language bar" -msgstr "言語バーをどのように表示するもしくは隠すかの ibus の動作を設定します" +#: tools/main.vala:450 +msgid "Show the content of registry cache" +msgstr "レジストリーキャッシュの内容を表示する" -#: ../setup/setup.ui.h:41 -msgid "Set the orientation of candidates in lookup table" -msgstr "ルックアップテーブルの中で候補ウィンドウの向きを設定します" +#: tools/main.vala:451 +msgid "Create registry cache" +msgstr "レジストリーキャッシュを作成する" -#: ../setup/setup.ui.h:44 -msgid "Show information of the selected input method" -msgstr "選択したインプットメソッドの情報を表示します" +#: tools/main.vala:452 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "ibus-daemon の D-Bus アドレスを表示する" -#: ../setup/setup.ui.h:46 -msgid "Show input method's name on language bar when check the checkbox" -msgstr "チェックボックスをチェックしたときに言語バー上でインプットメソッドの名前を表示します" +#: tools/main.vala:453 +msgid "Show the configuration values" +msgstr "設定値を表示する" -#: ../setup/setup.ui.h:47 -msgid "Show language panel:" -msgstr "言語パネルの表示:" +#: tools/main.vala:454 +msgid "Reset the configuration values" +msgstr "設定値を初期化する" -#: ../setup/setup.ui.h:48 -msgid "Show setup of the selected input method" -msgstr "選択したインプットメソッドの設定を表示します" +#: tools/main.vala:456 +msgid "Save emoji on dialog to clipboard" +msgstr "ダイアログ上の絵文字をクリップボードに保存する" -#: ../setup/setup.ui.h:49 -msgid "Start ibus on login" -msgstr "ログイン時に IBus を起動" +#: tools/main.vala:458 +msgid "Show this information" +msgstr "この情報を表示する" -#: ../setup/setup.ui.h:50 -msgid "The shortcut keys for switching to next input method in the list" -msgstr "リストの中で次のインプットメソッドに切り替えるためのショートカットキー" +#: tools/main.vala:464 +#, c-format +msgid "" +"Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "" +"使い方: %s コマンド [オプション...]\n" +"\n" -#: ../setup/setup.ui.h:51 -msgid "The shortcut keys for switching to previous input method in the list" -msgstr "リストの中でひとつ前のインプットメソッドに切り替えるためのショートカットキー" +#: tools/main.vala:465 +msgid "Commands:\n" +msgstr "コマンド:\n" -#: ../setup/setup.ui.h:53 -msgid "Top left corner" -msgstr "左上隅" +#: tools/main.vala:494 +#, c-format +msgid "%s is unknown command!\n" +msgstr "%s は不明なコマンドです。\n" -#: ../setup/setup.ui.h:54 -msgid "Top right corner" -msgstr "右上隅" +#: ui/gtk3/emojier.vala:235 +msgid "Favorites" +msgstr "お気に入り" -#: ../setup/setup.ui.h:55 -msgid "Use custom font:" -msgstr "カスタムフォントを使う:" +#: ui/gtk3/emojier.vala:236 +msgid "Others" +msgstr "その他" -#: ../setup/setup.ui.h:58 -msgid "Vertical" -msgstr "縦" +#: ui/gtk3/emojier.vala:237 +msgid "Open Unicode choice" +msgstr "Unicode の選択を開く" + +#: ui/gtk3/emojier.vala:1000 +msgid "Bring back emoji choice" +msgstr "絵文字の選択に戻る" + +#: ui/gtk3/emojier.vala:1103 +msgid "Page Down" +msgstr "ページをめくる" + +#: ui/gtk3/emojier.vala:1114 +msgid "Page Up" +msgstr "ページを戻す" + +#: ui/gtk3/emojier.vala:1117 +msgid "Show emoji variants" +msgstr "絵文字異形を表示する" + +#: ui/gtk3/emojier.vala:1118 +msgid "Close" +msgstr "閉じる" + +#: ui/gtk3/emojier.vala:1124 +msgid "Menu" +msgstr "メニュー" + +#: ui/gtk3/emojier.vala:1135 +msgid "Click to view a warning message" +msgstr "警告メッセージを閲覧するためにクリックしてください" + +#: ui/gtk3/emojier.vala:1179 +msgid "Loading a Unicode dictionary:" +msgstr "Unicode の辞書を読み込んでいます:" + +#: ui/gtk3/emojier.vala:1425 +#, c-format +msgid "Code point: %s" +msgstr "コードポイント: %s" + +#: ui/gtk3/emojier.vala:1431 +msgid "Has emoji variants" +msgstr "絵文字異形あり" + +#: ui/gtk3/emojier.vala:1599 ui/gtk3/emojier.vala:1612 +#, c-format +msgid "Description: %s" +msgstr "説明: %s" + +#: ui/gtk3/emojier.vala:1599 +msgid "None" +msgstr "なし" + +#: ui/gtk3/emojier.vala:1623 +#, c-format +msgid "Annotations: %s" +msgstr "ルビ: %s" + +#: ui/gtk3/emojier.vala:1649 +#, c-format +msgid "Name: %s" +msgstr "名前: %s" + +#: ui/gtk3/emojier.vala:1657 +#, c-format +msgid "Alias: %s" +msgstr "別名: %s" + +#: ui/gtk3/emojier.vala:2180 ui/gtk3/ibus-extension-gtk3.desktop.in:3 +#: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1244 +msgid "Emoji Choice" +msgstr "絵文字の選択" + +#: ui/gtk3/emojier.vala:2182 +msgid "Unicode Choice" +msgstr "Unicode の選択" + +#: ui/gtk3/emojier.vala:2485 +msgid "" +"Failed to get the current text application. Please re-focus your " +"application. E.g. Press Esc key several times to release the emoji typing " +"mode, click your desktop and click your text application again." +msgstr "" +"現在のテキストアプリケーションを取得するのに失敗しました。アプリケーションを" +"再フォーカスさせてください。例えば、Esc キーを数回入力して絵文字入力モードを" +"開放し、デスクトップをクリックして、テキストアプリケーションを再度クリックし" +"てください。" + +#: ui/gtk3/emojierapp.vala:47 +msgid "Canceled to choose an emoji." +msgstr "絵文字の選択を取り消しました。" + +#: ui/gtk3/emojierapp.vala:67 +msgid "Copied an emoji to your clipboard." +msgstr "クリップボードに絵文字をコピーしました。" + +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ui/gtk3/emojierapp.vala:126 +msgid "\"FONT\" for emoji characters on emoji dialog" +msgstr "絵文字ダイアログ上の絵文字用の「フォント」" + +#: ui/gtk3/emojierapp.vala:127 +msgid "FONT" +msgstr "フォント" + +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ui/gtk3/emojierapp.vala:132 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" +msgstr "絵文字ダイアログ上のルビ用の「言語」。例「en」" + +#: ui/gtk3/emojierapp.vala:133 +msgid "LANG" +msgstr "言語" + +#: ui/gtk3/emojierapp.vala:135 +msgid "Emoji annotations can be match partially" +msgstr "絵文字ルビを部分一致させることが可能になる" + +#: ui/gtk3/emojierapp.vala:139 +msgid "Match with the length of the specified integer" +msgstr "指定した数字をもつ長さで一致させる" + +#: ui/gtk3/emojierapp.vala:143 +msgid "Match with the condition of the specified integer" +msgstr "指定した数字の条件で一致させる" + +#: ui/gtk3/panel.vala:320 ui/gtk3/panel.vala:351 +msgid "IBus Panel" +msgstr "IBus パネル" + +#: ui/gtk3/panel.vala:756 +msgid "IBus Notification" +msgstr "IBus 通知" + +#: ui/gtk3/panel.vala:757 ui/gtk3/panel.vala:766 ui/gtk3/panel.vala:770 +msgid "" +"Keymap changes do not work in Plasma Wayland at present. Please use " +"systemsettings5 instead." +msgstr "" +"キーマップ変更は現在、Plasma Wayland で動作しません。代わりに " +"systemsettings5 を使って下さい。" + +#: ui/gtk3/panel.vala:1045 +#, c-format +msgid "" +"Your configured input method %s does not exist in IBus input methods so \"US" +"\" layout was configured instead of your input method." +msgstr "" +"構成された入力メソッド %s は IBus 入力メソッドに存在しないので、\"US\" レイア" +"ウトがあなたの入力メソッドの代わりに構成されました。" + +#: ui/gtk3/panel.vala:1050 +msgid "" +"At least one of your configured input methods does not exist in IBus input " +"methods." +msgstr "" +"構成された入力メソッドの少なくとも1つが IBus 入力メソッドに存在しません。" + +#: ui/gtk3/panel.vala:1053 +msgid "" +"Please run `ibus-setup` command, open \"Input Method\" tab, and configure " +"your input methods again." +msgstr "" +"`ibus-setup` をコマンドを実行して、\"入力メソッド\" タブを開いて、入力メソッ" +"ドを再度構成してください。" + +#: ui/gtk3/panel.vala:1216 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus は Linux/Unix のためのインテリジェントなインプットバスです。" + +#: ui/gtk3/panel.vala:1220 +msgid "translator-credits" +msgstr "" +"UTUMI Hirosi \n" +"IWAI, Masaharu \n" +"日向原 龍一 \n" +"MIZUMOTO, Noriko " + +#: ui/gtk3/panel.vala:1239 +msgid "Preferences" +msgstr "設定" + +#: ui/gtk3/panel.vala:1265 +msgid "Restart" +msgstr "再起動" + +#: ui/gtk3/panel.vala:1269 +msgid "Quit" +msgstr "終了" + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 +msgid "default:LTR" +msgstr "default:LTR" -#: ../setup/setup.ui.h:59 -msgid "When active" -msgstr "アクティブであるとき" +#~ msgid "Kbd" +#~ msgstr "Kbd" diff --git a/po/kn.po b/po/kn.po index cd26c0b70..ad828ea4b 100644 --- a/po/kn.po +++ b/po/kn.po @@ -1,553 +1,3076 @@ -# translation of ibus.master.kn.po to Kannada # Kannada translation of ibus. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2018 Takao Fujiwara # This file is distributed under the same license as the ibus package. # -# Shankar Prasad , 2009, 2010. -# shanky , 2011. +# Translators: +# shanky , 2013-2014 +# shanky , 2012 +# shankar , 2009-2010,2013 +# shanky , 2011-2013 +# fujiwara , 2015. #zanata +# fujiwara , 2018. #zanata msgid "" msgstr "" -"Project-Id-Version: ibus.master.kn\n" -"Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/list\n" -"POT-Creation-Date: 2011-03-08 12:32+0900\n" -"PO-Revision-Date: 2011-03-23 12:03+0000\n" -"Last-Translator: shanky \n" -"Language-Team: kn_IN \n" -"Language: kn\n" +"Project-Id-Version: IBus\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2018-02-20 17:31+0900\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Lokalize 1.0\n" -"Plural-Forms: nplurals=1; plural=0\n" +"PO-Revision-Date: 2018-02-20 04:22-0500\n" +"Last-Translator: Copied by Zanata \n" +"Language-Team: Kannada \n" +"Language: kn\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Zanata 3.9.6\n" +#: ../setup/setup.ui.h:1 +msgid "Horizontal" +msgstr "ಲಂಬ" -#: ../bus/ibus.desktop.in.h:1 -msgid "IBus" -msgstr "IBus" +#: ../setup/setup.ui.h:2 +msgid "Vertical" +msgstr "ಲಂಬ" -#: ../bus/ibus.desktop.in.h:2 -msgid "Input Method Framework" -msgstr "IBus ವಿಧಾನದ ಫ್ರೇಮ್‌ವರ್ಕ್" +#: ../setup/setup.ui.h:3 +msgid "Top left corner" +msgstr "ಮೇಲಿನ ಎಡ ಮೂಲೆ" -#: ../bus/ibus.desktop.in.h:3 -msgid "Start IBus Input Method Framework" -msgstr "IBus ಇನ್‌ಪುಟ್ ವಿಧಾನದ ಫ್ರೇಮ್‌ವರ್ಕ್ ಅನ್ನು ಆರಂಭಿಸು" +#: ../setup/setup.ui.h:4 +msgid "Top right corner" +msgstr "ಮೇಲಿನ ಬಲ ಮೂಲೆ" -#: ../ibus/_config.py.in:39 -msgid "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." -msgstr "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +#: ../setup/setup.ui.h:5 +msgid "Bottom left corner" +msgstr "ಕೆಳಗಿನ ಎಡ ಮೂಲ" -#: ../ibus/lang.py:41 -msgid "Other" -msgstr "ಇತರೆ" +#: ../setup/setup.ui.h:6 +msgid "Bottom right corner" +msgstr "ಕೆಳಗಿನ ಬಲ ಮೂಲ" -#: ../ui/gtk/candidatepanel.py:264 -msgid "Previous page" -msgstr "ಹಿಂದಿನ ಪುಟ" +#: ../setup/setup.ui.h:7 +msgid "Custom" +msgstr "ಇಚ್ಛೆಯ" -#: ../ui/gtk/candidatepanel.py:269 -msgid "Next page" -msgstr "ಮುಂದಿನ ಪುಟ" +#: ../setup/setup.ui.h:8 +msgid "Do not show" +msgstr "ತೋರಿಸಬೇಡ" -#: ../ui/gtk/main.py:55 -msgid "" -"Some input methods have been installed, removed or updated. Please restart " -"ibus input platform." -msgstr "" -"ಕೆಲವು ಇನ್‌ಪುಟ್ ವಿಧಾನಗಳನ್ನು ಅನುಸ್ಥಾಪಿಸಲಾಗಿದೆ, ತೆಗೆದುಹಾಕಲಾಗಿದೆ ಅಥವ ಅಪ್‌ಡೇಟ್ " -"ಮಾಡಲಾಗಿದೆ. ದಯವಿಟ್ಟು ನಿಮ್ಮ ibus ಇನ್‌ಪುಟ್ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ಅನ್ನು ಮರಳಿ ಆರಂಭಿಸಿ." +#: ../setup/setup.ui.h:9 +msgid "Hide automatically" +msgstr "ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಅಡಗಿಸು" -#: ../ui/gtk/main.py:59 -msgid "Restart Now" -msgstr "ಮರಳಿ ಆರಂಭಿಸು" +#: ../setup/setup.ui.h:10 +msgid "Always" +msgstr "ಯಾವಾಗಲೂ" -#: ../ui/gtk/main.py:60 -msgid "Later" -msgstr "ನಂತರ" +#: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 +msgid "IBus Preferences" +msgstr "IBus ಆದ್ಯತೆಗಳು" -#: ../ui/gtk/panel.py:109 -msgid "IBus input method framework" -msgstr "IBus ಇನ್‌ಪುಟ್ ವಿಧಾನದ ಫ್ರೇಮ್‌ವರ್ಕ್" +#: ../setup/setup.ui.h:12 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "ಪಟ್ಟಿಯಲ್ಲಿನ ಮುಂದಿನ ಇನ್‌ಪುಟ್ ವಿಧಾನಕ್ಕೆ ಬದಲಾಯಿಸಲು ಶಾರ್ಟ್-ಕಟ್‌ ಕೀಲಿಗಳು" -#: ../ui/gtk/panel.py:327 -msgid "Restart" -msgstr "ಪುನರಾರಂಭಿಸು" +#: ../setup/setup.ui.h:13 +msgid "Next input method:" +msgstr "ಮುಂದಿನ ಇನ್‌ಪುಟ್ ವಿಧಾನ:" -#: ../ui/gtk/panel.py:414 -msgid "Turn off input method" -msgstr "ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಆಫ್‌ ಮಾಡಿ" +#: ../setup/setup.ui.h:14 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "ಪಟ್ಟಿಯಲ್ಲಿನ ಹಿಂದಿನ ಇನ್‌ಪುಟ್ ವಿಧಾನಕ್ಕೆ ಬದಲಾಯಿಸಲು ಶಾರ್ಟ್-ಕಟ್‌ ಕೀಲಿಗಳು" -#: ../ui/gtk/panel.py:453 -msgid "No input window" -msgstr "ಯಾವುದೆ ಇನ್‌ಪುಟ್ ವಿಂಡೊ ಇಲ್ಲ" +#: ../setup/setup.ui.h:15 +msgid "Previous input method:" +msgstr "ಹಿಂದಿನ ಇನ್‌ಪುಟ್ ವಿಧಾನ:" -#: ../ui/gtk/panel.py:484 -msgid "IBus is an intelligent input bus for Linux/Unix." -msgstr "IBus ಎನ್ನುವುದು Linux/Unix ಗಾಗಿನ ಒಂದು ಚತುರ ಇನ್‌ಪುಟ್ ಬಸ್." +#: ../setup/setup.ui.h:16 +msgid "..." +msgstr "..." -#: ../ui/gtk/panel.py:488 -msgid "translator-credits" -msgstr "ಶಂಕರ್ ಪ್ರಸಾದ್ " +#: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:16 +msgid "The shortcut keys for turning input method on or off" +msgstr "ಇನ್‌ಪುಟ್‌ ವಿಧಾನಗಳನ್ನು ಆಫ್ ಹಾಗು ಆನ್ ಮಾಡಲು ಶಾರ್ಟ್-ಕೀಲಿಗಳು" -#: ../ui/gtk/languagebar.py:106 -msgid "About the input method" -msgstr "ಇನ್‌ಪುಟ್ ವಿಧಾನದ ಬಗೆಗೆ" +#: ../setup/setup.ui.h:18 +msgid "Enable or disable:" +msgstr "ಶಕ್ತಗೊಂಡ ಅಥವ ಅಶಕ್ತಗೊಂಡ:" -#: ../ui/gtk/languagebar.py:214 -msgid "Switch input method" -msgstr "ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಬದಲಾಯಿಸು" +#: ../setup/setup.ui.h:19 +msgid "Enable:" +msgstr "ಶಕ್ತಗೊಳಿಸು:" -#: ../ui/gtk/languagebar.py:357 ../ui/gtk/engineabout.py:33 -#: ../setup/engineabout.py:33 ../setup/setup.ui.h:16 -msgid "About" -msgstr "ಇದರ ಬಗ್ಗೆ" +#: ../setup/setup.ui.h:20 +msgid "Disable:" +msgstr "ಅಶಕ್ತಗೊಳಿಸು:" -#: ../ui/gtk/languagebar.py:361 -msgid "About the Input Method" -msgstr "ಇನ್‌ಪುಟ್ ವಿಧಾನದ ಬಗೆಗೆ" +#: ../setup/setup.ui.h:21 +msgid "Keyboard Shortcuts" +msgstr "ಕೀಲಿಮಣೆ ಶಾರ್ಟ್-ಕಟ್‌ಗಳು" -#: ../ui/gtk/engineabout.py:61 ../setup/engineabout.py:61 -#, python-format -msgid "Language: %s\n" -msgstr "ಭಾಷೆ: %s\n" +#: ../setup/setup.ui.h:22 +msgid "Set the orientation of candidates in lookup table" +msgstr "ನೋಡಬೇಕಿರುವ (ಲುಕ್‌ಅಪ್‌) ಕೋಷ್ಟಕದ ವಾಲಿಕೆಯನ್ನು ಹೊಂದಿಸಿ" -#: ../ui/gtk/engineabout.py:63 ../setup/engineabout.py:63 -#, python-format -msgid "Keyboard layout: %s\n" -msgstr "ಕೀಲಿಮಣೆ ವಿನ್ಯಾಸ: %s\n" +#: ../setup/setup.ui.h:23 +msgid "Candidates orientation:" +msgstr "ಅಭ್ಯರ್ಥಿಗಳ ಹೊಂದಿಕೆ:" -#: ../ui/gtk/engineabout.py:65 ../setup/engineabout.py:65 -#, python-format -msgid "Author: %s\n" -msgstr "ಕತೃ: %s\n" +#: ../setup/setup.ui.h:24 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "" +"ಭಾಷಾ ಪಟ್ಟಿಕೆಯನ್ನು ಹೇಗೆ ತೋರಿಸಬೇಕು ಅಥವ ಅಡಗಿಸಬೇಕು ಎನ್ನುವ ibus ನ ವರ್ತನೆಯನ್ನು " +"ಹೊಂದಿಸಿ" -#: ../ui/gtk/engineabout.py:67 ../setup/engineabout.py:67 -msgid "Description:\n" -msgstr "ವಿವರಣೆ:\n" +#: ../setup/setup.ui.h:25 +msgid "Show property panel:" +msgstr "ಗುಣದ ಪ್ಯಾನಲ್‌ ಅನ್ನು ತೋರಿಸು:" + +#: ../setup/setup.ui.h:26 +msgid "Language panel position:" +msgstr "ಭಾಷೆಯ ಫಲಕದ ಸ್ಥಳ:" + +#: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:36 +msgid "Show icon on system tray" +msgstr "ವ್ಯವಸ್ಥೆಯ ಟ್ರೇಯಲ್ಲಿ ಚಿಹ್ನೆಯನ್ನು ತೋರಿಸು" + +#: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:38 +msgid "Show input method name on language bar" +msgstr "ಭಾಷೆಯ ಫಲಕದಲ್ಲಿನ ಇನ್‌ಪುಟ್ ವಿಧಾನದ ಹೆಸರನ್ನು ತೋರಿಸು" + +#: ../setup/setup.ui.h:29 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "" +"ಗುರುತುಚೌಕದಲ್ಲಿ ಗುರುತು ಹಾಕಿದಾಗ ಭಾಷಾ ಪಟ್ಟಿಯಲ್ಲಿ ಇನ್‌ಪುಟ್ ವಿಧಾನದ ಹೆಸರನ್ನು " +"ತೋರಿಸು" -#: ../setup/main.py:102 -msgid "trigger" -msgstr "ಟ್ರಿಗರ್" +#: ../setup/setup.ui.h:30 +msgid "Embed preedit text in application window" +msgstr "ಅನ್ವಯ ವಿಂಡೊದಲ್ಲಿ Preedit ಪಠ್ಯವನ್ನು ಅಡಕಗೊಳಿಸಿ" -#: ../setup/main.py:113 -msgid "enable" -msgstr "ಶಕ್ತಗೊಳಿಸು" +#: ../setup/setup.ui.h:31 +msgid "Embed the preedit text of input method in the application window" +msgstr "ಅನ್ವಯ ವಿಂಡೊದಲ್ಲಿ ಇನ್‌ಪುಟ್ ವಿಧಾನದ Preedit ಪಠ್ಯವನ್ನು ಅಡಕಗೊಳಿಸಿ" -#: ../setup/main.py:124 -msgid "disable" -msgstr "ಅಶಕ್ತಗೊಳಿಸು" +#: ../setup/setup.ui.h:32 +msgid "Use custom font:" +msgstr "ಇಚ್ಛೆಯ ಅಕ್ಷರಶೈಲಿಯನ್ನು ಬಳಸಿ:" -#: ../setup/main.py:135 -msgid "next input method" -msgstr "ಮುಂದಿನ ಇನ್‌ಪುಟ್ ವಿಧಾನ" +#: ../setup/setup.ui.h:33 +msgid "Font and Style" +msgstr "ಅಕ್ಷರಶೈಲಿ ಹಾಗು ವಿನ್ಯಾಸ" -#: ../setup/main.py:146 -msgid "previous input method" -msgstr "ಹಿಂದಿನ ಇನ್‌ಪುಟ್ ವಿಧಾನ" +#: ../setup/setup.ui.h:34 +msgid "General" +msgstr "ಸಾಮಾನ್ಯ" -#: ../setup/main.py:286 -msgid "IBus daemon is not started. Do you want to start it now?" -msgstr "IBus ಡೀಮನ್ ಇನ್ನೂ ಸಹ ಆರಂಭಗೊಂಡಿಲ್ಲ. ನೀವದನ್ನು ಈಗಲೆ ಆರಂಭಿಸಲು ಬಯಸುತ್ತೀರೆ?" +#. add button +#: ../setup/setup.ui.h:35 ../setup/enginedialog.py:61 +#: ../setup/keyboardshortcut.py:124 +msgid "_Add" +msgstr "ಸೇರಿಸು (_A)" -#: ../setup/main.py:301 -msgid "" -"IBus has been started! If you can not use IBus, please add below lines in $HOME/.bashrc, and relogin your desktop.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +#: ../setup/setup.ui.h:36 +msgid "Add the selected input method into the enabled input methods" msgstr "" -"IBus ಅನ್ನು ಆರಂಭಿಸಲಾಗಿದೆ! ನಿಮಗೆ IBus ಅನ್ನು ಬಳಸಲು ಸಾಧ್ಯವಾಗದೆ ಇದ್ದಲ್ಲಿ, ನಿಮ್ಮ $HOME/.bashrc ಯಲ್ಲಿ ಈ ಕೆಳಗಿನ ಸಾಲನ್ನು ಸೇರಿಸಿ, ನಂತರ ನಿಮ್ಮ ಗಣಕತೆರೆಗೆ ಮರಳಿ ದಾಖಲಾಗಿ.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +"ಆಯ್ಕೆ ಮಾಡಲಾದ ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಶಕ್ತಗೊಂಡಿರುವ ಇನ್‌ಪುಟ್‌ ವಿಧಾನಗಳಿಗೆ ಸೇರಿಸಿ" -#: ../setup/main.py:316 -#, python-format -msgid "Select keyboard shortcut for %s" -msgstr "%s ಗಾಗಿ ಕೀಲಿಮಣೆ ಶಾರ್ಟ್-ಕಟ್‌ ಕೀಲಿಯನ್ನು ಆಯ್ಕೆ ಮಾಡಿ" +#: ../setup/setup.ui.h:37 +msgid "_Remove" +msgstr "ತೆಗೆದು ಹಾಕು (_R)" -#: ../setup/keyboardshortcut.py:52 -msgid "Keyboard shortcuts" -msgstr "ಕೀಲಿಮಣೆ ಶಾರ್ಟ್-ಕಟ್‌ಗಳು" +#: ../setup/setup.ui.h:38 +msgid "Remove the selected input method from the enabled input methods" +msgstr "" +"ಆಯ್ಕೆ ಮಾಡಲಾದ ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಶಕ್ತಗೊಂಡಿರುವ ಇನ್‌ಪುಟ್‌ ವಿಧಾನಗಳ ಪಟ್ಟಿಯಿಂದ " +"ತೆಗೆದು ಹಾಕಿ" -#: ../setup/keyboardshortcut.py:63 -msgid "Key code:" -msgstr "ಕೀಲಿ ಸಂಕೇತ:" +#: ../setup/setup.ui.h:39 +msgid "_Up" +msgstr "ಮೇಲಕ್ಕೆ (_U)" -#: ../setup/keyboardshortcut.py:78 -msgid "Modifiers:" -msgstr "ಮಾರ್ಪಡಕಗಳು:" +#: ../setup/setup.ui.h:40 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "" +"ಆಯ್ಕೆ ಮಾಡಲಾದ ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಶಕ್ತಗೊಂಡಿರುವ ಇನ್‌ಪುಟ್‌ ವಿಧಾನಗಳ ಪಟ್ಟಿಯಲ್ಲಿ " +"ಮೇಲಕ್ಕೆ ಜರುಗಿಸಿ" -#: ../setup/keyboardshortcut.py:231 -msgid "" -"Please press a key (or a key combination).\n" -"The dialog will be closed when the key is released." +#: ../setup/setup.ui.h:41 +msgid "_Down" +msgstr "ಕೆಳಕ್ಕೆ (_D)" + +#: ../setup/setup.ui.h:42 +msgid "Move down the selected input method in the enabled input methods" msgstr "" -"ದಯವಿಟ್ಟು ಒಂದು ಕೀಲಿಯನ್ನು (ಅಥವ ಒಂದು ಕೀಲಿ ಸಂಯೋಜನೆಯನ್ನು) ಒತ್ತಿ.\n" -"ಕೀಲಿಯನ್ನು ಬಿಟ್ಟಾಗ ಸಂವಾದವು ಮುಚ್ಚಲ್ಪಡುತ್ತದೆ." +"ಆಯ್ಕೆ ಮಾಡಲಾದ ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಶಕ್ತಗೊಂಡಿರುವ ಇನ್‌ಪುಟ್‌ ವಿಧಾನಗಳ ಪಟ್ಟಿಯಲ್ಲಿ " +"ಕೆಳಕ್ಕೆ ಜರುಗಿಸಿ" -#: ../setup/keyboardshortcut.py:233 -msgid "Please press a key (or a key combination)" -msgstr "ದಯವಿಟ್ಟು ಒಂದು ಕೀಲಿಯನ್ನು (ಅಥವ ಒಂದು ಕೀಲಿ ಸಂಯೋಜನೆಯನ್ನು) ಒತ್ತಿ" +#: ../setup/setup.ui.h:43 +msgid "_About" +msgstr "ಕುರಿತು (_A)" -#: ../setup/enginecombobox.py:120 -msgid "Select an input method" -msgstr "ಒಂದು ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಆಯ್ಕೆ ಮಾಡಿ" +#: ../setup/setup.ui.h:44 +msgid "Show information of the selected input method" +msgstr "ಆಯ್ಕೆ ಮಾಡಲಾದ ಇನ್‌ಪುಟ್ ವಿಧಾನದ ಮಾಹಿತಿಯನ್ನು ತೋರಿಸು" + +#: ../setup/setup.ui.h:45 +msgid "_Preferences" +msgstr "ಆದ್ಯತೆಗಳು (_P)" + +#: ../setup/setup.ui.h:46 +msgid "Show setup of the selected input method" +msgstr "ಆಯ್ಕೆ ಮಾಡಲಾದ ಇನ್‌ಪುಟ್ ವಿಧಾನದ ಸೆಟ್ಅಪ್‌ ಅನ್ನು ತೋರಿಸು" + +#: ../setup/setup.ui.h:47 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" +"ಸಕ್ರಿಯ ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಆಯ್ಕೆ ಮಾಡಲಾಗಿರುವುದರಿಂದ ಮೇಲಿನ " +"ಪಟ್ಟಿಯಲ್ಲಿನ ಬೇರೆಯೊಂದಕ್ಕೆ ಬದಲಾಯಿಸಲು ಕೀಲಿಮಣೆ ಸಮೀಪಮಾರ್ಗಗಳನ್ನು ಬಳಸಬಹುದು ಅಥವ " +"ಪ್ಯಾನಲ್‌ ಚಿಹ್ನೆಯನ್ನು ಕ್ಲಿಕ್ ಮಾಡಬಹುದು." #. create im name & icon column -#: ../setup/enginetreeview.py:64 ../setup/setup.ui.h:33 +#: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:68 msgid "Input Method" msgstr "ಇನ್‌ಪುಟ್ ವಿಧಾನ" -#: ../setup/enginetreeview.py:92 -msgid "Kbd" -msgstr "Kbd" +#: ../setup/setup.ui.h:49 +msgid "The shortcut keys for showing emoji dialog" +msgstr "" -#: ../setup/ibus-setup.desktop.in.h:1 ../setup/setup.ui.h:32 -msgid "IBus Preferences" -msgstr "IBus ಆದ್ಯತೆಗಳು" +#: ../setup/setup.ui.h:50 +msgid "Emoji choice:" +msgstr "" -#: ../setup/ibus-setup.desktop.in.h:2 -msgid "Set IBus Preferences" -msgstr "IBus ಆದ್ಯತೆಗಳನ್ನು ಸಿದ್ಧಗೊಳಿಸು" +#: ../setup/setup.ui.h:51 +msgid "Set a font of emoji candidates on the emoji dialog" +msgstr "" -#: ../data/ibus.schemas.in.h:1 -msgid "Auto hide" -msgstr "ಸ್ವಯಂ ಅಡಗಿಸುವಿಕೆ" +#: ../setup/setup.ui.h:52 +msgid "Emoji font:" +msgstr "" -#: ../data/ibus.schemas.in.h:2 -msgid "Custom font" -msgstr "ಇಚ್ಛೆಯ ಅಕ್ಷರಶೈಲಿ" +#: ../setup/setup.ui.h:53 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "" -#: ../data/ibus.schemas.in.h:3 -msgid "Custom font name for language panel" -msgstr "ಭಾಷೆಯ ಫಲಕಕ್ಕಾಗಿನ ಇಚ್ಛೆಯ ಅಕ್ಷರಶೈಲಿಯ ಹೆಸರು" +#: ../setup/setup.ui.h:54 +msgid "Emoji annotation language:" +msgstr "" + +#: ../setup/setup.ui.h:55 +msgid "" +"Match emoji annotations partially with the following condition and more than " +"the number of characters:" +msgstr "" + +#: ../setup/setup.ui.h:56 +msgid "" +"If emoji annotations can be matched with a partial string instead of the " +"exact match" +msgstr "" + +#: ../setup/setup.ui.h:57 +msgid "Prefix match" +msgstr "" + +#: ../setup/setup.ui.h:58 +msgid "Suffix match" +msgstr "" + +#: ../setup/setup.ui.h:59 +msgid "Containing match" +msgstr "" + +#: ../setup/setup.ui.h:60 +msgid "Emoji" +msgstr "" + +#: ../setup/setup.ui.h:61 ../data/ibus.schemas.in.h:44 +msgid "Use system keyboard layout" +msgstr "ವ್ಯವಸ್ಥೆಯ ಕೀಲಿಮಣೆ ವಿನ್ಯಾಸವನ್ನು ಬಳಸಿ" + +#: ../setup/setup.ui.h:62 ../data/ibus.schemas.in.h:45 +msgid "Use system keyboard (XKB) layout" +msgstr "ವ್ಯವಸ್ಥೆಯ ಕೀಲಿಮಣೆ (XKB) ವಿನ್ಯಾಸವನ್ನು ಬಳಸಿ" + +#: ../setup/setup.ui.h:63 +msgid "Keyboard Layout" +msgstr "ಕೀಲಿಮಣೆ ವಿನ್ಯಾಸ" + +#: ../setup/setup.ui.h:64 ../data/ibus.schemas.in.h:68 +msgid "Share the same input method among all applications" +msgstr "ಒಂದೇ ಇನ್‌ಪುಟ್‌ ವಿಧಾನವನ್ನು ಎಲ್ಲಾ ಅನ್ವಯಗಳಲ್ಲೂ ಬಳಸು" + +#: ../setup/setup.ui.h:65 +msgid "Global input method settings" +msgstr "ಜಾಗತಿಕ ಇನ್‌ಪುಟ್‌ ವಿಧಾನದ ಸಿದ್ಧತೆಗಳು" + +#: ../setup/setup.ui.h:66 +msgid "Advanced" +msgstr "ಸುಧಾರಿತ" + +#: ../setup/setup.ui.h:67 +msgid "" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" +msgstr "" +"IBus\n" +"ಚತುರ ಇನ್‌ಪುಟ್ ಬಸ್\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" + +#: ../setup/setup.ui.h:74 +msgid "Start ibus on login" +msgstr "ಪ್ರವೇಶಿಸಿದಾಗ ibus ಅನ್ನು ಆರಂಭಿಸು" + +#: ../setup/setup.ui.h:75 +msgid "Startup" +msgstr "ಆರಂಭ" + +#: ../setup/setup.ui.h:76 ../setup/engineabout.py:37 ../ui/gtk3/panel.vala:1175 +msgid "About" +msgstr "ಇದರ ಬಗ್ಗೆ" + +#: ../setup/setup.ui.h:77 ../setup/engineabout.py:40 +msgid "_Close" +msgstr "ಮುಚ್ಚು (_C)" + +#. Translators: Here “Preload” is a verb +#: ../data/ibus.schemas.in.h:2 +msgid "Preload engines" +msgstr "ಪ್ರಿಲೋಡ್ ಎಂಜಿನ್‌ಗಳು" + +#. Translators: Tooltip for the button “Preload Engines” +#: ../data/ibus.schemas.in.h:4 +msgid "Preload engines during ibus starts up" +msgstr "ibus ಆರಂಭಗೊಂಡಾಗ ಲೋಡ್ ಮಾಡಲಾದ ಎಂಜಿನ್‌ಗಳು" + +#: ../data/ibus.schemas.in.h:5 +msgid "Engines order" +msgstr "ಎಂಜಿನ್‌ಗಳ ಕ್ರಮ" + +#: ../data/ibus.schemas.in.h:6 +msgid "Saved engines order in input method list" +msgstr "ಇನ್‌ಪುಟ್ ವಿಧಾನದ ಪಟ್ಟಿಯಲ್ಲಿನ ಉಳಿಸಲಾದ ಎಂಜಿನ್‌ಗಳು" + +#: ../data/ibus.schemas.in.h:7 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "IME ಬದಲಾವಣೆಗಾರ ಕಿಟಕಿಗಾಗಿ ಪುಟಿಕೆ (ಪಾಪ್ಅಪ್) ವಿಳಂಬ, ಮಿಲಿಸೆಕೆಂಡುಗಳಲ್ಲಿ" + +#: ../data/ibus.schemas.in.h:8 +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is 400." +" 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " +"show the window and switch prev/next engines." +msgstr "" +"IME ಬದಲಾವಣೆಗಾರ ಕಿಟಕಿಯನ್ನು ತೋರಿಸಲು ಮಿಲಿಸೆಕೆಂಡುಗಳಲ್ಲಿ ಪುಟಿಕೆ (ಪಾಪ್ಅಪ್) " +"ವಿಳಂಬವನ್ನು ಹೊಂದಿಸಿ. ಪೂರ್ವನಿಯೋಜಿತವು 400 ಆಗಿರುತ್ತದೆ. 0 = ಕಿಟಕಿಯನ್ನು ತಕ್ಷಣವೆ " +"ತೋರಿಸು. 0 < ಮಿಲಿಸೆಕೆಂಡುಗಳಲ್ಲಿ ವಿಳಂಬ. 0 > ಕಿಟಕಿಯನ್ನು ತೋರಿಸಬೇಡ ಮತ್ತು " +"ಹಿಂದಿನ/ಮುಂದಿನ ಎಂಜಿನ್‌ಗಳಿಗೆ ಬದಲಾಯಿಸಬೇಡ." + +#: ../data/ibus.schemas.in.h:9 +msgid "Saved version number" +msgstr "ಉಳಿಸಲಾದ ಆವೃತ್ತಿ ಸಂಖ್ಯೆ" + +#: ../data/ibus.schemas.in.h:10 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" +"ಉಳಿಸಲಾದ ಆವೃತ್ತಿ ಸಂಖ್ಯೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಈ ಹಿಂದೆ ಅನುಸ್ಥಾಪಿಸಲಾದ ibus ಮತ್ತು " +"ಪ್ರಸಕ್ತ ಲಭ್ಯವಿರುವ ibus ನಡುವಿನ ವ್ಯತ್ಯಾಸವನ್ನು ಪರಿಶೀಲಿಸಲು ಸಾಧ್ಯವಿರುತ್ತದೆ." + +#: ../data/ibus.schemas.in.h:11 +msgid "Latin layouts which have no ASCII" +msgstr "ಯಾವುದೆ ASCII ಅನ್ನು ಹೊಂದಿರದ ಲ್ಯಾಟಿನ್ ವಿನ್ಯಾಸಗಳು (ಲೇಔಟ್‌)" + +#: ../data/ibus.schemas.in.h:12 +msgid "US layout is appended to the Latin layouts. variant can be omitted." +msgstr "" +"US ವಿನ್ಯಾಸವನ್ನು ಲ್ಯಾಟಿನ್‌ ವಿನ್ಯಾಸಗಳಿಗೆ ಸೇರಿಸಲಾಗುತ್ತದೆ. ವೇರಿಯಂಟ್‌ ಅನ್ನು " +"ಬಿಡಬಹುದು." + +#: ../data/ibus.schemas.in.h:13 +msgid "Use xmodmap" +msgstr "xmodmap ಅನ್ನು ಬಳಸು" + +#: ../data/ibus.schemas.in.h:14 +msgid "" +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." +msgstr "" +"ibus ಅನ್ನು ಬದಲಾಯಿಸಿದಾಗ, .xmodmap ಅಥವ .Xmodmap ಅಸ್ತಿತ್ವದಲ್ಲಿದ್ದರೆ xmodmap " +"ಅನ್ನು ಚಲಾಯಿಸಿ." + +#: ../data/ibus.schemas.in.h:15 +msgid "Trigger shortcut keys" +msgstr "ಶಾರ್ಟ್-ಕಟ್ ಕೀಲಿಗಳನ್ನು ಟ್ರಿಗರ್ ಮಾಡು" + +#: ../data/ibus.schemas.in.h:17 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "gtk_accelerator_parse ಶಾರ್ಟ್-ಕಟ್ ಕೀಲಿಗಳನ್ನು ಟ್ರಿಗರ್ ಮಾಡು" + +#: ../data/ibus.schemas.in.h:18 +msgid "Enable shortcut keys" +msgstr "ಶಾರ್ಟ್-ಕಟ್ ಕೀಲಿಗಳನ್ನು ಶಕ್ತಗೊಳಿಸು" + +#: ../data/ibus.schemas.in.h:19 +msgid "The shortcut keys for turning input method on" +msgstr "ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಆನ್ ಮಾಡಲು ಬಳಸಬಹುದಾದ ಶಾರ್ಟ್-ಕಟ್‌ ಕೀಲಿ" + +#: ../data/ibus.schemas.in.h:20 +msgid "Disable shortcut keys" +msgstr "ಶಾರ್ಟ್-ಕಟ್ ಕೀಲಿಗಳನ್ನು ಅಶಕ್ತಗೊಳಿಸು" + +#: ../data/ibus.schemas.in.h:21 +msgid "The shortcut keys for turning input method off" +msgstr "ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಆಫ್ ಮಾಡಲು ಬಳಸಬಹುದಾದ ಶಾರ್ಟ್-ಕಟ್‌ ಕೀಲಿ" + +#: ../data/ibus.schemas.in.h:22 +msgid "Next engine shortcut keys" +msgstr "ಮುಂದಿನ ಎಂಜಿನ್ ಶಾರ್ಟ್-ಕಟ್ ಕೀಲಿಗಳು" + +#: ../data/ibus.schemas.in.h:23 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "ಪಟ್ಟಿಯಲ್ಲಿನ ಮುಂದಿನ ಇನ್‌ಪುಟ್ ವಿಧಾನಕ್ಕೆ ಬದಲಾಯಿಸಲು ಶಾರ್ಟ್-ಕಟ್‌ ಕೀಲಿಗಳು" + +#: ../data/ibus.schemas.in.h:24 +msgid "Prev engine shortcut keys" +msgstr "ಹಿಂದಿನ ಎಂಜಿನ್ ಶಾರ್ಟ್-ಕಟ್ ಕೀಲಿಗಳು" + +#: ../data/ibus.schemas.in.h:25 +msgid "The shortcut keys for switching to the previous input method" +msgstr "ಹಿಂದಿನ ಇನ್‌ಪುಟ್ ವಿಧಾನಕ್ಕೆ ಬದಲಾಯಿಸಲು ಶಾರ್ಟ್-ಕಟ್‌ ಕೀಲಿಗಳು" + +#: ../data/ibus.schemas.in.h:26 +msgid "Auto hide" +msgstr "ಸ್ವಯಂ ಅಡಗಿಸುವಿಕೆ" + +#: ../data/ibus.schemas.in.h:27 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "" +"ಗುಣದ ಪ್ಯಾನಲ್‌ನ ವರ್ತನೆ. 0 = ಮೆನುವಿನಲ್ಲಿ ಅಡಕಗೊಳಿಸಲಾಗಿದೆ, 1 = ಸ್ವಯಂ ಅಡಗಿಸು, 2 = " +"ಯಾವಾಗಲೂ ತೋರಿಸು" + +#: ../data/ibus.schemas.in.h:28 +msgid "Language panel position" +msgstr "ಭಾಷೆಯ ಫಲಕವನ್ನು ತೋರಿಸು" + +#: ../data/ibus.schemas.in.h:29 +msgid "" +"The position of the language panel. 0 = Top left corner, 1 = Top right " +"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +msgstr "" +"ಭಾಷೆಯ ಫಲಕವು ಇರುವ ಸ್ಥಳ. 0 = ಮೇಲಿನ ಎಡ ಮೂಲೆ, 1 = ಮೇಲಿನ ಬಲ ಮೂಲೆ, 2 = ಕೆಳಗಿನ ಎಡ " +"ಮೂಲೆ, 3 = ಕೆಳಗಿನ ಬಲ ಮೂಲೆ, 4 = ಇಚ್ಛೆಯ" + +#: ../data/ibus.schemas.in.h:30 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "" +"ಪ್ಯಾನಲ್‌ ಅನ್ನು ಯಾವಾಗಲೂ ತೋರಿಸಲಾಗುತ್ತಿದ್ದರೆ ಇನ್‌ಪುಟ್ ತೆರೆಸೂಚಕವನ್ನು ಅನುಸರಿಸು" + +#: ../data/ibus.schemas.in.h:31 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" +"ಟ್ರೂ ಆದಲ್ಲಿ, ಪ್ಯಾನಲ್‌ ಅನ್ನು ಯಾವಾಗಲೂ ತೋರಿಸಲಾಗುತ್ತಿದ್ದಲ್ಲಿ, ಇನ್‌ಪುಟ್ " +"ತೆರೆಸೂಚಕವನ್ನು ಪ್ಯಾನಲ್‌ ಅನುಸರಿಸುತ್ತದೆ. ಫಾಲ್ಸ್ ಆದಲ್ಲಿ, ಪ್ಯಾನಲ್‌ ಅನ್ನು ನಿಶ್ಚಿತ " +"ಸ್ಥಳದಲ್ಲಿ ತೋರಿಸಲಾಗುತ್ತದೆ." + +#: ../data/ibus.schemas.in.h:32 +msgid "The milliseconds to show property panel" +msgstr "ಗುಣದ ಪ್ಯಾನಲ್‌ ಅನ್ನು ತೋರಿಸಬೇಕಿರುವ ಮಿಲಿಸೆಕೆಂಡ್‌ಗಳು:" + +#: ../data/ibus.schemas.in.h:33 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" +"ಗಮನವು ಅಥವ ಗುಣಗಳನ್ನು ಬದಲಾಯಿಸಿದ ನಂತರ ಗುಣದ ಪ್ಯಾನಲ್ ಅನ್ನು ತೋರಿಸಬೇಕಿರುವ " +"ಮಿಲಿಸೆಕೆಂಡುಗಳು." + +#: ../data/ibus.schemas.in.h:34 +msgid "Orientation of lookup table" +msgstr "ನೋಡಬೇಕಿರುವ (ಲುಕ್‌ಅಪ್‌) ಕೋಷ್ಟಕದ ಹೊಂದಿಕೆ" + +#: ../data/ibus.schemas.in.h:35 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "ನೋಡಬೇಕಿರುವ (ಲುಕ್‌ಅಪ್‌) ಕೋಷ್ಟಕದ ಹೊಂದಿಕೆ. 0 = ಅಡ್ಡಲಾಗಿ, 1 = ಲಂಬವಾಗಿ" + +#: ../data/ibus.schemas.in.h:37 +msgid "Show input method name" +msgstr "ಇನ್‌ಪುಟ್ ವಿಧಾನದ ಹೆಸರನ್ನು ತೋರಿಸು" + +#: ../data/ibus.schemas.in.h:39 +msgid "RGBA value of XKB icon" +msgstr "XKB ಚಿಹ್ನೆಯ RGBA ಮೌಲ್ಯ" + +#: ../data/ibus.schemas.in.h:41 +#, no-c-format +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " +"'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " +"to 255 or percentage values in the range 0% to 100%, and 'a' is a floating " +"point value in the range 0 to 1 of the alpha." +msgstr "" +"XKB ಚಿಹ್ನೆಯು ವಿನ್ಯಾಸದ ವಾಕ್ಯಾಂಶವನ್ನು ತೋರಿಸುತ್ತದೆ ಮತ್ತು ವಾಕ್ಯಾಂಶವು RGBA " +"ಮೌಲ್ಯದಿಂದ ರೆಂಡರ್ ಮಾಡಲಾಗುತ್ತದೆ. RGBA ಮೌಲ್ಯವು 1. X11 ಇಂದ ಒಂದು ಬಣ್ಣದ " +"ಮೌಲ್ಯವಾಗಿರಬಹುದು, 2. '#rrggbb' ರೂಪದಲ್ಲಿರುವ ಒಂದು ಹೆಕ್ಸ್‌ ಮೌಲ್ಯವಾಗಿರಬಹುದು, " +"ಇಲ್ಲಿ 'r', 'g' ಮತ್ತು 'b' ಎನ್ನುವವು ಅನುಕ್ರಮವಾಗಿ ಕೆಂಪು, ಹಸಿರು, ಮತ್ತು ನೀಲಿ ಬಣ್ಣದ " +"ಹೆಕ್ಸ್‌ ಅಂಕಿಯಾಗಿರುತ್ತವೆ, 3. 'rgb(r,g,b)' ರೂಪದಲ್ಲಿರುವ ಒಂದು RGB " +"ಬಣ್ಣವಾಗಿರಬಹುದು, ಅಥವ 4. 'rgba(r,g,b,a)' ರೂಪದಲ್ಲಿರುವ RGBA ಬಣ್ಣವಾಗಿರಬಹುದು, " +"ಇಲ್ಲಿ 'r', 'g', ಮತ್ತು 'b' ಗಳು 0 ಇಂದ 255 ಒಳಗಿನ ಪೂರ್ಣಾಂಕಗಳಾಗಿರುತ್ತದೆ ಅಥವ 0% " +"ಇಂದ 100% ರ ಒಳಗಿನ ಪ್ರತಿಶತ ಮೌಲ್ಯಗಳಾಗಿರುತ್ತದೆ, ಮತ್ತು 'a' ಎನ್ನುವುದು ಆಲ್ಫಾದ 0 ಇಂದ " +"1 ರ ಒಳಗಿನ ಒಂದು ತೇಲುವ ಬಿಂದುವಾಗಿರುತ್ತದೆ." + +#: ../data/ibus.schemas.in.h:42 +msgid "The milliseconds to show the panel icon for a property" +msgstr "" + +#: ../data/ibus.schemas.in.h:43 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" + +#: ../data/ibus.schemas.in.h:46 +msgid "Use custom font" +msgstr "ಇಚ್ಛೆಯ ಅಕ್ಷರಶೈಲಿಯನ್ನು ಬಳಸು" + +#: ../data/ibus.schemas.in.h:47 +msgid "Use custom font name for language panel" +msgstr "ಭಾಷೆಯ ಫಲಕಕ್ಕಾಗಿ ಇಚ್ಛೆಯ ಅಕ್ಷರಶೈಲಿಯ ಹೆಸರನ್ನು ಬಳಸಿ" + +#: ../data/ibus.schemas.in.h:48 +msgid "Custom font" +msgstr "ಇಚ್ಛೆಯ ಅಕ್ಷರಶೈಲಿ" + +#: ../data/ibus.schemas.in.h:49 +msgid "Custom font name for language panel" +msgstr "ಭಾಷೆಯ ಫಲಕಕ್ಕಾಗಿನ ಇಚ್ಛೆಯ ಅಕ್ಷರಶೈಲಿಯ ಹೆಸರು" + +#: ../data/ibus.schemas.in.h:50 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "" + +#: ../data/ibus.schemas.in.h:51 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "" + +#: ../data/ibus.schemas.in.h:52 +msgid "Custom font name for emoji characters on emoji dialog" +msgstr "" + +#: ../data/ibus.schemas.in.h:53 +msgid "Default language for emoji dictionary" +msgstr "" + +#: ../data/ibus.schemas.in.h:54 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" +msgstr "" + +#: ../data/ibus.schemas.in.h:55 +msgid "favorite emoji list on emoji dialog" +msgstr "" + +#: ../data/ibus.schemas.in.h:56 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "" + +#: ../data/ibus.schemas.in.h:57 +msgid "favorite emoji annotation list on emoji dialog" +msgstr "" + +#: ../data/ibus.schemas.in.h:58 +msgid "You can assign an annotation for a favorite emoji in this list." +msgstr "" + +#: ../data/ibus.schemas.in.h:59 +msgid "Whether emoji annotations can be match partially or not" +msgstr "" + +#: ../data/ibus.schemas.in.h:60 +msgid "" +"Whether emoji annotations can be matched with a partial string instead of " +"the exact match or not." +msgstr "" + +#: ../data/ibus.schemas.in.h:61 +msgid "Match emoji annotations with the specified length" +msgstr "" + +#: ../data/ibus.schemas.in.h:62 +msgid "" +"Match emoji annotations partially with more than the specified number of " +"characters instead of the exact match." +msgstr "" + +#: ../data/ibus.schemas.in.h:63 +msgid "Choose a condition to match emoji annotations partially" +msgstr "" + +#: ../data/ibus.schemas.in.h:64 +msgid "" +"Choose one of the following conditions to match emoji annotations partially: " +"0 == Prefix match, 1 == Suffix match, 2 == Containing match" +msgstr "" + +#: ../data/ibus.schemas.in.h:65 +msgid "Embed Preedit Text" +msgstr "ಪೂರ್ವ-ಸಂಪಾದನಾ(ಪ್ರಿ-ಎಡಿಟ್) ಪಠ್ಯವನ್ನು ಅಡಕಗೊಳಿಸು" + +#: ../data/ibus.schemas.in.h:66 +msgid "Embed Preedit Text in Application Window" +msgstr "ಅನ್ವಯ ವಿಂಡೊದಲ್ಲಿ ಪೂರ್ವ-ಸಂಪಾದನಾ(ಪ್ರಿ-ಎಡಿಟ್) ಪಠ್ಯವನ್ನು ಅಡಕಗೊಳಿಸು" + +#: ../data/ibus.schemas.in.h:67 +msgid "Use global input method" +msgstr "ಜಾಗತಿಕ ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಬಳಸಿ" + +#: ../data/ibus.schemas.in.h:69 +msgid "Enable input method by default" +msgstr "ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಶಕ್ತಗೊಳಿಸು" + +#: ../data/ibus.schemas.in.h:70 +msgid "Enable input method by default when the application gets input focus" +msgstr "" +"ಅನ್ವಯವು ಇನ್‌ಪುಟ್ ಗಮನವನ್ನು ಪಡೆದುಕೊಂಡಾಗ ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ " +"ಶಕ್ತಗೊಳಿಸು" + +#: ../data/ibus.schemas.in.h:71 +msgid "DConf preserve name prefixes" +msgstr "DConf ಹೆಸರುಗಳು ಪ್ರಿಫಿಕ್ಸುಗಳನ್ನು ಹಾಗೆಯೆ ಇರಿಸಿಕೊಳ್ಳುತ್ತದೆ" + +#: ../data/ibus.schemas.in.h:72 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "ಹೆಸರಿನ ಪರಿವರ್ತನೆಯನ್ನು ಬದಲಿಸುವ DConf ಕೀಲಿಗಳ ಪ್ರಿಫಿಕ್ಸುಗಳು" + +#: ../ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." + +#: ../ibus/lang.py:41 ../src/ibusutil.c:158 +msgid "Other" +msgstr "ಇತರೆ" + +#: ../setup/emojilang.py:67 +msgid "Select a language" +msgstr "" + +#: ../setup/emojilang.py:70 ../setup/enginedialog.py:60 +#: ../setup/keyboardshortcut.py:339 ../setup/main.py:552 +msgid "_Cancel" +msgstr "ರದ್ದು ಮಾಡು (_C)" + +#: ../setup/emojilang.py:71 ../setup/keyboardshortcut.py:340 +#: ../setup/main.py:553 +msgid "_OK" +msgstr "ಸರಿ (_O)" + +#: ../setup/emojilang.py:235 ../setup/enginedialog.py:205 +msgid "More…" +msgstr "ಇನ್ನಷ್ಟು..." + +#: ../setup/engineabout.py:72 +#, python-format +msgid "Language: %s\n" +msgstr "ಭಾಷೆ: %s\n" + +#: ../setup/engineabout.py:75 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "ಕೀಲಿಮಣೆ ವಿನ್ಯಾಸ: %s\n" + +#: ../setup/engineabout.py:78 +#, python-format +msgid "Author: %s\n" +msgstr "ಕತೃ: %s\n" + +#: ../setup/engineabout.py:81 +msgid "Description:\n" +msgstr "ವಿವರಣೆ:\n" + +#: ../setup/enginecombobox.py:139 ../setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "ಒಂದು ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಆಯ್ಕೆ ಮಾಡಿ" + +#: ../setup/enginetreeview.py:96 +msgid "Kbd" +msgstr "Kbd" + +#: ../setup/ibus-setup.desktop.in.h:2 +msgid "Set IBus Preferences" +msgstr "IBus ಆದ್ಯತೆಗಳನ್ನು ಸಿದ್ಧಗೊಳಿಸು" + +#: ../setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "ಕೀಲಿಮಣೆ ಶಾರ್ಟ್-ಕಟ್‌ಗಳು" + +#: ../setup/keyboardshortcut.py:67 +msgid "Key code:" +msgstr "ಕೀಲಿ ಸಂಕೇತ:" + +#: ../setup/keyboardshortcut.py:82 +msgid "Modifiers:" +msgstr "ಮಾರ್ಪಡಕಗಳು:" + +#. apply button +#: ../setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "ಅನ್ವಯಿಸು (_A)" + +#. delete button +#: ../setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "ಅಳಿಸು (_D)" + +#: ../setup/keyboardshortcut.py:252 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "" +"ದಯವಿಟ್ಟು ಒಂದು ಕೀಲಿಯನ್ನು (ಅಥವ ಒಂದು ಕೀಲಿ ಸಂಯೋಜನೆಯನ್ನು) ಒತ್ತಿ.\n" +"ಕೀಲಿಯನ್ನು ಬಿಟ್ಟಾಗ ಸಂವಾದವು ಮುಚ್ಚಲ್ಪಡುತ್ತದೆ." + +#: ../setup/keyboardshortcut.py:255 +msgid "Please press a key (or a key combination)" +msgstr "ದಯವಿಟ್ಟು ಒಂದು ಕೀಲಿಯನ್ನು (ಅಥವ ಒಂದು ಕೀಲಿ ಸಂಯೋಜನೆಯನ್ನು) ಒತ್ತಿ" + +#: ../setup/main.py:121 ../setup/main.py:580 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "ಹಿಂದಿನ ಇನ್‌ಪುಟ್ ವಿಧಾನಕ್ಕೆ ಬದಲಾಯಿಸಲು ಶಿಫ್ಟಿನೊಂದಿಗೆ ಸಮೀಪಮಾರ್ಗವನ್ನು ಬಳಸಿ" + +#: ../setup/main.py:507 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "IBus ಡೀಮನ್ ಚಾಲನೆಯಲ್ಲಿಲ್ಲ. ನೀವದನ್ನು ಆರಂಭಿಸಲು ಬಯಸುತ್ತೀರೆ?" + +#: ../setup/main.py:528 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "" +"IBus ಅನ್ನು ಆರಂಭಿಸಲಾಗಿದೆ! ನಿಮಗೆ IBus ಅನ್ನು ಬಳಸಲು ಸಾಧ್ಯವಾಗದೆ ಇದ್ದಲ್ಲಿ, ನಿಮ್ಮ " +"$HOME/.bashrc ಯಲ್ಲಿ ಈ ಕೆಳಗಿನ ಸಾಲನ್ನು ಸೇರಿಸಿ, ನಂತರ ನಿಮ್ಮ ಗಣಕತೆರೆಗೆ ಮರಳಿ " +"ದಾಖಲಾಗಿ.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" + +#. Translators: %d == 5 currently +#: ../setup/main.py:542 +#, python-format +msgid "IBus daemon could not be started in %d seconds." +msgstr "IBus ಡೀಮನ್ ಅನ್ನು %d ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಆರಂಭಿಸಲಾಗಿಲ್ಲ." + +#: ../setup/main.py:554 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "%s ಗಾಗಿ ಕೀಲಿಮಣೆ ಶಾರ್ಟ್-ಕಟ್‌ ಕೀಲಿಯನ್ನು ಆಯ್ಕೆ ಮಾಡಿ" + +#. Translators: Title of the window +#: ../setup/main.py:556 +msgid "switching input methods" +msgstr "ಇನ್‌ಪುಟ್ ವಿಧಾನಗಳನ್ನು ಬದಲಿಸುವಿಕೆ" + +#: ../src/ibusemojigen.h:30 +msgid "Activities" +msgstr "" + +#: ../src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "" + +#: ../src/ibusemojigen.h:32 +msgid "Flags" +msgstr "" + +#: ../src/ibusemojigen.h:33 +msgid "Food & Drink" +msgstr "" + +#: ../src/ibusemojigen.h:34 +msgid "Objects" +msgstr "" + +#: ../src/ibusemojigen.h:35 +msgid "Smileys & People" +msgstr "" + +#: ../src/ibusemojigen.h:36 +msgid "Symbols" +msgstr "" + +#: ../src/ibusemojigen.h:37 +msgid "Travel & Places" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:33 +msgid "Basic Latin" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:37 +msgid "Latin-1 Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:41 +msgid "Latin Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:45 +msgid "Latin Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:49 +msgid "IPA Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:53 +msgid "Spacing Modifier Letters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:57 +msgid "Combining Diacritical Marks" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:61 +msgid "Greek and Coptic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:65 +msgid "Cyrillic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:69 +msgid "Cyrillic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:73 +msgid "Armenian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:77 +msgid "Hebrew" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:81 +msgid "Arabic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:85 +msgid "Syriac" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:89 +msgid "Arabic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:93 +msgid "Thaana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:97 +msgid "NKo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:101 +msgid "Samaritan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:105 +msgid "Mandaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:109 +msgid "Syriac Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:113 +msgid "Arabic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:117 +msgid "Devanagari" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:121 +msgid "Bengali" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:125 +msgid "Gurmukhi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:129 +msgid "Gujarati" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:133 +msgid "Oriya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:137 +msgid "Tamil" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:141 +msgid "Telugu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:145 +msgid "Kannada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:149 +msgid "Malayalam" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:153 +msgid "Sinhala" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:157 +msgid "Thai" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:161 +msgid "Lao" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:165 +msgid "Tibetan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:169 +msgid "Myanmar" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:173 +msgid "Georgian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:177 +msgid "Hangul Jamo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:181 +msgid "Ethiopic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:185 +msgid "Ethiopic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:189 +msgid "Cherokee" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:193 +msgid "Unified Canadian Aboriginal Syllabics" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:197 +msgid "Ogham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:201 +msgid "Runic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:205 +msgid "Tagalog" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:209 +msgid "Hanunoo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:213 +msgid "Buhid" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:217 +msgid "Tagbanwa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:221 +msgid "Khmer" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:225 +msgid "Mongolian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:229 +msgid "Unified Canadian Aboriginal Syllabics Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:233 +msgid "Limbu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:237 +msgid "Tai Le" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:241 +msgid "New Tai Lue" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:245 +msgid "Khmer Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:249 +msgid "Buginese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:253 +msgid "Tai Tham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:257 +msgid "Combining Diacritical Marks Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:261 +msgid "Balinese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:265 +msgid "Sundanese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:269 +msgid "Batak" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:273 +msgid "Lepcha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:277 +msgid "Ol Chiki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:281 +msgid "Cyrillic Extended-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:285 +msgid "Sundanese Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:289 +msgid "Vedic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:293 +msgid "Phonetic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:297 +msgid "Phonetic Extensions Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:301 +msgid "Combining Diacritical Marks Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:305 +msgid "Latin Extended Additional" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:309 +msgid "Greek Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:313 +msgid "General Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:317 +msgid "Superscripts and Subscripts" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:321 +msgid "Currency Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:325 +msgid "Combining Diacritical Marks for Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:329 +msgid "Letterlike Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:333 +msgid "Number Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:337 +msgid "Arrows" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:341 +msgid "Mathematical Operators" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:345 +msgid "Miscellaneous Technical" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:349 +msgid "Control Pictures" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:353 +msgid "Optical Character Recognition" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:357 +msgid "Enclosed Alphanumerics" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:361 +msgid "Box Drawing" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:365 +msgid "Block Elements" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:369 +msgid "Geometric Shapes" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:373 +msgid "Miscellaneous Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:377 +msgid "Dingbats" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:381 +msgid "Miscellaneous Mathematical Symbols-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:385 +msgid "Supplemental Arrows-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:389 +msgid "Braille Patterns" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:393 +msgid "Supplemental Arrows-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:397 +msgid "Miscellaneous Mathematical Symbols-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:401 +msgid "Supplemental Mathematical Operators" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:405 +msgid "Miscellaneous Symbols and Arrows" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:409 +msgid "Glagolitic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:413 +msgid "Latin Extended-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:417 +msgid "Coptic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:421 +msgid "Georgian Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:425 +msgid "Tifinagh" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:429 +msgid "Ethiopic Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:433 +msgid "Cyrillic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:437 +msgid "Supplemental Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:441 +msgid "CJK Radicals Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:445 +msgid "Kangxi Radicals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:449 +msgid "Ideographic Description Characters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:453 +msgid "CJK Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:457 +msgid "Hiragana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:461 +msgid "Katakana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:465 +msgid "Bopomofo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:469 +msgid "Hangul Compatibility Jamo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:473 +msgid "Kanbun" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:477 +msgid "Bopomofo Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:481 +msgid "CJK Strokes" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:485 +msgid "Katakana Phonetic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:489 +msgid "Enclosed CJK Letters and Months" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:493 +msgid "CJK Compatibility" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:497 +msgid "CJK Unified Ideographs Extension A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:501 +msgid "Yijing Hexagram Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:505 +msgid "CJK Unified Ideographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:509 +msgid "Yi Syllables" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:513 +msgid "Yi Radicals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:517 +msgid "Lisu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:521 +msgid "Vai" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:525 +msgid "Cyrillic Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:529 +msgid "Bamum" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:533 +msgid "Modifier Tone Letters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:537 +msgid "Latin Extended-D" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:541 +msgid "Syloti Nagri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:545 +msgid "Common Indic Number Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:549 +msgid "Phags-pa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:553 +msgid "Saurashtra" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:557 +msgid "Devanagari Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:561 +msgid "Kayah Li" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:565 +msgid "Rejang" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:569 +msgid "Hangul Jamo Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:573 +msgid "Javanese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:577 +msgid "Myanmar Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:581 +msgid "Cham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:585 +msgid "Myanmar Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:589 +msgid "Tai Viet" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:593 +msgid "Meetei Mayek Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:597 +msgid "Ethiopic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:601 +msgid "Latin Extended-E" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:605 +msgid "Cherokee Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:609 +msgid "Meetei Mayek" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:613 +msgid "Hangul Syllables" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:617 +msgid "Hangul Jamo Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:621 +msgid "High Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:625 +msgid "High Private Use Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:629 +msgid "Low Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:633 +msgid "Private Use Area" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:637 +msgid "CJK Compatibility Ideographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:641 +msgid "Alphabetic Presentation Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:645 +msgid "Arabic Presentation Forms-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:649 +msgid "Variation Selectors" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:653 +msgid "Vertical Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:657 +msgid "Combining Half Marks" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:661 +msgid "CJK Compatibility Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:665 +msgid "Small Form Variants" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:669 +msgid "Arabic Presentation Forms-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:673 +msgid "Halfwidth and Fullwidth Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:677 +msgid "Specials" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:681 +msgid "Linear B Syllabary" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:685 +msgid "Linear B Ideograms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:689 +msgid "Aegean Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:693 +msgid "Ancient Greek Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:697 +msgid "Ancient Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:701 +msgid "Phaistos Disc" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:705 +msgid "Lycian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:709 +msgid "Carian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:713 +msgid "Coptic Epact Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:717 +msgid "Old Italic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:721 +msgid "Gothic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:725 +msgid "Old Permic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:729 +msgid "Ugaritic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:733 +msgid "Old Persian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:737 +msgid "Deseret" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:741 +msgid "Shavian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:745 +msgid "Osmanya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:749 +msgid "Osage" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:753 +msgid "Elbasan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:757 +msgid "Caucasian Albanian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:761 +msgid "Linear A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:765 +msgid "Cypriot Syllabary" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:769 +msgid "Imperial Aramaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:773 +msgid "Palmyrene" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:777 +msgid "Nabataean" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:781 +msgid "Hatran" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:785 +msgid "Phoenician" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:789 +msgid "Lydian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:793 +msgid "Meroitic Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:797 +msgid "Meroitic Cursive" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:801 +msgid "Kharoshthi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:805 +msgid "Old South Arabian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:809 +msgid "Old North Arabian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:813 +msgid "Manichaean" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:817 +msgid "Avestan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:821 +msgid "Inscriptional Parthian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:825 +msgid "Inscriptional Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:829 +msgid "Psalter Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:833 +msgid "Old Turkic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:837 +msgid "Old Hungarian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:841 +msgid "Rumi Numeral Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:845 +msgid "Brahmi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:849 +msgid "Kaithi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:853 +msgid "Sora Sompeng" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:857 +msgid "Chakma" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:861 +msgid "Mahajani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:865 +msgid "Sharada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:869 +msgid "Sinhala Archaic Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:873 +msgid "Khojki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:877 +msgid "Multani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:881 +msgid "Khudawadi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:885 +msgid "Grantha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:889 +msgid "Newa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:893 +msgid "Tirhuta" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:897 +msgid "Siddham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:901 +msgid "Modi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:905 +msgid "Mongolian Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:909 +msgid "Takri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:913 +msgid "Ahom" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:917 +msgid "Warang Citi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:921 +msgid "Zanabazar Square" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:925 +msgid "Soyombo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:929 +msgid "Pau Cin Hau" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:933 +msgid "Bhaiksuki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:937 +msgid "Marchen" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:941 +msgid "Masaram Gondi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:945 +msgid "Cuneiform" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:949 +msgid "Cuneiform Numbers and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:953 +msgid "Early Dynastic Cuneiform" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:957 +msgid "Egyptian Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:961 +msgid "Anatolian Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:965 +msgid "Bamum Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:969 +msgid "Mro" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:973 +msgid "Bassa Vah" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:977 +msgid "Pahawh Hmong" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:981 +msgid "Miao" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:985 +msgid "Ideographic Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:989 +msgid "Tangut" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:993 +msgid "Tangut Components" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:997 +msgid "Kana Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1001 +msgid "Kana Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1005 +msgid "Nushu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1009 +msgid "Duployan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1013 +msgid "Shorthand Format Controls" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1017 +msgid "Byzantine Musical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1021 +msgid "Musical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1025 +msgid "Ancient Greek Musical Notation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1029 +msgid "Tai Xuan Jing Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1033 +msgid "Counting Rod Numerals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1037 +msgid "Mathematical Alphanumeric Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1041 +msgid "Sutton SignWriting" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1045 +msgid "Glagolitic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1049 +msgid "Mende Kikakui" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1053 +msgid "Adlam" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1057 +msgid "Arabic Mathematical Alphabetic Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1061 +msgid "Mahjong Tiles" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1065 +msgid "Domino Tiles" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1069 +msgid "Playing Cards" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1073 +msgid "Enclosed Alphanumeric Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1077 +msgid "Enclosed Ideographic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1081 +msgid "Miscellaneous Symbols and Pictographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1085 +msgid "Emoticons" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1089 +msgid "Ornamental Dingbats" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1093 +msgid "Transport and Map Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1097 +msgid "Alchemical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1101 +msgid "Geometric Shapes Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1105 +msgid "Supplemental Arrows-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1109 +msgid "Supplemental Symbols and Pictographs" +msgstr "" -#: ../data/ibus.schemas.in.h:4 -msgid "Disable shortcut keys" -msgstr "ಶಾರ್ಟ್-ಕಟ್ ಕೀಲಿಗಳನ್ನು ಅಶಕ್ತಗೊಳಿಸು" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1113 +msgid "CJK Unified Ideographs Extension B" +msgstr "" -#: ../data/ibus.schemas.in.h:5 -msgid "Embed Preedit Text" -msgstr "ಪೂರ್ವ-ಸಂಪಾದನಾ(ಪ್ರಿ-ಎಡಿಟ್) ಪಠ್ಯವನ್ನು ಅಡಕಗೊಳಿಸು" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1117 +msgid "CJK Unified Ideographs Extension C" +msgstr "" -#: ../data/ibus.schemas.in.h:6 -msgid "Embed Preedit Text in Application Window" -msgstr "ಅನ್ವಯ ವಿಂಡೊದಲ್ಲಿ ಪೂರ್ವ-ಸಂಪಾದನಾ(ಪ್ರಿ-ಎಡಿಟ್) ಪಠ್ಯವನ್ನು ಅಡಕಗೊಳಿಸು" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1121 +msgid "CJK Unified Ideographs Extension D" +msgstr "" -#: ../data/ibus.schemas.in.h:7 -msgid "Enable input method by default" -msgstr "ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಶಕ್ತಗೊಳಿಸು" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1125 +msgid "CJK Unified Ideographs Extension E" +msgstr "" -#: ../data/ibus.schemas.in.h:8 -msgid "Enable input method by default when the application gets input focus" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1129 +msgid "CJK Unified Ideographs Extension F" msgstr "" -"ಅನ್ವಯವು ಇನ್‌ಪುಟ್ ಗಮನವನ್ನು ಪಡೆದುಕೊಂಡಾಗ ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ " -"ಶಕ್ತಗೊಳಿಸು" -#: ../data/ibus.schemas.in.h:9 -msgid "Enable shortcut keys" -msgstr "ಶಾರ್ಟ್-ಕಟ್ ಕೀಲಿಗಳನ್ನು ಶಕ್ತಗೊಳಿಸು" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1133 +msgid "CJK Compatibility Ideographs Supplement" +msgstr "" -#: ../data/ibus.schemas.in.h:10 -msgid "Language panel position" -msgstr "ಭಾಷೆಯ ಫಲಕವನ್ನು ತೋರಿಸು" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1137 +msgid "Tags" +msgstr "" -#: ../data/ibus.schemas.in.h:11 -msgid "Next engine shortcut keys" -msgstr "ಮುಂದಿನ ಎಂಜಿನ್ ಶಾರ್ಟ್-ಕಟ್ ಕೀಲಿಗಳು" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1141 +msgid "Variation Selectors Supplement" +msgstr "" -#: ../data/ibus.schemas.in.h:12 -msgid "Orientation of lookup table" -msgstr "ನೋಡಬೇಕಿರುವ (ಲುಕ್‌ಅಪ್‌) ಕೋಷ್ಟಕದ ಹೊಂದಿಕೆ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1145 +msgid "Supplementary Private Use Area-A" +msgstr "" -#: ../data/ibus.schemas.in.h:13 -msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" -msgstr "ನೋಡಬೇಕಿರುವ (ಲುಕ್‌ಅಪ್‌) ಕೋಷ್ಟಕದ ಹೊಂದಿಕೆ. 0 = ಅಡ್ಡಲಾಗಿ, 1 = ಲಂಬವಾಗಿ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1149 +msgid "Supplementary Private Use Area-B" +msgstr "" -#: ../data/ibus.schemas.in.h:14 -msgid "Preload engines" -msgstr "ಎಂಜಿನ್‌ಗಳನ್ನು ಮೊದಲೆ ಲೋಡ್ ಮಾಡು" +#: ../tools/main.vala:54 +msgid "List engine name only" +msgstr "ಎಂಜಿನ್‌ನ ಹೆಸರನ್ನು ಮಾತ್ರ ಪಟ್ಟಿ ಮಾಡು" -#: ../data/ibus.schemas.in.h:15 -msgid "Preload engines during ibus starts up" -msgstr "ibus ಆರಂಭಗೊಂಡಾಗ ಲೋಡ್ ಮಾಡಲಾದ ಎಂಜಿನ್‌ಗಳು" +#: ../tools/main.vala:70 ../tools/main.vala:195 ../tools/main.vala:205 +msgid "Can't connect to IBus.\n" +msgstr "IBus ನೊಂದಿಗೆ ಸಂಪರ್ಕಕಲ್ಪಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ.\n" -#: ../data/ibus.schemas.in.h:16 -msgid "Prev engine shortcut keys" -msgstr "ಹಿಂದಿನ ಎಂಜಿನ್ ಶಾರ್ಟ್-ಕಟ್ ಕೀಲಿಗಳು" +#: ../tools/main.vala:96 +#, c-format +msgid "language: %s\n" +msgstr "ಭಾಷೆ: %s\n" -#: ../data/ibus.schemas.in.h:17 ../setup/setup.ui.h:42 -msgid "Share the same input method among all applications" -msgstr "ಒಂದೇ ಇನ್‌ಪುಟ್‌ ವಿಧಾನವನ್ನು ಎಲ್ಲಾ ಅನ್ವಯಗಳಲ್ಲೂ ಬಳಸು" +#: ../tools/main.vala:164 +msgid "No engine is set.\n" +msgstr "ಯಾವುದೆ ಎಂಜಿನ್ ಅನ್ನು ಹೊಂದಿಸಲಾಗಿಲ್ಲ.\n" -#: ../data/ibus.schemas.in.h:18 ../setup/setup.ui.h:43 -msgid "Show icon on system tray" -msgstr "ವ್ಯವಸ್ಥೆಯ ಟ್ರೇಯಲ್ಲಿ ಚಿಹ್ನೆಯನ್ನು ತೋರಿಸು" +#: ../tools/main.vala:172 +msgid "Set global engine failed.\n" +msgstr "ಸಾರ್ವತ್ರಿಕ ಎಂಜಿನ್ ಹೊಂದಿಸುವಿಕೆಯು ವಿಫಲಗೊಂಡಿದೆ.\n" -#: ../data/ibus.schemas.in.h:19 -msgid "Show input method name" -msgstr "ಇನ್‌ಪುಟ್ ವಿಧಾನದ ಹೆಸರನ್ನು ತೋರಿಸು" +#: ../tools/main.vala:177 +msgid "Get global engine failed.\n" +msgstr "ಸಾರ್ವತ್ರಿಕ ಎಂಜಿನ್ ಪಡೆಯುವಿಕೆಯು ವಿಫಲಗೊಂಡಿದೆ.\n" -#: ../data/ibus.schemas.in.h:20 ../setup/setup.ui.h:45 -msgid "Show input method name on language bar" -msgstr "ಭಾಷೆಯ ಫಲಕದಲ್ಲಿನ ಇನ್‌ಪುಟ್ ವಿಧಾನದ ಹೆಸರನ್ನು ತೋರಿಸು" +#: ../tools/main.vala:220 +msgid "Read the system registry cache." +msgstr "ವ್ಯವಸ್ಥೆಯ ರಿಜಿಸ್ಟ್ರಿ ಕ್ಯಾಶೆಯನ್ನು ಓದು." -#: ../data/ibus.schemas.in.h:21 -msgid "" -"The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = " -"Always show" -msgstr "" -"ಭಾಷೆಯ ಫಲಕದ ವರ್ತನೆ. 0 = ಮೆನುವಿನಲ್ಲಿ ಅಡಕಗೊಳಿಸಲಾಗಿದೆ, 1 = ಸ್ವಯಂ ಅಡಗಿಸು, 2 = " -"ಯಾವಾಗಲೂ ತೋರಿಸು" +#: ../tools/main.vala:222 +msgid "Read the registry cache FILE." +msgstr "ರಿಜಿಸ್ಟ್ರಿ ಕ್ಯಾಶೆ FILE ಅನ್ನು ಓದು." -#: ../data/ibus.schemas.in.h:22 -msgid "" -"The position of the language panel. 0 = Top left corner, 1 = Top right " -"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" -msgstr "" -"ಭಾಷೆಯ ಫಲಕವು ಇರುವ ಸ್ಥಳ. 0 = ಮೇಲಿನ ಎಡ ಮೂಲೆ, 1 = ಮೇಲಿನ ಬಲ ಮೂಲೆ, 2 = ಕೆಳಗಿನ ಎಡ " -"ಮೂಲೆ, 3 = ಕೆಳಗಿನ ಬಲ ಮೂಲೆ, 4 = ಇಚ್ಛೆಯ" +#: ../tools/main.vala:240 ../tools/main.vala:245 +msgid "The registry cache is invalid.\n" +msgstr "ರಿಜಿಸ್ಟ್ರಿ ಕ್ಯಾಶೆಯು ಅಮಾನ್ಯವಾಗಿದೆ.\n" -#: ../data/ibus.schemas.in.h:23 -msgid "The shortcut keys for switching to the next input method in the list" -msgstr "ಪಟ್ಟಿಯಲ್ಲಿನ ಮುಂದಿನ ಇನ್‌ಪುಟ್ ವಿಧಾನಕ್ಕೆ ಬದಲಾಯಿಸಲು ಶಾರ್ಟ್-ಕಟ್‌ ಕೀಲಿಗಳು" +#: ../tools/main.vala:260 +msgid "Write the system registry cache." +msgstr "ವ್ಯವಸ್ಥೆಯ ರಿಜಿಸ್ಟ್ರಿ ಕ್ಯಾಶೆಯನ್ನು ಬರೆ." -#: ../data/ibus.schemas.in.h:24 -msgid "The shortcut keys for switching to the previous input method" -msgstr "ಹಿಂದಿನ ಇನ್‌ಪುಟ್ ವಿಧಾನಕ್ಕೆ ಬದಲಾಯಿಸಲು ಶಾರ್ಟ್-ಕಟ್‌ ಕೀಲಿಗಳು" +#: ../tools/main.vala:262 +msgid "Write the registry cache FILE." +msgstr "ರಿಜಿಸ್ಟ್ರಿ ಕ್ಯಾಶೆ FILE ಅನ್ನು ಬರೆ." -#: ../data/ibus.schemas.in.h:25 -msgid "The shortcut keys for turning input method off" -msgstr "ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಆಫ್ ಮಾಡಲು ಬಳಸಬಹುದಾದ ಶಾರ್ಟ್-ಕಟ್‌ ಕೀಲಿ" +#: ../tools/main.vala:314 +msgid "Resetting…" +msgstr "ಮರುಹೊಂದಿಸುವಿಕೆ..." -#: ../data/ibus.schemas.in.h:26 -msgid "The shortcut keys for turning input method on" -msgstr "ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಆನ್ ಮಾಡಲು ಬಳಸಬಹುದಾದ ಶಾರ್ಟ್-ಕಟ್‌ ಕೀಲಿ" +#: ../tools/main.vala:328 +msgid "Done" +msgstr "ಮುಗಿಯಿತು" -#: ../data/ibus.schemas.in.h:27 ../setup/setup.ui.h:51 -msgid "The shortcut keys for turning input method on or off" -msgstr "ಇನ್‌ಪುಟ್‌ ವಿಧಾನಗಳನ್ನು ಆಫ್ ಹಾಗು ಆನ್ ಮಾಡಲು ಶಾರ್ಟ್-ಕೀಲಿಗಳು" +#: ../tools/main.vala:373 +msgid "Set or get engine" +msgstr "ಎಂಜಿನ್ ಅನ್ನು ಹೊಂದಿಸು ಅಥವ ಪಡೆದುಕೊ" -#: ../data/ibus.schemas.in.h:28 -msgid "Trigger shortcut keys" -msgstr "ಶಾರ್ಟ್-ಕಟ್ ಕೀಲಿಗಳನ್ನು ಟ್ರಿಗರ್ ಮಾಡು" +#: ../tools/main.vala:374 +msgid "Exit ibus-daemon" +msgstr "ibus-daemon ಇಂದ ನಿರ್ಗಮಿಸು" -#: ../data/ibus.schemas.in.h:29 -msgid "Use custom font" -msgstr "ಇಚ್ಛೆಯ ಅಕ್ಷರಶೈಲಿಯನ್ನು ಬಳಸು" +#: ../tools/main.vala:375 +msgid "Show available engines" +msgstr "ಲಭ್ಯವಿರುವ ಎಂಜಿನ್‌ಗಳನ್ನು ತೋರಿಸು" -#: ../data/ibus.schemas.in.h:30 -msgid "Use custom font name for language panel" -msgstr "ಭಾಷೆಯ ಫಲಕಕ್ಕಾಗಿ ಇಚ್ಛೆಯ ಅಕ್ಷರಶೈಲಿಯ ಹೆಸರನ್ನು ಬಳಸಿ" +#: ../tools/main.vala:376 +msgid "(Not implemented)" +msgstr "(ಅನ್ವಯಿಸಲಾಗಿಲ್ಲ)" -#: ../data/ibus.schemas.in.h:31 -msgid "Use global input method" -msgstr "ಜಾಗತಿಕ ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಬಳಸಿ" +#: ../tools/main.vala:377 +msgid "Restart ibus-daemon" +msgstr "ibus-daemon ಅನ್ನು ಮರಳಿ ಸ್ಥಾಪಿಸು" -#: ../data/ibus.schemas.in.h:32 ../setup/setup.ui.h:55 -msgid "Use system keyboard (XKB) layout" -msgstr "ವ್ಯವಸ್ಥೆಯ ಕೀಲಿಮಣೆ (XKB) ವಿನ್ಯಾಸವನ್ನು ಬಳಸಿ" +#: ../tools/main.vala:378 +msgid "Show version" +msgstr "ಆವೃತ್ತಿಯನ್ನು ತೋರಿಸು" -#: ../data/ibus.schemas.in.h:33 ../setup/setup.ui.h:56 -msgid "Use system keyboard layout" -msgstr "ವ್ಯವಸ್ಥೆಯ ಕೀಲಿಮಣೆ ವಿನ್ಯಾಸವನ್ನು ಬಳಸಿ" +#: ../tools/main.vala:379 +msgid "Show the content of registry cache" +msgstr "ರಿಜಿಸ್ಟ್ರಿ ಕ್ಯಾಶೆಯಲ್ಲಿರುವ ವಿಷಯವನ್ನು ತೋರಿಸು" -#: ../setup/setup.ui.h:1 -msgid "..." -msgstr "..." +#: ../tools/main.vala:380 +msgid "Create registry cache" +msgstr "ರಿಜಿಸ್ಟ್ರಿ ಕ್ಯಾಶೆಯನ್ನು ರಚಿಸು." -#: ../setup/setup.ui.h:2 -msgid "Font and Style" -msgstr "ಅಕ್ಷರಶೈಲಿ ಹಾಗು ವಿನ್ಯಾಸ" +#: ../tools/main.vala:381 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "ibus-daemon ನ D-Bus ವಿಳಾಸವನ್ನು ಮುದ್ರಿಸು" -#: ../setup/setup.ui.h:3 -msgid "Global input method settings" -msgstr "ಜಾಗತಿಕ ಇನ್‌ಪುಟ್‌ ವಿಧಾನದ ಸಿದ್ಧತೆಗಳು" +#: ../tools/main.vala:382 +msgid "Show the configuration values" +msgstr "ಸಂರಚನೆಯ ಮೌಲ್ಯಗಳನ್ನು ತೋರಿಸು" -#: ../setup/setup.ui.h:4 -msgid "Keyboard Layout" -msgstr "ಕೀಲಿಮಣೆ ವಿನ್ಯಾಸ" +#: ../tools/main.vala:383 +msgid "Reset the configuration values" +msgstr "ಸಂರಚನಾ ಮೌಲ್ಯಗಳನ್ನು ಮರುಹೊಂದಿಸು" -#: ../setup/setup.ui.h:5 -msgid "Keyboard Shortcuts" -msgstr "ಕೀಲಿಮಣೆ ಶಾರ್ಟ್-ಕಟ್‌ಗಳು" +#: ../tools/main.vala:385 +msgid "Save emoji on dialog to clipboard " +msgstr "" -#: ../setup/setup.ui.h:6 -msgid "Startup" -msgstr "ಆರಂಭ" +#: ../tools/main.vala:387 +msgid "Show this information" +msgstr "ಈ ಮಾಹಿತಿಯನ್ನು ತೋರಿಸು" -#: ../setup/setup.ui.h:7 -msgid "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" +#: ../tools/main.vala:393 +#, c-format +msgid "Usage: %s COMMAND [OPTION...]\n" "\n" +msgstr "ಬಳಕೆ: %s COMMAND [OPTION...]\n" "\n" + +#: ../tools/main.vala:394 +msgid "Commands:\n" +msgstr "ಆದೇಶಗಳು:\n" + +#: ../tools/main.vala:423 +#, c-format +msgid "%s is unknown command!\n" +msgstr "%s ಎನ್ನುವುದು ಗೊತ್ತಿರದ ಆದೇಶ!\n" + +#: ../ui/gtk3/emojier.vala:245 +msgid "Show emoji variants" msgstr "" -"IBus\n" -"ಚತುರ ಇನ್‌ಪುಟ್ ಬಸ್\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" -#: ../setup/setup.ui.h:14 -msgid "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." +#: ../ui/gtk3/emojier.vala:250 +msgid "Menu" msgstr "" -"ಪೂರ್ವನಿಯೋಜಿತ ಇನ್‌ಪುಟ್‌ ವಿಧಾನವು ಪಟ್ಟಿಯ ಮೇಲ್ಬಾಗದಲ್ಲಿದೆ.\n" -"ಅದನ್ನು ಬದಲಾಯಿಸಲು ನೀವು ಮೇಲೆ/ಕೆಳಗಿನ ಬಾಣದ ಗುರುತಿನ ಗುಂಡಿಗಳನ್ನು ಬಳಸಬಹುದು." -#: ../setup/setup.ui.h:17 -msgid "Add the selected input method into the enabled input methods" +#: ../ui/gtk3/emojier.vala:273 +msgid "Favorites" msgstr "" -"ಆಯ್ಕೆ ಮಾಡಲಾದ ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಶಕ್ತಗೊಂಡಿರುವ ಇನ್‌ಪುಟ್‌ ವಿಧಾನಗಳಿಗೆ ಸೇರಿಸಿ" -#: ../setup/setup.ui.h:18 -msgid "Advanced" -msgstr "ಸುಧಾರಿತ" +#: ../ui/gtk3/emojier.vala:274 +msgid "Others" +msgstr "" -#: ../setup/setup.ui.h:19 -msgid "Always" -msgstr "ಯಾವಾಗಲೂ" +#: ../ui/gtk3/emojier.vala:275 +msgid "Open Unicode choice" +msgstr "" -#: ../setup/setup.ui.h:20 -msgid "Bottom left corner" -msgstr "ಕೆಳಗಿನ ಎಡ ಮೂಲ" +#: ../ui/gtk3/emojier.vala:445 ../ui/gtk3/emojier.vala:826 +#: ../ui/gtk3/panel.vala:1149 +msgid "Emoji Choice" +msgstr "" -#: ../setup/setup.ui.h:21 -msgid "Bottom right corner" -msgstr "ಕೆಳಗಿನ ಬಲ ಮೂಲ" +#: ../ui/gtk3/emojier.vala:451 +msgid "Type annotation or choose emoji" +msgstr "" -#: ../setup/setup.ui.h:22 -msgid "Candidates orientation:" -msgstr "ಅಭ್ಯರ್ಥಿಗಳ ಹೊಂದಿಕೆ:" +#: ../ui/gtk3/emojier.vala:948 +msgid "Unicode Choice" +msgstr "" -#: ../setup/setup.ui.h:23 -msgid "Custom" -msgstr "ಇಚ್ಛೆಯ" +#: ../ui/gtk3/emojier.vala:950 +msgid "Bring back emoji choice" +msgstr "" -#: ../setup/setup.ui.h:24 -msgid "Disable:" -msgstr "ಅಶಕ್ತಗೊಳಿಸು:" +#: ../ui/gtk3/emojier.vala:1016 +msgid "Loading a Unicode dictionary:" +msgstr "" -#: ../setup/setup.ui.h:25 -msgid "Embed preedit text in application window" -msgstr "ಅನ್ವಯ ವಿಂಡೊದಲ್ಲಿ Preedit ಪಠ್ಯವನ್ನು ಅಡಕಗೊಳಿಸಿ" +#: ../ui/gtk3/emojier.vala:1071 +msgid "Page Down" +msgstr "" -#: ../setup/setup.ui.h:26 -msgid "Embed the preedit text of input method in the application window" -msgstr "ಅನ್ವಯ ವಿಂಡೊದಲ್ಲಿ ಇನ್‌ಪುಟ್ ವಿಧಾನದ Preedit ಪಠ್ಯವನ್ನು ಅಡಕಗೊಳಿಸಿ" +#: ../ui/gtk3/emojier.vala:1082 +msgid "Page Up" +msgstr "" -#: ../setup/setup.ui.h:27 -msgid "Embedded in menu" -msgstr "ಮೆನುವನಲ್ಲಿ ಅಡಕಗೊಳಿಸಲಾದ" +#: ../ui/gtk3/emojier.vala:1236 +#, c-format +msgid "Code point: %s" +msgstr "" -#: ../setup/setup.ui.h:28 -msgid "Enable or disable:" -msgstr "ಶಕ್ತಗೊಂಡ ಅಥವ ಅಶಕ್ತಗೊಂಡ:" +#: ../ui/gtk3/emojier.vala:1242 +msgid "Has emoji variants" +msgstr "" -#: ../setup/setup.ui.h:29 -msgid "Enable:" -msgstr "ಶಕ್ತಗೊಳಿಸು:" +#: ../ui/gtk3/emojier.vala:1377 ../ui/gtk3/emojier.vala:1391 +#, c-format +msgid "Description: %s" +msgstr "" -#: ../setup/setup.ui.h:30 -msgid "General" -msgstr "ಸಾಮಾನ್ಯ" +#: ../ui/gtk3/emojier.vala:1377 +msgid "None" +msgstr "" -#: ../setup/setup.ui.h:31 -msgid "Horizontal" -msgstr "ಲಂಬ" +#: ../ui/gtk3/emojier.vala:1402 +#, c-format +msgid "Annotations: %s" +msgstr "" -#: ../setup/setup.ui.h:34 -msgid "Language panel position:" -msgstr "ಭಾಷೆಯ ಫಲಕದ ಸ್ಥಳ:" +#: ../ui/gtk3/emojier.vala:1428 +#, c-format +msgid "Name: %s" +msgstr "" -#: ../setup/setup.ui.h:35 -msgid "Move down the selected input method in the enabled input methods" +#: ../ui/gtk3/emojier.vala:1436 +#, c-format +msgid "Alias: %s" msgstr "" -"ಆಯ್ಕೆ ಮಾಡಲಾದ ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಶಕ್ತಗೊಂಡಿರುವ ಇನ್‌ಪುಟ್‌ ವಿಧಾನಗಳ ಪಟ್ಟಿಯಲ್ಲಿ " -"ಕೆಳಕ್ಕೆ ಜರುಗಿಸಿ" -#: ../setup/setup.ui.h:36 -msgid "Move up the selected input method in the enabled input methods list" +#: ../ui/gtk3/emojierapp.vala:56 +msgid "Canceled to choose an emoji." msgstr "" -"ಆಯ್ಕೆ ಮಾಡಲಾದ ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಶಕ್ತಗೊಂಡಿರುವ ಇನ್‌ಪುಟ್‌ ವಿಧಾನಗಳ ಪಟ್ಟಿಯಲ್ಲಿ " -"ಮೇಲಕ್ಕೆ ಜರುಗಿಸಿ" -#: ../setup/setup.ui.h:37 -msgid "Next input method:" -msgstr "ಮುಂದಿನ ಇನ್‌ಪುಟ್ ವಿಧಾನ:" +#: ../ui/gtk3/emojierapp.vala:77 +msgid "Copied an emoji to your clipboard." +msgstr "" -#: ../setup/setup.ui.h:38 -msgid "Previous input method:" -msgstr "ಹಿಂದಿನ ಇನ್‌ಪುಟ್ ವಿಧಾನ:" +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ../ui/gtk3/emojierapp.vala:97 +msgid "\"FONT\" for emoji characters on emoji dialog" +msgstr "" -#: ../setup/setup.ui.h:39 -msgid "Remove the selected input method from the enabled input methods" +#: ../ui/gtk3/emojierapp.vala:98 +msgid "FONT" msgstr "" -"ಆಯ್ಕೆ ಮಾಡಲಾದ ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಶಕ್ತಗೊಂಡಿರುವ ಇನ್‌ಪುಟ್‌ ವಿಧಾನಗಳ ಪಟ್ಟಿಯಿಂದ " -"ತೆಗೆದು ಹಾಕಿ" -#: ../setup/setup.ui.h:40 -msgid "Set the behavior of ibus how to show or hide language bar" +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ../ui/gtk3/emojierapp.vala:103 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" -"ಭಾಷಾ ಪಟ್ಟಿಕೆಯನ್ನು ಹೇಗೆ ತೋರಿಸಬೇಕು ಅಥವ ಅಡಗಿಸಬೇಕು ಎನ್ನುವ ibus ನ ವರ್ತನೆಯನ್ನು " -"ಹೊಂದಿಸಿ" -#: ../setup/setup.ui.h:41 -msgid "Set the orientation of candidates in lookup table" -msgstr "ನೋಡಬೇಕಿರುವ (ಲುಕ್‌ಅಪ್‌) ಕೋಷ್ಟಕದ ವಾಲಿಕೆಯನ್ನು ಹೊಂದಿಸಿ" +#: ../ui/gtk3/emojierapp.vala:104 +msgid "LANG" +msgstr "" -#: ../setup/setup.ui.h:44 -msgid "Show information of the selected input method" -msgstr "ಆಯ್ಕೆ ಮಾಡಲಾದ ಇನ್‌ಪುಟ್ ವಿಧಾನದ ಮಾಹಿತಿಯನ್ನು ತೋರಿಸು" +#: ../ui/gtk3/emojierapp.vala:106 +msgid "Emoji annotations can be match partially" +msgstr "" -#: ../setup/setup.ui.h:46 -msgid "Show input method's name on language bar when check the checkbox" +#: ../ui/gtk3/emojierapp.vala:110 +msgid "Match with the length of the specified integer" msgstr "" -"ಗುರುತುಚೌಕದಲ್ಲಿ ಗುರುತು ಹಾಕಿದಾಗ ಭಾಷಾ ಪಟ್ಟಿಯಲ್ಲಿ ಇನ್‌ಪುಟ್ ವಿಧಾನದ ಹೆಸರನ್ನು " -"ತೋರಿಸು" -#: ../setup/setup.ui.h:47 -msgid "Show language panel:" -msgstr "ಭಾಷೆಯ ಫಲಕವನ್ನು ತೋರಿಸು:" +#: ../ui/gtk3/emojierapp.vala:114 +msgid "Match with the condition of the specified integer" +msgstr "" -#: ../setup/setup.ui.h:48 -msgid "Start ibus on login" -msgstr "ಪ್ರವೇಶಿಸಿದಾಗ ibus ಅನ್ನು ಆರಂಭಿಸು" +#: ../ui/gtk3/panel.vala:282 ../ui/gtk3/panel.vala:313 +msgid "IBus Panel" +msgstr "" -#: ../setup/setup.ui.h:49 -msgid "The shortcut keys for switching to next input method in the list" -msgstr "ಪಟ್ಟಿಯಲ್ಲಿನ ಮುಂದಿನ ಇನ್‌ಪುಟ್ ವಿಧಾನಕ್ಕೆ ಬದಲಾಯಿಸಲು ಶಾರ್ಟ್-ಕಟ್‌ ಕೀಲಿಗಳು" +#: ../ui/gtk3/panel.vala:710 +msgid "IBus Update" +msgstr "IBus ಅಪ್‌ಡೇಟ್‌" -#: ../setup/setup.ui.h:50 -msgid "The shortcut keys for switching to previous input method in the list" -msgstr "ಪಟ್ಟಿಯಲ್ಲಿನ ಹಿಂದಿನ ಇನ್‌ಪುಟ್ ವಿಧಾನಕ್ಕೆ ಬದಲಾಯಿಸಲು ಶಾರ್ಟ್-ಕಟ್‌ ಕೀಲಿಗಳು" +#: ../ui/gtk3/panel.vala:711 ../ui/gtk3/panel.vala:722 +msgid "Super+space is now the default hotkey." +msgstr "Super+space ಎನ್ನುವುದು ಈಗ ಪೂರ್ವನಿಯೋಜಿತ ಹಾಟ್‌ಕೀಲ್ ಆಗಿರುತ್ತದೆ." -#: ../setup/setup.ui.h:52 -msgid "Top left corner" -msgstr "ಮೇಲಿನ ಎಡ ಮೂಲೆ" +#: ../ui/gtk3/panel.vala:1121 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus ಎನ್ನುವುದು Linux/Unix ಗಾಗಿನ ಒಂದು ಚತುರ ಇನ್‌ಪುಟ್ ಬಸ್." -#: ../setup/setup.ui.h:53 -msgid "Top right corner" -msgstr "ಮೇಲಿನ ಬಲ ಮೂಲೆ" +#: ../ui/gtk3/panel.vala:1125 +msgid "translator-credits" +msgstr "ಶಂಕರ್ ಪ್ರಸಾದ್ " -#: ../setup/setup.ui.h:54 -msgid "Use custom font:" -msgstr "ಇಚ್ಛೆಯ ಅಕ್ಷರಶೈಲಿಯನ್ನು ಬಳಸಿ:" +#: ../ui/gtk3/panel.vala:1144 +msgid "Preferences" +msgstr "ಆದ್ಯತೆಗಳು " -#: ../setup/setup.ui.h:57 -msgid "Vertical" -msgstr "ಲಂಬ" +#: ../ui/gtk3/panel.vala:1181 +msgid "Restart" +msgstr "ಪುನರಾರಂಭಿಸು" -#: ../setup/setup.ui.h:58 -msgid "When active" -msgstr "ಸಕ್ರಿಯವಾಗಿದ್ದಾಗ" +#: ../ui/gtk3/panel.vala:1185 +msgid "Quit" +msgstr "ಬಿಟ್ಟು ಬಿಡು " + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ../ui/gtk3/propertypanel.vala:368 ../ui/gtk3/propertypanel.vala:376 +msgid "default:LTR" +msgstr "default:LTR" diff --git a/po/ko.po b/po/ko.po index c4bbe831f..a86e29e36 100644 --- a/po/ko.po +++ b/po/ko.po @@ -1,522 +1,3546 @@ -# translation of ibus.master.ko.po to Korean -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. +# Korean translation of ibus. +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2022 Takao Fujiwara +# This file is distributed under the same license as the ibus package. # -# Eunju Kim , 2009. -# Hyunsok Oh , 2010. +# Translators: +# eukim , 2009,2012 +# eukim , 2009 +# eukim , 2012 +# Hyunsok Oh , 2010 +# lego37yoon , 2014 +# Michelle Kim , 2012-2014 +# Seong-ho Cho , 2014, 2021. +# fujiwara , 2015. #zanata +# Michelle Kim , 2017. #zanata +# fujiwara , 2018. #zanata +# Young-Ho, Cha , 2003-2006. (gucharmap) +# Changwoo Ryu , 2007-2015. (gucharmap) +# DaeHyun Sung , 2016-2019. (gucharmap) +# Changwoo Ryu , 2019-2020. +# simmon , 2021. +# 김인수 , 2022. msgid "" msgstr "" -"Project-Id-Version: ibus.master.ko\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-12 00:41+0900\n" -"PO-Revision-Date: 2010-08-03 15:01+1000\n" -"Last-Translator: \n" -"Language-Team: Korean \n" +"Project-Id-Version: ibus 1.5.21\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2020-09-03 21:21+0900\n" +"PO-Revision-Date: 2022-04-10 09:17+0000\n" +"Last-Translator: 김인수 \n" +"Language-Team: Korean \n" "Language: ko\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.11.4\n" -"Plural-Forms: nplurals=1; plural=0;\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.11.2\n" -#: ../bus/ibus.desktop.in.h:1 -msgid "IBus" -msgstr "IBus" +#. Translators: Here “Preload” is a verb +#: data/dconf/org.freedesktop.ibus.gschema.xml:11 +msgid "Preload engines" +msgstr "엔진 미리 불러오기" + +#. Translators: Tooltip for the button “Preload Engines” +#: data/dconf/org.freedesktop.ibus.gschema.xml:13 +msgid "Preload engines during ibus starts up" +msgstr "ibus 시작 할 때에 엔진을 미리 불러옵니다" -#: ../bus/ibus.desktop.in.h:2 -msgid "Input Method Framework" -msgstr "입력 방식 프레임워크" +#: data/dconf/org.freedesktop.ibus.gschema.xml:17 +msgid "Engines order" +msgstr "엔진 순서" -#: ../bus/ibus.desktop.in.h:3 -msgid "Start IBus Input Method Framework" -msgstr "IBus 입력 방식 프레임워크 시작" +#: data/dconf/org.freedesktop.ibus.gschema.xml:18 +msgid "Saved engines order in input method list" +msgstr "입력기 목록에 저장된 엔진 순서" -#: ../ibus/_config.py.in:39 +#: data/dconf/org.freedesktop.ibus.gschema.xml:22 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "IME 전환 창의 팝업 지연 시간 밀리 초" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:23 msgid "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +"Set popup delay milliseconds to show IME switcher window. The default is " +"400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " +"show the window and switch prev/next engines." msgstr "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +"IME 전환 창을 표시할 때 밀리초 단위의 지연을 지정합니다. 기본값은 400입니다. " +"0 = 창을 즉시 표시합니다. 0보다 크면 밀리초 단위로 지연합니다. 0보다 작으면 " +"창을 표시하지 않고 이전/다음 엔진으로 전환합니다." -#: ../ibus/lang.py:41 -msgid "Other" -msgstr "기타" +#: data/dconf/org.freedesktop.ibus.gschema.xml:27 +msgid "Saved version number" +msgstr "저장한 버전 번호" -#: ../ui/gtk/candidatepanel.py:264 -msgid "Previous page" -msgstr "이전 페이지" +#: data/dconf/org.freedesktop.ibus.gschema.xml:28 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" +"저장한 버전은 이전에 설치한 ibus 입력기와 현재 ibus 입력기 비교에 활용합니다." -#: ../ui/gtk/candidatepanel.py:269 -msgid "Next page" -msgstr "다음 페이지" +#: data/dconf/org.freedesktop.ibus.gschema.xml:32 +msgid "Latin layouts which have no ASCII" +msgstr "ASCII가 없는 라틴 문자 키보드 배치" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:33 +msgid "US layout is appended to the Latin layouts. variant can be omitted." +msgstr "" +"US 키보드 배치가 라틴 문자 키보드 배치에 추가되었습니다. 변형 버전은 생략 될 " +"수 있습니다." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:37 +msgid "Use xmodmap" +msgstr "xmodmap 사용" -#: ../ui/gtk/main.py:55 +#: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" -"Some input methods have been installed, removed or updated. Please restart " -"ibus input platform." +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" -"입력 방식이 몇가지 설치되거나, 삭제되거나, 업데이트되었습니다. ibus 입력 플랫" -"폼을 재시작 하십시오." +"ibus 엔진을 전환할 때 .xmodmap 또는 .Xmodmap이 있는 경우 xmodmap을 실행합니" +"다." -#: ../ui/gtk/main.py:59 -msgid "Restart Now" -msgstr "지금 재시작" +#: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 +msgid "Use system keyboard layout" +msgstr "시스템 키보드 배치 사용" -#: ../ui/gtk/main.py:60 -msgid "Later" -msgstr "나중에" +#: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 +msgid "Use system keyboard (XKB) layout" +msgstr "시스템 키보드 배치 (XKB) 사용" -#: ../ui/gtk/panel.py:109 -msgid "IBus input method framework" -msgstr "IBus 입력 방식 프레임워크" +#: data/dconf/org.freedesktop.ibus.gschema.xml:47 +msgid "Embed Preedit Text" +msgstr "사전 편집 텍스트 포함" -#: ../ui/gtk/panel.py:327 -msgid "Restart" -msgstr "재시작" +#: data/dconf/org.freedesktop.ibus.gschema.xml:48 +msgid "Embed Preedit Text in Application Window" +msgstr "응용 프로그램 창에 사전 편집 텍스트를 포함" -#: ../ui/gtk/panel.py:414 -msgid "Turn off input method" -msgstr "입력 방식 해제" +#: data/dconf/org.freedesktop.ibus.gschema.xml:52 +msgid "Use global input method" +msgstr "전체 공통 입력기 사용" -#: ../ui/gtk/panel.py:453 -msgid "No input window" -msgstr "입력 창이 없음 " +#: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 +msgid "Share the same input method among all applications" +msgstr "모든 응용 프로그램에서 동일한 입력기 공유" -#: ../ui/gtk/panel.py:484 -msgid "IBus is an intelligent input bus for Linux/Unix." -msgstr "IBus는 Linux/Unix를 위한 지능형 입력 버스입니다. " +#: data/dconf/org.freedesktop.ibus.gschema.xml:57 +msgid "Enable input method by default" +msgstr "입력기를 기본값으로 활성화" -#: ../ui/gtk/panel.py:488 -msgid "translator-credits" -msgstr "김은주(eukim@redhat.com)" +#: data/dconf/org.freedesktop.ibus.gschema.xml:58 +msgid "Enable input method by default when the application gets input focus" +msgstr "응용프로그램의 입력창에 포커스가 가면 기본적으로 입력기 활성화" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:62 +msgid "DConf preserve name prefixes" +msgstr "DConf는 이름 접두사를 보존합니다" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:63 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "DConf 키 접두사는 이름 변환을 중지합니다" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:70 +msgid "Trigger shortcut keys" +msgstr "트리거 단축키" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:71 +#: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 +msgid "The shortcut keys for turning input method on or off" +msgstr "입력기를 켜거나 끄기 위한 단축키" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:75 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "gtk_accelerator_parse의 트리거 단축키" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:80 +msgid "Enable shortcut keys" +msgstr "단축키 활성화" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:81 +msgid "The shortcut keys for turning input method on" +msgstr "입력기를 켜기 위한 단축키" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:85 +msgid "Disable shortcut keys" +msgstr "단축키 비활성화" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:86 +msgid "The shortcut keys for turning input method off" +msgstr "입력기를 끄기 위한 단축키" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:90 +#: data/dconf/org.freedesktop.ibus.gschema.xml:95 +msgid "Next engine shortcut keys" +msgstr "다음 엔진 단축키" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:91 +#: data/dconf/org.freedesktop.ibus.gschema.xml:96 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "목록에 있는 다음 입력기로 전환하기 위한 단축키" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:100 +#: data/dconf/org.freedesktop.ibus.gschema.xml:105 +msgid "Prev engine shortcut keys" +msgstr "이전 엔진 단축키" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:101 +#: data/dconf/org.freedesktop.ibus.gschema.xml:106 +msgid "The shortcut keys for switching to the previous input method" +msgstr "목록에 있는 이전 입력기로 전환하기 위한 단축키" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:112 +msgid "Auto hide" +msgstr "자동 숨김" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:113 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "속성 패널 동작입니다. 0 = 보여주지 않음, 1 = 자동 숨김, 2 = 항상 표시" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:117 +#: data/dconf/org.freedesktop.ibus.gschema.xml:121 +msgid "Language panel position" +msgstr "언어 패널 위치" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:125 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "패널이 항상 표시되는 경우 입력 커서를 따라감" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:126 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" +"참이면, 패널이 항상 표시되는 경우 패널이 입력 커서를 따라갑니다. 거짓이면, 패" +"널이 고정된 위치에 표시됩니다." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:130 +msgid "The milliseconds to show property panel" +msgstr "속성 패널을 표시할 시간(밀리초)" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:131 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" +"포커스를 받은 다음, 또는 속성 값을 바꾸었을 때 속성 패널을 표시할 밀리초 단" +"위 시간입니다." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:135 +msgid "Orientation of lookup table" +msgstr "검색 테이블의 방향" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:136 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "검색 테이블의 방향. 0 = 가로, 1 = 세로" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:140 +#: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 +#: setup/setup.ui:475 +msgid "Show icon on system tray" +msgstr "시스템 트레이에 아이콘 표시" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:145 +msgid "Show input method name" +msgstr "입력기 이름 표시" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 +msgid "Show input method name on language bar" +msgstr "입력 도구모음에 입력기 이름 표시" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:150 +msgid "RGBA value of XKB icon" +msgstr "XKB 아이콘의 RGBA 값" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:151 +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form 'rgba(r," +"g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 to 255 or " +"percentage values in the range 0% to 100%, and 'a' is a floating point value " +"in the range 0 to 1 of the alpha." +msgstr "" +"XKB 아이콘은 배치 문자열을 보여주며 RGBA 값을 통해 표현합니다. RGBA 값은 1. " +"X11의 색상 이름, 2. 'r' 'g' 'b' 자리에 적, 녹, 청의 16진수 값이 들어가는 " +"'#rrggbb' 형식의 16진수 값이며, 3. 'r', 'g', 'b' 자리에 0부터 255까지의 값 또" +"는 0%부터 100%까지의 백분율 값이 들어가는 'rgb(r,g,b)' 형식의 RGB 색상 값 또" +"는, 4. 여기에 'a'는 0부터 1까지의 실수 알파 값이 들어가는 'rgba(r,g,b,a)' 값" +"이 될 수 있습니다." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:155 +msgid "The milliseconds to show the panel icon for a property" +msgstr "속성에 대해 패널 아이콘을 표시하는 시간, 밀리초 단위" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:156 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" +"엔진을 전환할 때 IBusEngineDesc에서 icon-prop-key 값을 통해 속성이 지정되었" +"을 때, 패널 아이콘을 엔진 아이콘에서 속성 아이콘으로 표시하는 시간 (밀리초 단" +"위). 이 값이 0이면 지연 시간이 없고 속성 아이콘을 즉시 표시합니다." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:160 +msgid "Use custom font" +msgstr "사용자 지정 글꼴 사용" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:161 +msgid "Use custom font name for language panel" +msgstr "언어 패널용 사용자 지정 글꼴 이름 사용" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:165 +#: data/dconf/org.freedesktop.ibus.gschema.xml:192 +msgid "Custom font" +msgstr "사용자 지정 글꼴" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:166 +msgid "Custom font name for language panel" +msgstr "언어 패널에 사용할 지정 글꼴 이름" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:170 setup/setup.ui:1305 +msgid "Choose glyphs with input method's language on candidate window" +msgstr "후보 창에서 입력기의 언어에 따라 글리프 선택" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:171 +msgid "" +"Some code points have the different glyphs and Pango determines the glyphs " +"from the language attribute. Pango chooses glyphs from the IBus engine's " +"language if the value is true and choose them from the desktop locale if the " +"value is false." +msgstr "" +"일부 코드 포인트는 여러 개의 글리프를 사용할 수 있어서 Pango에서 언어 속성에 " +"따라 글리프를 결정합니다. 이 값이 참이면 Pango에서는 아이버스 엔진의 언어에 " +"따라 글리프를 결정합니다. 이 값이 거짓이면 데스크톱 로캘에 따라 글리프를 결정" +"합니다." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:182 +msgid "Unicode shortcut keys for gtk_accelerator_parse" +msgstr "유니코드 단축키, gtk_accelerator_parse 형식" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:183 +msgid "The shortcut keys for turning Unicode typing on or off" +msgstr "입력기를 활성 또는 해제하는 단축키" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:187 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "gtk_accelerator_parse의 이모지 단축키" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:188 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "이모지 입력을 켜거나 끄는 단축키" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:193 +msgid "Custom font name for emoji characters on emoji dialog" +msgstr "이모지 대화창의 이모지 문자에 사용할 사용자 설정 글꼴 이름" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:197 +msgid "Default language for emoji dictionary" +msgstr "이모지 사전에 사용할 기본값 언어" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:198 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict ." +msgstr "" +"이모지 대화창의 이모지 사전의 기본 언어를 선택합니다. $lang 값이면 /usr/" +"share/ibus/dicts/emoji-$lang.dict 사전을 사용합니다." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:202 +msgid "favorite emoji list on emoji dialog" +msgstr "이모지 대화 창의 자주 사용하는 이모지 목록" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:203 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "" +"이 목록에 문자가 들어 있으면 이모지 목록에서 자주 사용하는 이모지를 표시합니" +"다." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:207 +msgid "favorite emoji annotation list on emoji dialog" +msgstr "이모지 대화 창의 자주 사용하는 이모지 주석" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:208 +msgid "You can assign an annotation for a favorite emoji in this list." +msgstr "이 목록에 자주 사용하는 이모지의 주석을 저장할 수 있습니다." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:212 +msgid "Whether emoji annotations can be match partially or not" +msgstr "이모지 주석을 일부분 일치할지 여부" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:213 +msgid "" +"Whether emoji annotations can be matched with a partial string instead of " +"the exact match or not." +msgstr "" +"이모지 주석 전체가 일치할 경우가 아니더라도 문자열 일부분만 일치해도 찾을지 " +"여부." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:217 +msgid "Match emoji annotations with the specified length" +msgstr "지정한 길이의 이모지 주석 일치" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:218 +msgid "" +"Match emoji annotations partially with more than the specified number of " +"characters instead of the exact match." +msgstr "" +"이모지 주석 전체가 일치할 경우가 아니더라도 지정한 개수의 문자보다 많이 일치" +"하면 찾습니다." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:222 +msgid "Choose a condition to match emoji annotations partially" +msgstr "이모지 주석을 부분 일치하는 조건 선택" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:223 +msgid "" +"Choose one of the following conditions to match emoji annotations partially: " +"0 == Prefix match, 1 == Suffix match, 2 == Containing match" +msgstr "" +"이모지 주석을 부분 일치하는 다음 조건 중의 하나를 고르십시오: 0 = 시작 일치, " +"1 == 끝 일치, 2 == 포함 일치" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:227 +msgid "Load the emoji data at the time of startup" +msgstr "시작할 때 이모지 데이터 읽어들이기" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:228 +msgid "" +"Load the emoji data at the time of startup if true. About 10MB memory is " +"needed to load the data. Load the emoji data when open the emoji dialog at " +"the beginning if false." +msgstr "" +"참이면 시작할 때 이모지 데이터를 읽어들입니다. 이 데이터를 읽어들이려면 약 " +"10MB의 메모리가 필요합니다. 거짓이면 이모지 대화창을 처음 열 때 이모지 데이터" +"를 읽어들입니다." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:232 +msgid "Load the Unicode data at the time of startup" +msgstr "시작할 때 유니코드 데이터 읽어들이기" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:233 +msgid "" +"Load the Unicode data at the time of startup if true. About 15MB memory is " +"needed to load the data. Load the Unicode data when open the emoji dialog at " +"the beginning if false. The Unicode data is always loaded after the emoji " +"data is loaded even if true." +msgstr "" +"참이면 시작할 때 유니코드 데이터를 읽어들입니다. 이 데이터를 읽어들이려면 약 " +"15MB의 메모리가 필요합니다. 거짓이면 이모지 대화창을 처음 열 때 유니코드 데이" +"터를 읽어들입니다. 참이더라도 이모지 데이터를 읽어들인 뒤에는 유니코드 데이터" +"를 항상 읽어들입니다." + +#: ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "" +"저작권 (c) 2007-2010 Peng Huang\n" +"저작권 (c) 2007-2010 Red Hat, Inc." -#: ../ui/gtk/languagebar.py:106 -msgid "About the input method" -msgstr "입력 방식 정보" +#: ibus/lang.py:41 src/ibusutil.c:209 +msgid "Other" +msgstr "기타" -#: ../ui/gtk/languagebar.py:214 -msgid "Switch input method" -msgstr "입력 방식 전환 " +#: setup/emojilang.py:67 +msgid "Select a language" +msgstr "언어를 선택하십시오" -#: ../ui/gtk/languagebar.py:357 ../ui/gtk/engineabout.py:33 -#: ../setup/engineabout.py:33 ../setup/setup.ui.h:16 +#: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 +#: setup/main.py:560 +msgid "_Cancel" +msgstr "_취소" + +#: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 +msgid "_OK" +msgstr "확인(_O)" + +#: setup/emojilang.py:235 setup/enginedialog.py:205 setup/enginedialog.py:222 +msgid "More…" +msgstr "더 보기…" + +#: setup/engineabout.py:37 setup/setup.ui:1368 ui/gtk3/panel.vala:1184 +#: ui/gtk3/panel.vala:1259 msgid "About" -msgstr "정보 " +msgstr "정보" -#: ../ui/gtk/languagebar.py:361 -msgid "About the Input Method" -msgstr "입력 방식 정보" +#: setup/engineabout.py:40 setup/setup.ui:1391 +msgid "_Close" +msgstr "_닫기" -#: ../ui/gtk/engineabout.py:61 ../setup/engineabout.py:61 +#: setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "언어: %s\n" -#: ../ui/gtk/engineabout.py:63 ../setup/engineabout.py:63 +#: setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" -msgstr "키보드 레이아웃: %s\n" +msgstr "키보드 배치: %s\n" -#: ../ui/gtk/engineabout.py:65 ../setup/engineabout.py:65 +#: setup/engineabout.py:78 #, python-format msgid "Author: %s\n" -msgstr "저자: %s\n" +msgstr "작성자: %s\n" -#: ../ui/gtk/engineabout.py:67 ../setup/engineabout.py:67 +#: setup/engineabout.py:81 msgid "Description:\n" msgstr "설명:\n" -#: ../setup/main.py:102 -msgid "trigger" -msgstr "트리거 " +#: setup/enginecombobox.py:139 setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "입력기를 선택합니다" -#: ../setup/main.py:113 -msgid "enable" -msgstr "" +#. add button +#: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 +msgid "_Add" +msgstr "_추가" + +#. create im name & icon column +#: setup/enginetreeview.py:69 setup/setup.ui:838 +msgid "Input Method" +msgstr "입력기" + +#: setup/ibus-setup.desktop:3 setup/setup.ui:69 +msgid "IBus Preferences" +msgstr "IBus 기본 설정" + +#: setup/ibus-setup.desktop:4 +msgid "Set IBus Preferences" +msgstr "IBus 기본 설정 변경" + +#: setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "키보드 단축키" + +#: setup/keyboardshortcut.py:67 +msgid "Key code:" +msgstr "키 코드:" -#: ../setup/main.py:124 -msgid "disable" +#: setup/keyboardshortcut.py:82 +msgid "Modifiers:" +msgstr "변경 키:" + +#. apply button +#: setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "적용(_A)" + +#. delete button +#: setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "_삭제" + +#: setup/keyboardshortcut.py:252 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." msgstr "" +"키 또는 키 조합을 입력하십시오.\n" +"키를 입력하면 대화 상자가 닫히게 됩니다." -#: ../setup/main.py:135 -msgid "next input method" -msgstr "다음 입력 방식 " +#: setup/keyboardshortcut.py:255 +msgid "Please press a key (or a key combination)" +msgstr "키 (또는 키 조합)를 누르세요" -#: ../setup/main.py:146 -msgid "previous input method" -msgstr "이전 입력 방식 " +#: setup/main.py:121 setup/main.py:588 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "이전 입력기로 전환는 단축키에 Shift를 누른 키 사용" -#: ../setup/main.py:286 -msgid "IBus daemon is not started. Do you want to start it now?" -msgstr "Bus 데몬이 시작되지 않았습니다. 지금 시작하시겠습니까? " +#: setup/main.py:515 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "IBus 데몬이 실행 중이 아닙니다. 시작하시겠습니까?" -#: ../setup/main.py:301 +#: setup/main.py:536 msgid "" -"IBus has been started! If you can not use IBus, please add below lines in " -"$HOME/.bashrc, and relogin your desktop.\n" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" msgstr "" -"IBus를 시작했습니다! IBus를 사용할 수 없는 경우, 다음을 $HOME/.bashrc에 추가" -"하고 다시 로그인하십시오.\n" +"IBus를 시작했습니다! IBus를 사용 할 수 으면, 다음 행을 자신의 $HOME/.bashrc " +"파일에 추가; 그런 후에 자신의 데스크탑에 다시 로그인하세요.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus " +" export QT_IM_MODULE=ibus" -#: ../setup/main.py:316 +#. Translators: %d == 5 currently +#: setup/main.py:550 +#, python-format +msgid "IBus daemon could not be started in %d seconds." +msgstr "IBus 데몬이 %d초 내에 시작하지 못했습니다." + +#: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" -msgstr "%s의 단축키를 선택" +msgstr "%s의 단축키 선택" -#: ../setup/keyboardshortcut.py:52 -msgid "Keyboard shortcuts" -msgstr "단축키들 " +#. Translators: Title of the window +#: setup/main.py:564 +msgid "switching input methods" +msgstr "입력기 전환" -#: ../setup/keyboardshortcut.py:63 -msgid "Key code:" -msgstr "키 코드: " +#: setup/setup.ui:11 +msgid "Horizontal" +msgstr "가로" -#: ../setup/keyboardshortcut.py:78 -msgid "Modifiers:" -msgstr "수정자: " +#: setup/setup.ui:14 +msgid "Vertical" +msgstr "세로" -#: ../setup/keyboardshortcut.py:231 -msgid "" -"Please press a key (or a key combination).\n" -"The dialog will be closed when the key is released." -msgstr "" -"키 또는 키 조합을 입력하십시오.\n" -"키를 입력하면 대화 상자가 닫히게 됩니다." +#: setup/setup.ui:25 +msgid "Top left corner" +msgstr "상단 왼쪽 모서리" -#: ../setup/keyboardshortcut.py:233 -msgid "Please press a key (or a key combination)" -msgstr "키 또는 키 조합을 입력하십시오. " +#: setup/setup.ui:28 +msgid "Top right corner" +msgstr "상단 오른쪽 모서리" -#: ../setup/enginecombobox.py:120 -msgid "Select an input method" -msgstr "입력 방식을 선택합니다" +#: setup/setup.ui:31 +msgid "Bottom left corner" +msgstr "하단 왼쪽 모서리" -#. create im name & icon column -#: ../setup/enginetreeview.py:64 ../setup/setup.ui.h:33 -msgid "Input Method" -msgstr "입력 방식 " +#: setup/setup.ui:34 +msgid "Bottom right corner" +msgstr "하단 오른쪽 모서리" -#: ../setup/enginetreeview.py:92 -msgid "Kbd" -msgstr "Kbd" +#: setup/setup.ui:37 +msgid "Custom" +msgstr "사용자 지정" -#: ../setup/ibus-setup.desktop.in.h:1 ../setup/setup.ui.h:32 -msgid "IBus Preferences" -msgstr "IBus 환경 설정 " +#: setup/setup.ui:48 +msgid "Do not show" +msgstr "표시하지 않음" -#: ../setup/ibus-setup.desktop.in.h:2 -msgid "Set IBus Preferences" -msgstr "IBus 환경 설정" +#: setup/setup.ui:51 +msgid "Hide automatically" +msgstr "자동으로 숨김" -#: ../data/ibus.schemas.in.h:1 -msgid "Auto hide" -msgstr "자동 숨기기" +#: setup/setup.ui:54 +msgid "Always" +msgstr "항상" -#: ../data/ibus.schemas.in.h:2 -msgid "Custom font" -msgstr "사용자 정의 글꼴" +# tooltip +#: setup/setup.ui:113 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "목록에 있는 다음 입력기로 전환하는 단축키" -#: ../data/ibus.schemas.in.h:3 -msgid "Custom font name for language panel" -msgstr "언어 패널 용 사용자 정의 글꼴 이름" +#: setup/setup.ui:115 +msgid "Next input method:" +msgstr "다음 입력기:" -#: ../data/ibus.schemas.in.h:4 -msgid "Embed Preedit Text" -msgstr "편집전 텍스트 포함" +# tooltip +#: setup/setup.ui:127 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "목록에 있는 이전 입력기로 전환하는 단축키" -#: ../data/ibus.schemas.in.h:5 -msgid "Embed Preedit Text in Application Window" -msgstr "어플리케이션 창에 편집전 텍스트를 포함" +#: setup/setup.ui:129 +msgid "Previous input method:" +msgstr "이전 입력기:" -#: ../data/ibus.schemas.in.h:6 -msgid "Enable input method by default" -msgstr "입력기를 디폴트로 활성화" +#: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 +#: setup/setup.ui:903 setup/setup.ui:957 +msgid "..." +msgstr "..." -#: ../data/ibus.schemas.in.h:7 -msgid "Enable input method by default when the application gets input focus" -msgstr "프로그램의 입력창에 포커스가 가면 디폴트로 입력기를 활성화합니다" +#: setup/setup.ui:226 +msgid "Enable or disable:" +msgstr "활성화 또는 비활성화:" -#: ../data/ibus.schemas.in.h:8 -msgid "Language panel position" -msgstr "언어 패널 위치" +#: setup/setup.ui:238 +msgid "Enable:" +msgstr "활성화:" -#: ../data/ibus.schemas.in.h:9 -msgid "Next engine shortcut keys" -msgstr "다음 엔진 단축키" +#: setup/setup.ui:291 +msgid "Disable:" +msgstr "비활성화:" -#: ../data/ibus.schemas.in.h:10 -msgid "Orientation of lookup table" -msgstr "검색 테이블의 방향 " +#: setup/setup.ui:345 setup/setup.ui:983 +msgid "Keyboard Shortcuts" +msgstr "키보드 단축키" -#: ../data/ibus.schemas.in.h:11 -msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" -msgstr "검색 테이블의 방향. 0 = 가로, 1 = 세로 " +#: setup/setup.ui:374 +msgid "Set the orientation of candidates in lookup table" +msgstr "검색 테이블에서 후보 창의 방향을 설정합니다" -#: ../data/ibus.schemas.in.h:12 -msgid "Preload engines" -msgstr "엔진 미리로드" +#: setup/setup.ui:376 +msgid "Candidates orientation:" +msgstr "후보 창의 방향:" -#: ../data/ibus.schemas.in.h:13 -msgid "Preload engines during ibus starts up" -msgstr "ibus 시작 시 엔진 미리 로드 " +# tooltip +#: setup/setup.ui:407 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "입력 도구모음을 표시하거나 숨기는 ibus의 동작 방식을 설정합니다" -#: ../data/ibus.schemas.in.h:14 -msgid "Prev engine shortcut keys" -msgstr "이전 엔진 단축키" +#: setup/setup.ui:409 +msgid "Show property panel:" +msgstr "속성 패널 표시:" -#: ../data/ibus.schemas.in.h:15 ../setup/setup.ui.h:42 -msgid "Share the same input method among all applications" -msgstr "모든 어플리케이션에서 동일한 입력 방식 공유" +#: setup/setup.ui:423 +msgid "Language panel position:" +msgstr "언어 패널 위치:" -#: ../data/ibus.schemas.in.h:16 ../setup/setup.ui.h:43 -msgid "Show icon on system tray" -msgstr "시스템 트레이에 아이콘 보여주기" +# tooltip +#: setup/setup.ui:494 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "확인란을 선택하면 입력기의 이름을 입력 도구모음에 표시합니다" -#: ../data/ibus.schemas.in.h:17 -msgid "Show input method name" -msgstr "입력 방식 이름 보여주기" +#: setup/setup.ui:508 +msgid "Embed preedit text in application window" +msgstr "응용 프로그램 창에 프리에디트 텍스트 포함" -#: ../data/ibus.schemas.in.h:18 ../setup/setup.ui.h:45 -msgid "Show input method name on language bar" -msgstr "언어 도구 모음에 입력 방식 이름 보여주기" +# tooltip +#: setup/setup.ui:513 +msgid "Embed the preedit text of input method in the application window" +msgstr "입력기의 프리에디트 텍스트를 어플레케이션 창에 포함시킵니다" -#: ../data/ibus.schemas.in.h:19 -msgid "" -"The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = " -"Always show" -msgstr "언어 패널의 동작 0 = 메뉴에 포함, 1 = 자동 숨기기, 2 = 항상 표시 " +#: setup/setup.ui:527 +msgid "Use custom font:" +msgstr "사용자 지정 글꼴 사용:" + +#: setup/setup.ui:562 setup/setup.ui:1156 +msgid "Font and Style" +msgstr "글꼴 및 스타일" + +#: setup/setup.ui:579 +msgid "General" +msgstr "일반" + +# tooltip +#: setup/setup.ui:671 +msgid "Add the selected input method into the enabled input methods" +msgstr "활성화된 입력기 목록에 선택한 입력기를 추가합니다" -#: ../data/ibus.schemas.in.h:20 +#: setup/setup.ui:682 +msgid "_Remove" +msgstr "_제거" + +# tooltip +#: setup/setup.ui:689 +msgid "Remove the selected input method from the enabled input methods" +msgstr "활성화된 입력기 목록에서 선택한 입력기를 제거합니다" + +#: setup/setup.ui:700 +msgid "_Up" +msgstr "_위" + +# tooltip +#: setup/setup.ui:707 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "활성화된 입력기 목록에서 선택한 입력기를 위로 이동합니다" + +#: setup/setup.ui:718 +msgid "_Down" +msgstr "_아래" + +# tooltip +#: setup/setup.ui:725 +msgid "Move down the selected input method in the enabled input methods" +msgstr "활성화된 입력기 목록에서 선택한 입력기를 아래로 이동합니다" + +#: setup/setup.ui:736 +msgid "_About" +msgstr "_정보" + +#: setup/setup.ui:743 +msgid "Show information of the selected input method" +msgstr "선택한 입력기의 정보를 표시합니다" + +#: setup/setup.ui:754 +msgid "_Preferences" +msgstr "_기본 설정" + +#: setup/setup.ui:761 +msgid "Show setup of the selected input method" +msgstr "선택한 입력기의 설정을 표시합니다" + +#: setup/setup.ui:812 msgid "" -"The position of the language panel. 0 = Top left corner, 1 = Top right " -"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." msgstr "" -"언어 패널의 위치. 0 = 왼쪽 위, 1 = 오른쪽 위, 2 = 왼쪽 아래, 3 = 오른쪽 아" -"래, 4 = 사용자 지정" +"위의 목록에서 선택한 후 키보드 단축키를 누르거나 패널 아이콘을 눌" +"러 활성 입력기를 전환 할 수 있습니다." -#: ../data/ibus.schemas.in.h:21 -msgid "The shortcut keys for switching to the next input method in the list" -msgstr "목록에 있는 다음 입력 방식으로 전환하기 위한 단축 키" +# tooltip +#: setup/setup.ui:873 +msgid "" +"The shortcut keys to enable conversions of emoji annotations or Unicode names" +msgstr "이모지 주석 또는 유니코드 이름을 문자로 변환하는 단축키 목록" -#: ../data/ibus.schemas.in.h:22 -msgid "The shortcut keys for switching to the previous input method" -msgstr "목록에 있는 이전 입력 방식으로 전환하기 위한 단축 키" +#: setup/setup.ui:875 +msgid "Emoji annotation:" +msgstr "이모지 주석:" -#: ../data/ibus.schemas.in.h:23 ../setup/setup.ui.h:51 -msgid "The shortcut keys for turning input method on or off" -msgstr "입력 방식을 활성 또는 해제하기 위한 단축키" +# tooltip +#: setup/setup.ui:927 +msgid "The shortcut keys to enable Unicode code point conversions" +msgstr "유니코드 코드 값을 문자로 변환하는 단축키" -#: ../data/ibus.schemas.in.h:24 -msgid "Trigger shortcut keys" -msgstr "트리거 단축키" +#: setup/setup.ui:929 +msgid "Unicode code point:" +msgstr "유니코드 코드 값:" -#: ../data/ibus.schemas.in.h:25 -msgid "Use custom font" -msgstr "사용자 정의 글꼴 사용 " +# tooltip +#: setup/setup.ui:1013 +msgid "Set a font of Unicode candidates on the emoji dialog" +msgstr "이모지 대화창의 유니코드 후보 문자의 글꼴을 설정합니다" -#: ../data/ibus.schemas.in.h:26 -msgid "Use custom font name for language panel" -msgstr "언어 패널 용 사용자 정의 글꼴 이름 사용" +#: setup/setup.ui:1015 +msgid "Unicode font:" +msgstr "유니코드 글꼴:" -#: ../data/ibus.schemas.in.h:27 -msgid "Use global input method" -msgstr "전역 입력 방식 사용" +# tooltip +#: setup/setup.ui:1038 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "이모지 대화창의 이모지 주석 언어를 설정합니다" -#: ../data/ibus.schemas.in.h:28 ../setup/setup.ui.h:55 -msgid "Use system keyboard (XKB) layout" -msgstr "시스템 키보드 (XKB) 레이아웃 사용 " +#: setup/setup.ui:1040 +msgid "Emoji annotation language:" +msgstr "이모지 주석 언어:" -#: ../data/ibus.schemas.in.h:29 ../setup/setup.ui.h:56 -msgid "Use system keyboard layout" -msgstr "시스템 키보드 레이아웃 사용 " +#: setup/setup.ui:1062 +msgid "" +"Match emoji annotations partially with the following condition and more than " +"the number of characters:" +msgstr "이모지 주석이 다음 조건에 따라 일정 문자 개수보다 더 일치하면 찾기:" -#: ../setup/setup.ui.h:1 -msgid "..." -msgstr "..." +#: setup/setup.ui:1067 +msgid "" +"If emoji annotations can be matched with a partial string instead of the " +"exact match" +msgstr "이모지 주석이 전체 일치하지 않더라도 문자열 일부만 일치하면 찾습니다" -#: ../setup/setup.ui.h:2 -msgid "Font and Style" -msgstr "글꼴 및 스타일 " +#: setup/setup.ui:1101 +msgid "Prefix match" +msgstr "시작 일치" -#: ../setup/setup.ui.h:3 -msgid "Global input method settings" -msgstr "전역 입력 방식 설정" +#: setup/setup.ui:1115 +msgid "Suffix match" +msgstr "끝 일치" -#: ../setup/setup.ui.h:4 -msgid "Keyboard Layout" -msgstr "키보드 레이아웃 " +#: setup/setup.ui:1130 +msgid "Containing match" +msgstr "포함 일치" -#: ../setup/setup.ui.h:5 -msgid "Keyboard Shortcuts" -msgstr "단축키들 " +#: setup/setup.ui:1176 +msgid "Emoji" +msgstr "이모지" -#: ../setup/setup.ui.h:6 -msgid "Startup" -msgstr "시작 " +#: setup/setup.ui:1230 +msgid "Keyboard Layout" +msgstr "키보드 배치" -#: ../setup/setup.ui.h:7 -msgid "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" -msgstr "" -"IBus\n" -"지능형 입력 버스\n" -"홈페이지: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" +#: setup/setup.ui:1278 +msgid "Global input method settings" +msgstr "전체 공통 입력기 설정" -#: ../setup/setup.ui.h:14 +#: setup/setup.ui:1310 msgid "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." +"Choose glyphs with the input method's language on the candidate window for " +"the duplicated code points" msgstr "" -"기본 입력 방식은 목록의 맨 위에 있습니다.\n" -"위로/아래 버튼을 사용하여 변경할 수 있습니다. " +"중복된 코드 포인트의 후보 창에서 입력기의 언어에 따라 글리프를 선택합니다" -#: ../setup/setup.ui.h:17 -msgid "Add the selected input method into the enabled input methods" -msgstr "활성화된 입력 방식에 선택한 입력 방식을 추가합니다 " +#: setup/setup.ui:1327 +msgid "Fonts" +msgstr "글꼴" -#: ../setup/setup.ui.h:18 +#: setup/setup.ui:1347 msgid "Advanced" -msgstr "고급 " +msgstr "고급" + +#: src/ibusemojigen.h:30 +msgid "Activities" +msgstr "활동" + +#: src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "동물 및 자연" + +#: src/ibusemojigen.h:32 +msgid "Component" +msgstr "부품" + +#: src/ibusemojigen.h:33 +msgid "Flags" +msgstr "깃발" + +#: src/ibusemojigen.h:34 +msgid "Food & Drink" +msgstr "음식 및 음료" + +#: src/ibusemojigen.h:35 +msgid "Objects" +msgstr "물건" + +#: src/ibusemojigen.h:36 +msgid "People & Body" +msgstr "사람 및 신체" + +#: src/ibusemojigen.h:37 +msgid "Smileys & Emotion" +msgstr "표정 및 감정 표현" + +#: src/ibusemojigen.h:38 +msgid "Symbols" +msgstr "기호" + +#: src/ibusemojigen.h:39 +msgid "Travel & Places" +msgstr "여행 및 장소" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:33 +msgid "Basic Latin" +msgstr "기본 라틴 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:37 +msgid "Latin-1 Supplement" +msgstr "라틴-1 문자 추가영역" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:41 +msgid "Latin Extended-A" +msgstr "라틴 문자 확장영역 A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:45 +msgid "Latin Extended-B" +msgstr "라틴 문자 확장영역 B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:49 +msgid "IPA Extensions" +msgstr "국제 음표 문자 확장영역" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:53 +msgid "Spacing Modifier Letters" +msgstr "간격 조정 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:57 +msgid "Combining Diacritical Marks" +msgstr "조합 구분 표시" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:61 +msgid "Greek and Coptic" +msgstr "그리스 문자 및 콥트 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:65 +msgid "Cyrillic" +msgstr "키릴 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:69 +msgid "Cyrillic Supplement" +msgstr "키릴 문자 추가영역" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:73 +msgid "Armenian" +msgstr "아르메니아 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:77 +msgid "Hebrew" +msgstr "히브리 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:81 +msgid "Arabic" +msgstr "아랍 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:85 +msgid "Syriac" +msgstr "시리아 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:89 +msgid "Arabic Supplement" +msgstr "아랍 문자 추가영역" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:93 +msgid "Thaana" +msgstr "타너 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:97 +msgid "NKo" +msgstr "은코 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:101 +msgid "Samaritan" +msgstr "사마리아 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:105 +msgid "Mandaic" +msgstr "만다르어 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:109 +msgid "Syriac Supplement" +msgstr "시리아 문자 추가영역" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:113 src/ibusunicodegen.h:117 +msgid "Arabic Extended-A" +msgstr "아랍 문자 확장영역 A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:117 src/ibusunicodegen.h:121 +msgid "Devanagari" +msgstr "데바나가리 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:121 src/ibusunicodegen.h:125 +msgid "Bengali" +msgstr "벵골 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:125 src/ibusunicodegen.h:129 +msgid "Gurmukhi" +msgstr "구르무키 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:129 src/ibusunicodegen.h:133 +msgid "Gujarati" +msgstr "구자라트 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:133 src/ibusunicodegen.h:137 +msgid "Oriya" +msgstr "오리야 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:137 src/ibusunicodegen.h:141 +msgid "Tamil" +msgstr "타밀 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:141 src/ibusunicodegen.h:145 +msgid "Telugu" +msgstr "텔루구 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:145 src/ibusunicodegen.h:149 +msgid "Kannada" +msgstr "칸나다 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:149 src/ibusunicodegen.h:153 +msgid "Malayalam" +msgstr "말라얌람 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:153 src/ibusunicodegen.h:157 +msgid "Sinhala" +msgstr "신할라 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:157 src/ibusunicodegen.h:161 +msgid "Thai" +msgstr "타이 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:161 src/ibusunicodegen.h:165 +msgid "Lao" +msgstr "라오 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:165 src/ibusunicodegen.h:169 +msgid "Tibetan" +msgstr "티베트 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:169 src/ibusunicodegen.h:173 +msgid "Myanmar" +msgstr "미얀마 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:173 src/ibusunicodegen.h:177 +msgid "Georgian" +msgstr "그루지야 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:177 src/ibusunicodegen.h:181 +msgid "Hangul Jamo" +msgstr "한글 자모" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:181 src/ibusunicodegen.h:185 +msgid "Ethiopic" +msgstr "에티오피아 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:185 src/ibusunicodegen.h:189 +msgid "Ethiopic Supplement" +msgstr "에티오피아 문자 추가영역" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:189 src/ibusunicodegen.h:193 +msgid "Cherokee" +msgstr "체로키 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:193 src/ibusunicodegen.h:197 +msgid "Unified Canadian Aboriginal Syllabics" +msgstr "통합 캐나다 원주민 음절" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:197 src/ibusunicodegen.h:201 +msgid "Ogham" +msgstr "오검 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:201 src/ibusunicodegen.h:205 +msgid "Runic" +msgstr "룬 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:205 src/ibusunicodegen.h:209 +msgid "Tagalog" +msgstr "타갈로그 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:209 src/ibusunicodegen.h:213 +msgid "Hanunoo" +msgstr "하누누 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:213 src/ibusunicodegen.h:217 +msgid "Buhid" +msgstr "부히드 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:217 src/ibusunicodegen.h:221 +msgid "Tagbanwa" +msgstr "타그반와 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:221 src/ibusunicodegen.h:225 +msgid "Khmer" +msgstr "크메르 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:225 src/ibusunicodegen.h:229 +msgid "Mongolian" +msgstr "몽골 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:229 src/ibusunicodegen.h:233 +msgid "Unified Canadian Aboriginal Syllabics Extended" +msgstr "통합 캐나다 원주민 음절 확장영역" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:233 src/ibusunicodegen.h:237 +msgid "Limbu" +msgstr "림부 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:237 src/ibusunicodegen.h:241 +msgid "Tai Le" +msgstr "타이레 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:241 src/ibusunicodegen.h:245 +msgid "New Tai Lue" +msgstr "신 타이 루에" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:245 src/ibusunicodegen.h:249 +msgid "Khmer Symbols" +msgstr "크메르 기호" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:249 src/ibusunicodegen.h:253 +msgid "Buginese" +msgstr "부기스 문자" + +# 태국 북부 +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:253 src/ibusunicodegen.h:257 +msgid "Tai Tham" +msgstr "란나 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:257 src/ibusunicodegen.h:261 +msgid "Combining Diacritical Marks Extended" +msgstr "조합 구분 표시 확장영역" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:261 src/ibusunicodegen.h:265 +msgid "Balinese" +msgstr "발리 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:265 src/ibusunicodegen.h:269 +msgid "Sundanese" +msgstr "순다 문자" + +# 인도네시아 +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:269 src/ibusunicodegen.h:273 +msgid "Batak" +msgstr "바타크 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:273 src/ibusunicodegen.h:277 +msgid "Lepcha" +msgstr "렙차 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:277 src/ibusunicodegen.h:281 +msgid "Ol Chiki" +msgstr "올치키 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:281 src/ibusunicodegen.h:285 +msgid "Cyrillic Extended-C" +msgstr "키릴 문자 확장영역-C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:285 src/ibusunicodegen.h:289 +msgid "Georgian Extended" +msgstr "그루지야 문자 확장영역" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:289 src/ibusunicodegen.h:293 +msgid "Sundanese Supplement" +msgstr "순다 문자 추가영역" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:293 src/ibusunicodegen.h:297 +msgid "Vedic Extensions" +msgstr "베다 확장" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:297 src/ibusunicodegen.h:301 +msgid "Phonetic Extensions" +msgstr "발음 확장영역" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:301 src/ibusunicodegen.h:305 +msgid "Phonetic Extensions Supplement" +msgstr "발음 확장 추가영역" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:305 src/ibusunicodegen.h:309 +msgid "Combining Diacritical Marks Supplement" +msgstr "조합 구분 표시 추가영역" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:309 src/ibusunicodegen.h:313 +msgid "Latin Extended Additional" +msgstr "라틴 문자 확장 추가영역" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:313 src/ibusunicodegen.h:317 +msgid "Greek Extended" +msgstr "그리스 문자 확장영역" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:317 src/ibusunicodegen.h:321 +msgid "General Punctuation" +msgstr "일반 문장 부호" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:321 src/ibusunicodegen.h:325 +msgid "Superscripts and Subscripts" +msgstr "위첨자/아래첨자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:325 src/ibusunicodegen.h:329 +msgid "Currency Symbols" +msgstr "화폐 기호" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:329 src/ibusunicodegen.h:333 +msgid "Combining Diacritical Marks for Symbols" +msgstr "기호용 조합 구분 표시" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:333 src/ibusunicodegen.h:337 +msgid "Letterlike Symbols" +msgstr "문자 모양 기호" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:337 src/ibusunicodegen.h:341 +msgid "Number Forms" +msgstr "여러가지 숫자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:341 src/ibusunicodegen.h:345 +msgid "Arrows" +msgstr "화살표" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:345 src/ibusunicodegen.h:349 +msgid "Mathematical Operators" +msgstr "수학 연산자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:349 src/ibusunicodegen.h:353 +msgid "Miscellaneous Technical" +msgstr "여러가지 기타 서술 기호" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:353 src/ibusunicodegen.h:357 +msgid "Control Pictures" +msgstr "제어 문자 표시" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:357 src/ibusunicodegen.h:361 +msgid "Optical Character Recognition" +msgstr "광학 인식 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:361 src/ibusunicodegen.h:365 +msgid "Enclosed Alphanumerics" +msgstr "괄호 영문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:365 src/ibusunicodegen.h:369 +msgid "Box Drawing" +msgstr "테두리 모양" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:369 src/ibusunicodegen.h:373 +msgid "Block Elements" +msgstr "블럭 요소" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:373 src/ibusunicodegen.h:377 +msgid "Geometric Shapes" +msgstr "도형" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:377 src/ibusunicodegen.h:381 +msgid "Miscellaneous Symbols" +msgstr "여러가지 기호" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:381 src/ibusunicodegen.h:385 +msgid "Dingbats" +msgstr "딩뱃 기호" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:385 src/ibusunicodegen.h:389 +msgid "Miscellaneous Mathematical Symbols-A" +msgstr "여러가지 수학기호-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:389 src/ibusunicodegen.h:393 +msgid "Supplemental Arrows-A" +msgstr "화살표 추가영역-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:393 src/ibusunicodegen.h:397 +msgid "Braille Patterns" +msgstr "점자 모양" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:397 src/ibusunicodegen.h:401 +msgid "Supplemental Arrows-B" +msgstr "화살표 추가영역-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:401 src/ibusunicodegen.h:405 +msgid "Miscellaneous Mathematical Symbols-B" +msgstr "여러가지 수학기호-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:405 src/ibusunicodegen.h:409 +msgid "Supplemental Mathematical Operators" +msgstr "수학 연산자 추가영역" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:409 src/ibusunicodegen.h:413 +msgid "Miscellaneous Symbols and Arrows" +msgstr "여러가지 기호 및 화살표" + +# 고대 슬라브어를 적는 데 쓰였던 음소 문자 +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:413 src/ibusunicodegen.h:417 +msgid "Glagolitic" +msgstr "글라골 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:417 src/ibusunicodegen.h:421 +msgid "Latin Extended-C" +msgstr "라틴문자 확장영역-C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:421 src/ibusunicodegen.h:425 +msgid "Coptic" +msgstr "콥트 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:425 src/ibusunicodegen.h:429 +msgid "Georgian Supplement" +msgstr "그루지야 문자 추가영역" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:429 src/ibusunicodegen.h:433 +msgid "Tifinagh" +msgstr "티피나그 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:433 src/ibusunicodegen.h:437 +msgid "Ethiopic Extended" +msgstr "에티오피아 문자 확장영역" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:437 src/ibusunicodegen.h:441 +msgid "Cyrillic Extended-A" +msgstr "키릴 문자 확장영역 A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:441 src/ibusunicodegen.h:445 +msgid "Supplemental Punctuation" +msgstr "추가 문장 부호" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:445 src/ibusunicodegen.h:449 +msgid "CJK Radicals Supplement" +msgstr "한중일 부수 추가영역" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:449 src/ibusunicodegen.h:453 +msgid "Kangxi Radicals" +msgstr "강희자전 부수" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:453 src/ibusunicodegen.h:457 +msgid "Ideographic Description Characters" +msgstr "한자 기술 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:457 src/ibusunicodegen.h:461 +msgid "CJK Symbols and Punctuation" +msgstr "한중일 기호 및 문장 부호" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:461 src/ibusunicodegen.h:465 +msgid "Hiragana" +msgstr "히라가나" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:465 src/ibusunicodegen.h:469 +msgid "Katakana" +msgstr "카다카나" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:469 src/ibusunicodegen.h:473 +msgid "Bopomofo" +msgstr "주음부호(중국어 발음기호)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:473 src/ibusunicodegen.h:477 +msgid "Hangul Compatibility Jamo" +msgstr "한글 호환 자모" + +# 중국어 텍스트를 이해하기 쉽도록 주석을 다는 일본식 표기 +# http://en.wikipedia.org/wiki/Kanbun#Unicode_kanbun +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:477 src/ibusunicodegen.h:481 +msgid "Kanbun" +msgstr "간분" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:481 src/ibusunicodegen.h:485 +msgid "Bopomofo Extended" +msgstr "주음부호 확장영역" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:485 src/ibusunicodegen.h:489 +msgid "CJK Strokes" +msgstr "한중일 획수" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:489 src/ibusunicodegen.h:493 +msgid "Katakana Phonetic Extensions" +msgstr "카타카나 발음 확장영역" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:493 src/ibusunicodegen.h:497 +msgid "Enclosed CJK Letters and Months" +msgstr "한중일 둘러싼 문자 및 날짜 기호" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:497 src/ibusunicodegen.h:501 +msgid "CJK Compatibility" +msgstr "한중일 호환 영역" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:501 src/ibusunicodegen.h:505 +msgid "CJK Unified Ideographs Extension A" +msgstr "한중일 통합 한자 확장영역 A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:505 src/ibusunicodegen.h:509 +msgid "Yijing Hexagram Symbols" +msgstr "주역 6선형 기호" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:509 src/ibusunicodegen.h:513 +msgid "CJK Unified Ideographs" +msgstr "한중일 통합 한자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:513 src/ibusunicodegen.h:517 +msgid "Yi Syllables" +msgstr "이 음절문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:517 src/ibusunicodegen.h:521 +msgid "Yi Radicals" +msgstr "이 문자 부수" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:521 src/ibusunicodegen.h:525 +msgid "Lisu" +msgstr "리수 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:525 src/ibusunicodegen.h:529 +msgid "Vai" +msgstr "바이 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:529 src/ibusunicodegen.h:533 +msgid "Cyrillic Extended-B" +msgstr "키릴 문자 확장영역-B" + +# 아프리카 +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:533 src/ibusunicodegen.h:537 +msgid "Bamum" +msgstr "바뭄어 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:537 src/ibusunicodegen.h:541 +msgid "Modifier Tone Letters" +msgstr "변조 성조 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:541 src/ibusunicodegen.h:545 +msgid "Latin Extended-D" +msgstr "라틴 문자 확장영역-D" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:545 src/ibusunicodegen.h:549 +msgid "Syloti Nagri" +msgstr "실헤티 나가리" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:549 src/ibusunicodegen.h:553 +msgid "Common Indic Number Forms" +msgstr "인도 공통 숫자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:553 src/ibusunicodegen.h:557 +msgid "Phags-pa" +msgstr "파스파 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:557 src/ibusunicodegen.h:561 +msgid "Saurashtra" +msgstr "사우라슈트라 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:561 src/ibusunicodegen.h:565 +msgid "Devanagari Extended" +msgstr "데바나가리 확장영역" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:565 src/ibusunicodegen.h:569 +msgid "Kayah Li" +msgstr "카야 리 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:569 src/ibusunicodegen.h:573 +msgid "Rejang" +msgstr "레장 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:573 src/ibusunicodegen.h:577 +msgid "Hangul Jamo Extended-A" +msgstr "한글 자모 확장영역-A" + +# 인도네시아 +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:577 src/ibusunicodegen.h:581 +msgid "Javanese" +msgstr "자와어" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:581 src/ibusunicodegen.h:585 +msgid "Myanmar Extended-B" +msgstr "미얀마 확장영역-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:585 src/ibusunicodegen.h:589 +msgid "Cham" +msgstr "참 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:589 src/ibusunicodegen.h:593 +msgid "Myanmar Extended-A" +msgstr "미얀마 확장영역-A" + +# 태국 +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:593 src/ibusunicodegen.h:597 +msgid "Tai Viet" +msgstr "타이비엣 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:597 src/ibusunicodegen.h:601 +msgid "Meetei Mayek Extensions" +msgstr "메이테이 문자 확장영역" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:601 src/ibusunicodegen.h:605 +msgid "Ethiopic Extended-A" +msgstr "에티오피아 문자 확장영역-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:605 src/ibusunicodegen.h:609 +msgid "Latin Extended-E" +msgstr "라틴문자 확장영역-E" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:609 src/ibusunicodegen.h:613 +msgid "Cherokee Supplement" +msgstr "체로키 문자 추가영역" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:613 src/ibusunicodegen.h:617 +msgid "Meetei Mayek" +msgstr "메이테이 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:617 src/ibusunicodegen.h:621 +msgid "Hangul Syllables" +msgstr "한글 음절" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:621 src/ibusunicodegen.h:625 +msgid "Hangul Jamo Extended-B" +msgstr "한글 자모 확장영역-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:625 src/ibusunicodegen.h:629 +msgid "High Surrogates" +msgstr "상위 확장코드" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:629 src/ibusunicodegen.h:633 +msgid "High Private Use Surrogates" +msgstr "개인용 상위 확장코드" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:633 src/ibusunicodegen.h:637 +msgid "Low Surrogates" +msgstr "하위 확장코드" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:637 src/ibusunicodegen.h:641 +msgid "Private Use Area" +msgstr "개인 사용 영역" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:641 src/ibusunicodegen.h:645 +msgid "CJK Compatibility Ideographs" +msgstr "한중일 호환 한자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:645 src/ibusunicodegen.h:649 +msgid "Alphabetic Presentation Forms" +msgstr "알파벳 표시 양식" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:649 src/ibusunicodegen.h:653 +msgid "Arabic Presentation Forms-A" +msgstr "아랍 문자 표시 양식-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:653 src/ibusunicodegen.h:657 +msgid "Variation Selectors" +msgstr "여러가지 선택자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:657 src/ibusunicodegen.h:661 +msgid "Vertical Forms" +msgstr "세로 모양" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:661 src/ibusunicodegen.h:665 +msgid "Combining Half Marks" +msgstr "조합 반각 표시" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:665 src/ibusunicodegen.h:669 +msgid "CJK Compatibility Forms" +msgstr "한중일 호환 양식" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:669 src/ibusunicodegen.h:673 +msgid "Small Form Variants" +msgstr "작은꼴 변형" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:673 src/ibusunicodegen.h:677 +msgid "Arabic Presentation Forms-B" +msgstr "아랍 문자 표시 양식-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:677 src/ibusunicodegen.h:681 +msgid "Halfwidth and Fullwidth Forms" +msgstr "반각 및 전각 양식" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:681 src/ibusunicodegen.h:685 +msgid "Specials" +msgstr "특수 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:685 src/ibusunicodegen.h:689 +msgid "Linear B Syllabary" +msgstr "선형 B 음절문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:689 src/ibusunicodegen.h:693 +msgid "Linear B Ideograms" +msgstr "선형 B 표의문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:693 src/ibusunicodegen.h:697 +msgid "Aegean Numbers" +msgstr "에게 숫자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:697 src/ibusunicodegen.h:701 +msgid "Ancient Greek Numbers" +msgstr "고대 그리스 숫자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:701 src/ibusunicodegen.h:705 +msgid "Ancient Symbols" +msgstr "고대 기호" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:705 src/ibusunicodegen.h:709 +msgid "Phaistos Disc" +msgstr "파이스토스 원판" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:709 src/ibusunicodegen.h:713 +msgid "Lycian" +msgstr "리키아 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:713 src/ibusunicodegen.h:717 +msgid "Carian" +msgstr "카리 문자" + +# Epact - 태양력이 태음력보다 초과하는 날 수, 1월 1일에 달의 형태 +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:717 src/ibusunicodegen.h:721 +msgid "Coptic Epact Numbers" +msgstr "콥트어 이팩트 번호" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:721 src/ibusunicodegen.h:725 +msgid "Old Italic" +msgstr "고대 이탈리아 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:725 src/ibusunicodegen.h:729 +msgid "Gothic" +msgstr "고트 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:729 src/ibusunicodegen.h:733 +msgid "Old Permic" +msgstr "고대 페름어" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:733 src/ibusunicodegen.h:737 +msgid "Ugaritic" +msgstr "우가릿 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:737 src/ibusunicodegen.h:741 +msgid "Old Persian" +msgstr "옛 페르시아 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:741 src/ibusunicodegen.h:745 +msgid "Deseret" +msgstr "데저렛 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:745 src/ibusunicodegen.h:749 +msgid "Shavian" +msgstr "쇼 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:749 src/ibusunicodegen.h:753 +msgid "Osmanya" +msgstr "오스마냐 문자" + +# 아메리카 원주민 오세이지족의 언어를 표기하기 위한 문자 +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:753 src/ibusunicodegen.h:757 +msgid "Osage" +msgstr "오세이지 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:757 src/ibusunicodegen.h:761 +msgid "Elbasan" +msgstr "엘바산 문자" + +# 중세에 있던 알바니아라는 국가를 현대의 알바니아와 구분하는 용어 +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:761 src/ibusunicodegen.h:765 +msgid "Caucasian Albanian" +msgstr "캅카스 알바니아 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:765 src/ibusunicodegen.h:773 +msgid "Linear A" +msgstr "선형 A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:769 src/ibusunicodegen.h:781 +msgid "Cypriot Syllabary" +msgstr "키프로스 음절표" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:773 src/ibusunicodegen.h:785 +msgid "Imperial Aramaic" +msgstr "황실 아람어 알파벳" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:777 src/ibusunicodegen.h:789 +msgid "Palmyrene" +msgstr "팔미라 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:781 src/ibusunicodegen.h:793 +msgid "Nabataean" +msgstr "나바테아 문자" + +# 이란 지역 +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:785 src/ibusunicodegen.h:797 +msgid "Hatran" +msgstr "하트란 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:789 src/ibusunicodegen.h:801 +msgid "Phoenician" +msgstr "페니키아 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:793 src/ibusunicodegen.h:805 +msgid "Lydian" +msgstr "리디아 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:797 src/ibusunicodegen.h:809 +msgid "Meroitic Hieroglyphs" +msgstr "메로에 상형문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:801 src/ibusunicodegen.h:813 +msgid "Meroitic Cursive" +msgstr "메로에 필기체" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:805 src/ibusunicodegen.h:817 +msgid "Kharoshthi" +msgstr "카로시디 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:809 src/ibusunicodegen.h:821 +msgid "Old South Arabian" +msgstr "고대 남아라비아 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:813 src/ibusunicodegen.h:825 +msgid "Old North Arabian" +msgstr "고대 북아라비아 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:817 src/ibusunicodegen.h:829 +msgid "Manichaean" +msgstr "마니교 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:821 src/ibusunicodegen.h:833 +msgid "Avestan" +msgstr "아베스탄어" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:825 src/ibusunicodegen.h:837 +msgid "Inscriptional Parthian" +msgstr "파르티아어 새김 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:829 src/ibusunicodegen.h:841 +msgid "Inscriptional Pahlavi" +msgstr "팔레비어 새김 문자" + +# 시편(Psalter)으로 발견된 팔레비어 문자 +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:833 src/ibusunicodegen.h:845 +msgid "Psalter Pahlavi" +msgstr "시편 팔레비어 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:837 src/ibusunicodegen.h:849 +msgid "Old Turkic" +msgstr "고대 튀르크 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:841 src/ibusunicodegen.h:853 +msgid "Old Hungarian" +msgstr "옛 헝가리 문자" + +# 1980년대 이슬람학자인 모하마드 하니프가 로힝야족의 언어를 연구해 개발한 문자 '하니프 로힝야(Hanifi Rohingya)' +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:845 src/ibusunicodegen.h:857 +msgid "Hanifi Rohingya" +msgstr "하니피 로힝야 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:849 src/ibusunicodegen.h:861 +msgid "Rumi Numeral Symbols" +msgstr "루미 숫자 기호" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:853 src/ibusunicodegen.h:865 +msgid "Yezidi" +msgstr "야지디 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:857 src/ibusunicodegen.h:869 +msgid "Old Sogdian" +msgstr "고대 소그드 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:861 src/ibusunicodegen.h:873 +msgid "Sogdian" +msgstr "소그드 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:865 src/ibusunicodegen.h:881 +msgid "Chorasmian" +msgstr "호라즘 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:869 src/ibusunicodegen.h:885 +msgid "Elymaic" +msgstr "엘리마이스 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:873 src/ibusunicodegen.h:889 +msgid "Brahmi" +msgstr "브라흐미 문자" + +# 북 인도 문자 +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:877 src/ibusunicodegen.h:893 +msgid "Kaithi" +msgstr "카이시 문자" + +# 인도 +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:881 src/ibusunicodegen.h:897 +msgid "Sora Sompeng" +msgstr "소라 솜펭 문자" + +# 인도 +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:885 src/ibusunicodegen.h:901 +msgid "Chakma" +msgstr "차크마 문자" + +# 인도 +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:889 src/ibusunicodegen.h:905 +msgid "Mahajani" +msgstr "마하자니 문자" + +# 인도 +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:893 src/ibusunicodegen.h:909 +msgid "Sharada" +msgstr "샤라다 문자" + +# 인도 +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:897 src/ibusunicodegen.h:913 +msgid "Sinhala Archaic Numbers" +msgstr "신할라 고대 숫자" + +# 인도 +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:901 src/ibusunicodegen.h:917 +msgid "Khojki" +msgstr "코즈키 문자" + +# 인도 +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:905 src/ibusunicodegen.h:921 +msgid "Multani" +msgstr "물타니 문자" + +# 인도 +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:909 src/ibusunicodegen.h:925 +msgid "Khudawadi" +msgstr "쿠다와디 문자" + +# 인도 +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:913 src/ibusunicodegen.h:929 +msgid "Grantha" +msgstr "그랜사 문자" + +# 네팔에서 사용하는 네와르어의 문자(newa alphabet) +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:917 src/ibusunicodegen.h:933 +msgid "Newa" +msgstr "네와 문자" + +# 인도 +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:921 src/ibusunicodegen.h:937 +msgid "Tirhuta" +msgstr "티르후타 문자" + +# 인도 +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:925 src/ibusunicodegen.h:941 +msgid "Siddham" +msgstr "시드햄 문자" + +# 인도 +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:929 src/ibusunicodegen.h:945 +msgid "Modi" +msgstr "모디 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:933 src/ibusunicodegen.h:949 +msgid "Mongolian Supplement" +msgstr "몽골 문자 추가영역" + +# 인도 +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:937 src/ibusunicodegen.h:953 +msgid "Takri" +msgstr "타크리 문자" + +# 인도 +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:941 src/ibusunicodegen.h:957 +msgid "Ahom" +msgstr "아홈 문자" + +# The Dogra script is historically associated with the Dogri language +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:945 src/ibusunicodegen.h:961 +msgid "Dogra" +msgstr "도그라 문자" + +# 인도 +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:949 src/ibusunicodegen.h:965 +msgid "Warang Citi" +msgstr "바랑 크시티 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:953 src/ibusunicodegen.h:969 +msgid "Dives Akuru" +msgstr "디베스 아쿠루 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:957 src/ibusunicodegen.h:973 +msgid "Nandinagari" +msgstr "난디나가리 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:961 src/ibusunicodegen.h:977 +msgid "Zanabazar Square" +msgstr "자나바자르 정방형 문자" + +# 소욤보는 몽골인의 문자인 소욤보 문자로 구성 +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:965 src/ibusunicodegen.h:981 +msgid "Soyombo" +msgstr "소욤보 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:969 src/ibusunicodegen.h:989 +msgid "Pau Cin Hau" +msgstr "파우 킨 하우 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:973 src/ibusunicodegen.h:993 +msgid "Bhaiksuki" +msgstr "바이크수키 문자" + +# 티베트 북부지방에서 사용하던 샹슝(象雄,zhang-zhung)왕국의 고대문자. 샹슝 문자라고도 부름. 사어(死語) +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:977 src/ibusunicodegen.h:997 +msgid "Marchen" +msgstr "샹슝 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:981 src/ibusunicodegen.h:1001 +msgid "Masaram Gondi" +msgstr "마사람 곤디 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:985 src/ibusunicodegen.h:1005 +msgid "Gunjala Gondi" +msgstr "건잘라 곤디 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:989 src/ibusunicodegen.h:1009 +msgid "Makasar" +msgstr "마카사르 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:993 src/ibusunicodegen.h:1013 +msgid "Lisu Supplement" +msgstr "리수 문자 추가영역" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:997 src/ibusunicodegen.h:1017 +msgid "Tamil Supplement" +msgstr "타밀 문자 추가영역" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1001 src/ibusunicodegen.h:1021 +msgid "Cuneiform" +msgstr "설형 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1005 src/ibusunicodegen.h:1025 +msgid "Cuneiform Numbers and Punctuation" +msgstr "설형 숫자및 구두기호" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1009 src/ibusunicodegen.h:1029 +msgid "Early Dynastic Cuneiform" +msgstr "초기 왕조 쐐기 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1013 src/ibusunicodegen.h:1037 +msgid "Egyptian Hieroglyphs" +msgstr "고대 이집트 신성문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1017 src/ibusunicodegen.h:1041 +msgid "Egyptian Hieroglyph Format Controls" +msgstr "고대 이집트 신성문자 형식 제어 문자" + +# 현재 터키 지역 +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1021 src/ibusunicodegen.h:1045 +msgid "Anatolian Hieroglyphs" +msgstr "아나톨리아 상형문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1025 src/ibusunicodegen.h:1049 +msgid "Bamum Supplement" +msgstr "바뭄어 문자 추가영역" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1029 src/ibusunicodegen.h:1053 +msgid "Mro" +msgstr "므로 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1033 src/ibusunicodegen.h:1061 +msgid "Bassa Vah" +msgstr "바사 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1037 src/ibusunicodegen.h:1065 +msgid "Pahawh Hmong" +msgstr "파하우몽 문자" + +# Oberi Okaime,The Medefaidrin script was created for an artificial language Medefaidrin +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1041 src/ibusunicodegen.h:1069 +msgid "Medefaidrin" +msgstr "메데파이드린 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1045 src/ibusunicodegen.h:1073 +msgid "Miao" +msgstr "먀오 문자" + +# 서하문자(西夏文字, Tangut Block) +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1049 src/ibusunicodegen.h:1077 +msgid "Ideographic Symbols and Punctuation" +msgstr "표의문자용 기호 및 구두 기호" + +# 서하문자(西夏文字, Tangut Block) +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1053 src/ibusunicodegen.h:1081 +msgid "Tangut" +msgstr "서하 문자" + +# 서하문자(西夏文字, Tangut Block) +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1057 src/ibusunicodegen.h:1085 +msgid "Tangut Components" +msgstr "서하 문자 구성요소" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1061 src/ibusunicodegen.h:1089 +msgid "Khitan Small Script" +msgstr "거란 소자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1065 src/ibusunicodegen.h:1093 +msgid "Tangut Supplement" +msgstr "서하 문자 추가영역" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1069 src/ibusunicodegen.h:1101 +msgid "Kana Supplement" +msgstr "가나 추가영역" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1073 src/ibusunicodegen.h:1105 +msgid "Kana Extended-A" +msgstr "가나 확장영역-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1077 src/ibusunicodegen.h:1109 +msgid "Small Kana Extension" +msgstr "작은 가나 확장영역" + +# 뉘수 문자(女书, 女書, Nǚshū) 음절 문자이며, 중국의 소수민족인 야오족 여성들만이 사용함. +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1081 src/ibusunicodegen.h:1113 +msgid "Nushu" +msgstr "뉘수 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1085 src/ibusunicodegen.h:1117 +msgid "Duployan" +msgstr "듀플로이언 속기 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1089 src/ibusunicodegen.h:1121 +msgid "Shorthand Format Controls" +msgstr "속기 형식 컨트롤 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1093 src/ibusunicodegen.h:1129 +msgid "Byzantine Musical Symbols" +msgstr "비잔틴 음악 기호" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1097 src/ibusunicodegen.h:1133 +msgid "Musical Symbols" +msgstr "음악 기호" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1101 src/ibusunicodegen.h:1137 +msgid "Ancient Greek Musical Notation" +msgstr "고대 그리스 음표" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1105 src/ibusunicodegen.h:1141 +msgid "Mayan Numerals" +msgstr "마야 숫자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1109 src/ibusunicodegen.h:1145 +msgid "Tai Xuan Jing Symbols" +msgstr "태현경 기호" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1113 src/ibusunicodegen.h:1149 +msgid "Counting Rod Numerals" +msgstr "산가지 숫자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1117 src/ibusunicodegen.h:1153 +msgid "Mathematical Alphanumeric Symbols" +msgstr "수학용 알파벳, 숫자 기호" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1121 src/ibusunicodegen.h:1157 +msgid "Sutton SignWriting" +msgstr "서튼 수화 표기" + +# 고대 슬라브어를 적는 데 쓰였던 음소 문자 +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1125 src/ibusunicodegen.h:1165 +msgid "Glagolitic Supplement" +msgstr "글라골루 문자 추가영역" + +# ‘Genesis Complete Hmong script’; 출처: https://www.unicode.org/L2/L2017/17002r3-n4780r3-nyiakeng-puachue-hmong.pdf +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1129 src/ibusunicodegen.h:1169 +msgid "Nyiakeng Puachue Hmong" +msgstr "창세기 몽족 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1133 src/ibusunicodegen.h:1177 +msgid "Wancho" +msgstr "완초 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1137 src/ibusunicodegen.h:1185 +msgid "Mende Kikakui" +msgstr "멘데어 키카쿠이 문자" + +# 플라니어(Fulani language)를 표기하기 위한 문자 +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1141 src/ibusunicodegen.h:1189 +msgid "Adlam" +msgstr "애들램 문자" + +# the Indic Siyaq Numbers are a specialized subset of the Arabic script that was used for accounting and in general for recording numbers https://www.unicode.org/L2/L2015/15121r2-indic-siyaq.pdf +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1145 src/ibusunicodegen.h:1193 +msgid "Indic Siyaq Numbers" +msgstr "인도 시야크 숫자" + +# the Indic Siyaq Numbers are a specialized subset of the Arabic script that was used for accounting and in general for recording numbers https://www.unicode.org/L2/L2015/15121r2-indic-siyaq.pdf +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1149 src/ibusunicodegen.h:1197 +msgid "Ottoman Siyaq Numbers" +msgstr "오스만 시야크 숫자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1153 src/ibusunicodegen.h:1201 +msgid "Arabic Mathematical Alphabetic Symbols" +msgstr "아랍 수학용 알파벳 기호" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1157 src/ibusunicodegen.h:1205 +msgid "Mahjong Tiles" +msgstr "마작 타일" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1161 src/ibusunicodegen.h:1209 +msgid "Domino Tiles" +msgstr "도미노 타일" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1165 src/ibusunicodegen.h:1213 +msgid "Playing Cards" +msgstr "플레잉카드" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1169 src/ibusunicodegen.h:1217 +msgid "Enclosed Alphanumeric Supplement" +msgstr "괄호 영문자 및 숫자 추가영역" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1173 src/ibusunicodegen.h:1221 +msgid "Enclosed Ideographic Supplement" +msgstr "괄호 한자 추가영역" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1177 src/ibusunicodegen.h:1225 +msgid "Miscellaneous Symbols and Pictographs" +msgstr "여러가지 기호 및 그림 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1181 src/ibusunicodegen.h:1229 +msgid "Emoticons" +msgstr "이모티콘" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1185 src/ibusunicodegen.h:1233 +msgid "Ornamental Dingbats" +msgstr "장식용 딩뱃 기호" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1189 src/ibusunicodegen.h:1237 +msgid "Transport and Map Symbols" +msgstr "교통 및 지도 기호" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1193 src/ibusunicodegen.h:1241 +msgid "Alchemical Symbols" +msgstr "연금술 기호" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1197 src/ibusunicodegen.h:1245 +msgid "Geometric Shapes Extended" +msgstr "도형 확장영역" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1201 src/ibusunicodegen.h:1249 +msgid "Supplemental Arrows-C" +msgstr "화살표 추가영역-C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1205 src/ibusunicodegen.h:1253 +msgid "Supplemental Symbols and Pictographs" +msgstr "추가 기호 및 그림 문자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1209 src/ibusunicodegen.h:1257 +msgid "Chess Symbols" +msgstr "체스 기호" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1213 src/ibusunicodegen.h:1261 +msgid "Symbols and Pictographs Extended-A" +msgstr "기호 및 그림 문자 확장영역-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1217 src/ibusunicodegen.h:1265 +msgid "Symbols for Legacy Computing" +msgstr "레거시 컴퓨팅 기호" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1221 src/ibusunicodegen.h:1269 +msgid "CJK Unified Ideographs Extension B" +msgstr "한중일 통합 한자 확장영역 B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1225 src/ibusunicodegen.h:1273 +msgid "CJK Unified Ideographs Extension C" +msgstr "한중일 통합 한자 확장영역 C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1229 src/ibusunicodegen.h:1277 +msgid "CJK Unified Ideographs Extension D" +msgstr "한중일 통합 한자 확장영역 D" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1233 src/ibusunicodegen.h:1281 +msgid "CJK Unified Ideographs Extension E" +msgstr "한중일 통합 한자 확장영역 E" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1237 src/ibusunicodegen.h:1285 +msgid "CJK Unified Ideographs Extension F" +msgstr "한중일 통합 한자 확장영역 F" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1241 src/ibusunicodegen.h:1289 +msgid "CJK Compatibility Ideographs Supplement" +msgstr "한중일 호환 보충 한자" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1245 src/ibusunicodegen.h:1293 +msgid "CJK Unified Ideographs Extension G" +msgstr "한중일 통합 한자 확장영역 G" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1249 src/ibusunicodegen.h:1297 +msgid "Tags" +msgstr "태그" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1253 src/ibusunicodegen.h:1301 +msgid "Variation Selectors Supplement" +msgstr "여러가지 선택자 추가영역" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1257 src/ibusunicodegen.h:1305 +msgid "Supplementary Private Use Area-A" +msgstr "사용자 추가영역-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1261 src/ibusunicodegen.h:1309 +msgid "Supplementary Private Use Area-B" +msgstr "사용자 추가영역-B" + +#: tools/main.vala:51 +msgid "List engine name only" +msgstr "엔진 이름만 나열합니다" + +#: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 +msgid "Can't connect to IBus.\n" +msgstr "IBus에 연결 할 수 없습니다.\n" + +#: tools/main.vala:93 +#, c-format +msgid "language: %s\n" +msgstr "언어: %s\n" -#: ../setup/setup.ui.h:19 -msgid "Always" -msgstr "항상" +#: tools/main.vala:161 +msgid "No engine is set.\n" +msgstr "엔진이 설정되어 있지 않습니다.\n" -#: ../setup/setup.ui.h:20 -msgid "Bottom left corner" -msgstr "왼쪽 아래" +#: tools/main.vala:169 +msgid "Set global engine failed.\n" +msgstr "전체 공통 엔진의 설정에 실패했습니다.\n" -#: ../setup/setup.ui.h:21 -msgid "Bottom right corner" -msgstr "오른쪽 아래" +#: tools/main.vala:174 +msgid "Get global engine failed.\n" +msgstr "전체 공통 엔진의 취득에 실패했습니다.\n" -#: ../setup/setup.ui.h:22 -msgid "Candidates orientation:" -msgstr "후보 창의 방향: " +#: tools/main.vala:217 +msgid "Read the system registry cache." +msgstr "시스템 레지스트리 캐시를 읽어들입니다." -#: ../setup/setup.ui.h:23 -msgid "Custom" -msgstr "사용자 정의" +#: tools/main.vala:219 +msgid "Read the registry cache FILE." +msgstr "레지스트리 캐시 파일을 읽어들입니다." -#: ../setup/setup.ui.h:24 -msgid "Disable:" +#: tools/main.vala:237 tools/main.vala:242 +msgid "The registry cache is invalid.\n" +msgstr "레지스트리 캐시가 잘못되었습니다.\n" + +#: tools/main.vala:257 +msgid "Write the system registry cache." +msgstr "시스템 레지스트리 캐시를 씁니다." + +#: tools/main.vala:259 +msgid "Write the registry cache FILE." +msgstr "레지스트리 캐시 파일을 씁니다." + +#: tools/main.vala:295 +msgid "" +"Use engine schema paths instead of ibus core, which can be comma-separated " +"values." msgstr "" +"IBus 코어 대신 엔진 스키마 경로를 사용합니다. 쉼표로 구분한 경로 값 목록." -#: ../setup/setup.ui.h:25 -msgid "Embed preedit text in application window" -msgstr "어플리케이션 창에 편집전 텍스트 포함" +#: tools/main.vala:381 +msgid "Resetting…" +msgstr "재설정 중…" -#: ../setup/setup.ui.h:26 -msgid "Embed the preedit text of input method in the application window" -msgstr "입력 방식의 편집전 텍스트를 어플레케이션 창에 포함시킵니다" +#: tools/main.vala:399 +msgid "Done" +msgstr "완료" -#: ../setup/setup.ui.h:27 -msgid "Embedded in menu" -msgstr "메뉴에 포함" +#: tools/main.vala:444 +msgid "Set or get engine" +msgstr "엔진을 설정하거나 얻기" -#: ../setup/setup.ui.h:28 -msgid "Enable or disable:" -msgstr "활성화 또는 비활성화: " +#: tools/main.vala:445 +msgid "Exit ibus-daemon" +msgstr "ibus-daemon 끝내기" -#: ../setup/setup.ui.h:29 -msgid "Enable:" -msgstr "" +#: tools/main.vala:446 +msgid "Show available engines" +msgstr "존재하는 엔진 표시" -#: ../setup/setup.ui.h:30 -msgid "General" -msgstr "일반 " +#: tools/main.vala:447 +msgid "(Not implemented)" +msgstr "(구현 안함)" -#: ../setup/setup.ui.h:31 -msgid "Horizontal" -msgstr "가로" +#: tools/main.vala:448 +msgid "Restart ibus-daemon" +msgstr "ibus-daemon 다시 시작" -#: ../setup/setup.ui.h:34 -msgid "Language panel position:" -msgstr "언어 패널 위치:" +#: tools/main.vala:449 +msgid "Show version" +msgstr "버전 보기" -#: ../setup/setup.ui.h:35 -msgid "Move down the selected input method in the enabled input methods" -msgstr "활성화된 입력 방식 목록에서 선택한 입력 방식을 아래로 이동합니다" +#: tools/main.vala:450 +msgid "Show the content of registry cache" +msgstr "레지스트리 캐시 내용 표시" -#: ../setup/setup.ui.h:36 -msgid "Move up the selected input method in the enabled input methods list" -msgstr "활성화된 입력 방식 목록에서 선택한 입력 방식을 위로 이동합니다" +#: tools/main.vala:451 +msgid "Create registry cache" +msgstr "레지스트리 캐시 만들기" -#: ../setup/setup.ui.h:37 -msgid "Next input method:" -msgstr "다음 입력 방식:" +#: tools/main.vala:452 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "ibus-daemon의 D-Bus 주소 출력" -#: ../setup/setup.ui.h:38 -msgid "Previous input method:" -msgstr "이전 입력 방식:" +#: tools/main.vala:453 +msgid "Show the configuration values" +msgstr "설정 값 표시" -#: ../setup/setup.ui.h:39 -msgid "Remove the selected input method from the enabled input methods" -msgstr "활성화된 입력 방식 목록에서 선택한 입력 방식을 제거" +#: tools/main.vala:454 +msgid "Reset the configuration values" +msgstr "설정 값 재설정" -#: ../setup/setup.ui.h:40 -msgid "Set the behavior of ibus how to show or hide language bar" -msgstr "ibus가 입력 도구 모음을 표시하거나 숨기는 방법 설정" +#: tools/main.vala:456 +msgid "Save emoji on dialog to clipboard" +msgstr "대화창의 이모지를 클립보드에 저장" -#: ../setup/setup.ui.h:41 -msgid "Set the orientation of candidates in lookup table" -msgstr "검색 테이블에서 후보 창의 방향 설정 " +#: tools/main.vala:458 +msgid "Show this information" +msgstr "이 정보 표시" -#: ../setup/setup.ui.h:44 -msgid "Show information of the selected input method" -msgstr "선택한 입력 방식의 정보 보여주기" +#: tools/main.vala:464 +#, c-format +msgid "" +"Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "" +"사용법: %s <명령> [옵션...]\n" +"\n" -#: ../setup/setup.ui.h:46 -msgid "Show input method's name on language bar when check the checkbox" -msgstr "확인란을 선택하면 입력 방식의 이름을 입력 도구 모음에 표시" +#: tools/main.vala:465 +msgid "Commands:\n" +msgstr "명령:\n" -#: ../setup/setup.ui.h:47 -msgid "Show language panel:" -msgstr "언어 패널 표시: " +#: tools/main.vala:494 +#, c-format +msgid "%s is unknown command!\n" +msgstr "%s는 알 수 없는 명령입니다!\n" -#: ../setup/setup.ui.h:48 -msgid "Start ibus on login" -msgstr "로그인 시 ibus 시작 " +#: ui/gtk3/emojier.vala:233 ui/gtk3/emojier.vala:235 +msgid "Favorites" +msgstr "자주 사용" -#: ../setup/setup.ui.h:49 -msgid "The shortcut keys for switching to next input method in the list" -msgstr "목록에 있는 다음 입력 방식으로 전환하기 위한 단축키" +#: ui/gtk3/emojier.vala:234 ui/gtk3/emojier.vala:236 +msgid "Others" +msgstr "기타" -#: ../setup/setup.ui.h:50 -msgid "The shortcut keys for switching to previous input method in the list" -msgstr "목록에 있는 이전 입력 방식으로 전환하기 위한 단축키 " +#: ui/gtk3/emojier.vala:235 ui/gtk3/emojier.vala:237 +msgid "Open Unicode choice" +msgstr "유니코드 선택 열기" -#: ../setup/setup.ui.h:52 -msgid "Top left corner" -msgstr "왼쪽 위" +#: ui/gtk3/emojier.vala:995 ui/gtk3/emojier.vala:1000 +msgid "Bring back emoji choice" +msgstr "이모지 선택으로 돌아가기" -#: ../setup/setup.ui.h:53 -msgid "Top right corner" -msgstr "오른쪽 위" +#: ui/gtk3/emojier.vala:1097 ui/gtk3/emojier.vala:1103 +msgid "Page Down" +msgstr "다음 페이지" -#: ../setup/setup.ui.h:54 -msgid "Use custom font:" -msgstr "사용자 정의 글꼴 사용:" +#: ui/gtk3/emojier.vala:1108 ui/gtk3/emojier.vala:1114 +msgid "Page Up" +msgstr "이전 페이지" -#: ../setup/setup.ui.h:57 -msgid "Vertical" -msgstr "세로" +#: ui/gtk3/emojier.vala:1111 ui/gtk3/emojier.vala:1117 +msgid "Show emoji variants" +msgstr "이모지 변종 보기" + +#: ui/gtk3/emojier.vala:1112 ui/gtk3/emojier.vala:1118 +msgid "Close" +msgstr "닫기" + +#: ui/gtk3/emojier.vala:1118 ui/gtk3/emojier.vala:1124 +msgid "Menu" +msgstr "메뉴" + +#: ui/gtk3/emojier.vala:1129 ui/gtk3/emojier.vala:1135 +msgid "Click to view a warning message" +msgstr "경고 메시지를 보려면 누르십시오" + +#: ui/gtk3/emojier.vala:1173 ui/gtk3/emojier.vala:1179 +msgid "Loading a Unicode dictionary:" +msgstr "유니코드 사전 읽어들이는 중:" + +#: ui/gtk3/emojier.vala:1419 ui/gtk3/emojier.vala:1425 +#, c-format +msgid "Code point: %s" +msgstr "코드값: %s" + +#: ui/gtk3/emojier.vala:1425 ui/gtk3/emojier.vala:1431 +msgid "Has emoji variants" +msgstr "이모지 변종 있음" + +#: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 +#: ui/gtk3/emojier.vala:1599 ui/gtk3/emojier.vala:1612 +#, c-format +msgid "Description: %s" +msgstr "설명: %s" + +#: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1599 +msgid "None" +msgstr "없음" + +#: ui/gtk3/emojier.vala:1616 ui/gtk3/emojier.vala:1623 +#, c-format +msgid "Annotations: %s" +msgstr "주석: %s" + +#: ui/gtk3/emojier.vala:1642 ui/gtk3/emojier.vala:1649 +#, c-format +msgid "Name: %s" +msgstr "이름: %s" + +#: ui/gtk3/emojier.vala:1650 ui/gtk3/emojier.vala:1657 +#, c-format +msgid "Alias: %s" +msgstr "다른 이름: %s" + +#: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 +#: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1147 +#: ui/gtk3/emojier.vala:2180 ui/gtk3/panel.vala:1244 +msgid "Emoji Choice" +msgstr "이모지 선택" + +#: ui/gtk3/emojier.vala:2142 ui/gtk3/emojier.vala:2182 +msgid "Unicode Choice" +msgstr "유니코드 선택" + +#: ui/gtk3/emojier.vala:2432 ui/gtk3/emojier.vala:2485 +msgid "" +"Failed to get the current text application. Please re-focus your " +"application. E.g. Press Esc key several times to release the emoji typing " +"mode, click your desktop and click your text application again." +msgstr "" +"현재 텍스트 응용 프로그램을 가져 올 수 없습니다. 응용 프로그램에 다시 초점을 " +"맞춰보세요. 예를 들어 Esc 키를 여러 번 눌러서 이모지 입력 방식을 벗어나거나, " +"바탕 화면을 누르고 텍스트 응용 프로그램을 다시 눌러 보세요." + +#: ui/gtk3/emojierapp.vala:47 +msgid "Canceled to choose an emoji." +msgstr "이모지 선택 취소됨." + +#: ui/gtk3/emojierapp.vala:67 +msgid "Copied an emoji to your clipboard." +msgstr "이모지를 클립보드에 복사." + +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ui/gtk3/emojierapp.vala:126 +msgid "\"FONT\" for emoji characters on emoji dialog" +msgstr "이모지 대화상자의 이모지 문자 \"<글꼴>\"" + +#: ui/gtk3/emojierapp.vala:127 +msgid "FONT" +msgstr "글꼴" + +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ui/gtk3/emojierapp.vala:132 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" +msgstr "\"언어\"를 이모지 대화창 주석에 사용합니다. 예: \"en\"" + +#: ui/gtk3/emojierapp.vala:133 +msgid "LANG" +msgstr "언어" + +#: ui/gtk3/emojierapp.vala:135 +msgid "Emoji annotations can be match partially" +msgstr "이모지 주석을 부분적으로 일치시킬 수 있습니다" + +#: ui/gtk3/emojierapp.vala:139 +msgid "Match with the length of the specified integer" +msgstr "지정한 정수 값 길이만큼 일치" + +#: ui/gtk3/emojierapp.vala:143 +msgid "Match with the condition of the specified integer" +msgstr "지정된 정수의 조건과 일치" + +#: ui/gtk3/panel.vala:292 ui/gtk3/panel.vala:323 ui/gtk3/panel.vala:320 +#: ui/gtk3/panel.vala:351 +msgid "IBus Panel" +msgstr "IBus 패널" + +#: ui/gtk3/panel.vala:975 ui/gtk3/panel.vala:1045 +#, c-format +msgid "" +"Your configured input method %s does not exist in IBus input methods so \"US" +"\" layout was configured instead of your input method." +msgstr "" +"당신이 사용하도록 설정한 %s 입력기가 IBUS 입력기에 없으므로, 당신의 입력기 대" +"신 \"US\" 키보드 배치가 설정되었습니다." -#: ../setup/setup.ui.h:58 -msgid "When active" -msgstr "활성화 되었을 때" +#: ui/gtk3/panel.vala:980 ui/gtk3/panel.vala:1050 +msgid "" +"At least one of your configured input methods does not exist in IBus input " +"methods." +msgstr "IBus 입력기에는 당신이 사용하도록 설정한 입력기가 존재하지 않습니다." + +#: ui/gtk3/panel.vala:983 ui/gtk3/panel.vala:1053 +msgid "" +"Please run `ibus-setup` command, open \"Input Method\" tab, and configure " +"your input methods again." +msgstr "" +"`ibus-setup` 명령을 실행하고 \"입력기\" 탭을 연 다음 입력기를 다시 구성하십시" +"오." + +#: ui/gtk3/panel.vala:1141 ui/gtk3/panel.vala:1216 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus는 리눅스/유닉스를 위한 지능형 입력 버스입니다." + +#: ui/gtk3/panel.vala:1145 ui/gtk3/panel.vala:1220 +msgid "translator-credits" +msgstr "simmon " + +#: ui/gtk3/panel.vala:1164 ui/gtk3/panel.vala:1239 +msgid "Preferences" +msgstr "기본 설정" + +#: ui/gtk3/panel.vala:1190 ui/gtk3/panel.vala:1265 +msgid "Restart" +msgstr "다시 시작" + +#: ui/gtk3/panel.vala:1194 ui/gtk3/panel.vala:1269 +msgid "Quit" +msgstr "끝내기" + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 +msgid "default:LTR" +msgstr "default:LTR" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:113 +msgid "Arabic Extended-B" +msgstr "아랍 문자 확장영역-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:769 +msgid "Vithkuqi" +msgstr "비트쿠크" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:777 +msgid "Latin Extended-F" +msgstr "라틴 문자 확장영역-F" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:877 +msgid "Old Uyghur" +msgstr "고대 위그루어" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:985 +msgid "Unified Canadian Aboriginal Syllabics Extended-A" +msgstr "통합 캐나다 원주민 음절 확장영역-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1033 +msgid "Cypro-Minoan" +msgstr "키프로-미노아어" + +# 서하문자(西夏文字, Tangut Block) +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1057 +msgid "Tangsa" +msgstr "탕사" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1097 +msgid "Kana Extended-B" +msgstr "가나 확장영역-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1125 +msgid "Znamenny Musical Notation" +msgstr "즈나메니 기보법" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1161 +msgid "Latin Extended-G" +msgstr "라틴 문자 확장영역-G" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1173 +msgid "Toto" +msgstr "토토" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1181 +msgid "Ethiopic Extended-B" +msgstr "에티오피아 문자 확장영역-B" + +#: ui/gtk3/panel.vala:756 +msgid "IBus Notification" +msgstr "IBus 알림" + +#: ui/gtk3/panel.vala:757 ui/gtk3/panel.vala:766 ui/gtk3/panel.vala:770 +msgid "" +"Keymap changes do not work in Plasma Wayland at present. Please use " +"systemsettings5 instead." +msgstr "" +"키맵 변경은 현재 플래즈마 웨이랜드에서 작동하지 않습니다. 대신에 " +"systemsettings5를 사용하세요." + +#~ msgid "Kbd" +#~ msgstr "키보드" + +#~ msgid "" +#~ "IBus\n" +#~ "The intelligent input bus\n" +#~ "Homepage: https://github.com/ibus/ibus/wiki\n" +#~ "\n" +#~ "\n" +#~ "\n" +#~ msgstr "" +#~ "IBus\n" +#~ "The intelligent input bus (지능형 입력 버스)\n" +#~ "홈페이지: https://github.com/ibus/ibus/wiki\n" +#~ "\n" +#~ "\n" +#~ "\n" + +#~ msgid "Start ibus on login" +#~ msgstr "로그인하면 ibus 시작" + +#~ msgid "Startup" +#~ msgstr "시작" diff --git a/po/lv.po b/po/lv.po index e039591a6..9cac9b5bc 100644 --- a/po/lv.po +++ b/po/lv.po @@ -1,552 +1,695 @@ -# translation of ibus.pot to Source -# Source translation of ibus. -# Copyright (C) 2008 Peng Huang +# translation of ibus.pot to Latvian +# Latvian translation of ibus. +# Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. -# +# # Translators: -# rudolfs.mazurs , 2011. +# Rūdolfs Mazurs , 2011 +# Rūdolfs Mazurs , 2011 +# Rūdolfs Mazurs , 2011-2012 msgid "" msgstr "" "Project-Id-Version: IBus\n" -"Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/list\n" -"POT-Creation-Date: 2011-05-13 11:21+0900\n" -"PO-Revision-Date: 2011-09-28 14:03+0000\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2014-02-18 13:46+0900\n" +"PO-Revision-Date: 2014-02-18 05:47+0000\n" "Last-Translator: Tranzistors \n" -"Language-Team: Latvian (http://www.transifex.net/projects/p/fedora/team/lv/)\n" +"Language-Team: Latvian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: lv\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n" -#: ../bus/ibus.desktop.in.h:1 -msgid "IBus" -msgstr "IBus" +#: ../setup/setup.ui.h:1 +msgid "Horizontal" +msgstr "Horizontāli" -#: ../bus/ibus.desktop.in.h:2 -msgid "Input Method Framework" -msgstr "Ievades metožu rāmja sistēma" +#: ../setup/setup.ui.h:2 +msgid "Vertical" +msgstr "Vertikāli" -#: ../bus/ibus.desktop.in.h:3 -msgid "Start IBus Input Method Framework" -msgstr "Startēt IBus ievades metožu rāmja sistēmu" +#: ../setup/setup.ui.h:3 +msgid "Top left corner" +msgstr "Augšējais kreisais stūris" -#: ../ibus/_config.py.in:40 -msgid "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." -msgstr "" -"Autortiesības (c) 2007-2010 Peng Huang\n" -"Autortiesības (c) 2007-2010 Red Hat, Inc." +#: ../setup/setup.ui.h:4 +msgid "Top right corner" +msgstr "Augšējais labais stūris" -#: ../ibus/lang.py:41 -msgid "Other" -msgstr "Cits" +#: ../setup/setup.ui.h:5 +msgid "Bottom left corner" +msgstr "Apakšējais kreisais stūris" -#: ../ui/gtk/candidatepanel.py:264 -msgid "Previous page" -msgstr "Iepriekšējā lapa" +#: ../setup/setup.ui.h:6 +msgid "Bottom right corner" +msgstr "Apakšējais labais stūris" -#: ../ui/gtk/candidatepanel.py:269 -msgid "Next page" -msgstr "Nākamā lapa" +#: ../setup/setup.ui.h:7 +msgid "Custom" +msgstr "Izvēlēts" -#: ../ui/gtk/main.py:62 -msgid "" -"Some input methods have been installed, removed or updated. Please restart " -"ibus input platform." +#: ../setup/setup.ui.h:8 +msgid "Do not show" +msgstr "" + +#: ../setup/setup.ui.h:9 +msgid "Hide automatically" msgstr "" -"Dažas ievades metodes ir uzinstalētas, izņemtas vai atjauninātas. Lūdzu, " -"pārstartējiet ibus ievades platformu." -#: ../ui/gtk/main.py:66 -msgid "Restart Now" -msgstr "Pārstartēt tagad" +#: ../setup/setup.ui.h:10 +msgid "Always" +msgstr "Vienmēr" + +#: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 +msgid "IBus Preferences" +msgstr "IBus iestatījumi" + +#: ../setup/setup.ui.h:12 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "Saīsņu taustiņi, lai pārslēgtos uz nākošo ievades metodi sarakstā" -#: ../ui/gtk/main.py:67 -msgid "Later" -msgstr "Vēlāk" +#: ../setup/setup.ui.h:13 +msgid "Next input method:" +msgstr "Nākamā ievades metode" -#: ../ui/gtk/panel.py:116 -msgid "IBus Panel" -msgstr "IBus panelis" +#: ../setup/setup.ui.h:14 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "Saīsņu taustiņi, lai pārslēgtos uz iepriekšējo ievades metodi sarakstā" -#: ../ui/gtk/panel.py:122 -msgid "IBus input method framework" -msgstr "IBus ievades metodes rāmja sistēma" +#: ../setup/setup.ui.h:15 +msgid "Previous input method:" +msgstr "Iepriekšējā ievades metode:" -#: ../ui/gtk/panel.py:352 -msgid "Restart" -msgstr "Pārstartēt" +#: ../setup/setup.ui.h:16 +msgid "..." +msgstr "..." + +#: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 +msgid "The shortcut keys for turning input method on or off" +msgstr "Saīsņu taustiņi, lai ieslēgtu vai izslēgtu ievades metodi" -#: ../ui/gtk/panel.py:439 -msgid "Turn off input method" -msgstr "Izslēgt ievades metodi" +#: ../setup/setup.ui.h:18 +msgid "Enable or disable:" +msgstr "Aktivēt vai deaktivēt:" -#: ../ui/gtk/panel.py:478 -msgid "No input window" -msgstr "Nav ievades loga" +#: ../setup/setup.ui.h:19 +msgid "Enable:" +msgstr "Aktivēt:" -#: ../ui/gtk/panel.py:509 -msgid "IBus is an intelligent input bus for Linux/Unix." -msgstr "IBus ir inteliģenta ievades kopne Linux/Unix." +#: ../setup/setup.ui.h:20 +msgid "Disable:" +msgstr "Deaktivēt:" -#: ../ui/gtk/panel.py:513 -msgid "translator-credits" +#: ../setup/setup.ui.h:21 +msgid "Keyboard Shortcuts" +msgstr "Tastatūras īsceļi" + +#: ../setup/setup.ui.h:22 +msgid "Set the orientation of candidates in lookup table" +msgstr "Iestatīt kandidātu orientāciju apsekošanas tabulā" + +#: ../setup/setup.ui.h:23 +msgid "Candidates orientation:" +msgstr "Kandidātu orientācija:" + +#: ../setup/setup.ui.h:24 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "Iestatīt ibus uzvedību kā rādīt vai slēpt valodas joslu" + +#: ../setup/setup.ui.h:25 +msgid "Show property panel:" msgstr "" -"Arvis Lācis\n" -"Pēteris Krišjānis\n" -"Rūdolfs Mazurs" -#: ../ui/gtk/languagebar.py:106 -msgid "About the input method" -msgstr "Par ievades metodi" +#: ../setup/setup.ui.h:26 +msgid "Language panel position:" +msgstr "Valodas paneļa pozīcija:" -#: ../ui/gtk/languagebar.py:214 -msgid "Switch input method" -msgstr "Pārslēgt ievades metodi" +#: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 +msgid "Show icon on system tray" +msgstr "Rādīt ikonu sistēmas ikonu joslā" -#: ../ui/gtk/languagebar.py:357 ../ui/gtk/engineabout.py:33 -#: ../setup/engineabout.py:33 ../setup/setup.ui.h:16 -msgid "About" -msgstr "Par" +#: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 +msgid "Show input method name on language bar" +msgstr "Parādīt ievades metodes nosaukumu valodas joslā" -#: ../ui/gtk/languagebar.py:361 -msgid "About the Input Method" -msgstr "Par ievades metodi" +#: ../setup/setup.ui.h:29 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "Parādīt ievades metodes nosaukumu valodas joslā, kad tiek atzīmēta izvēles rūtiņa" -#: ../ui/gtk/engineabout.py:61 ../setup/engineabout.py:61 -#, python-format -msgid "Language: %s\n" -msgstr "Valoda: %s\n" +#: ../setup/setup.ui.h:30 +msgid "Embed preedit text in application window" +msgstr "Iegult pirmsrediģēšanas tekstu lietotnes logā" -#: ../ui/gtk/engineabout.py:63 ../setup/engineabout.py:63 -#, python-format -msgid "Keyboard layout: %s\n" -msgstr "Tastatūras izkārtojums: %s\n" +#: ../setup/setup.ui.h:31 +msgid "Embed the preedit text of input method in the application window" +msgstr "Iegult ievades metodes pirmsrediģēšanas tekstu lietotnes logā" -#: ../ui/gtk/engineabout.py:65 ../setup/engineabout.py:65 -#, python-format -msgid "Author: %s\n" -msgstr "Autors: %s\n" +#: ../setup/setup.ui.h:32 +msgid "Use custom font:" +msgstr "Lietot izvēlētu fontu:" -#: ../ui/gtk/engineabout.py:67 ../setup/engineabout.py:67 -msgid "Description:\n" -msgstr "Apraksts:\n" +#: ../setup/setup.ui.h:33 +msgid "Font and Style" +msgstr "Fonts un stils" -#: ../setup/main.py:102 -msgid "trigger" -msgstr "trigeris" +#: ../setup/setup.ui.h:34 +msgid "General" +msgstr "Vispārīgi" -#: ../setup/main.py:113 -msgid "enable" -msgstr "aktivēt" +#. add button +#: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 +msgid "_Add" +msgstr "_Pievienot" -#: ../setup/main.py:124 -msgid "disable" -msgstr "deaktivēt" +#: ../setup/setup.ui.h:36 +msgid "Add the selected input method into the enabled input methods" +msgstr "Pievienot izvēlēto ievades metodi pie aktivētajām ievades metodēm" -#: ../setup/main.py:135 -msgid "next input method" -msgstr "nākošā ievades metode" +#: ../setup/setup.ui.h:37 +msgid "_Remove" +msgstr "_Izņemt" -#: ../setup/main.py:146 -msgid "previous input method" -msgstr "iepriekšējā ievades metode" +#: ../setup/setup.ui.h:38 +msgid "Remove the selected input method from the enabled input methods" +msgstr "Noņemt izvēlēto metodi no ieslēgto ievades metožu saraksta" -#: ../setup/main.py:286 -msgid "IBus daemon is not started. Do you want to start it now?" -msgstr "IBus dēmons nav startēts. Vai vēlaties to startēt tagad?" +#: ../setup/setup.ui.h:39 +msgid "_Up" +msgstr "_Augšup" -#: ../setup/main.py:301 -msgid "" -"IBus has been started! If you can not use IBus, please add below lines in $HOME/.bashrc, and relogin your desktop.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" -msgstr "" -"IBus tika startēts! Ja nevarat izmantot IBus, pievienojiet sekojošās rindiņas failā $HOME/.bashrc, un atkal piesakieties sesijā.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +#: ../setup/setup.ui.h:40 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "Pārvietojiet augšup izvēlēto ievades metodi ieslēgto ievades metožu sarakstā" -#: ../setup/main.py:316 -#, python-format -msgid "Select keyboard shortcut for %s" -msgstr "Izvēlieties tastatūras saīsni priekš %s" +#: ../setup/setup.ui.h:41 +msgid "_Down" +msgstr "_Lejup" -#: ../setup/keyboardshortcut.py:52 -msgid "Keyboard shortcuts" -msgstr "Tastatūras saīsnes" +#: ../setup/setup.ui.h:42 +msgid "Move down the selected input method in the enabled input methods" +msgstr "Pārvietojiet lejup izvēlēto ievades metodi ieslēgto ievades metožu sarakstā" -#: ../setup/keyboardshortcut.py:63 -msgid "Key code:" -msgstr "Taustiņa kods:" +#: ../setup/setup.ui.h:43 +msgid "_About" +msgstr "P_ar" -#: ../setup/keyboardshortcut.py:78 -msgid "Modifiers:" -msgstr "Modifikatoru taustiņi:" +#: ../setup/setup.ui.h:44 +msgid "Show information of the selected input method" +msgstr "Parādīt informāciju par izvēlēto ievades metodi" -#: ../setup/keyboardshortcut.py:231 -msgid "" -"Please press a key (or a key combination).\n" -"The dialog will be closed when the key is released." -msgstr "" -"Lūdzu, nospiediet taustiņu (vai taustiņu kombināciju).\n" -"Dialoga logs tiks aizvērts, kad taustiņš tiks atlaists." +#: ../setup/setup.ui.h:45 +msgid "_Preferences" +msgstr "_Iestatījumi" -#: ../setup/keyboardshortcut.py:233 -msgid "Please press a key (or a key combination)" -msgstr "Lūdzu, nospiediet taustiņu (vai taustiņu kombināciju)" +#: ../setup/setup.ui.h:46 +msgid "Show setup of the selected input method" +msgstr "Rādīt izvēlētās ievadies metodes iestatījumus" -#: ../setup/enginecombobox.py:120 -msgid "Select an input method" -msgstr "Izvēlieties ievades metodi" +#: ../setup/setup.ui.h:47 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" #. create im name & icon column -#: ../setup/enginetreeview.py:64 ../setup/setup.ui.h:33 +#: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" msgstr "Ievades metode" -#: ../setup/enginetreeview.py:92 -msgid "Kbd" -msgstr "Kbd" +#: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 +msgid "Use system keyboard layout" +msgstr "Izmantot sistēmas tastatūras izkārtojumu" -#: ../setup/ibus-setup.desktop.in.h:1 ../setup/setup.ui.h:32 -msgid "IBus Preferences" -msgstr "IBus iestatījumi" +#: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 +msgid "Use system keyboard (XKB) layout" +msgstr "Izmantot sistēmas tastatūras (XKB) izkārtojumu " -#: ../setup/ibus-setup.desktop.in.h:2 -msgid "Set IBus Preferences" -msgstr "Iestatīt IBus iestatījumus" +#: ../setup/setup.ui.h:51 +msgid "Keyboard Layout" +msgstr "Tastatūras izkārtojums" + +#: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 +msgid "Share the same input method among all applications" +msgstr "Starp lietotnēm izmantot vienu un to pašu ievades metodi" + +#: ../setup/setup.ui.h:53 +msgid "Global input method settings" +msgstr "Globālās ievades metodes iestatījumi" + +#: ../setup/setup.ui.h:54 +msgid "Advanced" +msgstr "Paplašināti" + +#: ../setup/setup.ui.h:55 +msgid "" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" +msgstr "IBus\nInteliģentā ievades kopne\nMājas lapa: https://github.com/ibus/ibus/wiki\n\n\n\n" + +#: ../setup/setup.ui.h:62 +msgid "Start ibus on login" +msgstr "Startēt ibus līdz ar pieslēgšanos" + +#: ../setup/setup.ui.h:63 +msgid "Startup" +msgstr "Startēšana" + +#: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 +msgid "About" +msgstr "Par" + +#: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 +msgid "_Close" +msgstr "_Aizvērt" #: ../data/ibus.schemas.in.h:1 -msgid "Auto hide" -msgstr "Autom. slēpšana" +msgid "Preload engines" +msgstr "Pārlādēt dzinējus" #: ../data/ibus.schemas.in.h:2 -msgid "Custom font" -msgstr "Izvēlēts fonts" +msgid "Preload engines during ibus starts up" +msgstr "Laicīgi ielādēt dzinējus ibus ielādes laikā" #: ../data/ibus.schemas.in.h:3 -msgid "Custom font name for language panel" -msgstr "Izvēlētā fonta nosaukums valodas panelim" +msgid "Engines order" +msgstr "" #: ../data/ibus.schemas.in.h:4 -msgid "Disable shortcut keys" -msgstr "Deaktivēt īsinājumu taustiņus" +msgid "Saved engines order in input method list" +msgstr "" #: ../data/ibus.schemas.in.h:5 -msgid "Embed Preedit Text" -msgstr "Iegult pirmsrediģēšanas tekstu" +msgid "Popup delay milliseconds for IME switcher window" +msgstr "" #: ../data/ibus.schemas.in.h:6 -msgid "Embed Preedit Text in Application Window" -msgstr "Iegult pirmsrediģēšanas tekstu lietotnes logā" +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is " +"400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " +"not show the window and switch prev/next engines." +msgstr "" #: ../data/ibus.schemas.in.h:7 -msgid "Enable input method by default" -msgstr "Aktivēt ievades metodi pēc noklusējuma" +msgid "Saved version number" +msgstr "" #: ../data/ibus.schemas.in.h:8 -msgid "Enable input method by default when the application gets input focus" -msgstr "Aktivēt ievades metodi pēc noklusējuma, kad lietotne saņem fokusu" +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" #: ../data/ibus.schemas.in.h:9 -msgid "Enable shortcut keys" -msgstr "Aktivēt īsinājuma taustiņus" - -#: ../data/ibus.schemas.in.h:10 -msgid "Language panel position" -msgstr "Valodas paneļa pozīcija" +msgid "Trigger shortcut keys" +msgstr "Trigera saīsņu taustiņi" #: ../data/ibus.schemas.in.h:11 -msgid "Next engine shortcut keys" -msgstr "Nākošā dzinēja saīsņu taustiņi" +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "" #: ../data/ibus.schemas.in.h:12 -msgid "Orientation of lookup table" -msgstr "Apsekošanas tabulas novietojums" +msgid "Enable shortcut keys" +msgstr "Aktivēt īsinājuma taustiņus" #: ../data/ibus.schemas.in.h:13 -msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" -msgstr "Apsekošanas tabulas novietojums. 0 = horizontāls, 1 = vertikāls" +msgid "The shortcut keys for turning input method on" +msgstr "Saīsņu taustiņi, lai ieslēgtu ievades metodi " #: ../data/ibus.schemas.in.h:14 -msgid "Preload engines" -msgstr "Pārlādēt dzinējus" +msgid "Disable shortcut keys" +msgstr "Deaktivēt īsinājumu taustiņus" #: ../data/ibus.schemas.in.h:15 -msgid "Preload engines during ibus starts up" -msgstr "Laicīgi ielādēt dzinējus ibus ielādes laikā" +msgid "The shortcut keys for turning input method off" +msgstr "Saīsņu taustiņi, lai izslēgtu ievades metodi " #: ../data/ibus.schemas.in.h:16 -msgid "Prev engine shortcut keys" -msgstr "Iepriekšējā dzinēja saīsņu taustiņi" +msgid "Next engine shortcut keys" +msgstr "Nākošā dzinēja saīsņu taustiņi" -#: ../data/ibus.schemas.in.h:17 ../setup/setup.ui.h:42 -msgid "Share the same input method among all applications" -msgstr "Starp lietotnēm izmantot vienu un to pašu ievades metodi" +#: ../data/ibus.schemas.in.h:17 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "Saīsņu taustiņi, lai pārslēgtos uz nākamo ievades metodi sarakstā" -#: ../data/ibus.schemas.in.h:18 ../setup/setup.ui.h:43 -msgid "Show icon on system tray" -msgstr "Rādīt ikonu sistēmas ikonu joslā" +#: ../data/ibus.schemas.in.h:18 +msgid "Prev engine shortcut keys" +msgstr "Iepriekšējā dzinēja saīsņu taustiņi" #: ../data/ibus.schemas.in.h:19 -msgid "Show input method name" -msgstr "Rādīt ievades metodes nosaukumu" +msgid "The shortcut keys for switching to the previous input method" +msgstr "Saīsņu taustiņi, lai pārslēgtos uz iepriekšējo ievades metodi sarakstā" -#: ../data/ibus.schemas.in.h:20 ../setup/setup.ui.h:45 -msgid "Show input method name on language bar" -msgstr "Parādīt ievades metodes nosaukumu valodas joslā" +#: ../data/ibus.schemas.in.h:20 +msgid "Auto hide" +msgstr "Autom. slēpšana" #: ../data/ibus.schemas.in.h:21 msgid "" -"The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = " -"Always show" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" msgstr "" -"Valodas paneļa uzvedība. 0 = iegults izvēlnē, 1 = automātiski slēpt, 2 = " -"vienmēr rādīt" #: ../data/ibus.schemas.in.h:22 +msgid "Language panel position" +msgstr "Valodas paneļa pozīcija" + +#: ../data/ibus.schemas.in.h:23 msgid "" "The position of the language panel. 0 = Top left corner, 1 = Top right " "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" -msgstr "" -"Valodas paneļa pozīcija. 0 = augšējais kreisais stūris, 1 = augšējais labais" -" stūris, 2 = apakšējais kreisais stūris, 3 = apakšējais labais stūris, 4 = " -"izvēlēts" - -#: ../data/ibus.schemas.in.h:23 -msgid "The shortcut keys for switching to the next input method in the list" -msgstr "Saīsņu taustiņi, lai pārslēgtos uz nākamo ievades metodi sarakstā" +msgstr "Valodas paneļa pozīcija. 0 = augšējais kreisais stūris, 1 = augšējais labais stūris, 2 = apakšējais kreisais stūris, 3 = apakšējais labais stūris, 4 = izvēlēts" #: ../data/ibus.schemas.in.h:24 -msgid "The shortcut keys for switching to the previous input method" +msgid "Follow the input cursor in case the panel is always shown" msgstr "" -"Saīsņu taustiņi, lai pārslēgtos uz iepriekšējo ievades metodi sarakstā" #: ../data/ibus.schemas.in.h:25 -msgid "The shortcut keys for turning input method off" -msgstr "Saīsņu taustiņi, lai izslēgtu ievades metodi " +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" #: ../data/ibus.schemas.in.h:26 -msgid "The shortcut keys for turning input method on" -msgstr "Saīsņu taustiņi, lai ieslēgtu ievades metodi " +msgid "The milliseconds to show property panel" +msgstr "" -#: ../data/ibus.schemas.in.h:27 ../setup/setup.ui.h:51 -msgid "The shortcut keys for turning input method on or off" -msgstr "Saīsņu taustiņi, lai ieslēgtu vai izslēgtu ievades metodi" +#: ../data/ibus.schemas.in.h:27 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" #: ../data/ibus.schemas.in.h:28 -msgid "Trigger shortcut keys" -msgstr "Trigera saīsņu taustiņi" +msgid "Orientation of lookup table" +msgstr "Apsekošanas tabulas novietojums" #: ../data/ibus.schemas.in.h:29 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "Apsekošanas tabulas novietojums. 0 = horizontāls, 1 = vertikāls" + +#: ../data/ibus.schemas.in.h:31 +msgid "Show input method name" +msgstr "Rādīt ievades metodes nosaukumu" + +#: ../data/ibus.schemas.in.h:35 msgid "Use custom font" msgstr "Izmantot izvēles fontu" -#: ../data/ibus.schemas.in.h:30 +#: ../data/ibus.schemas.in.h:36 msgid "Use custom font name for language panel" msgstr "Izmantojamais izvēles fonta nosaukums valodas panelim" -#: ../data/ibus.schemas.in.h:31 +#: ../data/ibus.schemas.in.h:37 +msgid "Custom font" +msgstr "Izvēlēts fonts" + +#: ../data/ibus.schemas.in.h:38 +msgid "Custom font name for language panel" +msgstr "Izvēlētā fonta nosaukums valodas panelim" + +#: ../data/ibus.schemas.in.h:39 +msgid "Embed Preedit Text" +msgstr "Iegult pirmsrediģēšanas tekstu" + +#: ../data/ibus.schemas.in.h:40 +msgid "Embed Preedit Text in Application Window" +msgstr "Iegult pirmsrediģēšanas tekstu lietotnes logā" + +#: ../data/ibus.schemas.in.h:41 msgid "Use global input method" msgstr "Izmantot globālo ievades metodi" -#: ../data/ibus.schemas.in.h:32 ../setup/setup.ui.h:55 -msgid "Use system keyboard (XKB) layout" -msgstr "Izmantot sistēmas tastatūras (XKB) izkārtojumu " +#: ../data/ibus.schemas.in.h:43 +msgid "Enable input method by default" +msgstr "Aktivēt ievades metodi pēc noklusējuma" -#: ../data/ibus.schemas.in.h:33 ../setup/setup.ui.h:56 -msgid "Use system keyboard layout" -msgstr "Izmantot sistēmas tastatūras izkārtojumu" +#: ../data/ibus.schemas.in.h:44 +msgid "Enable input method by default when the application gets input focus" +msgstr "Aktivēt ievades metodi pēc noklusējuma, kad lietotne saņem fokusu" -#: ../setup/setup.ui.h:1 -msgid "..." -msgstr "..." +#: ../data/ibus.schemas.in.h:45 +msgid "DConf preserve name prefixes" +msgstr "" -#: ../setup/setup.ui.h:2 -msgid "Font and Style" -msgstr "Fonts un stils" +#: ../data/ibus.schemas.in.h:46 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "" -#: ../setup/setup.ui.h:3 -msgid "Global input method settings" -msgstr "Globālās ievades metodes iestatījumi" +#: ../ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "Autortiesības (c) 2007-2010 Peng Huang\nAutortiesības (c) 2007-2010 Red Hat, Inc." -#: ../setup/setup.ui.h:4 -msgid "Keyboard Layout" -msgstr "Tastatūras izkārtojums" +#: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 +msgid "Other" +msgstr "Cits" -#: ../setup/setup.ui.h:5 -msgid "Keyboard Shortcuts" -msgstr "Tastatūras īsceļi" +#: ../setup/engineabout.py:68 +#, python-format +msgid "Language: %s\n" +msgstr "Valoda: %s\n" -#: ../setup/setup.ui.h:6 -msgid "Startup" -msgstr "Startēšana" +#: ../setup/engineabout.py:71 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "Tastatūras izkārtojums: %s\n" -#: ../setup/setup.ui.h:7 +#: ../setup/engineabout.py:74 +#, python-format +msgid "Author: %s\n" +msgstr "Autors: %s\n" + +#: ../setup/engineabout.py:77 +msgid "Description:\n" +msgstr "Apraksts:\n" + +#: ../setup/enginecombobox.py:139 +msgid "Select an input method" +msgstr "Izvēlieties ievades metodi" + +#: ../setup/enginetreeview.py:94 +msgid "Kbd" +msgstr "Kbd" + +#: ../setup/ibus-setup.desktop.in.h:2 +msgid "Set IBus Preferences" +msgstr "Iestatīt IBus iestatījumus" + +#: ../setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "Tastatūras saīsnes" + +#: ../setup/keyboardshortcut.py:66 +msgid "Key code:" +msgstr "Taustiņa kods:" + +#: ../setup/keyboardshortcut.py:81 +msgid "Modifiers:" +msgstr "Modifikatoru taustiņi:" + +#. apply button +#: ../setup/keyboardshortcut.py:133 +msgid "_Apply" +msgstr "_Pielietot" + +#. delete button +#: ../setup/keyboardshortcut.py:139 +msgid "_Delete" +msgstr "_Dzēst" + +#: ../setup/keyboardshortcut.py:254 msgid "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "Lūdzu, nospiediet taustiņu (vai taustiņu kombināciju).\nDialoga logs tiks aizvērts, kad taustiņš tiks atlaists." + +#: ../setup/keyboardshortcut.py:256 +msgid "Please press a key (or a key combination)" +msgstr "Lūdzu, nospiediet taustiņu (vai taustiņu kombināciju)" + +#: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 +msgid "_Cancel" +msgstr "At_celt" + +#: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 +msgid "_OK" +msgstr "_Labi" + +#: ../setup/main.py:102 ../setup/main.py:395 +msgid "Use shortcut with shift to switch to the previous input method" msgstr "" -"IBus\n" -"Inteliģentā ievades kopne\n" -"Mājas lapa: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" -#: ../setup/setup.ui.h:14 +#: ../setup/main.py:329 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "" + +#: ../setup/main.py:350 msgid "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." +"IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" msgstr "" -"Noklusētā ievades metode atrodas saraksta augšpusē.\n" -"Jūs varat izmantot pogas uz augšu/uz leju, lai to izmainītu." -#: ../setup/setup.ui.h:17 -msgid "Add the selected input method into the enabled input methods" -msgstr "Pievienot izvēlēto ievades metodi pie aktivētajām ievades metodēm" +#. Translators: %d == 5 currently +#: ../setup/main.py:364 +#, python-format +msgid "IBus daemon could not be started in %d seconds" +msgstr "" -#: ../setup/setup.ui.h:18 -msgid "Advanced" -msgstr "Paplašināti" +#: ../setup/main.py:376 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "Izvēlieties tastatūras saīsni priekš %s" -#: ../setup/setup.ui.h:19 -msgid "Always" -msgstr "Vienmēr" +#: ../setup/main.py:377 +msgid "switching input methods" +msgstr "" -#: ../setup/setup.ui.h:20 -msgid "Bottom left corner" -msgstr "Apakšējais kreisais stūris" +#: ../tools/main.vala:42 +msgid "List engine name only" +msgstr "" -#: ../setup/setup.ui.h:21 -msgid "Bottom right corner" -msgstr "Apakšējais labais stūris" +#: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 +#, c-format +msgid "Can't connect to IBus.\n" +msgstr "" -#: ../setup/setup.ui.h:22 -msgid "Candidates orientation:" -msgstr "Kandidātu orientācija:" +#: ../tools/main.vala:84 +#, c-format +msgid "language: %s\n" +msgstr "" -#: ../setup/setup.ui.h:23 -msgid "Custom" -msgstr "Izvēlēts" +#: ../tools/main.vala:152 +#, c-format +msgid "No engine is set.\n" +msgstr "" -#: ../setup/setup.ui.h:24 -msgid "Disable:" -msgstr "Deaktivēt:" +#: ../tools/main.vala:160 +#, c-format +msgid "Set global engine failed.\n" +msgstr "" -#: ../setup/setup.ui.h:25 -msgid "Embed preedit text in application window" -msgstr "Iegult pirmsrediģēšanas tekstu lietotnes logā" +#: ../tools/main.vala:165 +#, c-format +msgid "Get global engine failed.\n" +msgstr "" -#: ../setup/setup.ui.h:26 -msgid "Embed the preedit text of input method in the application window" -msgstr "Iegult ievades metodes pirmsrediģēšanas tekstu lietotnes logā" +#: ../tools/main.vala:204 +msgid "Read the system registry cache." +msgstr "" -#: ../setup/setup.ui.h:27 -msgid "Embedded in menu" -msgstr "Iegults izvēlnē" +#: ../tools/main.vala:206 +msgid "Read the registry cache FILE." +msgstr "" -#: ../setup/setup.ui.h:28 -msgid "Enable or disable:" -msgstr "Aktivēt vai deaktivēt:" +#: ../tools/main.vala:224 ../tools/main.vala:229 +#, c-format +msgid "The registry cache is invalid.\n" +msgstr "" -#: ../setup/setup.ui.h:29 -msgid "Enable:" -msgstr "Aktivēt:" +#: ../tools/main.vala:244 +msgid "Write the system registry cache." +msgstr "" -#: ../setup/setup.ui.h:30 -msgid "General" -msgstr "Vispārīgi" +#: ../tools/main.vala:246 +msgid "Write the registry cache FILE." +msgstr "" -#: ../setup/setup.ui.h:31 -msgid "Horizontal" -msgstr "Horizontāli" +#: ../tools/main.vala:293 +msgid "Set or get engine" +msgstr "" -#: ../setup/setup.ui.h:34 -msgid "Language panel position:" -msgstr "Valodas paneļa pozīcija:" +#: ../tools/main.vala:294 +msgid "Exit ibus-daemon" +msgstr "" -#: ../setup/setup.ui.h:35 -msgid "Move down the selected input method in the enabled input methods" +#: ../tools/main.vala:295 +msgid "Show available engines" msgstr "" -"Pārvietojiet lejup izvēlēto ievades metodi ieslēgto ievades metožu sarakstā" -#: ../setup/setup.ui.h:36 -msgid "Move up the selected input method in the enabled input methods list" +#: ../tools/main.vala:296 +msgid "(Not implemented)" msgstr "" -"Pārvietojiet augšup izvēlēto ievades metodi ieslēgto ievades metožu sarakstā" -#: ../setup/setup.ui.h:37 -msgid "Next input method:" -msgstr "Nākamā ievades metode" +#: ../tools/main.vala:297 +msgid "Restart ibus-daemon" +msgstr "" -#: ../setup/setup.ui.h:38 -msgid "Previous input method:" -msgstr "Iepriekšējā ievades metode:" +#: ../tools/main.vala:298 +msgid "Show version" +msgstr "" -#: ../setup/setup.ui.h:39 -msgid "Remove the selected input method from the enabled input methods" -msgstr "Noņemt izvēlēto metodi no ieslēgto ievades metožu saraksta" +#: ../tools/main.vala:299 +msgid "Show the content of registry cache" +msgstr "" -#: ../setup/setup.ui.h:40 -msgid "Set the behavior of ibus how to show or hide language bar" -msgstr "Iestatīt ibus uzvedību kā rādīt vai slēpt valodas joslu" +#: ../tools/main.vala:300 +msgid "Create registry cache" +msgstr "" -#: ../setup/setup.ui.h:41 -msgid "Set the orientation of candidates in lookup table" -msgstr "Iestatīt kandidātu orientāciju apsekošanas tabulā" +#: ../tools/main.vala:301 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "" -#: ../setup/setup.ui.h:44 -msgid "Show information of the selected input method" -msgstr "Parādīt informāciju par izvēlēto ievades metodi" +#: ../tools/main.vala:302 +msgid "Show this information" +msgstr "" -#: ../setup/setup.ui.h:46 -msgid "Show input method's name on language bar when check the checkbox" +#: ../tools/main.vala:308 +#, c-format +msgid "" +"Usage: %s COMMAND [OPTION...]\n" +"\n" msgstr "" -"Parādīt ievades metodes nosaukumu valodas joslā, kad tiek atzīmēta izvēles " -"rūtiņa" -#: ../setup/setup.ui.h:47 -msgid "Show language panel:" -msgstr "Parādīt valodas paneli:" +#: ../tools/main.vala:309 +#, c-format +msgid "Commands:\n" +msgstr "" -#: ../setup/setup.ui.h:48 -msgid "Start ibus on login" -msgstr "Startēt ibus līdz ar pieslēgšanos" +#: ../tools/main.vala:338 +#, c-format +msgid "%s is unknown command!\n" +msgstr "" -#: ../setup/setup.ui.h:49 -msgid "The shortcut keys for switching to next input method in the list" -msgstr "Saīsņu taustiņi, lai pārslēgtos uz nākošo ievades metodi sarakstā" +#: ../ui/gtk3/panel.vala:425 +msgid "IBus Update" +msgstr "" -#: ../setup/setup.ui.h:50 -msgid "The shortcut keys for switching to previous input method in the list" +#: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 +msgid "Super+space is now the default hotkey." msgstr "" -"Saīsņu taustiņi, lai pārslēgtos uz iepriekšējo ievades metodi sarakstā" -#: ../setup/setup.ui.h:52 -msgid "Top left corner" -msgstr "Augšējais kreisais stūris" +#: ../ui/gtk3/panel.vala:707 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus ir inteliģenta ievades kopne Linux/Unix." -#: ../setup/setup.ui.h:53 -msgid "Top right corner" -msgstr "Augšējais labais stūris" +#: ../ui/gtk3/panel.vala:711 +msgid "translator-credits" +msgstr "Arvis Lācis\nPēteris Krišjānis\nRūdolfs Mazurs" -#: ../setup/setup.ui.h:54 -msgid "Use custom font:" -msgstr "Lietot izvēlētu fontu:" +#: ../ui/gtk3/panel.vala:732 +msgid "Preferences" +msgstr "Iestatījumi" -#: ../setup/setup.ui.h:57 -msgid "Vertical" -msgstr "Vertikāli" +#: ../ui/gtk3/panel.vala:742 +msgid "Restart" +msgstr "Pārstartēt" + +#: ../ui/gtk3/panel.vala:746 +msgid "Quit" +msgstr "Iziet" -#: ../setup/setup.ui.h:58 -msgid "When active" -msgstr "Kad aktīvs" +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ../ui/gtk3/propertypanel.vala:374 +msgid "default:LTR" +msgstr "default:LTR" diff --git a/po/ml.po b/po/ml.po index 7d4006581..71809bad2 100644 --- a/po/ml.po +++ b/po/ml.po @@ -1,527 +1,745 @@ -# translation of ml.po to -# translation of ibus.master.ml.po to -# translation of ibus.master.ibus.ml.po to -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# Ani Peter , 2009. +# translation of ibus.pot to Malayalam +# Malayalam translation of ibus. +# Copyright (C) 2008-2015 Peng Huang +# This file is distributed under the same license as the ibus package. # +# Translators: +# Ani Peter , 2009,2012-2014 msgid "" msgstr "" -"Project-Id-Version: ibus.master.ml\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-12 00:41+0900\n" -"PO-Revision-Date: 2010-08-02 17:16+0530\n" -"Last-Translator: \n" -"Language-Team: \n" -"Language: \n" +"Project-Id-Version: IBus\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2014-07-18 13:09+0900\n" +"PO-Revision-Date: 2014-11-11 09:36+0000\n" +"Last-Translator: Ani Peter \n" +"Language-Team: Malayalam \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.11.4\n" +"Language: ml\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ../bus/ibus.desktop.in.h:1 -msgid "IBus" -msgstr "IBus" +#: ../setup/setup.ui.h:1 +msgid "Horizontal" +msgstr "കുറുകെയുള്ള" -#: ../bus/ibus.desktop.in.h:2 -msgid "Input Method Framework" -msgstr "ഇന്‍പുട്ട് മെഥേഡ് ആകൃതി" +#: ../setup/setup.ui.h:2 +msgid "Vertical" +msgstr "നേരെയുള്ള" -#: ../bus/ibus.desktop.in.h:3 -msgid "Start IBus Input Method Framework" -msgstr "IBus ഇന്‍പുട്ട് മെഥേഡ് ആകൃതി ആരംഭിയ്ക്കുക" +#: ../setup/setup.ui.h:3 +msgid "Top left corner" +msgstr "മുകളില്‍ ഇടതു് കോണ്‍ " -#: ../ibus/_config.py.in:39 -msgid "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." -msgstr "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +#: ../setup/setup.ui.h:4 +msgid "Top right corner" +msgstr "മുകളില്‍ വലതു് കോണ്‍ " -#: ../ibus/lang.py:41 -msgid "Other" -msgstr "മറ്റുള്ളവ" +#: ../setup/setup.ui.h:5 +msgid "Bottom left corner" +msgstr "താഴെ ഇടതു് കോണ്‍" + +#: ../setup/setup.ui.h:6 +msgid "Bottom right corner" +msgstr "താഴെ വലതു് കോണ്‍ " -#: ../ui/gtk/candidatepanel.py:264 -msgid "Previous page" -msgstr "മുമ്പുള്ള താള്‍:" +#: ../setup/setup.ui.h:7 +msgid "Custom" +msgstr "യഥേഷ്ടം:" + +#: ../setup/setup.ui.h:8 +msgid "Do not show" +msgstr "ഇനി കാണിയ്ക്കരുതു്" + +#: ../setup/setup.ui.h:9 +msgid "Hide automatically" +msgstr "സ്വയമായി അദൃശ്യമാക്കുക" -#: ../ui/gtk/candidatepanel.py:269 -msgid "Next page" -msgstr "അടുത്ത താള്‍" +#: ../setup/setup.ui.h:10 +msgid "Always" +msgstr "എപ്പോഴും" + +#: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 +msgid "IBus Preferences" +msgstr "IBus മുന്‍ഗണനകള്‍" + +#: ../setup/setup.ui.h:12 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "അടുത്ത ഇന്‍പുട്ട് മെഥേഡ് സംവിധാനത്തിലേക്ക് മാറ്റുന്നതിനായി അടുത്ത സംവിധാനത്തിനുള്ള എളുപ്പവഴി" + +#: ../setup/setup.ui.h:13 +msgid "Next input method:" +msgstr "അടുത്ത ഇന്‍പുട്ട് മെഥേഡ്:" + +#: ../setup/setup.ui.h:14 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "മുമ്പുള്ള ഇന്‍പുട്ട് മെഥേഡ് സംവിധാനത്തിലേക്ക് മാറ്റുന്നതിനായി തൊട്ടു് മുമ്പുള്ള സംവിധാനത്തിനുള്ള എളുപ്പവഴി" + +#: ../setup/setup.ui.h:15 +msgid "Previous input method:" +msgstr "മുമ്പുള്ള ഇന്‍പുട്ട് മെഥേഡ്:" + +#: ../setup/setup.ui.h:16 +msgid "..." +msgstr "..." + +#: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:16 +msgid "The shortcut keys for turning input method on or off" +msgstr "ഇന്‍പുട്ട് മെഥേഡ് ഓണ്‍ അല്ലെങ്കില്‍ ഓഫ് ചെയ്യുന്നതിനുള്ള എളുപ്പവളികള്‍ സജ്ജമാക്കുക" + +#: ../setup/setup.ui.h:18 +msgid "Enable or disable:" +msgstr "സജ്ജമാക്കുക അല്ലെങ്കില്‍ നിര്‍ജ്ജീവമാക്കുക:" + +#: ../setup/setup.ui.h:19 +msgid "Enable:" +msgstr "പ്രവര്‍ത്തന സജ്ജമാക്കുക: " + +#: ../setup/setup.ui.h:20 +msgid "Disable:" +msgstr "പ്രവര്‍ത്തന രഹിതമാക്കുക: " + +#: ../setup/setup.ui.h:21 +msgid "Keyboard Shortcuts" +msgstr "കീബോര്‍ഡ് എളുപ്പവഴികള്‍" + +#: ../setup/setup.ui.h:22 +msgid "Set the orientation of candidates in lookup table" +msgstr "ലുക്കപ്പ് പട്ടികയില്‍ ലഭ്യമായവയുടെ ക്രമീകരണം സജ്ജമാക്കുക" + +#: ../setup/setup.ui.h:23 +msgid "Candidates orientation:" +msgstr "ലഭ്യമായവയുടെ ക്രമീകരണങ്ങള്‍:" + +#: ../setup/setup.ui.h:24 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "ibus ഭാഷയുടെ പാനല്‍ കാണിക്കണമോ വേണ്ടയോ എന്നതു് സജ്ജമാക്കുക" + +#: ../setup/setup.ui.h:25 +msgid "Show property panel:" +msgstr "വിശേഷതയ്ക്കുള്ള പാനല്‍ കാണിയ്ക്കുക:" + +#: ../setup/setup.ui.h:26 +msgid "Language panel position:" +msgstr "ഭാഷയുടെ പാനല്‍ സ്ഥാനം:" + +#: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:36 +msgid "Show icon on system tray" +msgstr "സിസ്റ്റം ട്രേയില്‍ ചിഹ്നം കാണിക്കുക" + +#: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:38 +msgid "Show input method name on language bar" +msgstr "ഭാഷയുടെ പാനലില്‍ ഇന്‍പുട്ട് മെഥേഡിന്റെ പേരു് കാണിക്കുക" + +#: ../setup/setup.ui.h:29 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "ചെക്ക്ബോക്സ് ചെക്ക് ചെയ്യുമ്പോള്‍ ഭാഷയുടെ പാനലില്‍ ഇന്‍പുട്ട് മെഥേഡിന്റെ പേരു് കാണിക്കുക" + +#: ../setup/setup.ui.h:30 +msgid "Embed preedit text in application window" +msgstr "പ്രയോഗത്തിനുള്ള ജാലകത്തില്‍ പ്രീഎഡിറ്റ് ടെക്സ്റ്റ് ചേര്‍ക്കുക" + +#: ../setup/setup.ui.h:31 +msgid "Embed the preedit text of input method in the application window" +msgstr "പ്രയോഗത്തിനുള്ള ജാലകത്തില്‍ പ്രീഎഡിറ്റ് ടെക്സ്റ്റിനുള്ള ഇന്‍പുട്ട് രീകി ചേര്‍ക്കുക" + +#: ../setup/setup.ui.h:32 +msgid "Use custom font:" +msgstr "സജ്ജമാക്കിയ അക്ഷരസഞ്ചയം ഉപയോഗിക്കുക:" + +#: ../setup/setup.ui.h:33 +msgid "Font and Style" +msgstr "അക്ഷരസഞ്ചയവും രീതിയും" + +#: ../setup/setup.ui.h:34 +msgid "General" +msgstr "സാധാരണ" + +#. add button +#: ../setup/setup.ui.h:35 ../setup/enginedialog.py:60 +#: ../setup/keyboardshortcut.py:128 +msgid "_Add" +msgstr "_ചേര്‍ക്കുക" + +#: ../setup/setup.ui.h:36 +msgid "Add the selected input method into the enabled input methods" +msgstr "സജ്ജമാക്കിയ ഇന്‍പുട്ട് മെഥേഡുകളിലേക്കു് തെരഞ്ഞെടുത്ത ഇന്‍പുട്ട് മെഥേഡ് ചേര്‍ക്കുക" + +#: ../setup/setup.ui.h:37 +msgid "_Remove" +msgstr "_നീക്കം ചെയ്യുക" + +#: ../setup/setup.ui.h:38 +msgid "Remove the selected input method from the enabled input methods" +msgstr "സജ്ജമാക്കിയ ഇന്‍പുട്ട് മെഥേഡുകളില്‍ നിന്നും തെരഞ്ഞെടുത്ത ഇന്‍പുട്ട് മെഥേഡ് നീക്കം ചെയ്യുക" + +#: ../setup/setup.ui.h:39 +msgid "_Up" +msgstr "_മുകളിലേക്ക്" + +#: ../setup/setup.ui.h:40 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "സജ്ജമാക്കിയ ഇന്‍പുട്ട് മെഥേഡുകളില്‍ നിന്നും തെരഞ്ഞെടുത്ത ഇന്‍പുട്ട് മെഥേഡ് മുകളിലേക്ക് നീക്കുക" + +#: ../setup/setup.ui.h:41 +msgid "_Down" +msgstr "_താഴോട്ട്" + +#: ../setup/setup.ui.h:42 +msgid "Move down the selected input method in the enabled input methods" +msgstr "സജ്ജമാക്കിയ ഇന്‍പുട്ട് മെഥേഡുകളില്‍ നിന്നും തെരഞ്ഞെടുത്ത ഇന്‍പുട്ട് മെഥേഡ് താഴേക്ക് നീക്കുക" + +#: ../setup/setup.ui.h:43 +msgid "_About" +msgstr "_അണിയറ വിശേഷങ്ങള്‍" + +#: ../setup/setup.ui.h:44 +msgid "Show information of the selected input method" +msgstr "തെരഞ്ഞെടുത്ത ഇന്‍പുട്ട് മെഥേഡിനെപ്പറ്റിയുള്ള വിവരങ്ങള്‍ കാണിക്കുക" -#: ../ui/gtk/main.py:55 +#: ../setup/setup.ui.h:45 +msgid "_Preferences" +msgstr "_മുന്‍ഗണനകള്‍ " + +#: ../setup/setup.ui.h:46 +msgid "Show setup of the selected input method" +msgstr "തെരഞ്ഞെടുത്ത ഇന്‍പുട്ട് രീതിയുടെ സജ്ജീകരണം കാണിയ്ക്കുക" + +#: ../setup/setup.ui.h:47 msgid "" -"Some input methods have been installed, removed or updated. Please restart " -"ibus input platform." +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." msgstr "" -"ചില ഇന്‍പുട്ട് മെഥേഡുകള്‍ക്കു് ചില മാറ്റങ്ങള്‍ വരുത്തിയിട്ടുണ്ടു്. ദയവായി ibus ഇന്‍പുട്ട് പ്ലാറ്റ്ഫോം " -"വീണ്ടും ആരംഭിക്കുക." -#: ../ui/gtk/main.py:59 -msgid "Restart Now" -msgstr "വീണ്ടും ഉടന്‍ ആരംഭിക്കുക" +#. create im name & icon column +#: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 +msgid "Input Method" +msgstr "ഇന്‍പുട്ട് മെഥേഡ്" -#: ../ui/gtk/main.py:60 -msgid "Later" -msgstr "പിന്നീടു്" +#: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:42 +msgid "Use system keyboard layout" +msgstr "സിസ്റ്റം കീബോര്‍ഡ് മാതൃക ഉപയോഗിക്കുക" -#: ../ui/gtk/panel.py:109 -msgid "IBus input method framework" -msgstr "IBus ഇന്‍പുട്ട് മെഥേഡ് ആകൃതി" +#: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:43 +msgid "Use system keyboard (XKB) layout" +msgstr "സിസ്റ്റം കീബോര്‍ഡ് (XKB) മാതൃക ഉപയോഗിക്കുക" -#: ../ui/gtk/panel.py:327 -msgid "Restart" -msgstr "വീണ്ടും ആരംഭിക്കുക" +#: ../setup/setup.ui.h:51 +msgid "Keyboard Layout" +msgstr "കീബോര്‍ഡ് മാതൃക" -#: ../ui/gtk/panel.py:414 -msgid "Turn off input method" -msgstr "ഇന്‍പുട്ട് മെഥേഡ് ഓഫ് ചെയ്യുക" +#: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:51 +msgid "Share the same input method among all applications" +msgstr "എല്ലാ പ്രയോഗങ്ങളിലും ഒരേ ഇന്‍പുട്ട് രീതി ഉപയോഗിക്കുക" -#: ../ui/gtk/panel.py:453 -msgid "No input window" -msgstr "ഇന്‍പുട്ട് ജാലകം ലഭ്യമല്ല" +#: ../setup/setup.ui.h:53 +msgid "Global input method settings" +msgstr "ഗ്ലോബല്‍ ഇന്‍പുട്ട് മെഥേഡ് ഉപയോഗിക്കുക" -#: ../ui/gtk/panel.py:484 -msgid "IBus is an intelligent input bus for Linux/Unix." -msgstr "ലിനക്സ്/യുണിക്സിനുള്ള ഇന്റലിജന്റ് ഇന്‍പുട്ട് ബസാണു് IBus." +#: ../setup/setup.ui.h:54 +msgid "Advanced" +msgstr "മെച്ചപ്പെട്ടവ" -#: ../ui/gtk/panel.py:488 -msgid "translator-credits" -msgstr "അനി പീറ്റര്‍ " +#: ../setup/setup.ui.h:55 +msgid "" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" +msgstr "IBus\nഇന്റലി‍ജന്റ് ഇന്‍പുട്ട് ബസ്\nപ്രധാന താള്‍: https://github.com/ibus/ibus/wiki\n\n\n\n" -#: ../ui/gtk/languagebar.py:106 -msgid "About the input method" -msgstr "ഇന്‍പുട്ട് മെഥേഡ് സംബന്ധിച്ചു്" +#: ../setup/setup.ui.h:62 +msgid "Start ibus on login" +msgstr "പ്രവേശിക്കുമ്പോള്‍ തന്നെ ibus ആരംഭിക്കുക" -#: ../ui/gtk/languagebar.py:214 -msgid "Switch input method" -msgstr "ഇന്‍പുട്ട് മെഥേഡ് മാറ്റുക" +#: ../setup/setup.ui.h:63 +msgid "Startup" +msgstr "ആരംഭത്തില്‍" -#: ../ui/gtk/languagebar.py:357 ../ui/gtk/engineabout.py:33 -#: ../setup/engineabout.py:33 ../setup/setup.ui.h:16 +#: ../setup/setup.ui.h:64 ../setup/engineabout.py:35 ../ui/gtk3/panel.vala:932 msgid "About" msgstr "സംബന്ധിച്ചു്" -#: ../ui/gtk/languagebar.py:361 -msgid "About the Input Method" -msgstr "ഇന്‍പുട്ട് മെഥേഡ് സംബന്ധിച്ചു്" +#: ../setup/setup.ui.h:65 ../setup/engineabout.py:38 +msgid "_Close" +msgstr "_അടയ്ക്കുക" -#: ../ui/gtk/engineabout.py:61 ../setup/engineabout.py:61 -#, python-format -msgid "Language: %s\n" -msgstr "ഭാഷ: %s\n" +#. Translators: Here “Preload” is a verb +#: ../data/ibus.schemas.in.h:2 +msgid "Preload engines" +msgstr "സംവിധാനങ്ങള്‍ ലഭ്യമാക്കുക" -#: ../ui/gtk/engineabout.py:63 ../setup/engineabout.py:63 -#, python-format -msgid "Keyboard layout: %s\n" -msgstr "കീബോര്‍ഡ് മാതൃക: %s\n" +#. Translators: Tooltip for the button “Preload Engines” +#: ../data/ibus.schemas.in.h:4 +msgid "Preload engines during ibus starts up" +msgstr "ibus ആരംഭിക്കുമ്പോള്‍ സംവിധാനങ്ങള്‍ ലഭ്യമാക്കുക" -#: ../ui/gtk/engineabout.py:65 ../setup/engineabout.py:65 -#, python-format -msgid "Author: %s\n" -msgstr "രചയിതാവു്: %s\n" +#: ../data/ibus.schemas.in.h:5 +msgid "Engines order" +msgstr "എഞ്ചിന്‍ ക്രമങ്ങള്‍" -#: ../ui/gtk/engineabout.py:67 ../setup/engineabout.py:67 -msgid "Description:\n" -msgstr "വിവരണം:\n" +#: ../data/ibus.schemas.in.h:6 +msgid "Saved engines order in input method list" +msgstr "ഇന്‍പുട്ട് മെഥേഡ് പട്ടികയില്‍ സൂക്ഷിച്ചിട്ടുള്ള എഞ്ചിന്‍ ക്രമങ്ങള്‍" + +#: ../data/ibus.schemas.in.h:7 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "ഐഎംഇ സ്വിച്ചര്‍ ജാലകത്തിനുള്ള പോപ്പപ്പ് താമസം മില്ലിസെക്കന്‍ഡുകളില്‍" -#: ../setup/main.py:102 -msgid "trigger" -msgstr "ട്രിഗ്ഗര്‍ ചെയ്യുക" +#: ../data/ibus.schemas.in.h:8 +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is " +"400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " +"not show the window and switch prev/next engines." +msgstr "ഐഎംഇ സ്വിച്ചര്‍ ജാലകം കാണിയ്ക്കുന്നതിനായി പോപ്പപ്പ് താമസം മില്ലിസെക്കന്‍ഡുകളില്‍ സജ്ജമാക്കുക. സ്വതവേയുള്ളതു് 400. 0 = ജാലകം ഉടന്‍ കാണിയ്ക്കുക. 0 < താമസം മില്ലിസെക്കന്‍ഡുകളില്‍. 0 > ജാലകം കാണിയ്ക്കരുതു്, അടുത്തതു്/മുമ്പുള്ള എഞ്ചിനുകളിലേക്കു് മാറുക." + +#: ../data/ibus.schemas.in.h:9 +msgid "Saved version number" +msgstr "സൂക്ഷിച്ച പതിപ്പു്" -#: ../setup/main.py:113 -msgid "enable" +#: ../data/ibus.schemas.in.h:10 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "മുമ്പു് ഇന്‍സ്റ്റോള്‍ ചെയ്ത ibus-ന്റെ പതിപ്പും നിലവിലുള്ള ibus-ന്റെ പതിപ്പും തമ്മിലുള്ള വ്യത്യാസം പരിശോധിയ്ക്കുന്നതിനായി സൂക്ഷിച്ചിട്ടുള്ള പതിപ്പു് ഉപയോഗിയ്ക്കുന്നു." + +#: ../data/ibus.schemas.in.h:11 +msgid "Latin layouts which have no ASCII" +msgstr "ആസ്കീ ഇല്ലാത്ത ലാറ്റിന്‍ ശൈലികള്‍" + +#: ../data/ibus.schemas.in.h:12 +msgid "US layout is appended to the latin layouts. variant can be omitted." msgstr "" -#: ../setup/main.py:124 -msgid "disable" +#: ../data/ibus.schemas.in.h:13 +msgid "Use xmodmap" +msgstr "xmodmap ഉപയോഗിയ്ക്കൂ" + +#: ../data/ibus.schemas.in.h:14 +msgid "" +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" -#: ../setup/main.py:135 -msgid "next input method" -msgstr "അടുത്ത ഇന്‍പുട്ട് മെഥേഡ്" +#: ../data/ibus.schemas.in.h:15 +msgid "Trigger shortcut keys" +msgstr "എളുപ്പവഴികള്‍ ട്രിഗര്‍ ചെയ്യുക" + +#: ../data/ibus.schemas.in.h:17 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "gtk_accelerator_parse-നു് കുറുക്കുവഴികള്‍ ഉപയോഗിയ്ക്കുക" + +#: ../data/ibus.schemas.in.h:18 +msgid "Enable shortcut keys" +msgstr "കുറുക്കുവഴി കീകള്‍ പ്രവര്‍ത്തന സജ്ജമാക്കുക" + +#: ../data/ibus.schemas.in.h:19 +msgid "The shortcut keys for turning input method on" +msgstr "ഇന്‍പുട്ട രീതി ഓണ്‍ ചെയ്യുന്നതിനുള്ള കുറുക്കുവഴി കീകള്‍" + +#: ../data/ibus.schemas.in.h:20 +msgid "Disable shortcut keys" +msgstr "കുറുക്കുവഴി കീകള്‍ പ്രവര്‍ത്തന രഹിതമാക്കുക" -#: ../setup/main.py:146 -msgid "previous input method" -msgstr "മുമ്പുള്ള ഇന്‍പുട്ട് മെഥേഡ്" +#: ../data/ibus.schemas.in.h:21 +msgid "The shortcut keys for turning input method off" +msgstr "ഇന്‍പുട്ട രീതി ഓഫ് ചെയ്യുന്നതിനുള്ള കുറുക്കുവഴി കീകള്‍" -#: ../setup/main.py:286 -msgid "IBus daemon is not started. Do you want to start it now?" -msgstr "IBus ഡെമണ്‍ ആരംഭിച്ചിട്ടില്ല. നിങ്ങള്‍ക്കിതു് ഉടന്‍ ആരംഭിക്കണമോ?" +#: ../data/ibus.schemas.in.h:22 +msgid "Next engine shortcut keys" +msgstr "അടുത്ത സംവിധാനത്തിനുള്ള എളുപ്പവഴികള്‍" + +#: ../data/ibus.schemas.in.h:23 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "പട്ടികയിലുള്ള അടുത്ത ഇന്‍പുട്ട് മെഥേഡ് സംവിധാനത്തിലേക്ക് മാറ്റുന്നതിനുള്ള എളുപ്പവഴി" -#: ../setup/main.py:301 +#: ../data/ibus.schemas.in.h:24 +msgid "Prev engine shortcut keys" +msgstr "തൊട്ടു് മുമ്പുള്ള സംവിധാനത്തിനുള്ള എളുപ്പവഴികള്‍" + +#: ../data/ibus.schemas.in.h:25 +msgid "The shortcut keys for switching to the previous input method" +msgstr "മുമ്പുള്ള ഇന്‍പുട്ട് മെഥേഡ് സംവിധാനത്തിലേക്ക് മാറുന്നതിനുള്ള എളുപ്പവഴി" + +#: ../data/ibus.schemas.in.h:26 +msgid "Auto hide" +msgstr "സ്വയം അദൃശ്യമാക്കുക" + +#: ../data/ibus.schemas.in.h:27 msgid "" -"IBus has been started! If you can not use IBus, please add below lines in " -"$HOME/.bashrc, and relogin your desktop.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" msgstr "" -"IBus ആരംഭിച്ചു! നിങ്ങള്‍ക്കു് IBus ആരംഭിക്കുവാന്‍ സാധ്യമല്ല എങ്കില്‍, $HOME/.bashrc-ല്‍ താഴെ " -"പറഞ്ഞിരിക്കുന്ന വരികള്‍ ചേര്‍ക്കുക. ശേഷം നിങ്ങളുടെ പണിയിടത്തിലേക്കു് വീണ്ടും പ്രവേശിക്കുക.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" -#: ../setup/main.py:316 -#, python-format -msgid "Select keyboard shortcut for %s" -msgstr "%s-നുള്ള കീബോര്‍ഡ് എളുപ്പവഴി തെരഞ്ഞെടുക്കുക" +#: ../data/ibus.schemas.in.h:28 +msgid "Language panel position" +msgstr "ഭാഷയുടെ പാനല്‍ സ്ഥാനം" -#: ../setup/keyboardshortcut.py:52 -msgid "Keyboard shortcuts" -msgstr "കീബോര്‍ഡ് എളുപ്പവഴികള്‍" +#: ../data/ibus.schemas.in.h:29 +msgid "" +"The position of the language panel. 0 = Top left corner, 1 = Top right " +"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +msgstr "ഭാഷയുടെ പാനലിന്റെ സ്ഥാനം. 0 = മുകളില്‍ ഇടതു് കോണ്‍, 1 = മുകളില്‍ വലതു് കോണ്‍, 2 = താഴെ ഇടതു് കോണ്‍, 3 = താഴെ വലതു് കോണ്‍, 4 = യഥേഷ്ടം" -#: ../setup/keyboardshortcut.py:63 -msgid "Key code:" -msgstr "കീ കോഡ്:" +#: ../data/ibus.schemas.in.h:30 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "" -#: ../setup/keyboardshortcut.py:78 -msgid "Modifiers:" -msgstr "മോഡിഫയറുകള്‍:" +#: ../data/ibus.schemas.in.h:31 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" + +#: ../data/ibus.schemas.in.h:32 +msgid "The milliseconds to show property panel" +msgstr "വിശേഷതകളുടെ പാനല്‍ കാണിയ്ക്കുന്നതിനുള്ള സമയം (മില്ലിസെക്കന്‍ഡ്)" -#: ../setup/keyboardshortcut.py:231 +#: ../data/ibus.schemas.in.h:33 msgid "" -"Please press a key (or a key combination).\n" -"The dialog will be closed when the key is released." +"The milliseconds to show property panel after focus-in or properties are " +"changed." msgstr "" -"ദയവായി ഒരു കീ അമര്‍ത്തുക (അല്ലെങ്കില്‍ ഒരു കീ കൂട്ട്).\n" -"കീ റിലീസ് ചെയ്യുമ്പോള്‍ ഡയലോഗ് അടയ്ക്കുന്നു." -#: ../setup/keyboardshortcut.py:233 -msgid "Please press a key (or a key combination)" -msgstr "ദയവായി ഒരു കീ അമര്‍ത്തുക (അല്ലെങ്കില്‍ ഒരു കീ കൂട്ട്)" +#: ../data/ibus.schemas.in.h:34 +msgid "Orientation of lookup table" +msgstr "ലുക്കപ്പ് പട്ടികയുടെ ക്രമീകരണം" -#: ../setup/enginecombobox.py:120 -msgid "Select an input method" -msgstr "ഒരു ഇന്‍പുട്ട് മെഥേഡ് തെരഞ്ഞെടുക്കുക" +#: ../data/ibus.schemas.in.h:35 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "ലുക്കപ്പ് പട്ടികയുടെ ക്രമീകരണം. 0 = നേരെയുള്ള, 1 = കുറുകയുള്ള" -#. create im name & icon column -#: ../setup/enginetreeview.py:64 ../setup/setup.ui.h:33 -msgid "Input Method" -msgstr "ഇന്‍പുട്ട് മെഥേഡ്" +#: ../data/ibus.schemas.in.h:37 +msgid "Show input method name" +msgstr "ഇന്‍പുട്ട് മെഥേഡിന്റെ പേരു് കാണിക്കുക" -#: ../setup/enginetreeview.py:92 -msgid "Kbd" -msgstr "Kbd" +#: ../data/ibus.schemas.in.h:39 +msgid "RGBA value of XKB icon" +msgstr "XKB പ്രതിരൂപത്തിന്റെ RGBA മൂല്ല്യം" -#: ../setup/ibus-setup.desktop.in.h:1 ../setup/setup.ui.h:32 -msgid "IBus Preferences" -msgstr "IBus മുന്‍ഗണനകള്‍" +#: ../data/ibus.schemas.in.h:41 +#, no-c-format +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " +"'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " +"to 255 or precentage values in the range 0% to 100%, and 'a' is a floating " +"point value in the range 0 to 1 of the alpha." +msgstr "" -#: ../setup/ibus-setup.desktop.in.h:2 -msgid "Set IBus Preferences" -msgstr "IBus മുന്‍ഗണനകള്‍ സജ്ജമാക്കുക" +#: ../data/ibus.schemas.in.h:44 +msgid "Use custom font" +msgstr "സജ്ജമാക്കിയ അക്ഷരസഞ്ചയം ഉപയോഗിക്കുക" -#: ../data/ibus.schemas.in.h:1 -msgid "Auto hide" -msgstr "സ്വയം അദൃശ്യമാക്കുക" +#: ../data/ibus.schemas.in.h:45 +msgid "Use custom font name for language panel" +msgstr "ഭാഷ്ക്കുള്ള പാനലില്‍ നിങ്ങള്‍ സജ്ജമാക്കിയ അക്ഷരസഞ്ചയത്തിന്റെ പേരു് ഉപയോഗിക്കുക" -#: ../data/ibus.schemas.in.h:2 +#: ../data/ibus.schemas.in.h:46 msgid "Custom font" msgstr "അക്ഷരസഞ്ചയം യഥേഷ്ടമാക്കുക:" -#: ../data/ibus.schemas.in.h:3 +#: ../data/ibus.schemas.in.h:47 msgid "Custom font name for language panel" msgstr "ഭാഷയുടെ പാനലിലേക്കുള്ള അക്ഷരസഞ്ചയത്തിനുള്ള പേരു് സജ്ജമാക്കുക" -#: ../data/ibus.schemas.in.h:4 +#: ../data/ibus.schemas.in.h:48 msgid "Embed Preedit Text" msgstr "പ്രീഎഡിറ്റ് ടെക്സ്റ്റ് ചേര്‍ക്കുക" -#: ../data/ibus.schemas.in.h:5 +#: ../data/ibus.schemas.in.h:49 msgid "Embed Preedit Text in Application Window" msgstr "പ്രയോഗത്തിനുള്ള ജാലകത്തില്‍ പ്രീഎഡിറ്റ് ടെക്സ്റ്റ് ചേര്‍ക്കുക" -#: ../data/ibus.schemas.in.h:6 +#: ../data/ibus.schemas.in.h:50 +msgid "Use global input method" +msgstr "ഗ്ലോബല്‍ ഇന്‍പുട്ട് മെഥേഡ് ഉപയോഗിക്കുക" + +#: ../data/ibus.schemas.in.h:52 msgid "Enable input method by default" msgstr "സ്വതവേ ഇന്‍പുട്ട് മെഥേഡ് സജ്ജമാക്കുക" -#: ../data/ibus.schemas.in.h:7 +#: ../data/ibus.schemas.in.h:53 msgid "Enable input method by default when the application gets input focus" msgstr "പ്രയോഗത്തിലേക്കു് ഇന്‍പുട്ട് ചെയ്യുവാന്‍ സാധിയ്ക്കുമ്പോള്‍ സ്വതവേ ഇന്‍പുട്ട് മെഥേഡ് സജ്ജമാക്കുക" -#: ../data/ibus.schemas.in.h:8 -msgid "Language panel position" -msgstr "ഭാഷയുടെ പാനല്‍ സ്ഥാനം" - -#: ../data/ibus.schemas.in.h:9 -msgid "Next engine shortcut keys" -msgstr "അടുത്ത സംവിധാനത്തിനുള്ള എളുപ്പവഴികള്‍" +#: ../data/ibus.schemas.in.h:54 +msgid "DConf preserve name prefixes" +msgstr "എഞ്ചിന്‍ ക്രമങ്ങള്‍" -#: ../data/ibus.schemas.in.h:10 -msgid "Orientation of lookup table" -msgstr "ലുക്കപ്പ് പട്ടികയുടെ ക്രമീകരണം" +#: ../data/ibus.schemas.in.h:55 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "ഇന്‍പുട്ട് മെഥേഡ് പട്ടികയില്‍ സൂക്ഷിച്ചിട്ടുള്ള എഞ്ചിന്‍ ക്രമങ്ങള്‍" -#: ../data/ibus.schemas.in.h:11 -msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" -msgstr "ലുക്കപ്പ് പട്ടികയുടെ ക്രമീകരണം. 0 = നേരെയുള്ള, 1 = കുറുകയുള്ള" +#: ../ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "Copyright (c) 2007-2010 Peng Huang\nCopyright (c) 2007-2010 Red Hat, Inc." -#: ../data/ibus.schemas.in.h:12 -msgid "Preload engines" -msgstr "സംവിധാനങ്ങള്‍ ലഭ്യമാക്കുക" +#: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 +msgid "Other" +msgstr "മറ്റുള്ളവ" -#: ../data/ibus.schemas.in.h:13 -msgid "Preload engines during ibus starts up" -msgstr "ibus ആരംഭിക്കുമ്പോള്‍ സംവിധാനങ്ങള്‍ ലഭ്യമാക്കുക" +#: ../setup/engineabout.py:70 +#, python-format +msgid "Language: %s\n" +msgstr "ഭാഷ: %s\n" -#: ../data/ibus.schemas.in.h:14 -msgid "Prev engine shortcut keys" -msgstr "തൊട്ടു് മുമ്പുള്ള സംവിധാനത്തിനുള്ള എളുപ്പവഴികള്‍" +#: ../setup/engineabout.py:73 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "കീബോര്‍ഡ് മാതൃക: %s\n" -#: ../data/ibus.schemas.in.h:15 ../setup/setup.ui.h:42 -msgid "Share the same input method among all applications" -msgstr "എല്ലാ പ്രയോഗങ്ങളിലും ഒരേ ഇന്‍പുട്ട് രീതി ഉപയോഗിക്കുക" +#: ../setup/engineabout.py:76 +#, python-format +msgid "Author: %s\n" +msgstr "രചയിതാവു്: %s\n" -#: ../data/ibus.schemas.in.h:16 ../setup/setup.ui.h:43 -msgid "Show icon on system tray" -msgstr "സിസ്റ്റം ട്രേയില്‍ ചിഹ്നം കാണിക്കുക" +#: ../setup/engineabout.py:79 +msgid "Description:\n" +msgstr "വിവരണം:\n" -#: ../data/ibus.schemas.in.h:17 -msgid "Show input method name" -msgstr "ഇന്‍പുട്ട് മെഥേഡിന്റെ പേരു് കാണിക്കുക" +#: ../setup/enginecombobox.py:139 ../setup/enginedialog.py:56 +msgid "Select an input method" +msgstr "ഒരു ഇന്‍പുട്ട് മെഥേഡ് തെരഞ്ഞെടുക്കുക" -#: ../data/ibus.schemas.in.h:18 ../setup/setup.ui.h:45 -msgid "Show input method name on language bar" -msgstr "ഭാഷയുടെ പാനലില്‍ ഇന്‍പുട്ട് മെഥേഡിന്റെ പേരു് കാണിക്കുക" +#: ../setup/enginedialog.py:59 ../setup/keyboardshortcut.py:341 +#: ../setup/main.py:413 +msgid "_Cancel" +msgstr "_റദ്ദാക്കുക" -#: ../data/ibus.schemas.in.h:19 -msgid "" -"The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = " -"Always show" -msgstr "" -"ഭാഷയുടെ പാനലിന്റെ രീതി. 0 = മെനുവില്‍ ഉള്‍പ്പെടുത്തുക, 1 = സ്വയം അദൃശ്യമാകുക, 2 = എപ്പോഴും " -"കാണിക്കുക" +#: ../setup/enginedialog.py:203 +msgid "More…" +msgstr "കൂടുതല്‍..." -#: ../data/ibus.schemas.in.h:20 -msgid "" -"The position of the language panel. 0 = Top left corner, 1 = Top right " -"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" -msgstr "" -"ഭാഷയുടെ പാനലിന്റെ സ്ഥാനം. 0 = മുകളില്‍ ഇടതു് കോണ്‍, 1 = മുകളില്‍ വലതു് കോണ്‍, 2 = താഴെ ഇടതു് " -"കോണ്‍, 3 = താഴെ വലതു് കോണ്‍, 4 = യഥേഷ്ടം" +#: ../setup/enginetreeview.py:94 +msgid "Kbd" +msgstr "Kbd" -#: ../data/ibus.schemas.in.h:21 -msgid "The shortcut keys for switching to the next input method in the list" -msgstr "പട്ടികയിലുള്ള അടുത്ത ഇന്‍പുട്ട് മെഥേഡ് സംവിധാനത്തിലേക്ക് മാറ്റുന്നതിനുള്ള എളുപ്പവഴി" +#: ../setup/ibus-setup.desktop.in.h:2 +msgid "Set IBus Preferences" +msgstr "IBus മുന്‍ഗണനകള്‍ സജ്ജമാക്കുക" -#: ../data/ibus.schemas.in.h:22 -msgid "The shortcut keys for switching to the previous input method" -msgstr "മുമ്പുള്ള ഇന്‍പുട്ട് മെഥേഡ് സംവിധാനത്തിലേക്ക് മാറുന്നതിനുള്ള എളുപ്പവഴി" +#: ../setup/keyboardshortcut.py:56 +msgid "Keyboard shortcuts" +msgstr "കീബോര്‍ഡ് എളുപ്പവഴികള്‍" -#: ../data/ibus.schemas.in.h:23 ../setup/setup.ui.h:51 -msgid "The shortcut keys for turning input method on or off" -msgstr "ഇന്‍പുട്ട് മെഥേഡ് ഓണ്‍ അല്ലെങ്കില്‍ ഓഫ് ചെയ്യുന്നതിനുള്ള എളുപ്പവളികള്‍ സജ്ജമാക്കുക" +#: ../setup/keyboardshortcut.py:67 +msgid "Key code:" +msgstr "കീ കോഡ്:" -#: ../data/ibus.schemas.in.h:24 -msgid "Trigger shortcut keys" -msgstr "എളുപ്പവഴികള്‍ ട്രിഗര്‍ ചെയ്യുക" +#: ../setup/keyboardshortcut.py:82 +msgid "Modifiers:" +msgstr "മോഡിഫയറുകള്‍:" -#: ../data/ibus.schemas.in.h:25 -msgid "Use custom font" -msgstr "സജ്ജമാക്കിയ അക്ഷരസഞ്ചയം ഉപയോഗിക്കുക" +#. apply button +#: ../setup/keyboardshortcut.py:134 +msgid "_Apply" +msgstr "_കംപ്യൂട്ടറില്‍ സൂക്ഷിക്കുക" -#: ../data/ibus.schemas.in.h:26 -msgid "Use custom font name for language panel" -msgstr "ഭാഷ്ക്കുള്ള പാനലില്‍ നിങ്ങള്‍ സജ്ജമാക്കിയ അക്ഷരസഞ്ചയത്തിന്റെ പേരു് ഉപയോഗിക്കുക" +#. delete button +#: ../setup/keyboardshortcut.py:140 +msgid "_Delete" +msgstr "_വെട്ടി നീക്കുക" -#: ../data/ibus.schemas.in.h:27 -msgid "Use global input method" -msgstr "ഗ്ലോബല്‍ ഇന്‍പുട്ട് മെഥേഡ് ഉപയോഗിക്കുക" +#: ../setup/keyboardshortcut.py:256 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "ദയവായി ഒരു കീ അമര്‍ത്തുക (അല്ലെങ്കില്‍ ഒരു കീ കൂട്ട്).\nകീ റിലീസ് ചെയ്യുമ്പോള്‍ ഡയലോഗ് അടയ്ക്കുന്നു." -#: ../data/ibus.schemas.in.h:28 ../setup/setup.ui.h:55 -msgid "Use system keyboard (XKB) layout" -msgstr "സിസ്റ്റം കീബോര്‍ഡ് (XKB) മാതൃക ഉപയോഗിക്കുക" +#: ../setup/keyboardshortcut.py:259 +msgid "Please press a key (or a key combination)" +msgstr "ദയവായി ഒരു കീ അമര്‍ത്തുക (അല്ലെങ്കില്‍ ഒരു കീ കൂട്ട്)" -#: ../data/ibus.schemas.in.h:29 ../setup/setup.ui.h:56 -msgid "Use system keyboard layout" -msgstr "സിസ്റ്റം കീബോര്‍ഡ് മാതൃക ഉപയോഗിക്കുക" +#: ../setup/keyboardshortcut.py:342 ../setup/main.py:414 +msgid "_OK" +msgstr "_ശരി" -#: ../setup/setup.ui.h:1 -msgid "..." -msgstr "..." +#: ../setup/main.py:113 ../setup/main.py:438 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "മുമ്പുള്ള ഇന്‍പുട്ട് രീതിയിലേക്കു് പോകുന്നതിനായി shift-നൊപ്പമുള്ള കുറുക്കുവഴി ഉപയോഗിയ്ക്കുക" -#: ../setup/setup.ui.h:2 -msgid "Font and Style" -msgstr "അക്ഷരസഞ്ചയവും രീതിയും" +#: ../setup/main.py:368 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "IBus ഡെമണ്‍ പ്രവര്‍ത്തനത്തിലില്ല, നിങ്ങള്‍ക്കു് ഇതു് ആരംഭിയ്ക്കണമോ?" -#: ../setup/setup.ui.h:3 -msgid "Global input method settings" -msgstr "ഗ്ലോബല്‍ ഇന്‍പുട്ട് മെഥേഡ് ഉപയോഗിക്കുക" +#: ../setup/main.py:389 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "IBus തുടങ്ങി! IBus ഉപയോഗിയ്ക്കുവാന്‍ സാധ്യമല്ലെങ്കില്‍, നിങ്ങളുടെ $HOME/.bashrc;-ലേക്കു് ഈ വരികള്‍ ചേര്‍ത്തു് വീണ്ടും നിങ്ങളുടെ പണിയിടത്തിലേക്കു് വീണ്ടും പ്രവേശിയ്ക്കുക.\n export GTK_IM_MODULE=ibus\n export XMODIFIERS=@im=ibus\n export QT_IM_MODULE=ibus" -#: ../setup/setup.ui.h:4 -msgid "Keyboard Layout" -msgstr "കീബോര്‍ഡ് മാതൃക" +#. Translators: %d == 5 currently +#: ../setup/main.py:403 +#, python-format +msgid "IBus daemon could not be started in %d seconds." +msgstr "IBus ഡെമണ്‍ %d സെക്കന്‍ഡുകളില്‍ ആരംഭിയ്ക്കുവാന്‍ സാധ്യമല്ല." -#: ../setup/setup.ui.h:5 -msgid "Keyboard Shortcuts" -msgstr "കീബോര്‍ഡ് എളുപ്പവഴികള്‍" +#: ../setup/main.py:415 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "%s-നുള്ള കീബോര്‍ഡ് എളുപ്പവഴി തെരഞ്ഞെടുക്കുക" -#: ../setup/setup.ui.h:6 -msgid "Startup" -msgstr "ആരംഭത്തില്‍" +#. Translators: Title of the window +#: ../setup/main.py:417 +msgid "switching input methods" +msgstr "ഇന്‍പുട്ട് രീതികള്‍ തമ്മില്‍ മാറുക" -#: ../setup/setup.ui.h:7 -msgid "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" -msgstr "" -"IBus\n" -"ഇന്റലി‍ജന്റ് ഇന്‍പുട്ട് ബസ്\n" -"പ്രധാന താള്‍: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" +#: ../tools/main.vala:48 +msgid "List engine name only" +msgstr "എഞ്ചിന്‍ പേരു് മാത്രം ലഭ്യമാക്കുക" -#: ../setup/setup.ui.h:14 -msgid "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." -msgstr "" -"പട്ടികയില്‍ ആദ്യമുള്ളതാണു് സ്വതവേയുള്ള ഇന്‍പുട്ട് മെഥേഡ്.\n" -"ഇതു് മാറ്റുന്നതിനായി മുകളിലേക്കും താഴേക്കും ഉള്ള ബട്ടണ്‍ ഉപയോഗിക്കാം." +#: ../tools/main.vala:64 ../tools/main.vala:185 ../tools/main.vala:195 +msgid "Can't connect to IBus.\n" +msgstr "IBus-ലേക്കു് കണക്ട് ചെയ്യുവാന്‍ സാധ്യമല്ല.\n" -#: ../setup/setup.ui.h:17 -msgid "Add the selected input method into the enabled input methods" -msgstr "സജ്ജമാക്കിയ ഇന്‍പുട്ട് മെഥേഡുകളിലേക്കു് തെരഞ്ഞെടുത്ത ഇന്‍പുട്ട് മെഥേഡ് ചേര്‍ക്കുക" +#: ../tools/main.vala:90 +#, c-format +msgid "language: %s\n" +msgstr "ഭാഷ: %s\n" -#: ../setup/setup.ui.h:18 -msgid "Advanced" -msgstr "മെച്ചപ്പെട്ടവ" +#: ../tools/main.vala:158 +msgid "No engine is set.\n" +msgstr "എഞ്ചിന്‍ സജ്ജമല്ല.\n" -#: ../setup/setup.ui.h:19 -msgid "Always" -msgstr "എപ്പോഴും" +#: ../tools/main.vala:166 +msgid "Set global engine failed.\n" +msgstr "ഗ്ലോബല്‍ എഞ്ചിന്‍ സജ്ജമാക്കുന്നതു് പരാജയപ്പെട്ടു.\n" -#: ../setup/setup.ui.h:20 -msgid "Bottom left corner" -msgstr "താഴെ ഇടതു് കോണ്‍" +#: ../tools/main.vala:171 +msgid "Get global engine failed.\n" +msgstr "ഗ്ലോബല്‍ എഞ്ചിന്‍ ലഭ്യമാക്കുന്നതു് പരാജയപ്പെട്ടു.\n" -#: ../setup/setup.ui.h:21 -msgid "Bottom right corner" -msgstr "താഴെ വലതു് കോണ്‍ " +#: ../tools/main.vala:210 +msgid "Read the system registry cache." +msgstr "സിസ്റ്റം രജിസ്ട്രി കാഷ് ലഭ്യമാക്കുക." -#: ../setup/setup.ui.h:22 -msgid "Candidates orientation:" -msgstr "ലഭ്യമായവയുടെ ക്രമീകരണങ്ങള്‍:" +#: ../tools/main.vala:212 +msgid "Read the registry cache FILE." +msgstr "രജിസ്ട്രി ക്യാഷ് ഫയല്‍ ലഭ്യമാക്കുക." -#: ../setup/setup.ui.h:23 -msgid "Custom" -msgstr "യഥേഷ്ടം:" +#: ../tools/main.vala:230 ../tools/main.vala:235 +msgid "The registry cache is invalid.\n" +msgstr "രജിസ്ട്രി ക്യാഷ് അസാധു.\n" -#: ../setup/setup.ui.h:24 -msgid "Disable:" -msgstr "" +#: ../tools/main.vala:250 +msgid "Write the system registry cache." +msgstr "സിസ്റ്റം രജിസ്ട്രി ക്യാഷിലേക്കു് സൂക്ഷിയ്ക്കുക." -#: ../setup/setup.ui.h:25 -msgid "Embed preedit text in application window" -msgstr "പ്രയോഗത്തിനുള്ള ജാലകത്തില്‍ പ്രീഎഡിറ്റ് ടെക്സ്റ്റ് ചേര്‍ക്കുക" +#: ../tools/main.vala:252 +msgid "Write the registry cache FILE." +msgstr "രജിസ്ട്രി ക്യാഷ് ഫയലിലേക്കു് സൂക്ഷിയ്ക്കുക." -#: ../setup/setup.ui.h:26 -msgid "Embed the preedit text of input method in the application window" -msgstr "പ്രയോഗത്തിനുള്ള ജാലകത്തില്‍ പ്രീഎഡിറ്റ് ടെക്സ്റ്റിനുള്ള ഇന്‍പുട്ട് രീകി ചേര്‍ക്കുക" +#: ../tools/main.vala:304 +msgid "Resetting…" +msgstr "വീണ്ടും സജ്ജമാക്കുന്നു..." -#: ../setup/setup.ui.h:27 -msgid "Embedded in menu" -msgstr "മെനുവില്‍ ഉള്‍പ്പെടുത്തുക" +#: ../tools/main.vala:318 +msgid "Done" +msgstr "പൂര്‍ത്തിയായി" -#: ../setup/setup.ui.h:28 -msgid "Enable or disable:" -msgstr "സജ്ജമാക്കുക അല്ലെങ്കില്‍ നിര്‍ജ്ജീവമാക്കുക:" +#: ../tools/main.vala:337 +msgid "Set or get engine" +msgstr "എഞ്ചിന്‍ സജ്ജമാക്കുക അല്ലെങ്കില്‍ ലഭ്യമാക്കുക" -#: ../setup/setup.ui.h:29 -msgid "Enable:" -msgstr "" +#: ../tools/main.vala:338 +msgid "Exit ibus-daemon" +msgstr "ibus-daemon-ല്‍ നിന്നും പുറത്തു് കടക്കുക" -#: ../setup/setup.ui.h:30 -msgid "General" -msgstr "സാധാരണ" +#: ../tools/main.vala:339 +msgid "Show available engines" +msgstr "ലഭ്യമായ എഞ്ചിനുകള്‍ കാണിയ്ക്കുക" -#: ../setup/setup.ui.h:31 -msgid "Horizontal" -msgstr "കുറുകെയുള്ള" +#: ../tools/main.vala:340 +msgid "(Not implemented)" +msgstr "(ലഭ്യമാക്കിയിട്ടില്ല)" -#: ../setup/setup.ui.h:34 -msgid "Language panel position:" -msgstr "ഭാഷയുടെ പാനല്‍ സ്ഥാനം:" +#: ../tools/main.vala:341 +msgid "Restart ibus-daemon" +msgstr "ibus-daemon വീണ്ടും ആരംഭിയ്ക്കുക" -#: ../setup/setup.ui.h:35 -msgid "Move down the selected input method in the enabled input methods" -msgstr "സജ്ജമാക്കിയ ഇന്‍പുട്ട് മെഥേഡുകളില്‍ നിന്നും തെരഞ്ഞെടുത്ത ഇന്‍പുട്ട് മെഥേഡ് താഴേക്ക് നീക്കുക" +#: ../tools/main.vala:342 +msgid "Show version" +msgstr "പതിപ്പു് കാണിയ്ക്കുക" -#: ../setup/setup.ui.h:36 -msgid "Move up the selected input method in the enabled input methods list" -msgstr "സജ്ജമാക്കിയ ഇന്‍പുട്ട് മെഥേഡുകളില്‍ നിന്നും തെരഞ്ഞെടുത്ത ഇന്‍പുട്ട് മെഥേഡ് മുകളിലേക്ക് നീക്കുക" +#: ../tools/main.vala:343 +msgid "Show the content of registry cache" +msgstr "രജിസ്ട്രി ക്യാഷിന്റെ ഉള്ളടക്കം കാണിയ്ക്കുക" -#: ../setup/setup.ui.h:37 -msgid "Next input method:" -msgstr "അടുത്ത ഇന്‍പുട്ട് മെഥേഡ്:" +#: ../tools/main.vala:344 +msgid "Create registry cache" +msgstr "രജിസ്ട്രി ക്യാഷ് തയ്യാറാക്കുക" -#: ../setup/setup.ui.h:38 -msgid "Previous input method:" -msgstr "മുമ്പുള്ള ഇന്‍പുട്ട് മെഥേഡ്:" +#: ../tools/main.vala:345 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "ibus-daemon-ന്റെ ഡി-ബസ് വിലാസം പ്രിന്റ് ചെയ്യുക" -#: ../setup/setup.ui.h:39 -msgid "Remove the selected input method from the enabled input methods" -msgstr "സജ്ജമാക്കിയ ഇന്‍പുട്ട് മെഥേഡുകളില്‍ നിന്നും തെരഞ്ഞെടുത്ത ഇന്‍പുട്ട് മെഥേഡ് നീക്കം ചെയ്യുക" +#: ../tools/main.vala:346 +msgid "Show the configuration values" +msgstr "ക്രമീകരണ മൂല്ല്യങ്ങള്‍ കാണിയ്ക്കുക" -#: ../setup/setup.ui.h:40 -msgid "Set the behavior of ibus how to show or hide language bar" -msgstr "ibus ഭാഷയുടെ പാനല്‍ കാണിക്കണമോ വേണ്ടയോ എന്നതു് സജ്ജമാക്കുക" +#: ../tools/main.vala:347 +msgid "Reset the configuration values" +msgstr "ക്രമീകരണ മൂല്ല്യങ്ങള്‍ വീണ്ടും സജ്ജമാക്കുക" -#: ../setup/setup.ui.h:41 -msgid "Set the orientation of candidates in lookup table" -msgstr "ലുക്കപ്പ് പട്ടികയില്‍ ലഭ്യമായവയുടെ ക്രമീകരണം സജ്ജമാക്കുക" +#: ../tools/main.vala:348 +msgid "Show this information" +msgstr "ഈ വിവരം കാണിയ്ക്കുക" -#: ../setup/setup.ui.h:44 -msgid "Show information of the selected input method" -msgstr "തെരഞ്ഞെടുത്ത ഇന്‍പുട്ട് മെഥേഡിനെപ്പറ്റിയുള്ള വിവരങ്ങള്‍ കാണിക്കുക" +#: ../tools/main.vala:354 +#, c-format +msgid "" +"Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "ഉപയോഗിയ്ക്കേണ്ട വിധം: %s COMMAND [OPTION...]\n\n" -#: ../setup/setup.ui.h:46 -msgid "Show input method's name on language bar when check the checkbox" -msgstr "ചെക്ക്ബോക്സ് ചെക്ക് ചെയ്യുമ്പോള്‍ ഭാഷയുടെ പാനലില്‍ ഇന്‍പുട്ട് മെഥേഡിന്റെ പേരു് കാണിക്കുക" +#: ../tools/main.vala:355 +msgid "Commands:\n" +msgstr "കമാന്‍ഡുകള്‍:\n" -#: ../setup/setup.ui.h:47 -msgid "Show language panel:" -msgstr "ഭാഷയുടെ പാനല്‍ കാണിക്കുക:" +#: ../tools/main.vala:384 +#, c-format +msgid "%s is unknown command!\n" +msgstr "%s ഒരു അപചിരിത കമാന്‍ഡാകുന്നു!\n" -#: ../setup/setup.ui.h:48 -msgid "Start ibus on login" -msgstr "പ്രവേശിക്കുമ്പോള്‍ തന്നെ ibus ആരംഭിക്കുക" +#: ../ui/gtk3/panel.vala:611 +msgid "IBus Update" +msgstr "IBus പരിഷ്കരണം" -#: ../setup/setup.ui.h:49 -msgid "The shortcut keys for switching to next input method in the list" -msgstr "" -"അടുത്ത ഇന്‍പുട്ട് മെഥേഡ് സംവിധാനത്തിലേക്ക് മാറ്റുന്നതിനായി അടുത്ത സംവിധാനത്തിനുള്ള എളുപ്പവഴി" +#: ../ui/gtk3/panel.vala:612 ../ui/gtk3/panel.vala:623 +msgid "Super+space is now the default hotkey." +msgstr "ഇപ്പോള്‍ സ്വതവേയുള്ള എളുപ്പവഴി Super+space ആകുന്നു." -#: ../setup/setup.ui.h:50 -msgid "The shortcut keys for switching to previous input method in the list" -msgstr "" -"മുമ്പുള്ള ഇന്‍പുട്ട് മെഥേഡ് സംവിധാനത്തിലേക്ക് മാറ്റുന്നതിനായി തൊട്ടു് മുമ്പുള്ള സംവിധാനത്തിനുള്ള " -"എളുപ്പവഴി" +#: ../ui/gtk3/panel.vala:903 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "ലിനക്സ്/യുണിക്സിനുള്ള ഇന്റലിജന്റ് ഇന്‍പുട്ട് ബസാണു് IBus." -#: ../setup/setup.ui.h:52 -msgid "Top left corner" -msgstr "മുകളില്‍ ഇടതു് കോണ്‍ " +#: ../ui/gtk3/panel.vala:907 +msgid "translator-credits" +msgstr "അനി പീറ്റര്‍ " -#: ../setup/setup.ui.h:53 -msgid "Top right corner" -msgstr "മുകളില്‍ വലതു് കോണ്‍ " +#: ../ui/gtk3/panel.vala:928 +msgid "Preferences" +msgstr "മുന്‍ഗണനകള്‍ " -#: ../setup/setup.ui.h:54 -msgid "Use custom font:" -msgstr "സജ്ജമാക്കിയ അക്ഷരസഞ്ചയം ഉപയോഗിക്കുക:" +#: ../ui/gtk3/panel.vala:938 +msgid "Restart" +msgstr "വീണ്ടും ആരംഭിക്കുക" -#: ../setup/setup.ui.h:57 -msgid "Vertical" -msgstr "നേരെയുള്ള" +#: ../ui/gtk3/panel.vala:942 +msgid "Quit" +msgstr "പുറത്ത് കടക്കുക" -#: ../setup/setup.ui.h:58 -msgid "When active" -msgstr "സജീവമാകുമ്പോള്‍" +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ../ui/gtk3/propertypanel.vala:371 +msgid "default:LTR" +msgstr "default:LTR" diff --git a/po/mn.po b/po/mn.po new file mode 100644 index 000000000..7acdd0521 --- /dev/null +++ b/po/mn.po @@ -0,0 +1,764 @@ +# Mongolian translation of ibus. +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2016 Takao Fujiwara +# This file is distributed under the same license as the ibus package. +# +# Translators: +# bayanmunkh , 2016. #zanata +msgid "" +msgstr "" +"Project-Id-Version: IBus\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2015-07-13 19:48+0900\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2016-01-29 12:31-0500\n" +"Last-Translator: bayanmunkh \n" +"Language-Team: Mongolian\n" +"Language: mn\n" +"X-Generator: Zanata 3.9.3\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ../setup/setup.ui.h:1 +msgid "Horizontal" +msgstr "Хэвтээ" + +#: ../setup/setup.ui.h:2 +msgid "Vertical" +msgstr "Босоо" + +#: ../setup/setup.ui.h:3 +msgid "Top left corner" +msgstr "Зүүн дээд булан" + +#: ../setup/setup.ui.h:4 +msgid "Top right corner" +msgstr "Баруун дээд булан" + +#: ../setup/setup.ui.h:5 +msgid "Bottom left corner" +msgstr "Зүүн доод булан" + +#: ../setup/setup.ui.h:6 +msgid "Bottom right corner" +msgstr "Баруун доод булан" + +#: ../setup/setup.ui.h:7 +msgid "Custom" +msgstr "Өөрчлөх" + +#: ../setup/setup.ui.h:8 +msgid "Do not show" +msgstr "Битгий харуул" + +#: ../setup/setup.ui.h:9 +msgid "Hide automatically" +msgstr "Автоматаар нуух" + +#: ../setup/setup.ui.h:10 +msgid "Always" +msgstr "Үргэлж" + +#: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 +msgid "IBus Preferences" +msgstr "ibus тохиргоо" + +#: ../setup/setup.ui.h:12 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "" +"Жагсаалтад байгаа оролтын дараагийн арга руу шилжих товчлол түлхүүрүүд" + +#: ../setup/setup.ui.h:13 +msgid "Next input method:" +msgstr "Дараагийн оролтын арга:" + +#: ../setup/setup.ui.h:14 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "Жагсаалтад байгаа оролтын өмнөх арга руу шилжих товчлол түлхүүрүүд" + +#: ../setup/setup.ui.h:15 +msgid "Previous input method:" +msgstr "Өмнөх оролтын арга" + +#: ../setup/setup.ui.h:16 +msgid "..." +msgstr "..." + +#: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:16 +msgid "The shortcut keys for turning input method on or off" +msgstr "Оролтын аргыг унтрааж асаах товчлол түлхүүрүүд" + +#: ../setup/setup.ui.h:18 +msgid "Enable or disable:" +msgstr "Нээх эсвэл Хаах" + +#: ../setup/setup.ui.h:19 +msgid "Enable:" +msgstr "Нээх" + +#: ../setup/setup.ui.h:20 +msgid "Disable:" +msgstr "Хаах" + +#: ../setup/setup.ui.h:21 +msgid "Keyboard Shortcuts" +msgstr "Гарын товчлолууд" + +#: ../setup/setup.ui.h:22 +msgid "Set the orientation of candidates in lookup table" +msgstr "Харах хүснэгтэд байгаа нэмэлтүүдийн эргүүлэлтийг тохируулах" + +#: ../setup/setup.ui.h:23 +msgid "Candidates orientation:" +msgstr "Нэмэлтүүдийг эргүүлэлт:" + +#: ../setup/setup.ui.h:24 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "Хэлний цэсийг нуух болон харуулах эсэхийг тохируулах" + +#: ../setup/setup.ui.h:25 +msgid "Show property panel:" +msgstr "Шинжүүдийн самбарыг харах:" + +#: ../setup/setup.ui.h:26 +msgid "Language panel position:" +msgstr "Хэлний самбарын байрлал:" + +#: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:36 +msgid "Show icon on system tray" +msgstr "Системийн хавтан дахь харах тэмдэг" + +#: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:38 +msgid "Show input method name on language bar" +msgstr "Хэлний бар дахь оролтын аргын нэрийг харах" + +#: ../setup/setup.ui.h:29 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "" + +#: ../setup/setup.ui.h:30 +msgid "Embed preedit text in application window" +msgstr "" + +#: ../setup/setup.ui.h:31 +msgid "Embed the preedit text of input method in the application window" +msgstr "" + +#: ../setup/setup.ui.h:32 +msgid "Use custom font:" +msgstr "Фонтоо сонгох:" + +#: ../setup/setup.ui.h:33 +msgid "Font and Style" +msgstr "" + +#: ../setup/setup.ui.h:34 +msgid "General" +msgstr "Ерөнхий" + +#. add button +#: ../setup/setup.ui.h:35 ../setup/enginedialog.py:61 +#: ../setup/keyboardshortcut.py:124 +msgid "_Add" +msgstr "_Нэмэх" + +#: ../setup/setup.ui.h:36 +msgid "Add the selected input method into the enabled input methods" +msgstr "" + +#: ../setup/setup.ui.h:37 +msgid "_Remove" +msgstr "_Арилгах" + +#: ../setup/setup.ui.h:38 +msgid "Remove the selected input method from the enabled input methods" +msgstr "" + +#: ../setup/setup.ui.h:39 +msgid "_Up" +msgstr "" + +#: ../setup/setup.ui.h:40 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "" + +#: ../setup/setup.ui.h:41 +msgid "_Down" +msgstr "" + +#: ../setup/setup.ui.h:42 +msgid "Move down the selected input method in the enabled input methods" +msgstr "" + +#: ../setup/setup.ui.h:43 +msgid "_About" +msgstr "" + +#: ../setup/setup.ui.h:44 +msgid "Show information of the selected input method" +msgstr "" + +#: ../setup/setup.ui.h:45 +msgid "_Preferences" +msgstr "" + +#: ../setup/setup.ui.h:46 +msgid "Show setup of the selected input method" +msgstr "" + +#: ../setup/setup.ui.h:47 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" + +#. create im name & icon column +#: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:68 +msgid "Input Method" +msgstr "" + +#: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:44 +msgid "Use system keyboard layout" +msgstr "" + +#: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:45 +msgid "Use system keyboard (XKB) layout" +msgstr "" + +#: ../setup/setup.ui.h:51 +msgid "Keyboard Layout" +msgstr "" + +#: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:53 +msgid "Share the same input method among all applications" +msgstr "" + +#: ../setup/setup.ui.h:53 +msgid "Global input method settings" +msgstr "" + +#: ../setup/setup.ui.h:54 +msgid "Advanced" +msgstr "" + +#: ../setup/setup.ui.h:55 +msgid "" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" +msgstr "" + +#: ../setup/setup.ui.h:62 +msgid "Start ibus on login" +msgstr "" + +#: ../setup/setup.ui.h:63 +msgid "Startup" +msgstr "" + +#: ../setup/setup.ui.h:64 ../setup/engineabout.py:37 +#: ../ui/gtk3/panel.vala:1113 +msgid "About" +msgstr "" + +#: ../setup/setup.ui.h:65 ../setup/engineabout.py:40 +msgid "_Close" +msgstr "" + +#. Translators: Here “Preload” is a verb +#: ../data/ibus.schemas.in.h:2 +msgid "Preload engines" +msgstr "" + +#. Translators: Tooltip for the button “Preload Engines” +#: ../data/ibus.schemas.in.h:4 +msgid "Preload engines during ibus starts up" +msgstr "" + +#: ../data/ibus.schemas.in.h:5 +msgid "Engines order" +msgstr "" + +#: ../data/ibus.schemas.in.h:6 +msgid "Saved engines order in input method list" +msgstr "" + +#: ../data/ibus.schemas.in.h:7 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "" + +#: ../data/ibus.schemas.in.h:8 +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is 400." +" 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " +"show the window and switch prev/next engines." +msgstr "" + +#: ../data/ibus.schemas.in.h:9 +msgid "Saved version number" +msgstr "" + +#: ../data/ibus.schemas.in.h:10 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" + +#: ../data/ibus.schemas.in.h:11 +msgid "Latin layouts which have no ASCII" +msgstr "" + +#: ../data/ibus.schemas.in.h:12 +msgid "US layout is appended to the latin layouts. variant can be omitted." +msgstr "" + +#: ../data/ibus.schemas.in.h:13 +msgid "Use xmodmap" +msgstr "" + +#: ../data/ibus.schemas.in.h:14 +msgid "" +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." +msgstr "" + +#: ../data/ibus.schemas.in.h:15 +msgid "Trigger shortcut keys" +msgstr "" + +#: ../data/ibus.schemas.in.h:17 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "" + +#: ../data/ibus.schemas.in.h:18 +msgid "Enable shortcut keys" +msgstr "" + +#: ../data/ibus.schemas.in.h:19 +msgid "The shortcut keys for turning input method on" +msgstr "" + +#: ../data/ibus.schemas.in.h:20 +msgid "Disable shortcut keys" +msgstr "" + +#: ../data/ibus.schemas.in.h:21 +msgid "The shortcut keys for turning input method off" +msgstr "" + +#: ../data/ibus.schemas.in.h:22 +msgid "Next engine shortcut keys" +msgstr "" + +#: ../data/ibus.schemas.in.h:23 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "" + +#: ../data/ibus.schemas.in.h:24 +msgid "Prev engine shortcut keys" +msgstr "" + +#: ../data/ibus.schemas.in.h:25 +msgid "The shortcut keys for switching to the previous input method" +msgstr "" + +#: ../data/ibus.schemas.in.h:26 +msgid "Auto hide" +msgstr "" + +#: ../data/ibus.schemas.in.h:27 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "" + +#: ../data/ibus.schemas.in.h:28 +msgid "Language panel position" +msgstr "" + +#: ../data/ibus.schemas.in.h:29 +msgid "" +"The position of the language panel. 0 = Top left corner, 1 = Top right " +"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +msgstr "" + +#: ../data/ibus.schemas.in.h:30 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "" + +#: ../data/ibus.schemas.in.h:31 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" + +#: ../data/ibus.schemas.in.h:32 +msgid "The milliseconds to show property panel" +msgstr "" + +#: ../data/ibus.schemas.in.h:33 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" + +#: ../data/ibus.schemas.in.h:34 +msgid "Orientation of lookup table" +msgstr "" + +#: ../data/ibus.schemas.in.h:35 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "" + +#: ../data/ibus.schemas.in.h:37 +msgid "Show input method name" +msgstr "" + +#: ../data/ibus.schemas.in.h:39 +msgid "RGBA value of XKB icon" +msgstr "" + +#: ../data/ibus.schemas.in.h:41 +#, no-c-format +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " +"'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " +"to 255 or precentage values in the range 0% to 100%, and 'a' is a floating " +"point value in the range 0 to 1 of the alpha." +msgstr "" + +#: ../data/ibus.schemas.in.h:42 +msgid "The milliseconds to show the panel icon for a property" +msgstr "" + +#: ../data/ibus.schemas.in.h:43 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" + +#: ../data/ibus.schemas.in.h:46 +msgid "Use custom font" +msgstr "" + +#: ../data/ibus.schemas.in.h:47 +msgid "Use custom font name for language panel" +msgstr "" + +#: ../data/ibus.schemas.in.h:48 +msgid "Custom font" +msgstr "" + +#: ../data/ibus.schemas.in.h:49 +msgid "Custom font name for language panel" +msgstr "" + +#: ../data/ibus.schemas.in.h:50 +msgid "Embed Preedit Text" +msgstr "" + +#: ../data/ibus.schemas.in.h:51 +msgid "Embed Preedit Text in Application Window" +msgstr "" + +#: ../data/ibus.schemas.in.h:52 +msgid "Use global input method" +msgstr "" + +#: ../data/ibus.schemas.in.h:54 +msgid "Enable input method by default" +msgstr "" + +#: ../data/ibus.schemas.in.h:55 +msgid "Enable input method by default when the application gets input focus" +msgstr "" + +#: ../data/ibus.schemas.in.h:56 +msgid "DConf preserve name prefixes" +msgstr "" + +#: ../data/ibus.schemas.in.h:57 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "" + +#: ../ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "" + +#: ../ibus/lang.py:41 ../src/ibusutil.c:158 +msgid "Other" +msgstr "" + +#: ../setup/engineabout.py:72 +#, python-format +msgid "Language: %s\n" +msgstr "" + +#: ../setup/engineabout.py:75 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "" + +#: ../setup/engineabout.py:78 +#, python-format +msgid "Author: %s\n" +msgstr "" + +#: ../setup/engineabout.py:81 +msgid "Description:\n" +msgstr "" + +#: ../setup/enginecombobox.py:139 ../setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "" + +#: ../setup/enginedialog.py:60 ../setup/keyboardshortcut.py:339 +#: ../setup/main.py:414 +msgid "_Cancel" +msgstr "" + +#: ../setup/enginedialog.py:205 +msgid "More…" +msgstr "" + +#: ../setup/enginetreeview.py:96 +msgid "Kbd" +msgstr "" + +#: ../setup/ibus-setup.desktop.in.h:2 +msgid "Set IBus Preferences" +msgstr "" + +#: ../setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "" + +#: ../setup/keyboardshortcut.py:67 +msgid "Key code:" +msgstr "" + +#: ../setup/keyboardshortcut.py:82 +msgid "Modifiers:" +msgstr "" + +#. apply button +#: ../setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "" + +#. delete button +#: ../setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "" + +#: ../setup/keyboardshortcut.py:252 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "" + +#: ../setup/keyboardshortcut.py:255 +msgid "Please press a key (or a key combination)" +msgstr "" + +#: ../setup/keyboardshortcut.py:340 ../setup/main.py:415 +msgid "_OK" +msgstr "" + +#: ../setup/main.py:114 ../setup/main.py:439 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "" + +#: ../setup/main.py:369 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "" + +#: ../setup/main.py:390 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "" + +#. Translators: %d == 5 currently +#: ../setup/main.py:404 +#, python-format +msgid "IBus daemon could not be started in %d seconds" +msgstr "" + +#: ../setup/main.py:416 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "" + +#. Translators: Title of the window +#: ../setup/main.py:418 +msgid "switching input methods" +msgstr "" + +#: ../tools/main.vala:48 +msgid "List engine name only" +msgstr "" + +#: ../tools/main.vala:64 ../tools/main.vala:185 ../tools/main.vala:195 +msgid "Can't connect to IBus.\n" +msgstr "" + +#: ../tools/main.vala:90 +#, c-format +msgid "language: %s\n" +msgstr "" + +#: ../tools/main.vala:158 +msgid "No engine is set.\n" +msgstr "" + +#: ../tools/main.vala:166 +msgid "Set global engine failed.\n" +msgstr "" + +#: ../tools/main.vala:171 +msgid "Get global engine failed.\n" +msgstr "" + +#: ../tools/main.vala:210 +msgid "Read the system registry cache." +msgstr "" + +#: ../tools/main.vala:212 +msgid "Read the registry cache FILE." +msgstr "" + +#: ../tools/main.vala:230 ../tools/main.vala:235 +msgid "The registry cache is invalid.\n" +msgstr "" + +#: ../tools/main.vala:250 +msgid "Write the system registry cache." +msgstr "" + +#: ../tools/main.vala:252 +msgid "Write the registry cache FILE." +msgstr "" + +#: ../tools/main.vala:304 +msgid "Resetting…" +msgstr "" + +#: ../tools/main.vala:318 +msgid "Done" +msgstr "" + +#: ../tools/main.vala:337 +msgid "Set or get engine" +msgstr "" + +#: ../tools/main.vala:338 +msgid "Exit ibus-daemon" +msgstr "" + +#: ../tools/main.vala:339 +msgid "Show available engines" +msgstr "" + +#: ../tools/main.vala:340 +msgid "(Not implemented)" +msgstr "" + +#: ../tools/main.vala:341 +msgid "Restart ibus-daemon" +msgstr "" + +#: ../tools/main.vala:342 +msgid "Show version" +msgstr "" + +#: ../tools/main.vala:343 +msgid "Show the content of registry cache" +msgstr "" + +#: ../tools/main.vala:344 +msgid "Create registry cache" +msgstr "" + +#: ../tools/main.vala:345 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "" + +#: ../tools/main.vala:346 +msgid "Show the configuration values" +msgstr "" + +#: ../tools/main.vala:347 +msgid "Reset the configuration values" +msgstr "" + +#: ../tools/main.vala:348 +msgid "Show this information" +msgstr "" + +#: ../tools/main.vala:354 +#, c-format +msgid "Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "" + +#: ../tools/main.vala:355 +msgid "Commands:\n" +msgstr "" + +#: ../tools/main.vala:384 +#, c-format +msgid "%s is unknown command!\n" +msgstr "" + +#: ../ui/gtk3/panel.vala:235 ../ui/gtk3/panel.vala:266 +msgid "IBus Panel" +msgstr "" + +#: ../ui/gtk3/panel.vala:731 +msgid "IBus Update" +msgstr "" + +#: ../ui/gtk3/panel.vala:732 ../ui/gtk3/panel.vala:743 +msgid "Super+space is now the default hotkey." +msgstr "" + +#: ../ui/gtk3/panel.vala:1086 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "" + +#: ../ui/gtk3/panel.vala:1090 +msgid "translator-credits" +msgstr "" + +#: ../ui/gtk3/panel.vala:1109 +msgid "Preferences" +msgstr "" + +#: ../ui/gtk3/panel.vala:1119 +msgid "Restart" +msgstr "" + +#: ../ui/gtk3/panel.vala:1123 +msgid "Quit" +msgstr "" + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ../ui/gtk3/propertypanel.vala:400 ../ui/gtk3/propertypanel.vala:408 +msgid "default:LTR" +msgstr "" diff --git a/po/mr.po b/po/mr.po index 78ebc147f..43bcd1fae 100644 --- a/po/mr.po +++ b/po/mr.po @@ -1,542 +1,3055 @@ -# translation of mr.po to Marathi # Marathi translation of ibus. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2018 Takao Fujiwara # This file is distributed under the same license as the ibus package. # -# Sandeep Shedmake , 2010-2011. +# Translators: +# Sandeep Shedmake , 2009 +# sandeeps , 2009,2012 +# sandeeps , 2009,2011-2013 +# sandeeps , 2014 +# fujiwara , 2015. #zanata +# fujiwara , 2018. #zanata msgid "" msgstr "" -"Project-Id-Version: mr\n" -"Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/list\n" -"POT-Creation-Date: 2011-03-08 12:32+0900\n" -"PO-Revision-Date: 2011-03-22 15:23+0000\n" -"Last-Translator: Sandeep Shedmake \n" -"Language-Team: Marathi \n" -"Language: mr\n" +"Project-Id-Version: IBus\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2018-02-20 17:31+0900\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.11.4\n" +"PO-Revision-Date: 2018-02-20 04:23-0500\n" +"Last-Translator: Copied by Zanata \n" +"Language-Team: Marathi \n" +"Language: mr\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Zanata 3.9.6\n" + +#: ../setup/setup.ui.h:1 +msgid "Horizontal" +msgstr "आडवे" +#: ../setup/setup.ui.h:2 +msgid "Vertical" +msgstr "उभे" -#: ../bus/ibus.desktop.in.h:1 -msgid "IBus" -msgstr "IBus" +#: ../setup/setup.ui.h:3 +msgid "Top left corner" +msgstr "वरील डावा कोपरा" -#: ../bus/ibus.desktop.in.h:2 -msgid "Input Method Framework" -msgstr "इन्पुट पद्धत फ्रेमवर्क" +#: ../setup/setup.ui.h:4 +msgid "Top right corner" +msgstr "वरील उजवा कोपरा" -#: ../bus/ibus.desktop.in.h:3 -msgid "Start IBus Input Method Framework" -msgstr "IBus इन्पुट पद्धती फ्रेमवर्क सुरू करा" +#: ../setup/setup.ui.h:5 +msgid "Bottom left corner" +msgstr "तळापासून डावा कोपरा" -#: ../ibus/_config.py.in:39 -msgid "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." -msgstr "" -"सर्वहक्काधिकार (c) 2007-2010 पेंग हुआंग\n" -"सर्वहक्काधिकार (c) 2007-2010 Red Hat, Inc." +#: ../setup/setup.ui.h:6 +msgid "Bottom right corner" +msgstr "तळापासून उजवा कोपरा" -#: ../ibus/lang.py:41 -msgid "Other" -msgstr "इतर" +#: ../setup/setup.ui.h:7 +msgid "Custom" +msgstr "मनपसंत" -#: ../ui/gtk/candidatepanel.py:264 -msgid "Previous page" -msgstr "पूर्वीचे पान" +#: ../setup/setup.ui.h:8 +msgid "Do not show" +msgstr "पुन्हा दाखवू नका" -#: ../ui/gtk/candidatepanel.py:269 -msgid "Next page" -msgstr "पुढचे पान" +#: ../setup/setup.ui.h:9 +msgid "Hide automatically" +msgstr "स्व छुपे करा" -#: ../ui/gtk/main.py:55 -msgid "" -"Some input methods have been installed, removed or updated. Please restart " -"ibus input platform." -msgstr "" -"काहिक इंपुट पद्धत प्रतिष्ठापीत, काढून टाकले किंवा सुधारीत केले आहे. कृपया " -"ibus इंपुट प्लॅटफॉर्म पुनः सुरू करा." +#: ../setup/setup.ui.h:10 +msgid "Always" +msgstr "नेहमी" -#: ../ui/gtk/main.py:59 -msgid "Restart Now" -msgstr "आत्ता पुनः सुरू करा" +#: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 +msgid "IBus Preferences" +msgstr "IBus आवड निवड" -#: ../ui/gtk/main.py:60 -msgid "Later" -msgstr "पुढे" +#: ../setup/setup.ui.h:12 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "सूचीतील पुढची इंपुट पद्धत नीवडण्याकरीता वापरण्याजोगी शार्टकट किज्" -#: ../ui/gtk/panel.py:109 -msgid "IBus input method framework" -msgstr "IBus इन्पुट पद्धती फ्रेमवर्क" +#: ../setup/setup.ui.h:13 +msgid "Next input method:" +msgstr "पुढची इंपुट पद्धत:" -#: ../ui/gtk/panel.py:327 -msgid "Restart" -msgstr "पुन्हा चालू करा" +#: ../setup/setup.ui.h:14 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "सूचीतील मागील इंपुट पद्धत नीवडण्याकरीता वापरण्याजोगी शार्टकट किज्" -#: ../ui/gtk/panel.py:414 -msgid "Turn off input method" -msgstr "इंपुट पद्धत बंद करा" +#: ../setup/setup.ui.h:15 +msgid "Previous input method:" +msgstr "मागील इंपुट पद्धत:" -#: ../ui/gtk/panel.py:453 -msgid "No input window" -msgstr "इंपुट खिडकी आढळली नाही" +#: ../setup/setup.ui.h:16 +msgid "..." +msgstr "..." -#: ../ui/gtk/panel.py:484 -msgid "IBus is an intelligent input bus for Linux/Unix." -msgstr "Linux/Unix करीता IBus हे एक हुशार इनपुट बस आहे." +#: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:16 +msgid "The shortcut keys for turning input method on or off" +msgstr "इंपुट पद्धत सुरू किंवा बंद करण्यासाठी शार्टकट किज्" -#: ../ui/gtk/panel.py:488 -msgid "translator-credits" -msgstr "" -"संदिप शेडमाके , 2009; संदिप शेडमाके " -", 2009, 2010." +#: ../setup/setup.ui.h:18 +msgid "Enable or disable:" +msgstr "कार्यान्वीत करा किंवा अकार्यान्वीत करा:" -#: ../ui/gtk/languagebar.py:106 -msgid "About the input method" -msgstr "इंपुट पद्धत विषयी" +#: ../setup/setup.ui.h:19 +msgid "Enable:" +msgstr "सुरू करा:" -#: ../ui/gtk/languagebar.py:214 -msgid "Switch input method" -msgstr "इंपुट पद्धत बदला" +#: ../setup/setup.ui.h:20 +msgid "Disable:" +msgstr "बंद करा:" -#: ../ui/gtk/languagebar.py:357 ../ui/gtk/engineabout.py:33 -#: ../setup/engineabout.py:33 ../setup/setup.ui.h:16 -msgid "About" -msgstr "विषयी" +#: ../setup/setup.ui.h:21 +msgid "Keyboard Shortcuts" +msgstr "कळफलक शार्टकट" -#: ../ui/gtk/languagebar.py:361 -msgid "About the Input Method" -msgstr "इंपुट पद्धत विषयी" +#: ../setup/setup.ui.h:22 +msgid "Set the orientation of candidates in lookup table" +msgstr "लुकअप टेबल मधील घटकांचे निर्देशन ठरवा" -#: ../ui/gtk/engineabout.py:61 ../setup/engineabout.py:61 -#, python-format -msgid "Language: %s\n" -msgstr "भाषा: %s\n" +#: ../setup/setup.ui.h:23 +msgid "Candidates orientation:" +msgstr "घटकांचे निर्देशन:" -#: ../ui/gtk/engineabout.py:63 ../setup/engineabout.py:63 -#, python-format -msgid "Keyboard layout: %s\n" -msgstr "कळफलक मांडणी: %s\n" +#: ../setup/setup.ui.h:24 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "भाषा पट्टी कसे दाखवायचे किंवा लपवायचे यासाठी ibus चे वर्तन ठरवा" -#: ../ui/gtk/engineabout.py:65 ../setup/engineabout.py:65 -#, python-format -msgid "Author: %s\n" -msgstr "लेखक: %s\n" +#: ../setup/setup.ui.h:25 +msgid "Show property panel:" +msgstr "गुणधर्म पटल दाखवा:" -#: ../ui/gtk/engineabout.py:67 ../setup/engineabout.py:67 -msgid "Description:\n" -msgstr "वर्णन:\n" +#: ../setup/setup.ui.h:26 +msgid "Language panel position:" +msgstr "भाषा पटलाचे स्थान:" + +#: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:36 +msgid "Show icon on system tray" +msgstr "चिन्ह प्रणाली ट्रेवर दाखवा" + +#: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:38 +msgid "Show input method name on language bar" +msgstr "भाषा पट्टीवरील इंपुट पद्धतीचे नाव दाखवा" + +#: ../setup/setup.ui.h:29 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "चेकबॉक्स नीवडल्यानंतर भाषा पट्टीवरील इंपुट पद्धतीचे नाव दाखवा" + +#: ../setup/setup.ui.h:30 +msgid "Embed preedit text in application window" +msgstr "ऍप्लिकेशन पटलात प्रिएडीट मजूकर एम्बेड करा" + +#: ../setup/setup.ui.h:31 +msgid "Embed the preedit text of input method in the application window" +msgstr "ऍप्लिकेशन पटलात इंपुट पद्धतीचे प्रिएडीट मजकूर एम्बेड करा" + +#: ../setup/setup.ui.h:32 +msgid "Use custom font:" +msgstr "मनपसंत फॉन्टचा वापर करा:" + +#: ../setup/setup.ui.h:33 +msgid "Font and Style" +msgstr "फॉन्ट व शैली" + +#: ../setup/setup.ui.h:34 +msgid "General" +msgstr "सर्वसाधारण" + +#. add button +#: ../setup/setup.ui.h:35 ../setup/enginedialog.py:61 +#: ../setup/keyboardshortcut.py:124 +msgid "_Add" +msgstr "समावेष करा (_A)" -#: ../setup/main.py:102 -msgid "trigger" -msgstr "ट्रिगर" +#: ../setup/setup.ui.h:36 +msgid "Add the selected input method into the enabled input methods" +msgstr "नीवडलेली इंपुट पद्धत कार्यक्षम इंपुट पद्धतींमध्ये समावेश करा" + +#: ../setup/setup.ui.h:37 +msgid "_Remove" +msgstr "काढूण टाका (_R)" + +#: ../setup/setup.ui.h:38 +msgid "Remove the selected input method from the enabled input methods" +msgstr "कार्यक्षम इंपुट पद्धतीपासून नीवडलेली इंपुट पद्धत काढून टाका" + +#: ../setup/setup.ui.h:39 +msgid "_Up" +msgstr "वर (_U)" + +#: ../setup/setup.ui.h:40 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "कार्यक्षम इंपुट पद्धतींमध्ये नीवडलेली इंपुट पद्धत वर सरकवा" + +#: ../setup/setup.ui.h:41 +msgid "_Down" +msgstr "खाली (_D)" -#: ../setup/main.py:113 -msgid "enable" -msgstr "सुरू करा" +#: ../setup/setup.ui.h:42 +msgid "Move down the selected input method in the enabled input methods" +msgstr "कार्यक्षम इंपुट पद्धतींमध्ये नीवडलेली इंपुट पद्धत खाली सरकवा" -#: ../setup/main.py:124 -msgid "disable" -msgstr "बंद करा" +#: ../setup/setup.ui.h:43 +msgid "_About" +msgstr "विषयी(_A)" -#: ../setup/main.py:135 -msgid "next input method" -msgstr "पुढिल इंपुट पद्धत" +#: ../setup/setup.ui.h:44 +msgid "Show information of the selected input method" +msgstr "नीवडलेल्या इंपुट पद्धत विषयी माहिती दाखवा" -#: ../setup/main.py:146 -msgid "previous input method" -msgstr "मागील इंपुट पद्धत" +#: ../setup/setup.ui.h:45 +msgid "_Preferences" +msgstr "आवड निवड (_P)" -#: ../setup/main.py:286 -msgid "IBus daemon is not started. Do you want to start it now?" -msgstr "IBus डिमन सुरू केले गेले नाही. तुम्हाला आता सुरू करायचे?" +#: ../setup/setup.ui.h:46 +msgid "Show setup of the selected input method" +msgstr "नीवडलेल्या इंपुट पद्धतीची मांडणी दाखवा" -#: ../setup/main.py:301 +#: ../setup/setup.ui.h:47 msgid "" -"IBus has been started! If you can not use IBus, please add below lines in $HOME/.bashrc, and relogin your desktop.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." msgstr "" -"IBus सुरू केले गेले आहे! तुम्ही IBus चा वापर करत नसल्यास, कृपया खालिल ओळ $HOME/.bashrc अंतर्गत समावेष करा, व पुन्हा डेस्कटॉपवर पुन्हा प्रवेश करा.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +" कळफलक शॉर्टकट किज दाबून किंवा पटलावरील चिन्ह क्लिक करून वरील " +"सूचीपासून पसंत केलेल्या सक्रीय इंपुट पद्धतीचा वापर शक्य आहे." -#: ../setup/main.py:316 -#, python-format -msgid "Select keyboard shortcut for %s" -msgstr "%s करीता कळफलक शार्टकट नीवडा" +#. create im name & icon column +#: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:68 +msgid "Input Method" +msgstr "इंपुट पद्धत" -#: ../setup/keyboardshortcut.py:52 -msgid "Keyboard shortcuts" -msgstr "कळफलक शार्टकट" +#: ../setup/setup.ui.h:49 +msgid "The shortcut keys for showing emoji dialog" +msgstr "" -#: ../setup/keyboardshortcut.py:63 -msgid "Key code:" -msgstr "कि कोड:" +#: ../setup/setup.ui.h:50 +msgid "Emoji choice:" +msgstr "" -#: ../setup/keyboardshortcut.py:78 -msgid "Modifiers:" -msgstr "मॉडिफायर:" +#: ../setup/setup.ui.h:51 +msgid "Set a font of emoji candidates on the emoji dialog" +msgstr "" + +#: ../setup/setup.ui.h:52 +msgid "Emoji font:" +msgstr "" + +#: ../setup/setup.ui.h:53 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "" + +#: ../setup/setup.ui.h:54 +msgid "Emoji annotation language:" +msgstr "" -#: ../setup/keyboardshortcut.py:231 +#: ../setup/setup.ui.h:55 msgid "" -"Please press a key (or a key combination).\n" -"The dialog will be closed when the key is released." +"Match emoji annotations partially with the following condition and more than " +"the number of characters:" msgstr "" -"कृपया कि (किंवा कि जोडणी) दाबा.\n" -"कि सोडल्यावर संवाद बंद होईल." -#: ../setup/keyboardshortcut.py:233 -msgid "Please press a key (or a key combination)" -msgstr "कृपया कि (किंवा कि जोडणी) दाबा" +#: ../setup/setup.ui.h:56 +msgid "" +"If emoji annotations can be matched with a partial string instead of the " +"exact match" +msgstr "" -#: ../setup/enginecombobox.py:120 -msgid "Select an input method" -msgstr "इंपुट पद्धत नीवडा" +#: ../setup/setup.ui.h:57 +msgid "Prefix match" +msgstr "" -#. create im name & icon column -#: ../setup/enginetreeview.py:64 ../setup/setup.ui.h:33 -msgid "Input Method" -msgstr "इंपुट पद्धत" +#: ../setup/setup.ui.h:58 +msgid "Suffix match" +msgstr "" -#: ../setup/enginetreeview.py:92 -msgid "Kbd" -msgstr "Kbd" +#: ../setup/setup.ui.h:59 +msgid "Containing match" +msgstr "" -#: ../setup/ibus-setup.desktop.in.h:1 ../setup/setup.ui.h:32 -msgid "IBus Preferences" -msgstr "IBus आवड निवड" +#: ../setup/setup.ui.h:60 +msgid "Emoji" +msgstr "" -#: ../setup/ibus-setup.desktop.in.h:2 -msgid "Set IBus Preferences" -msgstr "IBus पसंती सुरू करा" +#: ../setup/setup.ui.h:61 ../data/ibus.schemas.in.h:44 +msgid "Use system keyboard layout" +msgstr "प्रणाली कळफलक मांडणीचा वापर करा" -#: ../data/ibus.schemas.in.h:1 -msgid "Auto hide" -msgstr "स्वयं लपवा" +#: ../setup/setup.ui.h:62 ../data/ibus.schemas.in.h:45 +msgid "Use system keyboard (XKB) layout" +msgstr "प्रणाली कळफलक (XKB) मांडणीचा वापर करा" -#: ../data/ibus.schemas.in.h:2 -msgid "Custom font" -msgstr "मनपसंत फॉन्ट" +#: ../setup/setup.ui.h:63 +msgid "Keyboard Layout" +msgstr "कळफलक मांडणी" -#: ../data/ibus.schemas.in.h:3 -msgid "Custom font name for language panel" -msgstr "भाषा पटल करीता स्वपसंत फॉन्ट नाव" +#: ../setup/setup.ui.h:64 ../data/ibus.schemas.in.h:68 +msgid "Share the same input method among all applications" +msgstr "सर्व ऍप्लिकेशन्स् मध्ये एकसारखेच इंपुट पद्धत शेअर करा" -#: ../data/ibus.schemas.in.h:4 -msgid "Disable shortcut keys" -msgstr "शार्टकट किज् बंद करा" +#: ../setup/setup.ui.h:65 +msgid "Global input method settings" +msgstr "ग्लोबल इंपुट पद्धत सेटिंग्स्" + +#: ../setup/setup.ui.h:66 +msgid "Advanced" +msgstr "प्रगत" + +#: ../setup/setup.ui.h:67 +msgid "" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" +msgstr "" +"IBus\n" +"हुशार इनपुट बस\n" +"मुख्यपान: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" + +#: ../setup/setup.ui.h:74 +msgid "Start ibus on login" +msgstr "प्रवेशवेळी ibus सुरू करा" + +#: ../setup/setup.ui.h:75 +msgid "Startup" +msgstr "स्टार्टअप" + +#: ../setup/setup.ui.h:76 ../setup/engineabout.py:37 ../ui/gtk3/panel.vala:1175 +msgid "About" +msgstr "विषयी" + +#: ../setup/setup.ui.h:77 ../setup/engineabout.py:40 +msgid "_Close" +msgstr "बंद करा (_C)" + +#. Translators: Here “Preload” is a verb +#: ../data/ibus.schemas.in.h:2 +msgid "Preload engines" +msgstr "प्रीलोड इंजीन्स्" + +#. Translators: Tooltip for the button “Preload Engines” +#: ../data/ibus.schemas.in.h:4 +msgid "Preload engines during ibus starts up" +msgstr "ibus सुरू होतेवेळी इंजीन आधिपासूनच लोड करा" + +#: ../data/ibus.schemas.in.h:5 +msgid "Engines order" +msgstr "इंजिनचे क्रम" + +#: ../data/ibus.schemas.in.h:6 +msgid "Saved engines order in input method list" +msgstr "इंपुट मेथड सूचमध्ये इंजिनचे क्रम साठवे" + +#: ../data/ibus.schemas.in.h:7 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "IME स्वीचर पटलकरिता डिले मिलिसेकंद पॉपअप करा" + +#: ../data/ibus.schemas.in.h:8 +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is 400." +" 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " +"show the window and switch prev/next engines." +msgstr "" +"IME स्विचर पटल दाखवण्याकरिता पॉपअप डिले मिलिसेकंदामध्ये सेट करा. " +"पूर्वनिर्धारित 400. 0 = पटल पटकन दाखवा. 0 < मिलिसेकंदातील विलंब. 0 > " +"पटल दाखवू नका व मागील किंवा पुढील इंजिन्स्चा वापर करू नका." + +#: ../data/ibus.schemas.in.h:9 +msgid "Saved version number" +msgstr "आवृत्ती क्रमांक साठवले" + +#: ../data/ibus.schemas.in.h:10 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" +"साठवलेले आवृत्ती क्रमांकाचा वापर मागील इंस्टॉल झालेले ibus आणि सध्या इंस्टॉल " +"झालेल्या ibus मधील भेद जाणून घेण्यासाठी केला जाईल." + +#: ../data/ibus.schemas.in.h:11 +msgid "Latin layouts which have no ASCII" +msgstr "लॅटिन मांडणी ज्याकडे ASCII नाही" + +#: ../data/ibus.schemas.in.h:12 +msgid "US layout is appended to the Latin layouts. variant can be omitted." +msgstr "लॅटिन मांडणीमध्ये US मांडणी समावेश केली आहे. वेरिएंट आवश्यक नाही." + +#: ../data/ibus.schemas.in.h:13 +msgid "Use xmodmap" +msgstr "xmodmapचा वापर करा" + +#: ../data/ibus.schemas.in.h:14 +msgid "" +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." +msgstr "" +"ibus इंजिन्सचा वापर करतेवेळी, xmodmap किंवा .Xmodmap अस्तित्वात असल्यास " +"xmodmap चालवा." + +#: ../data/ibus.schemas.in.h:15 +msgid "Trigger shortcut keys" +msgstr "शॉर्टकट किज् ट्रिगर करा" + +#: ../data/ibus.schemas.in.h:17 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "gtk_accelerator_parse करिता शॉर्टकट किज सुरू करा" + +#: ../data/ibus.schemas.in.h:18 +msgid "Enable shortcut keys" +msgstr "शार्टकट किज् सुरू करा" + +#: ../data/ibus.schemas.in.h:19 +msgid "The shortcut keys for turning input method on" +msgstr "इंपुट पद्धती सुरू करण्यासाठी शार्टकट किज्" + +#: ../data/ibus.schemas.in.h:20 +msgid "Disable shortcut keys" +msgstr "शार्टकट किज् बंद करा" + +#: ../data/ibus.schemas.in.h:21 +msgid "The shortcut keys for turning input method off" +msgstr "इंपुट पद्धती बंद करण्यासाठी शार्टकट किज्" + +#: ../data/ibus.schemas.in.h:22 +msgid "Next engine shortcut keys" +msgstr "पुढील इंजीनचे शार्टकट किज्" + +#: ../data/ibus.schemas.in.h:23 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "सूचीतील पुढील इंपुट पद्धत नीवडण्याकरीता वापरण्याजोगी शार्टकट किज्" + +#: ../data/ibus.schemas.in.h:24 +msgid "Prev engine shortcut keys" +msgstr "मागील इंजीनचे शॉर्टकट किज्" + +#: ../data/ibus.schemas.in.h:25 +msgid "The shortcut keys for switching to the previous input method" +msgstr "मागील इंपुट पद्धत नीवडण्याकरीता वापरण्याजोगी शार्टकट किज्" + +#: ../data/ibus.schemas.in.h:26 +msgid "Auto hide" +msgstr "स्वयं लपवा" + +#: ../data/ibus.schemas.in.h:27 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "" +"गुणधर्म पटलाचे वर्तन. 0 = दाखवू नका, 1 = स्व छुपे करा, 2 = नेहमी दाखवा" + +#: ../data/ibus.schemas.in.h:28 +msgid "Language panel position" +msgstr "भाषा पटलचे स्थान" + +#: ../data/ibus.schemas.in.h:29 +msgid "" +"The position of the language panel. 0 = Top left corner, 1 = Top right " +"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +msgstr "" +"भाषा पटलाचे स्थान. 0 = Top left corner, 1 = Top right corner, 2 = Bottom " +"left corner, 3 = Bottom right corner, 4 = Custom" + +#: ../data/ibus.schemas.in.h:30 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "पटल नेहमी दाखवले जात असल्यास इंपुट कर्सरचे पालन करा" + +#: ../data/ibus.schemas.in.h:31 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" +"खरे असल्यास, पटल नेहमी दाखवले जात असल्यास पटल इंपुट कर्सरचे पालन करते. खोटे " +"असल्यास, पटल ठराविक ठिकाणी दाखविले जाते." + +#: ../data/ibus.schemas.in.h:32 +msgid "The milliseconds to show property panel" +msgstr "गुणधर्म पटल दाखवण्याकरिता मिलिसेकंद" + +#: ../data/ibus.schemas.in.h:33 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" +"फोकस-इन किंवा गुणधर्म बदलवण्यानंतर, गुणधर्म पटल दाखवण्याकरिता मिलिसेकंद." + +#: ../data/ibus.schemas.in.h:34 +msgid "Orientation of lookup table" +msgstr "लुकअप टेबलचे निर्देशन" + +#: ../data/ibus.schemas.in.h:35 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "लुकअप टेबलचे निर्देशन. 0 = Horizontal, 1 = Vertical" + +#: ../data/ibus.schemas.in.h:37 +msgid "Show input method name" +msgstr "इंपुट पद्धतीचे नाव दाखवा" + +#: ../data/ibus.schemas.in.h:39 +msgid "RGBA value of XKB icon" +msgstr "XKB चिन्हाचे RGBA मूल्य" + +#: ../data/ibus.schemas.in.h:41 +#, no-c-format +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " +"'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " +"to 255 or percentage values in the range 0% to 100%, and 'a' is a floating " +"point value in the range 0 to 1 of the alpha." +msgstr "" +"XKB चिन्ह मांडणी स्ट्रिंग दाखवते आणि स्ट्रिंग RGBA मूल्यसह दाखविले जाईल. " +"RGBA मूल्य 1 असू शकते. X11 पासून रंग नाव, 2. फॉर्म '#rrggbb' मधील हेक्स " +"मूल्य जेथे 'r', 'g' आणि 'b' हे रेड, ग्रीन, आणि ब्लुचे हेक्स अंक आहेत, 3. RGB " +"रंग 'rgb(r,g,b)' स्वरूपात किंवा 4. एक RGBA रंग, 'rgba(r,g,b,a)' स्वरूपात " +"जेथे 'r', 'g', आणि 'b' एकतर इंटिजर्स असतात, 0 ते 255 व्याप्तिमध्ये किंवा " +"टक्केवारि मूल्य, 0% ते 100% अशा व्याप्ति अंतर्गत, आणि 'a' फ्लोटिंग पॉइंट " +"मूल्य आहे, अल्फाच्या 0 ते 1 अशा व्याप्तिमध्ये." + +#: ../data/ibus.schemas.in.h:42 +msgid "The milliseconds to show the panel icon for a property" +msgstr "" + +#: ../data/ibus.schemas.in.h:43 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" + +#: ../data/ibus.schemas.in.h:46 +msgid "Use custom font" +msgstr "स्वपसंत फॉन्ट वापरा" + +#: ../data/ibus.schemas.in.h:47 +msgid "Use custom font name for language panel" +msgstr "भाषा पटल करीत स्वपसंत फॉन्ट नाव वापरा" + +#: ../data/ibus.schemas.in.h:48 +msgid "Custom font" +msgstr "मनपसंत फॉन्ट" + +#: ../data/ibus.schemas.in.h:49 +msgid "Custom font name for language panel" +msgstr "भाषा पटल करीता स्वपसंत फॉन्ट नाव" + +#: ../data/ibus.schemas.in.h:50 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "" + +#: ../data/ibus.schemas.in.h:51 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "" + +#: ../data/ibus.schemas.in.h:52 +msgid "Custom font name for emoji characters on emoji dialog" +msgstr "" + +#: ../data/ibus.schemas.in.h:53 +msgid "Default language for emoji dictionary" +msgstr "" + +#: ../data/ibus.schemas.in.h:54 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" +msgstr "" + +#: ../data/ibus.schemas.in.h:55 +msgid "favorite emoji list on emoji dialog" +msgstr "" + +#: ../data/ibus.schemas.in.h:56 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "" + +#: ../data/ibus.schemas.in.h:57 +msgid "favorite emoji annotation list on emoji dialog" +msgstr "" + +#: ../data/ibus.schemas.in.h:58 +msgid "You can assign an annotation for a favorite emoji in this list." +msgstr "" + +#: ../data/ibus.schemas.in.h:59 +msgid "Whether emoji annotations can be match partially or not" +msgstr "" + +#: ../data/ibus.schemas.in.h:60 +msgid "" +"Whether emoji annotations can be matched with a partial string instead of " +"the exact match or not." +msgstr "" + +#: ../data/ibus.schemas.in.h:61 +msgid "Match emoji annotations with the specified length" +msgstr "" + +#: ../data/ibus.schemas.in.h:62 +msgid "" +"Match emoji annotations partially with more than the specified number of " +"characters instead of the exact match." +msgstr "" + +#: ../data/ibus.schemas.in.h:63 +msgid "Choose a condition to match emoji annotations partially" +msgstr "" + +#: ../data/ibus.schemas.in.h:64 +msgid "" +"Choose one of the following conditions to match emoji annotations partially: " +"0 == Prefix match, 1 == Suffix match, 2 == Containing match" +msgstr "" + +#: ../data/ibus.schemas.in.h:65 +msgid "Embed Preedit Text" +msgstr "प्रिएडीट मजकूर एम्बेड करा" + +#: ../data/ibus.schemas.in.h:66 +msgid "Embed Preedit Text in Application Window" +msgstr "ऍप्लिकेशन पटलात प्रिएडीट मजकूर एम्बेड करा" + +#: ../data/ibus.schemas.in.h:67 +msgid "Use global input method" +msgstr "ग्लोबल इंपुट पद्धत नीवडा" + +#: ../data/ibus.schemas.in.h:69 +msgid "Enable input method by default" +msgstr "पूर्वनितर्धारीतपणे इंपुट पद्धत सुरू करा" + +#: ../data/ibus.schemas.in.h:70 +msgid "Enable input method by default when the application gets input focus" +msgstr "" +"ऍप्लिकेशनला इंपुट फोकस प्राप्त झाल्यावर इंपुट पद्धत पूर्वनिर्धारीतपणे सुरू " +"करा" + +#: ../data/ibus.schemas.in.h:71 +msgid "DConf preserve name prefixes" +msgstr "DConf प्रिझर्व्ह नेम प्रिफिक्सेस्" + +#: ../data/ibus.schemas.in.h:72 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "नाव रूपांतर थांबवण्याकरीता DConf किज्चे प्रिफिक्सेस्" + +#: ../ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "" +"सर्वहक्काधिकार (c) 2007-2010 पेंग हुआंग\n" +"सर्वहक्काधिकार (c) 2007-2010 Red Hat, Inc." + +#: ../ibus/lang.py:41 ../src/ibusutil.c:158 +msgid "Other" +msgstr "इतर" + +#: ../setup/emojilang.py:67 +msgid "Select a language" +msgstr "" + +#: ../setup/emojilang.py:70 ../setup/enginedialog.py:60 +#: ../setup/keyboardshortcut.py:339 ../setup/main.py:552 +msgid "_Cancel" +msgstr "रद्द करा (_C)" + +#: ../setup/emojilang.py:71 ../setup/keyboardshortcut.py:340 +#: ../setup/main.py:553 +msgid "_OK" +msgstr "ठिक आहे (_O)" + +#: ../setup/emojilang.py:235 ../setup/enginedialog.py:205 +msgid "More…" +msgstr "आणखी…" + +#: ../setup/engineabout.py:72 +#, python-format +msgid "Language: %s\n" +msgstr "भाषा: %s\n" + +#: ../setup/engineabout.py:75 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "कळफलक मांडणी: %s\n" + +#: ../setup/engineabout.py:78 +#, python-format +msgid "Author: %s\n" +msgstr "लेखक: %s\n" + +#: ../setup/engineabout.py:81 +msgid "Description:\n" +msgstr "वर्णन:\n" + +#: ../setup/enginecombobox.py:139 ../setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "इंपुट पद्धत नीवडा" + +#: ../setup/enginetreeview.py:96 +msgid "Kbd" +msgstr "Kbd" + +#: ../setup/ibus-setup.desktop.in.h:2 +msgid "Set IBus Preferences" +msgstr "IBus पसंती सुरू करा" + +#: ../setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "कळफलक शार्टकट" + +#: ../setup/keyboardshortcut.py:67 +msgid "Key code:" +msgstr "कि कोड:" + +#: ../setup/keyboardshortcut.py:82 +msgid "Modifiers:" +msgstr "मॉडिफायर:" + +#. apply button +#: ../setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "लागू करा (_A)" + +#. delete button +#: ../setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "नष्ट करा (_D)" + +#: ../setup/keyboardshortcut.py:252 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "कृपया कि (किंवा कि जोडणी) दाबा.\n" +"कि सोडल्यावर संवाद बंद होईल." + +#: ../setup/keyboardshortcut.py:255 +msgid "Please press a key (or a key combination)" +msgstr "कृपया कि (किंवा कि जोडणी) दाबा" + +#: ../setup/main.py:121 ../setup/main.py:580 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "मागील इंपुट पद्धतीचा वापर करण्यासाठी शिफ्टसह शार्टकटचा वापर करा" + +#: ../setup/main.py:507 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "IBus डिमन सुरू नाही. तुम्हाला ते सुरू करायचे?" + +#: ../setup/main.py:528 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "" +"IBus सुरू झाले! IBus चा वापर न केल्यास, खालील ओळींना $HOME/.bashrc मध्ये " +"समाविष्ट करा; व त्यानंतर डेस्कटॉपमध्ये पुनः प्रवेश करा.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" + +#. Translators: %d == 5 currently +#: ../setup/main.py:542 +#, python-format +msgid "IBus daemon could not be started in %d seconds." +msgstr "IBus डिमन %d सेकंदात सुरू करणे अशक्य." + +#: ../setup/main.py:554 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "%s करीता कळफलक शार्टकट नीवडा" + +#. Translators: Title of the window +#: ../setup/main.py:556 +msgid "switching input methods" +msgstr "इंपुट पद्धतींचा वापर करत आहे" + +#: ../src/ibusemojigen.h:30 +msgid "Activities" +msgstr "" + +#: ../src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "" + +#: ../src/ibusemojigen.h:32 +msgid "Flags" +msgstr "" + +#: ../src/ibusemojigen.h:33 +msgid "Food & Drink" +msgstr "" + +#: ../src/ibusemojigen.h:34 +msgid "Objects" +msgstr "" + +#: ../src/ibusemojigen.h:35 +msgid "Smileys & People" +msgstr "" + +#: ../src/ibusemojigen.h:36 +msgid "Symbols" +msgstr "" + +#: ../src/ibusemojigen.h:37 +msgid "Travel & Places" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:33 +msgid "Basic Latin" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:37 +msgid "Latin-1 Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:41 +msgid "Latin Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:45 +msgid "Latin Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:49 +msgid "IPA Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:53 +msgid "Spacing Modifier Letters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:57 +msgid "Combining Diacritical Marks" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:61 +msgid "Greek and Coptic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:65 +msgid "Cyrillic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:69 +msgid "Cyrillic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:73 +msgid "Armenian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:77 +msgid "Hebrew" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:81 +msgid "Arabic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:85 +msgid "Syriac" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:89 +msgid "Arabic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:93 +msgid "Thaana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:97 +msgid "NKo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:101 +msgid "Samaritan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:105 +msgid "Mandaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:109 +msgid "Syriac Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:113 +msgid "Arabic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:117 +msgid "Devanagari" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:121 +msgid "Bengali" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:125 +msgid "Gurmukhi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:129 +msgid "Gujarati" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:133 +msgid "Oriya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:137 +msgid "Tamil" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:141 +msgid "Telugu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:145 +msgid "Kannada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:149 +msgid "Malayalam" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:153 +msgid "Sinhala" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:157 +msgid "Thai" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:161 +msgid "Lao" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:165 +msgid "Tibetan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:169 +msgid "Myanmar" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:173 +msgid "Georgian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:177 +msgid "Hangul Jamo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:181 +msgid "Ethiopic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:185 +msgid "Ethiopic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:189 +msgid "Cherokee" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:193 +msgid "Unified Canadian Aboriginal Syllabics" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:197 +msgid "Ogham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:201 +msgid "Runic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:205 +msgid "Tagalog" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:209 +msgid "Hanunoo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:213 +msgid "Buhid" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:217 +msgid "Tagbanwa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:221 +msgid "Khmer" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:225 +msgid "Mongolian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:229 +msgid "Unified Canadian Aboriginal Syllabics Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:233 +msgid "Limbu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:237 +msgid "Tai Le" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:241 +msgid "New Tai Lue" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:245 +msgid "Khmer Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:249 +msgid "Buginese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:253 +msgid "Tai Tham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:257 +msgid "Combining Diacritical Marks Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:261 +msgid "Balinese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:265 +msgid "Sundanese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:269 +msgid "Batak" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:273 +msgid "Lepcha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:277 +msgid "Ol Chiki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:281 +msgid "Cyrillic Extended-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:285 +msgid "Sundanese Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:289 +msgid "Vedic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:293 +msgid "Phonetic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:297 +msgid "Phonetic Extensions Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:301 +msgid "Combining Diacritical Marks Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:305 +msgid "Latin Extended Additional" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:309 +msgid "Greek Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:313 +msgid "General Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:317 +msgid "Superscripts and Subscripts" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:321 +msgid "Currency Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:325 +msgid "Combining Diacritical Marks for Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:329 +msgid "Letterlike Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:333 +msgid "Number Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:337 +msgid "Arrows" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:341 +msgid "Mathematical Operators" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:345 +msgid "Miscellaneous Technical" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:349 +msgid "Control Pictures" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:353 +msgid "Optical Character Recognition" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:357 +msgid "Enclosed Alphanumerics" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:361 +msgid "Box Drawing" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:365 +msgid "Block Elements" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:369 +msgid "Geometric Shapes" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:373 +msgid "Miscellaneous Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:377 +msgid "Dingbats" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:381 +msgid "Miscellaneous Mathematical Symbols-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:385 +msgid "Supplemental Arrows-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:389 +msgid "Braille Patterns" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:393 +msgid "Supplemental Arrows-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:397 +msgid "Miscellaneous Mathematical Symbols-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:401 +msgid "Supplemental Mathematical Operators" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:405 +msgid "Miscellaneous Symbols and Arrows" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:409 +msgid "Glagolitic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:413 +msgid "Latin Extended-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:417 +msgid "Coptic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:421 +msgid "Georgian Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:425 +msgid "Tifinagh" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:429 +msgid "Ethiopic Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:433 +msgid "Cyrillic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:437 +msgid "Supplemental Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:441 +msgid "CJK Radicals Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:445 +msgid "Kangxi Radicals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:449 +msgid "Ideographic Description Characters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:453 +msgid "CJK Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:457 +msgid "Hiragana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:461 +msgid "Katakana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:465 +msgid "Bopomofo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:469 +msgid "Hangul Compatibility Jamo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:473 +msgid "Kanbun" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:477 +msgid "Bopomofo Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:481 +msgid "CJK Strokes" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:485 +msgid "Katakana Phonetic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:489 +msgid "Enclosed CJK Letters and Months" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:493 +msgid "CJK Compatibility" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:497 +msgid "CJK Unified Ideographs Extension A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:501 +msgid "Yijing Hexagram Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:505 +msgid "CJK Unified Ideographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:509 +msgid "Yi Syllables" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:513 +msgid "Yi Radicals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:517 +msgid "Lisu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:521 +msgid "Vai" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:525 +msgid "Cyrillic Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:529 +msgid "Bamum" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:533 +msgid "Modifier Tone Letters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:537 +msgid "Latin Extended-D" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:541 +msgid "Syloti Nagri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:545 +msgid "Common Indic Number Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:549 +msgid "Phags-pa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:553 +msgid "Saurashtra" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:557 +msgid "Devanagari Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:561 +msgid "Kayah Li" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:565 +msgid "Rejang" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:569 +msgid "Hangul Jamo Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:573 +msgid "Javanese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:577 +msgid "Myanmar Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:581 +msgid "Cham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:585 +msgid "Myanmar Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:589 +msgid "Tai Viet" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:593 +msgid "Meetei Mayek Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:597 +msgid "Ethiopic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:601 +msgid "Latin Extended-E" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:605 +msgid "Cherokee Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:609 +msgid "Meetei Mayek" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:613 +msgid "Hangul Syllables" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:617 +msgid "Hangul Jamo Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:621 +msgid "High Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:625 +msgid "High Private Use Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:629 +msgid "Low Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:633 +msgid "Private Use Area" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:637 +msgid "CJK Compatibility Ideographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:641 +msgid "Alphabetic Presentation Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:645 +msgid "Arabic Presentation Forms-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:649 +msgid "Variation Selectors" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:653 +msgid "Vertical Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:657 +msgid "Combining Half Marks" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:661 +msgid "CJK Compatibility Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:665 +msgid "Small Form Variants" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:669 +msgid "Arabic Presentation Forms-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:673 +msgid "Halfwidth and Fullwidth Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:677 +msgid "Specials" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:681 +msgid "Linear B Syllabary" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:685 +msgid "Linear B Ideograms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:689 +msgid "Aegean Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:693 +msgid "Ancient Greek Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:697 +msgid "Ancient Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:701 +msgid "Phaistos Disc" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:705 +msgid "Lycian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:709 +msgid "Carian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:713 +msgid "Coptic Epact Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:717 +msgid "Old Italic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:721 +msgid "Gothic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:725 +msgid "Old Permic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:729 +msgid "Ugaritic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:733 +msgid "Old Persian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:737 +msgid "Deseret" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:741 +msgid "Shavian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:745 +msgid "Osmanya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:749 +msgid "Osage" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:753 +msgid "Elbasan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:757 +msgid "Caucasian Albanian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:761 +msgid "Linear A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:765 +msgid "Cypriot Syllabary" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:769 +msgid "Imperial Aramaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:773 +msgid "Palmyrene" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:777 +msgid "Nabataean" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:781 +msgid "Hatran" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:785 +msgid "Phoenician" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:789 +msgid "Lydian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:793 +msgid "Meroitic Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:797 +msgid "Meroitic Cursive" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:801 +msgid "Kharoshthi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:805 +msgid "Old South Arabian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:809 +msgid "Old North Arabian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:813 +msgid "Manichaean" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:817 +msgid "Avestan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:821 +msgid "Inscriptional Parthian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:825 +msgid "Inscriptional Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:829 +msgid "Psalter Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:833 +msgid "Old Turkic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:837 +msgid "Old Hungarian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:841 +msgid "Rumi Numeral Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:845 +msgid "Brahmi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:849 +msgid "Kaithi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:853 +msgid "Sora Sompeng" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:857 +msgid "Chakma" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:861 +msgid "Mahajani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:865 +msgid "Sharada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:869 +msgid "Sinhala Archaic Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:873 +msgid "Khojki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:877 +msgid "Multani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:881 +msgid "Khudawadi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:885 +msgid "Grantha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:889 +msgid "Newa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:893 +msgid "Tirhuta" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:897 +msgid "Siddham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:901 +msgid "Modi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:905 +msgid "Mongolian Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:909 +msgid "Takri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:913 +msgid "Ahom" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:917 +msgid "Warang Citi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:921 +msgid "Zanabazar Square" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:925 +msgid "Soyombo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:929 +msgid "Pau Cin Hau" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:933 +msgid "Bhaiksuki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:937 +msgid "Marchen" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:941 +msgid "Masaram Gondi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:945 +msgid "Cuneiform" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:949 +msgid "Cuneiform Numbers and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:953 +msgid "Early Dynastic Cuneiform" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:957 +msgid "Egyptian Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:961 +msgid "Anatolian Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:965 +msgid "Bamum Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:969 +msgid "Mro" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:973 +msgid "Bassa Vah" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:977 +msgid "Pahawh Hmong" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:981 +msgid "Miao" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:985 +msgid "Ideographic Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:989 +msgid "Tangut" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:993 +msgid "Tangut Components" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:997 +msgid "Kana Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1001 +msgid "Kana Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1005 +msgid "Nushu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1009 +msgid "Duployan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1013 +msgid "Shorthand Format Controls" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1017 +msgid "Byzantine Musical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1021 +msgid "Musical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1025 +msgid "Ancient Greek Musical Notation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1029 +msgid "Tai Xuan Jing Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1033 +msgid "Counting Rod Numerals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1037 +msgid "Mathematical Alphanumeric Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1041 +msgid "Sutton SignWriting" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1045 +msgid "Glagolitic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1049 +msgid "Mende Kikakui" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1053 +msgid "Adlam" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1057 +msgid "Arabic Mathematical Alphabetic Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1061 +msgid "Mahjong Tiles" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1065 +msgid "Domino Tiles" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1069 +msgid "Playing Cards" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1073 +msgid "Enclosed Alphanumeric Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1077 +msgid "Enclosed Ideographic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1081 +msgid "Miscellaneous Symbols and Pictographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1085 +msgid "Emoticons" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1089 +msgid "Ornamental Dingbats" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1093 +msgid "Transport and Map Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1097 +msgid "Alchemical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1101 +msgid "Geometric Shapes Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1105 +msgid "Supplemental Arrows-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1109 +msgid "Supplemental Symbols and Pictographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1113 +msgid "CJK Unified Ideographs Extension B" +msgstr "" -#: ../data/ibus.schemas.in.h:5 -msgid "Embed Preedit Text" -msgstr "प्रिएडीट मजकूर एम्बेड करा" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1117 +msgid "CJK Unified Ideographs Extension C" +msgstr "" -#: ../data/ibus.schemas.in.h:6 -msgid "Embed Preedit Text in Application Window" -msgstr "ऍप्लिकेशन पटलात प्रिएडीट मजकूर एम्बेड करा" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1121 +msgid "CJK Unified Ideographs Extension D" +msgstr "" -#: ../data/ibus.schemas.in.h:7 -msgid "Enable input method by default" -msgstr "पूर्वनितर्धारीतपणे इंपुट पद्धत सुरू करा" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1125 +msgid "CJK Unified Ideographs Extension E" +msgstr "" -#: ../data/ibus.schemas.in.h:8 -msgid "Enable input method by default when the application gets input focus" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1129 +msgid "CJK Unified Ideographs Extension F" msgstr "" -"ऍप्लिकेशनला इंपुट फोकस प्राप्त झाल्यावर इंपुट पद्धत पूर्वनिर्धारीतपणे सुरू " -"करा" -#: ../data/ibus.schemas.in.h:9 -msgid "Enable shortcut keys" -msgstr "शार्टकट किज् सुरू करा" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1133 +msgid "CJK Compatibility Ideographs Supplement" +msgstr "" -#: ../data/ibus.schemas.in.h:10 -msgid "Language panel position" -msgstr "भाषा पटलचे स्थान" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1137 +msgid "Tags" +msgstr "" -#: ../data/ibus.schemas.in.h:11 -msgid "Next engine shortcut keys" -msgstr "पुढील इंजीनचे शार्टकट किज्" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1141 +msgid "Variation Selectors Supplement" +msgstr "" -#: ../data/ibus.schemas.in.h:12 -msgid "Orientation of lookup table" -msgstr "लुकअप टेबलचे निर्देशन" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1145 +msgid "Supplementary Private Use Area-A" +msgstr "" -#: ../data/ibus.schemas.in.h:13 -msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" -msgstr "लुकअप टेबलचे निर्देशन. 0 = Horizontal, 1 = Vertical" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1149 +msgid "Supplementary Private Use Area-B" +msgstr "" -#: ../data/ibus.schemas.in.h:14 -msgid "Preload engines" -msgstr "प्रीलोड इंजीन्स्" +#: ../tools/main.vala:54 +msgid "List engine name only" +msgstr "फक्त इंजिन नाव सूचीत दाखवा" -#: ../data/ibus.schemas.in.h:15 -msgid "Preload engines during ibus starts up" -msgstr "ibus सुरू होतेवेळी इंजीन आधिपासूनच लोड करा" +#: ../tools/main.vala:70 ../tools/main.vala:195 ../tools/main.vala:205 +msgid "Can't connect to IBus.\n" +msgstr "IBus शी जोडणी अशक्य.\n" -#: ../data/ibus.schemas.in.h:16 -msgid "Prev engine shortcut keys" -msgstr "मागील इंजीनचे शॉर्टकट किज्" +#: ../tools/main.vala:96 +#, c-format +msgid "language: %s\n" +msgstr "भाषा: %s\n" -#: ../data/ibus.schemas.in.h:17 ../setup/setup.ui.h:42 -msgid "Share the same input method among all applications" -msgstr "सर्व ऍप्लिकेशन्स् मध्ये एकसारखेच इंपुट पद्धत शेअर करा" +#: ../tools/main.vala:164 +msgid "No engine is set.\n" +msgstr "इंजिन ठरवले नाही.\n" -#: ../data/ibus.schemas.in.h:18 ../setup/setup.ui.h:43 -msgid "Show icon on system tray" -msgstr "चिन्ह प्रणाली ट्रेवर दाखवा" +#: ../tools/main.vala:172 +msgid "Set global engine failed.\n" +msgstr "ग्रोबल इंजिन ठरवण्यास अपयशी.\n" -#: ../data/ibus.schemas.in.h:19 -msgid "Show input method name" -msgstr "इंपुट पद्धतीचे नाव दाखवा" +#: ../tools/main.vala:177 +msgid "Get global engine failed.\n" +msgstr "ग्रोबल इंजिन ठरवण्यास अपयशी.\n" -#: ../data/ibus.schemas.in.h:20 ../setup/setup.ui.h:45 -msgid "Show input method name on language bar" -msgstr "भाषा पट्टीवरील इंपुट पद्धतीचे नाव दाखवा" +#: ../tools/main.vala:220 +msgid "Read the system registry cache." +msgstr "प्रणाली रेजिस्ट्रि कॅशे वाचा." -#: ../data/ibus.schemas.in.h:21 -msgid "" -"The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = " -"Always show" -msgstr "" -"भाषा पटलचे वर्तन. 0 = Embedded in menu, 1 = Auto hide, 2 = Always show" +#: ../tools/main.vala:222 +msgid "Read the registry cache FILE." +msgstr "रेजिस्ट्रि कॅशे FILE वाचा." -#: ../data/ibus.schemas.in.h:22 -msgid "" -"The position of the language panel. 0 = Top left corner, 1 = Top right " -"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" -msgstr "" -"भाषा पटलाचे स्थान. 0 = Top left corner, 1 = Top right corner, 2 = Bottom " -"left corner, 3 = Bottom right corner, 4 = Custom" +#: ../tools/main.vala:240 ../tools/main.vala:245 +msgid "The registry cache is invalid.\n" +msgstr "रेजिस्ट्रि कॅशे अवैध आहे.\n" -#: ../data/ibus.schemas.in.h:23 -msgid "The shortcut keys for switching to the next input method in the list" -msgstr "सूचीतील पुढील इंपुट पद्धत नीवडण्याकरीता वापरण्याजोगी शार्टकट किज्" +#: ../tools/main.vala:260 +msgid "Write the system registry cache." +msgstr "प्रणाली रेजिस्ट्रि कॅशे लिहा." -#: ../data/ibus.schemas.in.h:24 -msgid "The shortcut keys for switching to the previous input method" -msgstr "मागील इंपुट पद्धत नीवडण्याकरीता वापरण्याजोगी शार्टकट किज्" +#: ../tools/main.vala:262 +msgid "Write the registry cache FILE." +msgstr "रेजिस्ट्रि कॅशे FILE लिहा." -#: ../data/ibus.schemas.in.h:25 -msgid "The shortcut keys for turning input method off" -msgstr "इंपुट पद्धती बंद करण्यासाठी शार्टकट किज्" +#: ../tools/main.vala:314 +msgid "Resetting…" +msgstr "पुन्हा सेट करत आहे…" -#: ../data/ibus.schemas.in.h:26 -msgid "The shortcut keys for turning input method on" -msgstr "इंपुट पद्धती सुरू करण्यासाठी शार्टकट किज्" +#: ../tools/main.vala:328 +msgid "Done" +msgstr "पूर्ण झाले" -#: ../data/ibus.schemas.in.h:27 ../setup/setup.ui.h:51 -msgid "The shortcut keys for turning input method on or off" -msgstr "इंपुट पद्धत सुरू किंवा बंद करण्यासाठी शार्टकट किज्" +#: ../tools/main.vala:373 +msgid "Set or get engine" +msgstr "इंजिन सेट किंवा प्राप्त करा" -#: ../data/ibus.schemas.in.h:28 -msgid "Trigger shortcut keys" -msgstr "शॉर्टकट किज् ट्रिगर करा" +#: ../tools/main.vala:374 +msgid "Exit ibus-daemon" +msgstr "ibus-daemon पासून बाहेर पडा" -#: ../data/ibus.schemas.in.h:29 -msgid "Use custom font" -msgstr "स्वपसंत फॉन्ट वापरा" +#: ../tools/main.vala:375 +msgid "Show available engines" +msgstr "उपलब्ध इंजिन्स दाखवा" -#: ../data/ibus.schemas.in.h:30 -msgid "Use custom font name for language panel" -msgstr "भाषा पटल करीत स्वपसंत फॉन्ट नाव वापरा" +#: ../tools/main.vala:376 +msgid "(Not implemented)" +msgstr "(लागू केले नाही)" -#: ../data/ibus.schemas.in.h:31 -msgid "Use global input method" -msgstr "ग्लोबल इंपुट पद्धत नीवडा" +#: ../tools/main.vala:377 +msgid "Restart ibus-daemon" +msgstr "ibus-daemon पुन्हा सुरू करा" -#: ../data/ibus.schemas.in.h:32 ../setup/setup.ui.h:55 -msgid "Use system keyboard (XKB) layout" -msgstr "प्रणाली कळफलक (XKB) मांडणीचा वापर करा" +#: ../tools/main.vala:378 +msgid "Show version" +msgstr "आवृत्ती दाखवा" -#: ../data/ibus.schemas.in.h:33 ../setup/setup.ui.h:56 -msgid "Use system keyboard layout" -msgstr "प्रणाली कळफलक मांडणीचा वापर करा" +#: ../tools/main.vala:379 +msgid "Show the content of registry cache" +msgstr "रेजिस्ट्रि कॅशेमधील अंतर्भुत माहिती दाखवा" -#: ../setup/setup.ui.h:1 -msgid "..." -msgstr "..." +#: ../tools/main.vala:380 +msgid "Create registry cache" +msgstr "रेजिस्ट्रि कॅशे निर्माण करा" -#: ../setup/setup.ui.h:2 -msgid "Font and Style" -msgstr "फॉन्ट व शैली" +#: ../tools/main.vala:381 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "ibus-daemon च्या D-Bus पत्त्याची छपाई करा " -#: ../setup/setup.ui.h:3 -msgid "Global input method settings" -msgstr "ग्लोबल इंपुट पद्धत सेटिंग्स्" +#: ../tools/main.vala:382 +msgid "Show the configuration values" +msgstr "संरचना मूल्ये दाखवा" -#: ../setup/setup.ui.h:4 -msgid "Keyboard Layout" -msgstr "कळफलक मांडणी" +#: ../tools/main.vala:383 +msgid "Reset the configuration values" +msgstr "संरचना मूल्य मूळस्थितीत आणा" -#: ../setup/setup.ui.h:5 -msgid "Keyboard Shortcuts" -msgstr "कळफलक शार्टकट" +#: ../tools/main.vala:385 +msgid "Save emoji on dialog to clipboard " +msgstr "" -#: ../setup/setup.ui.h:6 -msgid "Startup" -msgstr "स्टार्टअप" +#: ../tools/main.vala:387 +msgid "Show this information" +msgstr "ही माहिती दाखवा" -#: ../setup/setup.ui.h:7 -msgid "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" +#: ../tools/main.vala:393 +#, c-format +msgid "Usage: %s COMMAND [OPTION...]\n" "\n" +msgstr "वापर: %s COMMAND [OPTION...]\n" "\n" + +#: ../tools/main.vala:394 +msgid "Commands:\n" +msgstr "आदेश:\n" + +#: ../tools/main.vala:423 +#, c-format +msgid "%s is unknown command!\n" +msgstr "%s अपरिचीत आदेश आहे!\n" + +#: ../ui/gtk3/emojier.vala:245 +msgid "Show emoji variants" msgstr "" -"IBus\n" -"हुशार इनपुट बस\n" -"मुख्यपान: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" -#: ../setup/setup.ui.h:14 -msgid "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." +#: ../ui/gtk3/emojier.vala:250 +msgid "Menu" msgstr "" -"यादीतील प्रथम इन्पुट पद्धती मुलभूत नुरूप आहे.\n" -"बदलण्याकरीता तुम्ही वर/खाली बटणांचा वापर करू शकता." -#: ../setup/setup.ui.h:17 -msgid "Add the selected input method into the enabled input methods" -msgstr "नीवडलेली इंपुट पद्धत कार्यक्षम इंपुट पद्धतींमध्ये समावेश करा" +#: ../ui/gtk3/emojier.vala:273 +msgid "Favorites" +msgstr "" -#: ../setup/setup.ui.h:18 -msgid "Advanced" -msgstr "प्रगत" +#: ../ui/gtk3/emojier.vala:274 +msgid "Others" +msgstr "" -#: ../setup/setup.ui.h:19 -msgid "Always" -msgstr "नेहमी" +#: ../ui/gtk3/emojier.vala:275 +msgid "Open Unicode choice" +msgstr "" -#: ../setup/setup.ui.h:20 -msgid "Bottom left corner" -msgstr "तळापासून डावा कोपरा" +#: ../ui/gtk3/emojier.vala:445 ../ui/gtk3/emojier.vala:826 +#: ../ui/gtk3/panel.vala:1149 +msgid "Emoji Choice" +msgstr "" -#: ../setup/setup.ui.h:21 -msgid "Bottom right corner" -msgstr "तळापासून उजवा कोपरा" +#: ../ui/gtk3/emojier.vala:451 +msgid "Type annotation or choose emoji" +msgstr "" -#: ../setup/setup.ui.h:22 -msgid "Candidates orientation:" -msgstr "घटकांचे निर्देशन:" +#: ../ui/gtk3/emojier.vala:948 +msgid "Unicode Choice" +msgstr "" -#: ../setup/setup.ui.h:23 -msgid "Custom" -msgstr "मनपसंत" +#: ../ui/gtk3/emojier.vala:950 +msgid "Bring back emoji choice" +msgstr "" -#: ../setup/setup.ui.h:24 -msgid "Disable:" -msgstr "बंद करा:" +#: ../ui/gtk3/emojier.vala:1016 +msgid "Loading a Unicode dictionary:" +msgstr "" -#: ../setup/setup.ui.h:25 -msgid "Embed preedit text in application window" -msgstr "ऍप्लिकेशन पटलात प्रिएडीट मजूकर एम्बेड करा" +#: ../ui/gtk3/emojier.vala:1071 +msgid "Page Down" +msgstr "" -#: ../setup/setup.ui.h:26 -msgid "Embed the preedit text of input method in the application window" -msgstr "ऍप्लिकेशन पटलात इंपुट पद्धतीचे प्रिएडीट मजकूर एम्बेड करा" +#: ../ui/gtk3/emojier.vala:1082 +msgid "Page Up" +msgstr "" -#: ../setup/setup.ui.h:27 -msgid "Embedded in menu" -msgstr "मेन्यू मध्ये एम्बेड केले" +#: ../ui/gtk3/emojier.vala:1236 +#, c-format +msgid "Code point: %s" +msgstr "" -#: ../setup/setup.ui.h:28 -msgid "Enable or disable:" -msgstr "कार्यान्वीत करा किंवा अकार्यान्वीत करा:" +#: ../ui/gtk3/emojier.vala:1242 +msgid "Has emoji variants" +msgstr "" -#: ../setup/setup.ui.h:29 -msgid "Enable:" -msgstr "सुरू करा:" +#: ../ui/gtk3/emojier.vala:1377 ../ui/gtk3/emojier.vala:1391 +#, c-format +msgid "Description: %s" +msgstr "" -#: ../setup/setup.ui.h:30 -msgid "General" -msgstr "सर्वसाधारण" +#: ../ui/gtk3/emojier.vala:1377 +msgid "None" +msgstr "" -#: ../setup/setup.ui.h:31 -msgid "Horizontal" -msgstr "आडवे" +#: ../ui/gtk3/emojier.vala:1402 +#, c-format +msgid "Annotations: %s" +msgstr "" -#: ../setup/setup.ui.h:34 -msgid "Language panel position:" -msgstr "भाषा पटलाचे स्थान:" +#: ../ui/gtk3/emojier.vala:1428 +#, c-format +msgid "Name: %s" +msgstr "" -#: ../setup/setup.ui.h:35 -msgid "Move down the selected input method in the enabled input methods" -msgstr "कार्यक्षम इंपुट पद्धतींमध्ये नीवडलेली इंपुट पद्धत खाली सरकवा" +#: ../ui/gtk3/emojier.vala:1436 +#, c-format +msgid "Alias: %s" +msgstr "" -#: ../setup/setup.ui.h:36 -msgid "Move up the selected input method in the enabled input methods list" -msgstr "कार्यक्षम इंपुट पद्धतींमध्ये नीवडलेली इंपुट पद्धत वर सरकवा" +#: ../ui/gtk3/emojierapp.vala:56 +msgid "Canceled to choose an emoji." +msgstr "" -#: ../setup/setup.ui.h:37 -msgid "Next input method:" -msgstr "पुढची इंपुट पद्धत:" +#: ../ui/gtk3/emojierapp.vala:77 +msgid "Copied an emoji to your clipboard." +msgstr "" -#: ../setup/setup.ui.h:38 -msgid "Previous input method:" -msgstr "मागील इंपुट पद्धत:" +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ../ui/gtk3/emojierapp.vala:97 +msgid "\"FONT\" for emoji characters on emoji dialog" +msgstr "" -#: ../setup/setup.ui.h:39 -msgid "Remove the selected input method from the enabled input methods" -msgstr "कार्यक्षम इंपुट पद्धतीपासून नीवडलेली इंपुट पद्धत काढून टाका" +#: ../ui/gtk3/emojierapp.vala:98 +msgid "FONT" +msgstr "" -#: ../setup/setup.ui.h:40 -msgid "Set the behavior of ibus how to show or hide language bar" -msgstr "भाषा पट्टी कसे दाखवायचे किंवा लपवायचे यासाठी ibus चे वर्तन ठरवा" +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ../ui/gtk3/emojierapp.vala:103 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" +msgstr "" -#: ../setup/setup.ui.h:41 -msgid "Set the orientation of candidates in lookup table" -msgstr "लुकअप टेबल मधील घटकांचे निर्देशन ठरवा" +#: ../ui/gtk3/emojierapp.vala:104 +msgid "LANG" +msgstr "" -#: ../setup/setup.ui.h:44 -msgid "Show information of the selected input method" -msgstr "नीवडलेल्या इंपुट पद्धत विषयी माहिती दाखवा" +#: ../ui/gtk3/emojierapp.vala:106 +msgid "Emoji annotations can be match partially" +msgstr "" -#: ../setup/setup.ui.h:46 -msgid "Show input method's name on language bar when check the checkbox" -msgstr "चेकबॉक्स नीवडल्यानंतर भाषा पट्टीवरील इंपुट पद्धतीचे नाव दाखवा" +#: ../ui/gtk3/emojierapp.vala:110 +msgid "Match with the length of the specified integer" +msgstr "" -#: ../setup/setup.ui.h:47 -msgid "Show language panel:" -msgstr "भाषा पटल दाखवा:" +#: ../ui/gtk3/emojierapp.vala:114 +msgid "Match with the condition of the specified integer" +msgstr "" -#: ../setup/setup.ui.h:48 -msgid "Start ibus on login" -msgstr "प्रवेशवेळी ibus सुरू करा" +#: ../ui/gtk3/panel.vala:282 ../ui/gtk3/panel.vala:313 +msgid "IBus Panel" +msgstr "" -#: ../setup/setup.ui.h:49 -msgid "The shortcut keys for switching to next input method in the list" -msgstr "सूचीतील पुढची इंपुट पद्धत नीवडण्याकरीता वापरण्याजोगी शार्टकट किज्" +#: ../ui/gtk3/panel.vala:710 +msgid "IBus Update" +msgstr "IBus सुधारणा" -#: ../setup/setup.ui.h:50 -msgid "The shortcut keys for switching to previous input method in the list" -msgstr "सूचीतील मागील इंपुट पद्धत नीवडण्याकरीता वापरण्याजोगी शार्टकट किज्" +#: ../ui/gtk3/panel.vala:711 ../ui/gtk3/panel.vala:722 +msgid "Super+space is now the default hotkey." +msgstr "Super+space आत्ता पूर्वनिर्धारित हॉटि आहे." -#: ../setup/setup.ui.h:52 -msgid "Top left corner" -msgstr "वरील डावा कोपरा" +#: ../ui/gtk3/panel.vala:1121 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "Linux/Unix करीता IBus हे एक हुशार इनपुट बस आहे." -#: ../setup/setup.ui.h:53 -msgid "Top right corner" -msgstr "वरील उजवा कोपरा" +#: ../ui/gtk3/panel.vala:1125 +msgid "translator-credits" +msgstr "" +"संदिप शेडमाके , 2009; संदिप शेडमाके " +", 2009, 2010." -#: ../setup/setup.ui.h:54 -msgid "Use custom font:" -msgstr "मनपसंत फॉन्टचा वापर करा:" +#: ../ui/gtk3/panel.vala:1144 +msgid "Preferences" +msgstr "आवड निवड" -#: ../setup/setup.ui.h:57 -msgid "Vertical" -msgstr "उभे" +#: ../ui/gtk3/panel.vala:1181 +msgid "Restart" +msgstr "पुन्हा चालू करा" -#: ../setup/setup.ui.h:58 -msgid "When active" -msgstr "सक्रीय असल्यावर" +#: ../ui/gtk3/panel.vala:1185 +msgid "Quit" +msgstr "बाहेर पडा " + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ../ui/gtk3/propertypanel.vala:368 ../ui/gtk3/propertypanel.vala:376 +msgid "default:LTR" +msgstr "default:LTR" diff --git a/po/nb.po b/po/nb.po new file mode 100644 index 000000000..d1b605f9c --- /dev/null +++ b/po/nb.po @@ -0,0 +1,3249 @@ +# Norwegian Bokmål translation of ibus. +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2020 Takao Fujiwara +# This file is distributed under the same license as the ibus package. +# +# Translators: +# Kjartan Maraas , 2012 +# Allan Nordhøy , 2020. +# Anonymous , 2020. +msgid "" +msgstr "" +"Project-Id-Version: IBus\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2020-01-08 12:40+0900\n" +"PO-Revision-Date: 2020-05-24 12:40+0000\n" +"Last-Translator: Allan Nordhøy \n" +"Language-Team: Norwegian Bokmål \n" +"Language: nb\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#. Translators: Here “Preload” is a verb +#: data/dconf/org.freedesktop.ibus.gschema.xml:11 +msgid "Preload engines" +msgstr "Forhåndsinnlast motorer" + +#. Translators: Tooltip for the button “Preload Engines” +#: data/dconf/org.freedesktop.ibus.gschema.xml:13 +msgid "Preload engines during ibus starts up" +msgstr "Forhåndsinnlast motorer under IBus-oppstart" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:17 +msgid "Engines order" +msgstr "Motorrekkefølge" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:18 +msgid "Saved engines order in input method list" +msgstr "Lagret motorrekkefølge i listen over inndatametoder" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:22 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "" +"Antall millisekunder oppstartsforsinkelse for oppsprettsvindu der man kan " +"bytte IME" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:23 +#, fuzzy +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is " +"400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " +"show the window and switch prev/next engines." +msgstr "" +"Sett oppsettsforsinkelse i millisekunder for å vise IME-vekslervindu. " +"Forvalget er 400. 0 = Vis vinduet umiddelvbart. 0 < forsinkelse " +"millisekunder. 0 > Ikke vis vinduet og bytt til forrige/neste motor." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:27 +msgid "Saved version number" +msgstr "Lagret versjonsnummer" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:28 +#, fuzzy +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" +"Lagret versjonsnummer brukes til å sjekke forskjellen mellom versjonen av " +"tidligere installert IBus, og nåværende IBus." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:32 +#, fuzzy +msgid "Latin layouts which have no ASCII" +msgstr "Latinsk oppsett som ikke har ASCII" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:33 +msgid "US layout is appended to the Latin layouts. variant can be omitted." +msgstr "Amerikansk oppsett som legges til den latinske. Variant kan utelates." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:37 +msgid "Use xmodmap" +msgstr "Bruk xmodmap" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:38 +msgid "" +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." +msgstr "" +"Kjøre xmodmap hvis .xmodmap eller .Xmodmap finnes når IBus-motorer byttes." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 +msgid "Use system keyboard layout" +msgstr "Bruk systemets tastaturoppsett" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 +msgid "Use system keyboard (XKB) layout" +msgstr "Bruk systemtastatur (XKB)-oppsett" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:47 +msgid "Embed Preedit Text" +msgstr "Bygg inn forhåndsredigert tekst" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:48 +msgid "Embed Preedit Text in Application Window" +msgstr "Bygg inn forhåndsredigert tekst i programvindu" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:52 +msgid "Use global input method" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 +msgid "Share the same input method among all applications" +msgstr "Del samme inndatametode mellom alle programmer" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:57 +msgid "Enable input method by default" +msgstr "Slå på inndatametode som forvalg" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:58 +msgid "Enable input method by default when the application gets input focus" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:62 +msgid "DConf preserve name prefixes" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:63 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:70 +msgid "Trigger shortcut keys" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:71 +#: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 +msgid "The shortcut keys for turning input method on or off" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:75 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:80 +msgid "Enable shortcut keys" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:81 +msgid "The shortcut keys for turning input method on" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:85 +msgid "Disable shortcut keys" +msgstr "Slå av snarveistaster" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:86 +msgid "The shortcut keys for turning input method off" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:90 +#: data/dconf/org.freedesktop.ibus.gschema.xml:95 +msgid "Next engine shortcut keys" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:91 +#: data/dconf/org.freedesktop.ibus.gschema.xml:96 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:100 +#: data/dconf/org.freedesktop.ibus.gschema.xml:105 +msgid "Prev engine shortcut keys" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:101 +#: data/dconf/org.freedesktop.ibus.gschema.xml:106 +msgid "The shortcut keys for switching to the previous input method" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:112 +msgid "Auto hide" +msgstr "Skjul automatisk" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:113 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:117 +#: data/dconf/org.freedesktop.ibus.gschema.xml:121 +msgid "Language panel position" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:125 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:126 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:130 +msgid "The milliseconds to show property panel" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:131 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:135 +msgid "Orientation of lookup table" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:136 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:140 +#: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 +#: setup/setup.ui:475 +msgid "Show icon on system tray" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:145 +msgid "Show input method name" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 +msgid "Show input method name on language bar" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:150 +msgid "RGBA value of XKB icon" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:151 +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form 'rgba(r," +"g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 to 255 or " +"percentage values in the range 0% to 100%, and 'a' is a floating point value " +"in the range 0 to 1 of the alpha." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:155 +msgid "The milliseconds to show the panel icon for a property" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:156 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:160 +msgid "Use custom font" +msgstr "Bruk egendefinert skrift" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:161 +msgid "Use custom font name for language panel" +msgstr "Egendefinert skriftnavn i språkpanelet" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:165 +#: data/dconf/org.freedesktop.ibus.gschema.xml:183 +msgid "Custom font" +msgstr "Egendefinert skrift" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:166 +msgid "Custom font name for language panel" +msgstr "Egendefinert skriftnavn for språkpanelet" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:173 +msgid "Unicode shortcut keys for gtk_accelerator_parse" +msgstr "Unicode-snarveistaster for gtk_accelerator_parse" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:174 +msgid "The shortcut keys for turning Unicode typing on or off" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:178 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:179 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:184 +#, fuzzy +#| msgid "Custom font name for language panel" +msgid "Custom font name for emoji characters on emoji dialog" +msgstr "Egendefinert skriftnavn for språkpanelet" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:188 +msgid "Default language for emoji dictionary" +msgstr "Forvalgt språk for emoji-ordbok" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:189 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:193 +msgid "favorite emoji list on emoji dialog" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:194 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:198 +msgid "favorite emoji annotation list on emoji dialog" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:199 +msgid "You can assign an annotation for a favorite emoji in this list." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:203 +msgid "Whether emoji annotations can be match partially or not" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:204 +msgid "" +"Whether emoji annotations can be matched with a partial string instead of " +"the exact match or not." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:208 +msgid "Match emoji annotations with the specified length" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:209 +msgid "" +"Match emoji annotations partially with more than the specified number of " +"characters instead of the exact match." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:213 +msgid "Choose a condition to match emoji annotations partially" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:214 +msgid "" +"Choose one of the following conditions to match emoji annotations partially: " +"0 == Prefix match, 1 == Suffix match, 2 == Containing match" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:218 +msgid "Load the emoji data at the time of startup" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:219 +msgid "" +"Load the emoji data at the time of startup if true. About 10MB memory is " +"needed to load the data. Load the emoji data when open the emoji dialog at " +"the beginning if false." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:223 +msgid "Load the Unicode data at the time of startup" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:224 +msgid "" +"Load the Unicode data at the time of startup if true. About 15MB memory is " +"needed to load the data. Load the Unicode data when open the emoji dialog at " +"the beginning if false. The Unicode data is always loaded after the emoji " +"data is loaded even if true." +msgstr "" + +#: ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "" +"Opphavsrett © 2007-2010 Peng Huang\n" +"Opphavsrett © 2007-2010 Red Hat, Inc." + +#: ibus/lang.py:41 src/ibusutil.c:209 +msgid "Other" +msgstr "Annet" + +#: setup/emojilang.py:67 +#, fuzzy +#| msgid "Select an input method" +msgid "Select a language" +msgstr "Velg en inndatametode" + +#: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 +#: setup/main.py:560 +msgid "_Cancel" +msgstr "_Avbryt" + +#: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 +msgid "_OK" +msgstr "_OK" + +#: setup/emojilang.py:235 setup/enginedialog.py:205 +msgid "More…" +msgstr "Mer…" + +#: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 +msgid "About" +msgstr "Om" + +#: setup/engineabout.py:40 setup/setup.ui:1401 +msgid "_Close" +msgstr "_Lukk" + +#: setup/engineabout.py:72 +#, python-format +msgid "Language: %s\n" +msgstr "Språk: %s\n" + +#: setup/engineabout.py:75 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "Tastaturutforming: %s\n" + +#: setup/engineabout.py:78 +#, python-format +msgid "Author: %s\n" +msgstr "Forfatter: %s\n" + +#: setup/engineabout.py:81 +msgid "Description:\n" +msgstr "Beskrivelse: \n" + +#: setup/enginecombobox.py:139 setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "Velg en inndatametode" + +#. add button +#: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 +msgid "_Add" +msgstr "_Legg til" + +#. create im name & icon column +#: setup/enginetreeview.py:69 setup/setup.ui:838 +msgid "Input Method" +msgstr "Inndatametode" + +#: setup/enginetreeview.py:96 +msgid "Kbd" +msgstr "Tastatur" + +#: setup/ibus-setup.desktop:3 setup/setup.ui:69 +msgid "IBus Preferences" +msgstr "Innstillinger for IBus" + +#: setup/ibus-setup.desktop:4 +msgid "Set IBus Preferences" +msgstr "Sett innstillinger for IBus" + +#: setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "Tastatursnarveier" + +#: setup/keyboardshortcut.py:67 +msgid "Key code:" +msgstr "Tastekode:" + +#: setup/keyboardshortcut.py:82 +msgid "Modifiers:" +msgstr "Endringstaster:" + +#. apply button +#: setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "_Bruk" + +#. delete button +#: setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "_Slett" + +#: setup/keyboardshortcut.py:252 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "" +"Trykk en tast (eller en tastekombinasjon)\n" +"Dialogen vil lukkes når tasten slippes." + +#: setup/keyboardshortcut.py:255 +msgid "Please press a key (or a key combination)" +msgstr "Trykk en tast (eller en tastekombinasjon)" + +#: setup/main.py:121 setup/main.py:588 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "Bruk snarvei med shift for å bytte til forrige inndatametode" + +#: setup/main.py:515 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "" + +#: setup/main.py:536 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "" + +#. Translators: %d == 5 currently +#: setup/main.py:550 +#, python-format +msgid "IBus daemon could not be started in %d seconds" +msgstr "" + +#: setup/main.py:562 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "Velg tastatursnarvei for %s" + +#. Translators: Title of the window +#: setup/main.py:564 +msgid "switching input methods" +msgstr "" + +#: setup/setup.ui:11 +msgid "Horizontal" +msgstr "Vannrett" + +#: setup/setup.ui:14 +msgid "Vertical" +msgstr "Loddrett" + +#: setup/setup.ui:25 +msgid "Top left corner" +msgstr "" + +#: setup/setup.ui:28 +msgid "Top right corner" +msgstr "" + +#: setup/setup.ui:31 +msgid "Bottom left corner" +msgstr "Nederste venstre hjørne" + +#: setup/setup.ui:34 +msgid "Bottom right corner" +msgstr "Nederste høyre hjørne" + +#: setup/setup.ui:37 +msgid "Custom" +msgstr "Egendefinert" + +#: setup/setup.ui:48 +msgid "Do not show" +msgstr "Ikke vis" + +#: setup/setup.ui:51 +msgid "Hide automatically" +msgstr "Skjul automatisk" + +#: setup/setup.ui:54 +msgid "Always" +msgstr "Alltid" + +#: setup/setup.ui:113 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "" + +#: setup/setup.ui:115 +msgid "Next input method:" +msgstr "Neste inndatametode:" + +#: setup/setup.ui:127 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "" + +#: setup/setup.ui:129 +msgid "Previous input method:" +msgstr "Forrige inndatametode:" + +#: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 +#: setup/setup.ui:903 setup/setup.ui:957 +msgid "..." +msgstr "…" + +#: setup/setup.ui:226 +msgid "Enable or disable:" +msgstr "Slå på eller av:" + +#: setup/setup.ui:238 +msgid "Enable:" +msgstr "Slå på:" + +#: setup/setup.ui:291 +msgid "Disable:" +msgstr "Slå av:" + +#: setup/setup.ui:345 setup/setup.ui:983 +msgid "Keyboard Shortcuts" +msgstr "Tastatursnarveier" + +#: setup/setup.ui:374 +msgid "Set the orientation of candidates in lookup table" +msgstr "" + +#: setup/setup.ui:376 +msgid "Candidates orientation:" +msgstr "" + +#: setup/setup.ui:407 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "" + +#: setup/setup.ui:409 +msgid "Show property panel:" +msgstr "Vis egenskapspanel:" + +#: setup/setup.ui:423 +msgid "Language panel position:" +msgstr "Posisjon for språkpanel:" + +#: setup/setup.ui:494 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "" + +#: setup/setup.ui:508 +msgid "Embed preedit text in application window" +msgstr "" + +#: setup/setup.ui:513 +msgid "Embed the preedit text of input method in the application window" +msgstr "" + +#: setup/setup.ui:527 +msgid "Use custom font:" +msgstr "Bruk egendefinert skrift:" + +#: setup/setup.ui:562 setup/setup.ui:1156 +msgid "Font and Style" +msgstr "Skrift og stil" + +#: setup/setup.ui:579 +msgid "General" +msgstr "Generelt" + +#: setup/setup.ui:671 +msgid "Add the selected input method into the enabled input methods" +msgstr "" + +#: setup/setup.ui:682 +msgid "_Remove" +msgstr "Fje_rn" + +#: setup/setup.ui:689 +msgid "Remove the selected input method from the enabled input methods" +msgstr "" + +#: setup/setup.ui:700 +msgid "_Up" +msgstr "_Opp" + +#: setup/setup.ui:707 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "" + +#: setup/setup.ui:718 +msgid "_Down" +msgstr "Ne_d" + +#: setup/setup.ui:725 +msgid "Move down the selected input method in the enabled input methods" +msgstr "" + +#: setup/setup.ui:736 +msgid "_About" +msgstr "_Om" + +#: setup/setup.ui:743 +msgid "Show information of the selected input method" +msgstr "Vis info om valgt inndatametode" + +#: setup/setup.ui:754 +msgid "_Preferences" +msgstr "_Innstillinger" + +#: setup/setup.ui:761 +msgid "Show setup of the selected input method" +msgstr "" + +#: setup/setup.ui:812 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" + +#: setup/setup.ui:873 +msgid "" +"The shortcut keys to enable conversions of emoji annotations or Unicode names" +msgstr "" + +#: setup/setup.ui:875 +msgid "Emoji annotation:" +msgstr "" + +#: setup/setup.ui:927 +msgid "The shortcut keys to enable Unicode code point conversions" +msgstr "" + +#: setup/setup.ui:929 +msgid "Unicode code point:" +msgstr "" + +#: setup/setup.ui:1013 +msgid "Set a font of Unicode candidates on the emoji dialog" +msgstr "" + +#: setup/setup.ui:1015 +#, fuzzy +#| msgid "Use custom font:" +msgid "Unicode font:" +msgstr "Bruk egendefinert skrift:" + +#: setup/setup.ui:1038 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "" + +#: setup/setup.ui:1040 +msgid "Emoji annotation language:" +msgstr "" + +#: setup/setup.ui:1062 +msgid "" +"Match emoji annotations partially with the following condition and more than " +"the number of characters:" +msgstr "" + +#: setup/setup.ui:1067 +msgid "" +"If emoji annotations can be matched with a partial string instead of the " +"exact match" +msgstr "" + +#: setup/setup.ui:1101 +msgid "Prefix match" +msgstr "" + +#: setup/setup.ui:1115 +msgid "Suffix match" +msgstr "" + +#: setup/setup.ui:1130 +msgid "Containing match" +msgstr "" + +#: setup/setup.ui:1176 +msgid "Emoji" +msgstr "Emoji" + +#: setup/setup.ui:1230 +msgid "Keyboard Layout" +msgstr "Tastaturutforming" + +#: setup/setup.ui:1278 +msgid "Global input method settings" +msgstr "Globale innstillinger for inndatametode" + +#: setup/setup.ui:1298 +msgid "Advanced" +msgstr "Avansert" + +#: setup/setup.ui:1317 +msgid "" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" +msgstr "" +"IBus\n" +"Den intelligente inndatabussen\n" +"Hjemmeside: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" + +#: setup/setup.ui:1341 +msgid "Start ibus on login" +msgstr "Start ibus ved pålogging" + +#: setup/setup.ui:1358 +msgid "Startup" +msgstr "Oppstart" + +#: src/ibusemojigen.h:30 +msgid "Activities" +msgstr "Aktiviteter" + +#: src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "Dyr og natur" + +#: src/ibusemojigen.h:32 +msgid "Component" +msgstr "Komponent" + +#: src/ibusemojigen.h:33 +msgid "Flags" +msgstr "Flagg" + +#: src/ibusemojigen.h:34 +msgid "Food & Drink" +msgstr "Mat og drikke" + +#: src/ibusemojigen.h:35 +msgid "Objects" +msgstr "Objekter" + +#: src/ibusemojigen.h:36 +msgid "People & Body" +msgstr "Folk og kropp" + +#: src/ibusemojigen.h:37 +msgid "Smileys & Emotion" +msgstr "Smilefjes og føleri" + +#: src/ibusemojigen.h:38 +msgid "Symbols" +msgstr "Symboler" + +#: src/ibusemojigen.h:39 +msgid "Travel & Places" +msgstr "Reiser og plasser" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:33 +msgid "Basic Latin" +msgstr "Grunnleggende latinsk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:37 +msgid "Latin-1 Supplement" +msgstr "Latinsk-1-tillegg" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:41 +msgid "Latin Extended-A" +msgstr "Latinsk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:45 +msgid "Latin Extended-B" +msgstr "Latinsk utvividet-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:49 +msgid "IPA Extensions" +msgstr "IPA-utvidelser" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:53 +msgid "Spacing Modifier Letters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:57 +msgid "Combining Diacritical Marks" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:61 +msgid "Greek and Coptic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:65 +msgid "Cyrillic" +msgstr "Kyrillisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:69 +msgid "Cyrillic Supplement" +msgstr "Kyrillisk-utvidelse" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:73 +msgid "Armenian" +msgstr "Armensk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:77 +msgid "Hebrew" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:81 +msgid "Arabic" +msgstr "Arabisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:85 +msgid "Syriac" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:89 +msgid "Arabic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:93 +msgid "Thaana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:97 +msgid "NKo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:101 +msgid "Samaritan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:105 +msgid "Mandaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:109 +msgid "Syriac Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:113 +msgid "Arabic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:117 +msgid "Devanagari" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:121 +msgid "Bengali" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:125 +msgid "Gurmukhi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:129 +msgid "Gujarati" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:133 +msgid "Oriya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:137 +msgid "Tamil" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:141 +msgid "Telugu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:145 +msgid "Kannada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:149 +msgid "Malayalam" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:153 +msgid "Sinhala" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:157 +msgid "Thai" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:161 +msgid "Lao" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:165 +msgid "Tibetan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:169 +msgid "Myanmar" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:173 +msgid "Georgian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:177 +msgid "Hangul Jamo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:181 +msgid "Ethiopic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:185 +msgid "Ethiopic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:189 +msgid "Cherokee" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:193 +msgid "Unified Canadian Aboriginal Syllabics" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:197 +msgid "Ogham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:201 +msgid "Runic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:205 +msgid "Tagalog" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:209 +msgid "Hanunoo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:213 +msgid "Buhid" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:217 +msgid "Tagbanwa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:221 +msgid "Khmer" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:225 +msgid "Mongolian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:229 +msgid "Unified Canadian Aboriginal Syllabics Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:233 +msgid "Limbu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:237 +msgid "Tai Le" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:241 +msgid "New Tai Lue" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:245 +msgid "Khmer Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:249 +msgid "Buginese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:253 +msgid "Tai Tham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:257 +msgid "Combining Diacritical Marks Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:261 +msgid "Balinese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:265 +msgid "Sundanese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:269 +msgid "Batak" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:273 +msgid "Lepcha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:277 +msgid "Ol Chiki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:281 +msgid "Cyrillic Extended-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:285 +msgid "Georgian Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:289 +msgid "Sundanese Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:293 +msgid "Vedic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:297 +msgid "Phonetic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:301 +msgid "Phonetic Extensions Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:305 +msgid "Combining Diacritical Marks Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:309 +msgid "Latin Extended Additional" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:313 +msgid "Greek Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:317 +msgid "General Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:321 +msgid "Superscripts and Subscripts" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:325 +msgid "Currency Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:329 +msgid "Combining Diacritical Marks for Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:333 +msgid "Letterlike Symbols" +msgstr "Bokstavlignende symboler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:337 +msgid "Number Forms" +msgstr "Tallformer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:341 +msgid "Arrows" +msgstr "Piler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:345 +msgid "Mathematical Operators" +msgstr "Matematiske operatorer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:349 +msgid "Miscellaneous Technical" +msgstr "Ymse teknisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:353 +msgid "Control Pictures" +msgstr "Kontrollbilder" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:357 +msgid "Optical Character Recognition" +msgstr "Optisk tegngjenkjennelse" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:361 +msgid "Enclosed Alphanumerics" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:365 +msgid "Box Drawing" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:369 +msgid "Block Elements" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:373 +msgid "Geometric Shapes" +msgstr "Geometriske former" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:377 +msgid "Miscellaneous Symbols" +msgstr "Ymse symboler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:381 +msgid "Dingbats" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:385 +msgid "Miscellaneous Mathematical Symbols-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:389 +msgid "Supplemental Arrows-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:393 +msgid "Braille Patterns" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:397 +msgid "Supplemental Arrows-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:401 +msgid "Miscellaneous Mathematical Symbols-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:405 +msgid "Supplemental Mathematical Operators" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:409 +msgid "Miscellaneous Symbols and Arrows" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:413 +msgid "Glagolitic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:417 +msgid "Latin Extended-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:421 +msgid "Coptic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:425 +msgid "Georgian Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:429 +msgid "Tifinagh" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:433 +msgid "Ethiopic Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:437 +msgid "Cyrillic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:441 +msgid "Supplemental Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:445 +msgid "CJK Radicals Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:449 +msgid "Kangxi Radicals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:453 +msgid "Ideographic Description Characters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:457 +msgid "CJK Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:461 +msgid "Hiragana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:465 +msgid "Katakana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:469 +msgid "Bopomofo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:473 +msgid "Hangul Compatibility Jamo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:477 +msgid "Kanbun" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:481 +msgid "Bopomofo Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:485 +msgid "CJK Strokes" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:489 +msgid "Katakana Phonetic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:493 +msgid "Enclosed CJK Letters and Months" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:497 +msgid "CJK Compatibility" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:501 +msgid "CJK Unified Ideographs Extension A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:505 +msgid "Yijing Hexagram Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:509 +msgid "CJK Unified Ideographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:513 +msgid "Yi Syllables" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:517 +msgid "Yi Radicals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:521 +msgid "Lisu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:525 +msgid "Vai" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:529 +msgid "Cyrillic Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:533 +msgid "Bamum" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:537 +msgid "Modifier Tone Letters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:541 +msgid "Latin Extended-D" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:545 +msgid "Syloti Nagri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:549 +msgid "Common Indic Number Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:553 +msgid "Phags-pa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:557 +msgid "Saurashtra" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:561 +msgid "Devanagari Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:565 +msgid "Kayah Li" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:569 +msgid "Rejang" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:573 +msgid "Hangul Jamo Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:577 +msgid "Javanese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:581 +msgid "Myanmar Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:585 +msgid "Cham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:589 +msgid "Myanmar Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:593 +msgid "Tai Viet" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:597 +msgid "Meetei Mayek Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:601 +msgid "Ethiopic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:605 +msgid "Latin Extended-E" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:609 +msgid "Cherokee Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:613 +msgid "Meetei Mayek" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:617 +msgid "Hangul Syllables" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:621 +msgid "Hangul Jamo Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:625 +msgid "High Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:629 +msgid "High Private Use Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:633 +msgid "Low Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:637 +msgid "Private Use Area" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:641 +msgid "CJK Compatibility Ideographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:645 +msgid "Alphabetic Presentation Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:649 +msgid "Arabic Presentation Forms-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:653 +msgid "Variation Selectors" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:657 +#, fuzzy +#| msgid "Vertical" +msgid "Vertical Forms" +msgstr "Vertikal" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:661 +msgid "Combining Half Marks" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:665 +msgid "CJK Compatibility Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:669 +msgid "Small Form Variants" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:673 +msgid "Arabic Presentation Forms-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:677 +msgid "Halfwidth and Fullwidth Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:681 +msgid "Specials" +msgstr "Spesialtegn" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:685 +msgid "Linear B Syllabary" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:689 +msgid "Linear B Ideograms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:693 +msgid "Aegean Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:697 +msgid "Ancient Greek Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:701 +msgid "Ancient Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:705 +msgid "Phaistos Disc" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:709 +msgid "Lycian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:713 +msgid "Carian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:717 +msgid "Coptic Epact Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:721 +msgid "Old Italic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:725 +msgid "Gothic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:729 +msgid "Old Permic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:733 +msgid "Ugaritic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:737 +msgid "Old Persian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:741 +msgid "Deseret" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:745 +msgid "Shavian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:749 +msgid "Osmanya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:753 +msgid "Osage" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:757 +msgid "Elbasan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:761 +msgid "Caucasian Albanian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:765 +msgid "Linear A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:769 +msgid "Cypriot Syllabary" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:773 +msgid "Imperial Aramaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:777 +msgid "Palmyrene" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:781 +msgid "Nabataean" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:785 +msgid "Hatran" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:789 +msgid "Phoenician" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:793 +msgid "Lydian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:797 +msgid "Meroitic Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:801 +msgid "Meroitic Cursive" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:805 +msgid "Kharoshthi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:809 +msgid "Old South Arabian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:813 +msgid "Old North Arabian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:817 +msgid "Manichaean" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:821 +msgid "Avestan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:825 +msgid "Inscriptional Parthian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:829 +msgid "Inscriptional Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:833 +msgid "Psalter Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:837 +msgid "Old Turkic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:841 +msgid "Old Hungarian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:845 +msgid "Hanifi Rohingya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:849 +msgid "Rumi Numeral Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:853 +msgid "Old Sogdian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:857 +msgid "Sogdian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:861 +msgid "Elymaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:865 +msgid "Brahmi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:869 +msgid "Kaithi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:873 +msgid "Sora Sompeng" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:877 +msgid "Chakma" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:881 +msgid "Mahajani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:885 +msgid "Sharada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:889 +msgid "Sinhala Archaic Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:893 +msgid "Khojki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:897 +msgid "Multani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:901 +msgid "Khudawadi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:905 +msgid "Grantha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:909 +msgid "Newa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:913 +msgid "Tirhuta" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:917 +msgid "Siddham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:921 +msgid "Modi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:925 +msgid "Mongolian Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:929 +msgid "Takri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:933 +msgid "Ahom" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:937 +msgid "Dogra" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:941 +msgid "Warang Citi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:945 +msgid "Nandinagari" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:949 +msgid "Zanabazar Square" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:953 +msgid "Soyombo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:957 +msgid "Pau Cin Hau" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:961 +msgid "Bhaiksuki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:965 +msgid "Marchen" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:969 +msgid "Masaram Gondi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:973 +msgid "Gunjala Gondi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:977 +msgid "Makasar" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:981 +msgid "Tamil Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:985 +msgid "Cuneiform" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:989 +msgid "Cuneiform Numbers and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:993 +msgid "Early Dynastic Cuneiform" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:997 +msgid "Egyptian Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1001 +msgid "Egyptian Hieroglyph Format Controls" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1005 +msgid "Anatolian Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1009 +msgid "Bamum Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1013 +msgid "Mro" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1017 +msgid "Bassa Vah" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1021 +msgid "Pahawh Hmong" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1025 +msgid "Medefaidrin" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1029 +msgid "Miao" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1033 +msgid "Ideographic Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1037 +msgid "Tangut" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1041 +msgid "Tangut Components" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1045 +msgid "Kana Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1049 +msgid "Kana Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1053 +msgid "Small Kana Extension" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1057 +msgid "Nushu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1061 +msgid "Duployan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1065 +msgid "Shorthand Format Controls" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1069 +msgid "Byzantine Musical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1073 +msgid "Musical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1077 +msgid "Ancient Greek Musical Notation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1081 +msgid "Mayan Numerals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1085 +msgid "Tai Xuan Jing Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1089 +msgid "Counting Rod Numerals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1093 +msgid "Mathematical Alphanumeric Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1097 +msgid "Sutton SignWriting" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1101 +msgid "Glagolitic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1105 +msgid "Nyiakeng Puachue Hmong" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1109 +msgid "Wancho" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1113 +msgid "Mende Kikakui" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1117 +msgid "Adlam" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1121 +msgid "Indic Siyaq Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1125 +msgid "Ottoman Siyaq Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1129 +msgid "Arabic Mathematical Alphabetic Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1133 +msgid "Mahjong Tiles" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1137 +msgid "Domino Tiles" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1141 +msgid "Playing Cards" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1145 +msgid "Enclosed Alphanumeric Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1149 +msgid "Enclosed Ideographic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1153 +msgid "Miscellaneous Symbols and Pictographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1157 +msgid "Emoticons" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1161 +msgid "Ornamental Dingbats" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1165 +msgid "Transport and Map Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1169 +msgid "Alchemical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1173 +msgid "Geometric Shapes Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1177 +msgid "Supplemental Arrows-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1181 +msgid "Supplemental Symbols and Pictographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1185 +msgid "Chess Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1189 +msgid "Symbols and Pictographs Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1193 +msgid "CJK Unified Ideographs Extension B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1197 +msgid "CJK Unified Ideographs Extension C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1201 +msgid "CJK Unified Ideographs Extension D" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1205 +msgid "CJK Unified Ideographs Extension E" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1209 +msgid "CJK Unified Ideographs Extension F" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1213 +msgid "CJK Compatibility Ideographs Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1217 +msgid "Tags" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1221 +msgid "Variation Selectors Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1225 +msgid "Supplementary Private Use Area-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1229 +msgid "Supplementary Private Use Area-B" +msgstr "" + +#: tools/main.vala:51 +msgid "List engine name only" +msgstr "" + +#: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 +msgid "Can't connect to IBus.\n" +msgstr "Kan ikke koble til IBus.\n" + +#: tools/main.vala:93 +#, c-format +msgid "language: %s\n" +msgstr "språk: %s\n" + +#: tools/main.vala:161 +msgid "No engine is set.\n" +msgstr "Ingen motor er angitt.\n" + +#: tools/main.vala:169 +msgid "Set global engine failed.\n" +msgstr "" + +#: tools/main.vala:174 +msgid "Get global engine failed.\n" +msgstr "" + +#: tools/main.vala:217 +msgid "Read the system registry cache." +msgstr "" + +#: tools/main.vala:219 +msgid "Read the registry cache FILE." +msgstr "" + +#: tools/main.vala:237 tools/main.vala:242 +msgid "The registry cache is invalid.\n" +msgstr "" + +#: tools/main.vala:257 +msgid "Write the system registry cache." +msgstr "" + +#: tools/main.vala:259 +msgid "Write the registry cache FILE." +msgstr "" + +#: tools/main.vala:295 +msgid "" +"Use engine schema paths instead of ibus core, which can be comma-separated " +"values." +msgstr "" + +#: tools/main.vala:381 +msgid "Resetting…" +msgstr "Nullstiller…" + +#: tools/main.vala:399 +msgid "Done" +msgstr "Ferdig" + +#: tools/main.vala:444 +msgid "Set or get engine" +msgstr "" + +#: tools/main.vala:445 +msgid "Exit ibus-daemon" +msgstr "" + +#: tools/main.vala:446 +msgid "Show available engines" +msgstr "Vis tilgjengelige motorer" + +#: tools/main.vala:447 +msgid "(Not implemented)" +msgstr "(Ikke implementert)" + +#: tools/main.vala:448 +msgid "Restart ibus-daemon" +msgstr "" + +#: tools/main.vala:449 +msgid "Show version" +msgstr "Vis versjon" + +#: tools/main.vala:450 +msgid "Show the content of registry cache" +msgstr "" + +#: tools/main.vala:451 +msgid "Create registry cache" +msgstr "" + +#: tools/main.vala:452 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "" + +#: tools/main.vala:453 +msgid "Show the configuration values" +msgstr "" + +#: tools/main.vala:454 +msgid "Reset the configuration values" +msgstr "" + +#: tools/main.vala:456 +msgid "Save emoji on dialog to clipboard " +msgstr "" + +#: tools/main.vala:458 +msgid "Show this information" +msgstr "Vis denne informasjonen" + +#: tools/main.vala:464 +#, c-format +msgid "" +"Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "" +"Bruk: %s KOMMANDO [KOMMANDOVALG…]\n" +"\n" + +#: tools/main.vala:465 +msgid "Commands:\n" +msgstr "Kommandoer:\n" + +#: tools/main.vala:494 +#, c-format +msgid "%s is unknown command!\n" +msgstr "%s er en ukjent kommando!\n" + +#: ui/gtk3/emojier.vala:233 +msgid "Favorites" +msgstr "Favoritter" + +#: ui/gtk3/emojier.vala:234 +#, fuzzy +#| msgid "Other" +msgid "Others" +msgstr "Annet" + +#: ui/gtk3/emojier.vala:235 +msgid "Open Unicode choice" +msgstr "" + +#: ui/gtk3/emojier.vala:994 +msgid "Bring back emoji choice" +msgstr "" + +#: ui/gtk3/emojier.vala:1096 +msgid "Page Down" +msgstr "" + +#: ui/gtk3/emojier.vala:1107 +msgid "Page Up" +msgstr "" + +#: ui/gtk3/emojier.vala:1110 +msgid "Show emoji variants" +msgstr "" + +#: ui/gtk3/emojier.vala:1111 +#, fuzzy +#| msgid "_Close" +msgid "Close" +msgstr "_Lukk" + +#: ui/gtk3/emojier.vala:1117 +msgid "Menu" +msgstr "Meny" + +#: ui/gtk3/emojier.vala:1128 +msgid "Click to view a warning message" +msgstr "" + +#: ui/gtk3/emojier.vala:1172 +msgid "Loading a Unicode dictionary:" +msgstr "" + +#: ui/gtk3/emojier.vala:1418 +#, c-format +msgid "Code point: %s" +msgstr "" + +#: ui/gtk3/emojier.vala:1424 +msgid "Has emoji variants" +msgstr "" + +#: ui/gtk3/emojier.vala:1591 ui/gtk3/emojier.vala:1604 +#, fuzzy, c-format +#| msgid "Description:\n" +msgid "Description: %s" +msgstr "Beskrivelse: \n" + +#: ui/gtk3/emojier.vala:1591 +msgid "None" +msgstr "" + +#: ui/gtk3/emojier.vala:1615 +#, c-format +msgid "Annotations: %s" +msgstr "" + +#: ui/gtk3/emojier.vala:1641 +#, c-format +msgid "Name: %s" +msgstr "Navn: %s" + +#: ui/gtk3/emojier.vala:1649 +#, c-format +msgid "Alias: %s" +msgstr "" + +#: ui/gtk3/emojier.vala:2139 ui/gtk3/ibus-extension-gtk3.desktop.in:3 +#: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 +msgid "Emoji Choice" +msgstr "" + +#: ui/gtk3/emojier.vala:2141 +msgid "Unicode Choice" +msgstr "" + +#: ui/gtk3/emojier.vala:2429 +msgid "" +"Failed to get the current text application. Please re-focus your " +"application. E.g. Press Esc key several times to release the emoji typing " +"mode, click your desktop and click your text application again." +msgstr "" + +#: ui/gtk3/emojierapp.vala:58 +msgid "Canceled to choose an emoji." +msgstr "" + +#: ui/gtk3/emojierapp.vala:93 +msgid "Copied an emoji to your clipboard." +msgstr "" + +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ui/gtk3/emojierapp.vala:114 +msgid "\"FONT\" for emoji characters on emoji dialog" +msgstr "" + +#: ui/gtk3/emojierapp.vala:115 +msgid "FONT" +msgstr "SKRIFT" + +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ui/gtk3/emojierapp.vala:120 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" +msgstr "" + +#: ui/gtk3/emojierapp.vala:121 +msgid "LANG" +msgstr "SPRÅK" + +#: ui/gtk3/emojierapp.vala:123 +msgid "Emoji annotations can be match partially" +msgstr "" + +#: ui/gtk3/emojierapp.vala:127 +msgid "Match with the length of the specified integer" +msgstr "" + +#: ui/gtk3/emojierapp.vala:131 +msgid "Match with the condition of the specified integer" +msgstr "" + +#: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 +#, fuzzy +#| msgid "IBus Preferences" +msgid "IBus Panel" +msgstr "Brukervalg for IBus" + +#: ui/gtk3/panel.vala:1095 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus er en intelligent inndatabuss for Linux/Unix." + +#: ui/gtk3/panel.vala:1099 +msgid "translator-credits" +msgstr "Kjartan Maraas " + +#: ui/gtk3/panel.vala:1118 +msgid "Preferences" +msgstr "Brukervalg" + +#: ui/gtk3/panel.vala:1144 +msgid "Restart" +msgstr "Start på nytt" + +#: ui/gtk3/panel.vala:1148 +msgid "Quit" +msgstr "Avslutt" + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 +msgid "default:LTR" +msgstr "default:LTR" diff --git a/po/nl.po b/po/nl.po index 43b4388d4..aa5955d22 100644 --- a/po/nl.po +++ b/po/nl.po @@ -1,555 +1,3313 @@ -# translation of nl.po to Dutch # Dutch translation of ibus. +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2019 Takao Fujiwara # This file is distributed under the same license as the ibus package. # -# Geert Warrink , 2011. +# Translators: +# Geert Warrink , 2011-2014 +# Geert Warrink , 2015. #zanata +# fujiwara , 2015. #zanata +# Geert Warrink , 2017. #zanata +# fujiwara , 2017. #zanata +# Geert Warrink , 2018. #zanata +# fujiwara , 2018. #zanata +# Geert Warrink , 2019. #zanata msgid "" msgstr "" -"Project-Id-Version: IBus\n" -"Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/list\n" -"POT-Creation-Date: 2011-05-13 11:21+0900\n" -"PO-Revision-Date: 2011-05-13 15:18+0000\n" -"Last-Translator: warrink \n" -"Language-Team: Dutch (http://www.transifex.net/projects/p/fedora/team/nl/)\n" +"Project-Id-Version: ibus 1.5.20\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2019-04-16 17:33+0900\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2019-04-16 04:49+0000\n" +"Last-Translator: Geert Warrink \n" +"Language-Team: Dutch \n" "Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Zanata 4.6.2\n" +#. Translators: Here “Preload” is a verb +#: data/dconf/org.freedesktop.ibus.gschema.xml:11 +msgid "Preload engines" +msgstr "Engines voor-laden" + +#. Translators: Tooltip for the button “Preload Engines” +#: data/dconf/org.freedesktop.ibus.gschema.xml:13 +msgid "Preload engines during ibus starts up" +msgstr "Engines voor-laden tijdens opstarten van ibus" -#: ../bus/ibus.desktop.in.h:1 -msgid "IBus" -msgstr "IBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:17 +msgid "Engines order" +msgstr "Machine volgorde" -#: ../bus/ibus.desktop.in.h:2 -msgid "Input Method Framework" -msgstr "Invoer methode kader" +#: data/dconf/org.freedesktop.ibus.gschema.xml:18 +msgid "Saved engines order in input method list" +msgstr "Opgeslagen machine volgorde in invoermethode lijst" -#: ../bus/ibus.desktop.in.h:3 -msgid "Start IBus Input Method Framework" -msgstr "Start IBus invoer methode kader" +#: data/dconf/org.freedesktop.ibus.gschema.xml:22 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "Pop-up vertraging milliseconden voor IME omschakelvenster" -#: ../ibus/_config.py.in:40 +#: data/dconf/org.freedesktop.ibus.gschema.xml:23 msgid "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +"Set popup delay milliseconds to show IME switcher window. The default is 400." +" 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not show " +"the window and switch prev/next engines." msgstr "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +"Stel pop-up vertraging in op milliseconden om het IME omschakelvenster te " +"tonen. De standaard is 400. 0 = Ton het venster onmiddellijk. 0 < Vertraging " +"in milliseconden. 0 > Laat het venster niet zien en schakel vorige/volgende " +"engine om." -#: ../ibus/lang.py:41 -msgid "Other" -msgstr "Andere" +#: data/dconf/org.freedesktop.ibus.gschema.xml:27 +msgid "Saved version number" +msgstr "Versienummer opgeslagen" -#: ../ui/gtk/candidatepanel.py:264 -msgid "Previous page" -msgstr "Vorige pagina" +#: data/dconf/org.freedesktop.ibus.gschema.xml:28 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" +"Het opgeslagen versienummer zal gebruikt worden voor het checken van het " +"verschil tussen de versie van de vorige geïnstalleerde ibus en die van de " +"huidige ibus. " -#: ../ui/gtk/candidatepanel.py:269 -msgid "Next page" -msgstr "Volgende pagina" +#: data/dconf/org.freedesktop.ibus.gschema.xml:32 +msgid "Latin layouts which have no ASCII" +msgstr "Latin indelingen hebben geen ASCII" -#: ../ui/gtk/main.py:62 -msgid "" -"Some input methods have been installed, removed or updated. Please restart " -"ibus input platform." +#: data/dconf/org.freedesktop.ibus.gschema.xml:33 +msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" -"Sommige invoermethoden zijn geïnstalleerd, verwijderd of bijgewerkt. Start " -"ibus invoer platform opnieuw op." +"US indeling is toegevoegd aan de Latin indelingen. variant kan weggelaten " +"worden." -#: ../ui/gtk/main.py:66 -msgid "Restart Now" -msgstr "Nu opnieuw opstarten" +#: data/dconf/org.freedesktop.ibus.gschema.xml:37 +msgid "Use xmodmap" +msgstr "Gebruik xmodmap" -#: ../ui/gtk/main.py:67 -msgid "Later" -msgstr "Later" +#: data/dconf/org.freedesktop.ibus.gschema.xml:38 +msgid "" +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." +msgstr "" +"Voer xmodmap uit als .xmodmap of .Xmodmap bestaat als ibus engines worden " +"omgeschakeld." -#: ../ui/gtk/panel.py:116 -msgid "IBus Panel" -msgstr "IBus paneel" +#: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 +msgid "Use system keyboard layout" +msgstr "Gebruik systeem toetsenbordindeling" -#: ../ui/gtk/panel.py:122 -msgid "IBus input method framework" -msgstr "IBus invoermethode kader" +#: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 +msgid "Use system keyboard (XKB) layout" +msgstr "Gebruik systeem toetsenbord (XKB) indeling" -#: ../ui/gtk/panel.py:352 -msgid "Restart" -msgstr "Opnieuw starten" +#: data/dconf/org.freedesktop.ibus.gschema.xml:47 +msgid "Embed Preedit Text" +msgstr "Voeg pre-edit tekst in" -#: ../ui/gtk/panel.py:439 -msgid "Turn off input method" -msgstr "Schakel invoer methode uit" +#: data/dconf/org.freedesktop.ibus.gschema.xml:48 +msgid "Embed Preedit Text in Application Window" +msgstr "Voeg pre-edit tekst in in toepassingsvenster" -#: ../ui/gtk/panel.py:478 -msgid "No input window" -msgstr "Geen input venster" +#: data/dconf/org.freedesktop.ibus.gschema.xml:52 +msgid "Use global input method" +msgstr "Gebruik globale invoermethode" -#: ../ui/gtk/panel.py:509 -msgid "IBus is an intelligent input bus for Linux/Unix." -msgstr "IBus is een intelligente invoer bus voor Linux/Unix." +#: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 +msgid "Share the same input method among all applications" +msgstr "Deel dezelfde input-methode voor alle toepassingen" -#: ../ui/gtk/panel.py:513 -msgid "translator-credits" -msgstr "Geert Warrink" +#: data/dconf/org.freedesktop.ibus.gschema.xml:57 +msgid "Enable input method by default" +msgstr "Zet invoer-methode standaard aan" -#: ../ui/gtk/languagebar.py:106 -msgid "About the input method" -msgstr "Over de invoer methode" +#: data/dconf/org.freedesktop.ibus.gschema.xml:58 +msgid "Enable input method by default when the application gets input focus" +msgstr "Zet invoer-methode standaard aan als de toepassing input focus krijgt" -#: ../ui/gtk/languagebar.py:214 -msgid "Switch input method" -msgstr "Schakel invoer methode om" +#: data/dconf/org.freedesktop.ibus.gschema.xml:62 +msgid "DConf preserve name prefixes" +msgstr "DConf behoud van naam voorvoegsels" -#: ../ui/gtk/languagebar.py:357 ../ui/gtk/engineabout.py:33 -#: ../setup/engineabout.py:33 ../setup/setup.ui.h:16 -msgid "About" -msgstr "Over" +#: data/dconf/org.freedesktop.ibus.gschema.xml:63 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "Voorvoegsels van DConf sleutels voor het stoppen van naamconversie" -#: ../ui/gtk/languagebar.py:361 -msgid "About the Input Method" -msgstr "Over de invoer methode" +#: data/dconf/org.freedesktop.ibus.gschema.xml:70 +msgid "Trigger shortcut keys" +msgstr "Trigger sneltoetsen" -#: ../ui/gtk/engineabout.py:61 ../setup/engineabout.py:61 -#, python-format -msgid "Language: %s\n" -msgstr "Taal: %s\n" +#: data/dconf/org.freedesktop.ibus.gschema.xml:71 +#: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 +msgid "The shortcut keys for turning input method on or off" +msgstr "De sneltoetsen om invoermethode aan of uit te zetten" -#: ../ui/gtk/engineabout.py:63 ../setup/engineabout.py:63 -#, python-format -msgid "Keyboard layout: %s\n" -msgstr "Toetsenbordindeling: %s\n" +#: data/dconf/org.freedesktop.ibus.gschema.xml:75 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "Activeer snelkoppeltoetsen voor gtk_accelerator_parse" -#: ../ui/gtk/engineabout.py:65 ../setup/engineabout.py:65 -#, python-format -msgid "Author: %s\n" -msgstr "Auteur: %s\n" +#: data/dconf/org.freedesktop.ibus.gschema.xml:80 +msgid "Enable shortcut keys" +msgstr "Zet sneltoetsen aan" -#: ../ui/gtk/engineabout.py:67 ../setup/engineabout.py:67 -msgid "Description:\n" -msgstr "Beschrijving:\n" +#: data/dconf/org.freedesktop.ibus.gschema.xml:81 +msgid "The shortcut keys for turning input method on" +msgstr "De sneltoetsen om invoermethode aan te zetten" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:85 +msgid "Disable shortcut keys" +msgstr "Zet sneltoetsen uit" -#: ../setup/main.py:102 -msgid "trigger" -msgstr "trigger" +#: data/dconf/org.freedesktop.ibus.gschema.xml:86 +msgid "The shortcut keys for turning input method off" +msgstr "De sneltoetsen om invoermethode uit te zetten" -#: ../setup/main.py:113 -msgid "enable" -msgstr "aanzetten" +#: data/dconf/org.freedesktop.ibus.gschema.xml:90 +#: data/dconf/org.freedesktop.ibus.gschema.xml:95 +msgid "Next engine shortcut keys" +msgstr "Volgende engine sneltoetsen" -#: ../setup/main.py:124 -msgid "disable" -msgstr "uitzetten" +#: data/dconf/org.freedesktop.ibus.gschema.xml:91 +#: data/dconf/org.freedesktop.ibus.gschema.xml:96 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "" +"De sneltoetsen voor het omschakelen naar de volgende invoermethode in de " +"lijst" -#: ../setup/main.py:135 -msgid "next input method" -msgstr "volgende invoermethode" +#: data/dconf/org.freedesktop.ibus.gschema.xml:100 +#: data/dconf/org.freedesktop.ibus.gschema.xml:105 +msgid "Prev engine shortcut keys" +msgstr "Vorige engine sneltoetsen" -#: ../setup/main.py:146 -msgid "previous input method" -msgstr "vorige invoermethode" +#: data/dconf/org.freedesktop.ibus.gschema.xml:101 +#: data/dconf/org.freedesktop.ibus.gschema.xml:106 +msgid "The shortcut keys for switching to the previous input method" +msgstr "De sneltoetsen voor het omschakelen naar de vorige invoermethode" -#: ../setup/main.py:286 -msgid "IBus daemon is not started. Do you want to start it now?" -msgstr "IBus daemon was niet gestart. Wil je het nu starten?" +#: data/dconf/org.freedesktop.ibus.gschema.xml:112 +msgid "Auto hide" +msgstr "Automatisch verbergen" -#: ../setup/main.py:301 +#: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" -"IBus has been started! If you can not use IBus, please add below lines in $HOME/.bashrc, and relogin your desktop.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" msgstr "" -"IBus is gestart! Als je IBus niet kunt gebruiken, voeg dan de onderstaande regels toe aan $HOME/.bashrc, en log opnieuw in op je bureaublad.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +"Het gedrag van eigenschapspaneel. 0 = Toon dit niet, 1 = Automatisch " +"verbergen, 2 = Toon het altijd" -#: ../setup/main.py:316 -#, python-format -msgid "Select keyboard shortcut for %s" -msgstr "Selecteer sneltoets voor %s" +#: data/dconf/org.freedesktop.ibus.gschema.xml:117 +#: data/dconf/org.freedesktop.ibus.gschema.xml:121 +msgid "Language panel position" +msgstr "Taal-paneel positie" -#: ../setup/keyboardshortcut.py:52 -msgid "Keyboard shortcuts" -msgstr "Sneltoetsen" +#: data/dconf/org.freedesktop.ibus.gschema.xml:125 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "Volg de input cursor als het paneel altijd getoond wordt" -#: ../setup/keyboardshortcut.py:63 -msgid "Key code:" -msgstr "Toetscode:" +#: data/dconf/org.freedesktop.ibus.gschema.xml:126 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" +"Als dit waar is zal het paneel de input cursor volgen als het panel altijd " +"getoond wordt. Als dit onwaar is wordt het paneel op een gefixeerde locatie " +"getoond." -#: ../setup/keyboardshortcut.py:78 -msgid "Modifiers:" -msgstr "Modificatietoetsen:" +#: data/dconf/org.freedesktop.ibus.gschema.xml:130 +msgid "The milliseconds to show property panel" +msgstr "Het aanral milliseconden om het eigenschapspaneel te tonen " -#: ../setup/keyboardshortcut.py:231 +#: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" -"Please press a key (or a key combination).\n" -"The dialog will be closed when the key is released." +"The milliseconds to show property panel after focus-in or properties are " +"changed." msgstr "" -"Druk op een toets (of een toetsencombinatie).\n" -"De dialoog wordt afgesloten als de toets losgelaten wordt." +"Het aantal milliseconden om het eigenschapspaneel te tonen nadat focus of " +"eigenschappen veranderd zijn." -#: ../setup/keyboardshortcut.py:233 -msgid "Please press a key (or a key combination)" -msgstr "Druk op een toets (of een toetsencombinatie)" +#: data/dconf/org.freedesktop.ibus.gschema.xml:135 +msgid "Orientation of lookup table" +msgstr "Oriëntatie van opzoektabel" -#: ../setup/enginecombobox.py:120 -msgid "Select an input method" -msgstr "Selecteer een invoermethode" +#: data/dconf/org.freedesktop.ibus.gschema.xml:136 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "Oriëntatie van opzoektabel. 0 = horizontaal, 1 = verticaal" -#. create im name & icon column -#: ../setup/enginetreeview.py:64 ../setup/setup.ui.h:33 -msgid "Input Method" -msgstr "Invoermethode" +#: data/dconf/org.freedesktop.ibus.gschema.xml:140 +#: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 +#: setup/setup.ui:475 +msgid "Show icon on system tray" +msgstr "Toon icoon op systeemvak" -#: ../setup/enginetreeview.py:92 -msgid "Kbd" -msgstr "Toetsenbord" +#: data/dconf/org.freedesktop.ibus.gschema.xml:145 +msgid "Show input method name" +msgstr "Toon naam van invoermethode" -#: ../setup/ibus-setup.desktop.in.h:1 ../setup/setup.ui.h:32 -msgid "IBus Preferences" -msgstr "IBus voorkeuren" +#: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 +msgid "Show input method name on language bar" +msgstr "Toon naam van invoermethode op taalbalk" -#: ../setup/ibus-setup.desktop.in.h:2 -msgid "Set IBus Preferences" -msgstr "Stel IBus voorkeuren in" +#: data/dconf/org.freedesktop.ibus.gschema.xml:150 +msgid "RGBA value of XKB icon" +msgstr "RGBA waarde van XKB icoon" -#: ../data/ibus.schemas.in.h:1 -msgid "Auto hide" -msgstr "Automatisch verbergen" +#: data/dconf/org.freedesktop.ibus.gschema.xml:151 +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " +"'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " +"to 255 or percentage values in the range 0% to 100%, and 'a' is a floating " +"point value in the range 0 to 1 of the alpha." +msgstr "" +"XKB icoon toont de indelingsstring en deze string wordt van de RGBA waarde " +"afgeleid. De RGBA waarde kan zijn 1. een X11 kleurnaam, 2. een hexadecimale " +"waarde in de vorm '#rrggbb' waarin 'r', 'g' en 'b' hexadecimale getallen " +"zijn voor het rood, groen en blauw, 3. een RGB kleur in de vorm 'rgb(r,g,b)' " +"of 4. een RGBA kleur in de vorm 'rgba(r,g,b,a)' waarin 'r', 'g' en 'b' " +"gehele getallen zijn in de reeks van 0 tot 255 of procentuele waardes in de " +"reeks van 0% tot 100%, en 'a' een waarde met drijvende komma is in de reeks " +"van 0 tot 1 van alfa." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:155 +msgid "The milliseconds to show the panel icon for a property" +msgstr "" +"Het aantal milliseconden om het paneelicoon van een eigenschap te tonen" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:156 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" +"Het aantal milliseconden om het paneelicoon van een engine icoon aan een " +"eigenschapicoon te tonen wanneer de engines omgeschakeld worden, wordt " +"gespecificeerd door de waarde van icon-prop-key in IBusEngineDesc. Als de " +"waarde 0 is, is er geen delay en wordt de eigenschapicoon onmiddellijk " +"getoond." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:160 +msgid "Use custom font" +msgstr "Gebruik aangepast lettertype" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:161 +msgid "Use custom font name for language panel" +msgstr "Gebruik aangepaste lettertype naam voor taal-paneel" -#: ../data/ibus.schemas.in.h:2 +#: data/dconf/org.freedesktop.ibus.gschema.xml:165 +#: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "Aangepaste lettertype" -#: ../data/ibus.schemas.in.h:3 +#: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "Aangepaste lettertype naam voor taal-paneel" -#: ../data/ibus.schemas.in.h:4 -msgid "Disable shortcut keys" -msgstr "Zet sneltoetsen uit" +#: data/dconf/org.freedesktop.ibus.gschema.xml:173 +msgid "Unicode shortcut keys for gtk_accelerator_parse" +msgstr "Unicode sneltoetsen voor gtk_accelerator_parse" -#: ../data/ibus.schemas.in.h:5 -msgid "Embed Preedit Text" -msgstr "Voeg pre-edit tekst in" +#: data/dconf/org.freedesktop.ibus.gschema.xml:174 +msgid "The shortcut keys for turning Unicode typing on or off" +msgstr "De sneltoetsen voor het aan of uit zetten van Unicode typen" -#: ../data/ibus.schemas.in.h:6 -msgid "Embed Preedit Text in Application Window" -msgstr "Voeg pre-edit tekst in in toepassingsvenster" +#: data/dconf/org.freedesktop.ibus.gschema.xml:178 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "Emoji sneltoetsen voor gtk_accelerator_parse" -#: ../data/ibus.schemas.in.h:7 -msgid "Enable input method by default" -msgstr "Zet invoer-methode standaard aan" +#: data/dconf/org.freedesktop.ibus.gschema.xml:179 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "De sneltoetsen om emoji typen aan of uit te zetten" -#: ../data/ibus.schemas.in.h:8 -msgid "Enable input method by default when the application gets input focus" -msgstr "Zet invoer-methode standaard aan als de toepassing input focus krijgt" +#: data/dconf/org.freedesktop.ibus.gschema.xml:184 +msgid "Custom font name for emoji characters on emoji dialog" +msgstr "Aangepaste lettertype naam voor emoji karakters op de emoji dialoog" -#: ../data/ibus.schemas.in.h:9 -msgid "Enable shortcut keys" -msgstr "Zet sneltoetsen aan" +#: data/dconf/org.freedesktop.ibus.gschema.xml:188 +msgid "Default language for emoji dictionary" +msgstr "Standaard taal voor emoji woordenboek" -#: ../data/ibus.schemas.in.h:10 -msgid "Language panel position" -msgstr "Taal-paneel positie" +#: data/dconf/org.freedesktop.ibus.gschema.xml:189 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict ." +msgstr "" +"Kies een standaard taal met emoji woordenboeken op de emoji dialoog. De " +"waarde $lang wordt toepast in /usr/share/ibus/dicts/emoji-$lang.dict ." -#: ../data/ibus.schemas.in.h:11 -msgid "Next engine shortcut keys" -msgstr "Volgende engine sneltoetsen" +#: data/dconf/org.freedesktop.ibus.gschema.xml:193 +msgid "favorite emoji list on emoji dialog" +msgstr "favoriete emoji lijst op de emoji dialoog" -#: ../data/ibus.schemas.in.h:12 -msgid "Orientation of lookup table" -msgstr "Oriëntatie van opzoektabel" +#: data/dconf/org.freedesktop.ibus.gschema.xml:194 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "" +"Je kunt de favoritee emojis op emoji lijst tonen als deze lijst karakters " +"heeft." -#: ../data/ibus.schemas.in.h:13 -msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" -msgstr "Oriëntatie van opzoektabel. 0 = horizontaal, 1 = verticaal" +#: data/dconf/org.freedesktop.ibus.gschema.xml:198 +msgid "favorite emoji annotation list on emoji dialog" +msgstr "favoriete emoji annotatielijst op de emoji dialoog" -#: ../data/ibus.schemas.in.h:14 -msgid "Preload engines" -msgstr "Engines voor-laden" +#: data/dconf/org.freedesktop.ibus.gschema.xml:199 +msgid "You can assign an annotation for a favorite emoji in this list." +msgstr "" +"Je kunt in deze lijst een annotatie toekennen aan een favoriete emoji." -#: ../data/ibus.schemas.in.h:15 -msgid "Preload engines during ibus starts up" -msgstr "Engines voor-laden tijdens opstarten van ibus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:203 +msgid "Whether emoji annotations can be match partially or not" +msgstr "Worden emoji annotaties wel of niet gedeeltelijk gematched" -#: ../data/ibus.schemas.in.h:16 -msgid "Prev engine shortcut keys" -msgstr "Vorige engine sneltoetsen" +#: data/dconf/org.freedesktop.ibus.gschema.xml:204 +msgid "" +"Whether emoji annotations can be matched with a partial string instead of " +"the exact match or not." +msgstr "" +"Worden emoji annotaties wel of niet gematched met een gedeeltelijke string " +"in plaats van de exacte match." -#: ../data/ibus.schemas.in.h:17 ../setup/setup.ui.h:42 -msgid "Share the same input method among all applications" -msgstr "Deel dezelfde input-methode voor alle toepassingen" +#: data/dconf/org.freedesktop.ibus.gschema.xml:208 +msgid "Match emoji annotations with the specified length" +msgstr "Match emoji annotaties met de gespecificeerde lengte" -#: ../data/ibus.schemas.in.h:18 ../setup/setup.ui.h:43 -msgid "Show icon on system tray" -msgstr "Toon icoon op systeemvak" +#: data/dconf/org.freedesktop.ibus.gschema.xml:209 +msgid "" +"Match emoji annotations partially with more than the specified number of " +"characters instead of the exact match." +msgstr "" +"Match emoji annotaties gedeeltelijk met meer dan het gespecificeerde aantal " +"karakters in plaats van de exacte match." -#: ../data/ibus.schemas.in.h:19 -msgid "Show input method name" -msgstr "Toon naam van invoermethode" +#: data/dconf/org.freedesktop.ibus.gschema.xml:213 +msgid "Choose a condition to match emoji annotations partially" +msgstr "Kies een conditie om emoji annotaties gedeeltelijk te matchen" -#: ../data/ibus.schemas.in.h:20 ../setup/setup.ui.h:45 -msgid "Show input method name on language bar" -msgstr "Toon naam van invoermethode op taalbalk" +#: data/dconf/org.freedesktop.ibus.gschema.xml:214 +msgid "" +"Choose one of the following conditions to match emoji annotations partially: " +"0 == Prefix match, 1 == Suffix match, 2 == Containing match" +msgstr "" +"Kies een van de volgende condities om emoji annotaties gedeeltelijk te " +"matchen: 0 == Voorvoegsel match, 1 == Achtervoegel match, 2 == Inhoudelijke " +"match" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:218 +msgid "Load the emoji data at the time of startup" +msgstr "Laad de emoji data tijdens het opstarten" -#: ../data/ibus.schemas.in.h:21 +#: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" -"The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = " -"Always show" +"Load the emoji data at the time of startup if true. About 10MB memory is " +"needed to load the data. Load the emoji data when open the emoji dialog at " +"the beginning if false." msgstr "" -"Het gedrag van het taal paneel. 0 = Ingebed in het menu, 1 = Automatisch " -"verbergen, 2 = Altijd tonen" +"Laad de emoji data tijden het opstarten indien waar. Er is ongeveer 10MB " +"geheugen nodig om de data te laden. Laad de emoji data bij het openen van " +"het begin van de emoji dialoog indien onwaar." -#: ../data/ibus.schemas.in.h:22 +#: data/dconf/org.freedesktop.ibus.gschema.xml:223 +msgid "Load the Unicode data at the time of startup" +msgstr "Laad de Unicode data tijdens het opstarten" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" -"The position of the language panel. 0 = Top left corner, 1 = Top right " -"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +"Load the Unicode data at the time of startup if true. About 15MB memory is " +"needed to load the data. Load the Unicode data when open the emoji dialog at " +"the beginning if false. The Unicode data is always loaded after the emoji " +"data is loaded even if true." msgstr "" -"De positie van de taal paneel. 0 = linksboven, 1 = rechtsboven, 2 = " -"linksonder, 3 = rechtsonder, 4 = aangepast" +"Laad de Unicode data tijden het opstarten indien waar. Er is ongeveer 15MB " +"geheugen nodig om de data te laden. Laad de Unicode data bij het openen van " +"het begin van de emoji dialoog indien onwaar. De Unicode data wordt altijd " +"geladen na het laden van de emoji data zelfs bij waar. " -#: ../data/ibus.schemas.in.h:23 -msgid "The shortcut keys for switching to the next input method in the list" +#: ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." msgstr "" -"De sneltoetsen voor het omschakelen naar de volgende invoermethode in de " -"lijst" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." -#: ../data/ibus.schemas.in.h:24 -msgid "The shortcut keys for switching to the previous input method" -msgstr "De sneltoetsen voor het omschakelen naar de vorige invoermethode" +#: ibus/lang.py:41 src/ibusutil.c:198 +msgid "Other" +msgstr "Andere" -#: ../data/ibus.schemas.in.h:25 -msgid "The shortcut keys for turning input method off" -msgstr "De sneltoetsen om invoermethode uit te zetten" +#: setup/emojilang.py:67 +msgid "Select a language" +msgstr "Selecteer een taal" -#: ../data/ibus.schemas.in.h:26 -msgid "The shortcut keys for turning input method on" -msgstr "De sneltoetsen om invoermethode aan te zetten" +#: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 +#: setup/main.py:560 +msgid "_Cancel" +msgstr "_Annuleren" -#: ../data/ibus.schemas.in.h:27 ../setup/setup.ui.h:51 -msgid "The shortcut keys for turning input method on or off" -msgstr "De sneltoetsen om invoermethode aan of uit te zetten" +#: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 +msgid "_OK" +msgstr "_Ok" -#: ../data/ibus.schemas.in.h:28 -msgid "Trigger shortcut keys" -msgstr "Trigger sneltoetsen" +#: setup/emojilang.py:235 setup/enginedialog.py:205 +msgid "More…" +msgstr "Meer…" -#: ../data/ibus.schemas.in.h:29 -msgid "Use custom font" -msgstr "Gebruik aangepast lettertype" +#: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 +msgid "About" +msgstr "Over" -#: ../data/ibus.schemas.in.h:30 -msgid "Use custom font name for language panel" -msgstr "Gebruik aangepaste lettertype naam voor taal-paneel" +#: setup/engineabout.py:40 setup/setup.ui:1401 +msgid "_Close" +msgstr "Sl_uiten" -#: ../data/ibus.schemas.in.h:31 -msgid "Use global input method" -msgstr "Gebruik globale invoermethode" +#: setup/engineabout.py:72 +#, python-format +msgid "Language: %s\n" +msgstr "Taal: %s\n" -#: ../data/ibus.schemas.in.h:32 ../setup/setup.ui.h:55 -msgid "Use system keyboard (XKB) layout" -msgstr "Gebruik systeem toetsenbord (XKB) indeling" +#: setup/engineabout.py:75 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "Toetsenbordindeling: %s\n" -#: ../data/ibus.schemas.in.h:33 ../setup/setup.ui.h:56 -msgid "Use system keyboard layout" -msgstr "Gebruik systeem toetsenbordindeling" +#: setup/engineabout.py:78 +#, python-format +msgid "Author: %s\n" +msgstr "Auteur: %s\n" -#: ../setup/setup.ui.h:1 -msgid "..." -msgstr "..." +#: setup/engineabout.py:81 +msgid "Description:\n" +msgstr "Beschrijving:\n" -#: ../setup/setup.ui.h:2 -msgid "Font and Style" -msgstr "Lettertype en stijl" +#: setup/enginecombobox.py:139 setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "Selecteer een invoermethode" -#: ../setup/setup.ui.h:3 -msgid "Global input method settings" -msgstr "Globale invoermethode instellingen" +#. add button +#: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 +msgid "_Add" +msgstr "_Toevoegen" -#: ../setup/setup.ui.h:4 -msgid "Keyboard Layout" -msgstr "Toetsenbordindeling" +#. create im name & icon column +#: setup/enginetreeview.py:69 setup/setup.ui:838 +msgid "Input Method" +msgstr "Invoermethode" -#: ../setup/setup.ui.h:5 -msgid "Keyboard Shortcuts" -msgstr "Sneltoetsen" +#: setup/enginetreeview.py:96 +msgid "Kbd" +msgstr "Toetsenbord" -#: ../setup/setup.ui.h:6 -msgid "Startup" -msgstr "Opstarten" +#: setup/ibus-setup.desktop:3 setup/setup.ui:69 +msgid "IBus Preferences" +msgstr "IBus voorkeuren" -#: ../setup/setup.ui.h:7 +#: setup/ibus-setup.desktop:4 +msgid "Set IBus Preferences" +msgstr "Stel IBus voorkeuren in" + +#: setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "Sneltoetsen" + +#: setup/keyboardshortcut.py:67 +msgid "Key code:" +msgstr "Toetscode:" + +#: setup/keyboardshortcut.py:82 +msgid "Modifiers:" +msgstr "Modificatietoetsen:" + +#. apply button +#: setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "Toe_passen" + +#. delete button +#: setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "_Verwijderen" + +#: setup/keyboardshortcut.py:252 msgid "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." msgstr "" -"IBus\n" -"De intelligente invoer bus\n" -"Homepagina: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" +"Druk op een toets (of een toetsencombinatie).\n" +"De dialoog wordt afgesloten als de toets losgelaten wordt." -#: ../setup/setup.ui.h:14 -msgid "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." +#: setup/keyboardshortcut.py:255 +msgid "Please press a key (or a key combination)" +msgstr "Druk op een toets (of een toetsencombinatie)" + +#: setup/main.py:121 setup/main.py:588 +msgid "Use shortcut with shift to switch to the previous input method" msgstr "" -"De standaard invoermethode is de bovenste in de lijst.\n" -"je kunt op/neer toetsen gebruiken om dit te veranderen." +"Gebruik snelkoppeling met Shift voor het omschakelen naar de vorige " +"invoermethode" -#: ../setup/setup.ui.h:17 -msgid "Add the selected input method into the enabled input methods" +#: setup/main.py:515 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "De IBus daemon draait niet. Wil je het starten?" + +#: setup/main.py:536 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" msgstr "" -"Voeg de geselecteerde invoermethode toe aan de ingeschakelde invoermethoden" +"IBus is gestart! Als je IBus niet kunt gebruiken, voeg je de volgende regels " +"toe aan je $HOME/.bashrc; log daarna opnieuw in op je bureaublad.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" -#: ../setup/setup.ui.h:18 -msgid "Advanced" -msgstr "Geavanceerd" +#. Translators: %d == 5 currently +#: setup/main.py:550 +#, python-format +msgid "IBus daemon could not be started in %d seconds." +msgstr "IBus daemon kon niet binnen %d seconden gestart worden." -#: ../setup/setup.ui.h:19 -msgid "Always" -msgstr "Altijd" +#: setup/main.py:562 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "Selecteer sneltoets voor %s" + +#. Translators: Title of the window +#: setup/main.py:564 +msgid "switching input methods" +msgstr "bezig met omschakelen van invoermethodes " + +#: setup/setup.ui:11 +msgid "Horizontal" +msgstr "Horizontaal" + +#: setup/setup.ui:14 +msgid "Vertical" +msgstr "Verticaal" + +#: setup/setup.ui:25 +msgid "Top left corner" +msgstr "Linksboven" + +#: setup/setup.ui:28 +msgid "Top right corner" +msgstr "Rechtsboven" -#: ../setup/setup.ui.h:20 +#: setup/setup.ui:31 msgid "Bottom left corner" msgstr "Linksonder" -#: ../setup/setup.ui.h:21 +#: setup/setup.ui:34 msgid "Bottom right corner" msgstr "Rechtsonder" -#: ../setup/setup.ui.h:22 -msgid "Candidates orientation:" -msgstr "Kandidaten oriëntatie:" - -#: ../setup/setup.ui.h:23 +#: setup/setup.ui:37 msgid "Custom" msgstr "Aangepast" -#: ../setup/setup.ui.h:24 -msgid "Disable:" -msgstr "Uitzetten:" +#: setup/setup.ui:48 +msgid "Do not show" +msgstr "Toon dit niet" -#: ../setup/setup.ui.h:25 -msgid "Embed preedit text in application window" -msgstr "Insluiten van pre-edit tekst in toepassingsvenster" +#: setup/setup.ui:51 +msgid "Hide automatically" +msgstr "Automatisch verbergen" -#: ../setup/setup.ui.h:26 -msgid "Embed the preedit text of input method in the application window" +#: setup/setup.ui:54 +msgid "Always" +msgstr "Altijd" + +#: setup/setup.ui:113 +msgid "The shortcut keys for switching to next input method in the list" msgstr "" -"Sluit de pre-edit tekst van invoermethode in in het toepassingsvenster" +"De sneltoetsen voor het schakelen naar de volgende invoermethode in de lijst" -#: ../setup/setup.ui.h:27 -msgid "Embedded in menu" -msgstr "Ingebed in menu" +#: setup/setup.ui:115 +msgid "Next input method:" +msgstr "Volgende invoermethode:" + +#: setup/setup.ui:127 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "" +"De sneltoetsen voor het schakelen naar de vorige invoermethode in de lijst" -#: ../setup/setup.ui.h:28 +#: setup/setup.ui:129 +msgid "Previous input method:" +msgstr "Vorige invoermethode:" + +#: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 +#: setup/setup.ui:903 setup/setup.ui:957 +msgid "..." +msgstr "..." + +#: setup/setup.ui:226 msgid "Enable or disable:" msgstr "Aan- of uitzetten:" -#: ../setup/setup.ui.h:29 +#: setup/setup.ui:238 msgid "Enable:" msgstr "Aanzetten:" -#: ../setup/setup.ui.h:30 -msgid "General" -msgstr "Algemeen" +#: setup/setup.ui:291 +msgid "Disable:" +msgstr "Uitzetten:" -#: ../setup/setup.ui.h:31 -msgid "Horizontal" -msgstr "Horizontaal" +#: setup/setup.ui:345 setup/setup.ui:983 +msgid "Keyboard Shortcuts" +msgstr "Sneltoetsen" + +#: setup/setup.ui:374 +msgid "Set the orientation of candidates in lookup table" +msgstr "Stel de oriëntatie in van de kandidaten in de opzoektabel" + +#: setup/setup.ui:376 +msgid "Candidates orientation:" +msgstr "Kandidaten oriëntatie:" + +#: setup/setup.ui:407 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "" +"Stel het gedrag van ibus in voor het tonen of verbergen van de taalbalk" + +#: setup/setup.ui:409 +msgid "Show property panel:" +msgstr "Toon eigenschapspaneel" -#: ../setup/setup.ui.h:34 +#: setup/setup.ui:423 msgid "Language panel position:" msgstr "Taal panel positie:" -#: ../setup/setup.ui.h:35 -msgid "Move down the selected input method in the enabled input methods" +#: setup/setup.ui:494 +msgid "Show input method's name on language bar when check the checkbox" msgstr "" -"Verplaats de geselecteerde invoermethode omlaag in de aangezette " -"invoermethoden lijst" +"Toon de naam van de invoermethode op de taalbalk als je het selectievakje " +"aanvinkt" -#: ../setup/setup.ui.h:36 -msgid "Move up the selected input method in the enabled input methods list" +#: setup/setup.ui:508 +msgid "Embed preedit text in application window" +msgstr "Insluiten van pre-edit tekst in toepassingsvenster" + +#: setup/setup.ui:513 +msgid "Embed the preedit text of input method in the application window" msgstr "" -"Verplaats de geselecteerde invoermethode omhoog in de aangezette " -"invoermethoden lijst" +"Sluit de pre-edit tekst van invoermethode in in het toepassingsvenster" -#: ../setup/setup.ui.h:37 -msgid "Next input method:" -msgstr "Volgende invoermethode:" +#: setup/setup.ui:527 +msgid "Use custom font:" +msgstr "Gebruik aangepast lettertype:" -#: ../setup/setup.ui.h:38 -msgid "Previous input method:" -msgstr "Vorige invoermethode:" +#: setup/setup.ui:562 setup/setup.ui:1156 +msgid "Font and Style" +msgstr "Lettertype en stijl" + +#: setup/setup.ui:579 +msgid "General" +msgstr "Algemeen" + +#: setup/setup.ui:671 +msgid "Add the selected input method into the enabled input methods" +msgstr "" +"Voeg de geselecteerde invoermethode toe aan de ingeschakelde invoermethoden" -#: ../setup/setup.ui.h:39 +#: setup/setup.ui:682 +msgid "_Remove" +msgstr "_Verwijderen" + +#: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "" "Verwijder de geselecteerde invoermethode uit de aangezette invoermethoden" -#: ../setup/setup.ui.h:40 -msgid "Set the behavior of ibus how to show or hide language bar" +#: setup/setup.ui:700 +msgid "_Up" +msgstr "_Omhoog" + +#: setup/setup.ui:707 +msgid "Move up the selected input method in the enabled input methods list" msgstr "" -"Stel het gedrag van ibus in voor het tonen of verbergen van de taalbalk" +"Verplaats de geselecteerde invoermethode omhoog in de aangezette " +"invoermethoden lijst" -#: ../setup/setup.ui.h:41 -msgid "Set the orientation of candidates in lookup table" -msgstr "Stel de oriëntatie in van de kandidaten in de opzoektabel" +#: setup/setup.ui:718 +msgid "_Down" +msgstr "O_mlaag" -#: ../setup/setup.ui.h:44 +#: setup/setup.ui:725 +msgid "Move down the selected input method in the enabled input methods" +msgstr "" +"Verplaats de geselecteerde invoermethode omlaag in de aangezette " +"invoermethoden lijst" + +#: setup/setup.ui:736 +msgid "_About" +msgstr "I_nfo" + +#: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "Toon informatie over de geselecteerde invoermethode" -#: ../setup/setup.ui.h:46 -msgid "Show input method's name on language bar when check the checkbox" +#: setup/setup.ui:754 +msgid "_Preferences" +msgstr "_Voorkeuren" + +#: setup/setup.ui:761 +msgid "Show setup of the selected input method" +msgstr "Toon instelling van de geselecteerde invoermethode" + +#: setup/setup.ui:812 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." msgstr "" -"Toon de naam van de invoermethode op de taalbalk als je het selectievakje " -"aanvinkt" +"De actieve invoermethode kan omgeschakeld worden tussen de " +"geselecteerden in de bovenstaande lijst met het induwen van de toetsenbord " +"sneltoets of met het klikken op het paneel icoon." + +#: setup/setup.ui:873 +msgid "" +"The shortcut keys to enable conversions of emoji annotations or Unicode " +"names" +msgstr "" +"De sneltoetsen voor het aanzetten van conversies van emoji annotaties of " +"Unicode" + +#: setup/setup.ui:875 +msgid "Emoji annotation:" +msgstr "Emoji annotatie:" + +#: setup/setup.ui:927 +msgid "The shortcut keys to enable Unicode code point conversions" +msgstr "De sneltoetsen voor het aanzetten van Unicode code punt conversies" + +#: setup/setup.ui:929 +msgid "Unicode code point:" +msgstr "Unicode code punt:" + +#: setup/setup.ui:1013 +msgid "Set a font of Unicode candidates on the emoji dialog" +msgstr "Stel een lettertype van Unicode kandidaten in op de emoji dialoog" + +#: setup/setup.ui:1015 +msgid "Unicode font:" +msgstr "Unicode lettertype:" + +#: setup/setup.ui:1038 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "Zet een taal met emoji annotaties op de emoji dialoog" + +#: setup/setup.ui:1040 +msgid "Emoji annotation language:" +msgstr "Emoji annotatietaal:" + +#: setup/setup.ui:1062 +msgid "" +"Match emoji annotations partially with the following condition and more than " +"the number of characters:" +msgstr "" +"Match emoji annotaties gedeeltelijk met de volgende conditie en meer dan het " +"aantal karakters:" + +#: setup/setup.ui:1067 +msgid "" +"If emoji annotations can be matched with a partial string instead of the " +"exact match" +msgstr "" +"Als emoji annotaties gematched kunnen worden met een gedeeltelijke string in " +"plaats van de exacte match" + +#: setup/setup.ui:1101 +msgid "Prefix match" +msgstr "Voorvoegsel match" + +#: setup/setup.ui:1115 +msgid "Suffix match" +msgstr "Achtervoegsel match" + +#: setup/setup.ui:1130 +msgid "Containing match" +msgstr "Inhoudelijke match" + +#: setup/setup.ui:1176 +msgid "Emoji" +msgstr "Emoji" + +#: setup/setup.ui:1230 +msgid "Keyboard Layout" +msgstr "Toetsenbordindeling" + +#: setup/setup.ui:1278 +msgid "Global input method settings" +msgstr "Globale invoermethode instellingen" + +#: setup/setup.ui:1298 +msgid "Advanced" +msgstr "Geavanceerd" -#: ../setup/setup.ui.h:47 -msgid "Show language panel:" -msgstr "Toon taal paneel:" +#: setup/setup.ui:1317 +msgid "" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" +msgstr "" +"IBus\n" +"De intelligente invoer bus\n" +"Homepagina: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" -#: ../setup/setup.ui.h:48 +#: setup/setup.ui:1341 msgid "Start ibus on login" msgstr "Start ibus bij inloggen" -#: ../setup/setup.ui.h:49 -msgid "The shortcut keys for switching to next input method in the list" +#: setup/setup.ui:1358 +msgid "Startup" +msgstr "Opstarten" + +#: src/ibusemojigen.h:30 +msgid "Activities" +msgstr "Activiteiten" + +#: src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "Dieren & Natuur" + +#: src/ibusemojigen.h:32 +msgid "Component" +msgstr "Onderdeel" + +#: src/ibusemojigen.h:33 +msgid "Flags" +msgstr "Vlaggen" + +#: src/ibusemojigen.h:34 +msgid "Food & Drink" +msgstr "Voedsel & Drank" + +#: src/ibusemojigen.h:35 +msgid "Objects" +msgstr "Objecten" + +#: src/ibusemojigen.h:36 +msgid "People & Body" +msgstr "Mensen & Lichaam" + +#: src/ibusemojigen.h:37 +msgid "Smileys & Emotion" +msgstr "Smileys & Emotie" + +#: src/ibusemojigen.h:38 +msgid "Symbols" +msgstr "Symbolen" + +#: src/ibusemojigen.h:39 +msgid "Travel & Places" +msgstr "Reizen & Plaatsen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:33 +msgid "Basic Latin" +msgstr "Basis Latijn" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:37 +msgid "Latin-1 Supplement" +msgstr "Latijns-1 supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:41 +msgid "Latin Extended-A" +msgstr "Latijns uitgebreid-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:45 +msgid "Latin Extended-B" +msgstr "Latijns uitgebreid-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:49 +msgid "IPA Extensions" +msgstr "IPA-uitbreidingen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:53 +msgid "Spacing Modifier Letters" +msgstr "Letterafstand veranderen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:57 +msgid "Combining Diacritical Marks" +msgstr "Diakritische kenmerken combineren" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:61 +msgid "Greek and Coptic" +msgstr "Grieks en Koptisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:65 +msgid "Cyrillic" +msgstr "Cyrillisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:69 +msgid "Cyrillic Supplement" +msgstr "Cyrillisch supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:73 +msgid "Armenian" +msgstr "Armeens" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:77 +msgid "Hebrew" +msgstr "Hebreeuws" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:81 +msgid "Arabic" +msgstr "Arabisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:85 +msgid "Syriac" +msgstr "Syrisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:89 +msgid "Arabic Supplement" +msgstr "Arabisch supllement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:93 +msgid "Thaana" +msgstr "Thaana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:97 +msgid "NKo" +msgstr "NKo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:101 +msgid "Samaritan" +msgstr "Samaritaans" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:105 +msgid "Mandaic" +msgstr "Mandaic" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:109 +msgid "Syriac Supplement" +msgstr "Syrisch supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:113 +msgid "Arabic Extended-A" +msgstr "Arabisch uitgebreid-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:117 +msgid "Devanagari" +msgstr "Devanagari" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:121 +msgid "Bengali" +msgstr "Bengalees" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:125 +msgid "Gurmukhi" +msgstr "Gurmukhi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:129 +msgid "Gujarati" +msgstr "Gujarati" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:133 +msgid "Oriya" +msgstr "Oriya" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:137 +msgid "Tamil" +msgstr "Tamil" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:141 +msgid "Telugu" +msgstr "Telugu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:145 +msgid "Kannada" +msgstr "Kannada" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:149 +msgid "Malayalam" +msgstr "Malayalam" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:153 +msgid "Sinhala" +msgstr "Singalees" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:157 +msgid "Thai" +msgstr "Thais" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:161 +msgid "Lao" +msgstr "Laotiaans" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:165 +msgid "Tibetan" +msgstr "Tibetaans" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:169 +msgid "Myanmar" +msgstr "Myanmar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:173 +msgid "Georgian" +msgstr "Georgisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:177 +msgid "Hangul Jamo" +msgstr "Hangul Jamo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:181 +msgid "Ethiopic" +msgstr "Ethiopisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:185 +msgid "Ethiopic Supplement" +msgstr "Ethiopisch supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:189 +msgid "Cherokee" +msgstr "Cherokee" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:193 +msgid "Unified Canadian Aboriginal Syllabics" +msgstr "Verenigde Canadese Aboriginal syllabics" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:197 +msgid "Ogham" +msgstr "Ogam" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:201 +msgid "Runic" +msgstr "Runen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:205 +msgid "Tagalog" +msgstr "Tagalog" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:209 +msgid "Hanunoo" +msgstr "Hanunoo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:213 +msgid "Buhid" +msgstr "Buhid" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:217 +msgid "Tagbanwa" +msgstr "Tagbanwa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:221 +msgid "Khmer" +msgstr "Khmer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:225 +msgid "Mongolian" +msgstr "Mongools" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:229 +msgid "Unified Canadian Aboriginal Syllabics Extended" +msgstr "Verenigde Canadese Aboriginal syllabisch uitgebreid" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:233 +msgid "Limbu" +msgstr "Limbu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:237 +msgid "Tai Le" +msgstr "Tai Le" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:241 +msgid "New Tai Lue" +msgstr "Nieuw Tai Lue" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:245 +msgid "Khmer Symbols" +msgstr "Khmer symbolen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:249 +msgid "Buginese" +msgstr "Buginese" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:253 +msgid "Tai Tham" +msgstr "Tai Tham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:257 +msgid "Combining Diacritical Marks Extended" +msgstr "Diakritische tekens voor symbolen combineren uitgebreid" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:261 +msgid "Balinese" +msgstr "Balinees" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:265 +msgid "Sundanese" +msgstr "Sundanese" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:269 +msgid "Batak" +msgstr "Batak" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:273 +msgid "Lepcha" +msgstr "Lepcha" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:277 +msgid "Ol Chiki" +msgstr "Ol Chiki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:281 +msgid "Cyrillic Extended-C" +msgstr "Cyrillisch uitgebreid-C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:285 +msgid "Georgian Extended" +msgstr "Georgisch uitgebreid" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:289 +msgid "Sundanese Supplement" +msgstr "Soendanees supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:293 +msgid "Vedic Extensions" +msgstr "Vedic uitbreidingen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:297 +msgid "Phonetic Extensions" +msgstr "Fonetische uitbreidingen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:301 +msgid "Phonetic Extensions Supplement" +msgstr "Fonetische uitbreidingen supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:305 +msgid "Combining Diacritical Marks Supplement" +msgstr "Diakritische tekens voor symbolen combineren" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:309 +msgid "Latin Extended Additional" +msgstr "Latijns uitbreidingen extra" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:313 +msgid "Greek Extended" +msgstr "Griekse uitbreidingen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:317 +msgid "General Punctuation" +msgstr "Aalgemene interpunctie" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:321 +msgid "Superscripts and Subscripts" +msgstr "Superscripts en subscripts" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:325 +msgid "Currency Symbols" +msgstr "Valutasymbolen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:329 +msgid "Combining Diacritical Marks for Symbols" +msgstr "Diakritische tekens voor symbolen combineren" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:333 +msgid "Letterlike Symbols" +msgstr "Letterachtige symbolen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:337 +msgid "Number Forms" +msgstr "Nummerformulieren" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:341 +msgid "Arrows" +msgstr "Pijlen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:345 +msgid "Mathematical Operators" +msgstr "Wiskundige operators" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:349 +msgid "Miscellaneous Technical" +msgstr "Diversen technisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:353 +msgid "Control Pictures" +msgstr "Controle afbeeldingen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:357 +msgid "Optical Character Recognition" +msgstr "Optische tekenherkenning" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:361 +msgid "Enclosed Alphanumerics" +msgstr "Ingesloten alfanumeriek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:365 +msgid "Box Drawing" +msgstr "Vak tekening" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:369 +msgid "Block Elements" +msgstr "Vak elementen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:373 +msgid "Geometric Shapes" +msgstr "Geometrische vormen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:377 +msgid "Miscellaneous Symbols" +msgstr "Diverse symbolen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:381 +msgid "Dingbats" +msgstr "Dingbats" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:385 +msgid "Miscellaneous Mathematical Symbols-A" +msgstr "Diverse wiskundige symbolen-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:389 +msgid "Supplemental Arrows-A" +msgstr "Aanvullende pijlen-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:393 +msgid "Braille Patterns" +msgstr "Braille patronen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:397 +msgid "Supplemental Arrows-B" +msgstr "Aanvullende pijlen-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:401 +msgid "Miscellaneous Mathematical Symbols-B" +msgstr "Diverse wiskundige symbolen-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:405 +msgid "Supplemental Mathematical Operators" +msgstr "Aanvullende wiskundige operators" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:409 +msgid "Miscellaneous Symbols and Arrows" +msgstr "Diverse symbolen en pijlen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:413 +msgid "Glagolitic" +msgstr "Glagolitisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:417 +msgid "Latin Extended-C" +msgstr "Latijns uitgebreid-C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:421 +msgid "Coptic" +msgstr "Koptisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:425 +msgid "Georgian Supplement" +msgstr "Gregoriaans supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:429 +msgid "Tifinagh" +msgstr "Tifinagh" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:433 +msgid "Ethiopic Extended" +msgstr "Ethiopische uitgebreid" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:437 +msgid "Cyrillic Extended-A" +msgstr "Cyrillisch uitgebreid-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:441 +msgid "Supplemental Punctuation" +msgstr "Aanvullende interpunctie" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:445 +msgid "CJK Radicals Supplement" +msgstr "CJK radicalen supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:449 +msgid "Kangxi Radicals" +msgstr "Kangxi radicalen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:453 +msgid "Ideographic Description Characters" +msgstr "Ideografische beschrijvingkarakters" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:457 +msgid "CJK Symbols and Punctuation" +msgstr "CJK symbolen en interpumctie" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:461 +msgid "Hiragana" +msgstr "Hiragana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:465 +msgid "Katakana" +msgstr "Katakana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:469 +msgid "Bopomofo" +msgstr "Bopomofo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:473 +msgid "Hangul Compatibility Jamo" +msgstr "Hangul-compatibiliteit Jamo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:477 +msgid "Kanbun" +msgstr "Kanbun" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:481 +msgid "Bopomofo Extended" +msgstr "Bopomofo uitgebreid" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:485 +msgid "CJK Strokes" +msgstr "CJK-slagen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:489 +msgid "Katakana Phonetic Extensions" +msgstr "Katakana fonetische extensies" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:493 +msgid "Enclosed CJK Letters and Months" +msgstr "Ingesloten CJK letters en maanden" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:497 +msgid "CJK Compatibility" +msgstr "CJK compatibiliteit" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:501 +msgid "CJK Unified Ideographs Extension A" +msgstr "CJK uniforme ideografen extensie A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:505 +msgid "Yijing Hexagram Symbols" +msgstr "Yijing Hexagram-symbolen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:509 +msgid "CJK Unified Ideographs" +msgstr "CJK uniforme ideografen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:513 +msgid "Yi Syllables" +msgstr "Yi lettergrepen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:517 +msgid "Yi Radicals" +msgstr "Yi radicalen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:521 +msgid "Lisu" +msgstr "Lisu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:525 +msgid "Vai" +msgstr "Vai" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:529 +msgid "Cyrillic Extended-B" +msgstr "Cyrillisch uitgebreid-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:533 +msgid "Bamum" +msgstr "Bamum" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:537 +msgid "Modifier Tone Letters" +msgstr "Modificatie toon letters" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:541 +msgid "Latin Extended-D" +msgstr "Latijns uitgebreid-D" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:545 +msgid "Syloti Nagri" +msgstr "Syloti Nagri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:549 +msgid "Common Indic Number Forms" +msgstr "Gemeenschappelijke Indic nummerformaten" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:553 +msgid "Phags-pa" +msgstr "Phags-pa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:557 +msgid "Saurashtra" +msgstr "Saurashtra" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:561 +msgid "Devanagari Extended" +msgstr "Devanagari uitgebreid" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:565 +msgid "Kayah Li" +msgstr "Kayah Li" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:569 +msgid "Rejang" +msgstr "Rejang" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:573 +msgid "Hangul Jamo Extended-A" +msgstr "Hangul Jamo uitgebreid-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:577 +msgid "Javanese" +msgstr "Javaans" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:581 +msgid "Myanmar Extended-B" +msgstr "Myanmar uitgebreid-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:585 +msgid "Cham" +msgstr "Cham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:589 +msgid "Myanmar Extended-A" +msgstr "Myanmar uitgebreid-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:593 +msgid "Tai Viet" +msgstr "Tai Viet" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:597 +msgid "Meetei Mayek Extensions" +msgstr "Meetei Mayek uitbreidingen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:601 +msgid "Ethiopic Extended-A" +msgstr "Ethiopische uitgebreid-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:605 +msgid "Latin Extended-E" +msgstr "Latijns uitgebreid-E" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:609 +msgid "Cherokee Supplement" +msgstr "Cherokee-supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:613 +msgid "Meetei Mayek" +msgstr "Meetei Mayek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:617 +msgid "Hangul Syllables" +msgstr "Hangul lettergrepen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:621 +msgid "Hangul Jamo Extended-B" +msgstr "Hangul Jamo uitgebreid-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:625 +msgid "High Surrogates" +msgstr "Hoge surrogaten" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:629 +msgid "High Private Use Surrogates" +msgstr "Surrogaten met een hoog privégebruik" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:633 +msgid "Low Surrogates" +msgstr "Lage surrogaten" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:637 +msgid "Private Use Area" +msgstr "Privé-gebruik" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:641 +msgid "CJK Compatibility Ideographs" +msgstr "CJK compatibiliteit ideografen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:645 +msgid "Alphabetic Presentation Forms" +msgstr "Alfabetische presentatievormen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:649 +msgid "Arabic Presentation Forms-A" +msgstr "Arabische presentatievormen-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:653 +msgid "Variation Selectors" +msgstr "Variatie selectoren" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:657 +msgid "Vertical Forms" +msgstr "Verticale vormen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:661 +msgid "Combining Half Marks" +msgstr "Combinatie van halve cijfers" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:665 +msgid "CJK Compatibility Forms" +msgstr "CJK compatibiliteit vormen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:669 +msgid "Small Form Variants" +msgstr "Kleine vormvarianten" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:673 +msgid "Arabic Presentation Forms-B" +msgstr "Arabische presentatievormen-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:677 +msgid "Halfwidth and Fullwidth Forms" +msgstr "Halfbreedte en volledige breedte vormen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:681 +msgid "Specials" +msgstr "Bijzonderheden" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:685 +msgid "Linear B Syllabary" +msgstr "Lineaire B syllabarie" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:689 +msgid "Linear B Ideograms" +msgstr "Lineaire B ideogrammen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:693 +msgid "Aegean Numbers" +msgstr "Egeïsche getallen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:697 +msgid "Ancient Greek Numbers" +msgstr "Oud Griekse getallen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:701 +msgid "Ancient Symbols" +msgstr "Oude symbolen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:705 +msgid "Phaistos Disc" +msgstr "Phaistos schijf" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:709 +msgid "Lycian" +msgstr "Lycian" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:713 +msgid "Carian" +msgstr "Carian" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:717 +msgid "Coptic Epact Numbers" +msgstr "Koptische Epact-getallen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:721 +msgid "Old Italic" +msgstr "Oud Italiaans" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:725 +msgid "Gothic" +msgstr "Gotisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:729 +msgid "Old Permic" +msgstr "Oud Permisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:733 +msgid "Ugaritic" +msgstr "Ugaritisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:737 +msgid "Old Persian" +msgstr "Oud Perzisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:741 +msgid "Deseret" +msgstr "Deseret" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:745 +msgid "Shavian" +msgstr "Shavian" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:749 +msgid "Osmanya" +msgstr "Osmanya" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:753 +msgid "Osage" +msgstr "Osage" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:757 +msgid "Elbasan" +msgstr "Elbasan" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:761 +msgid "Caucasian Albanian" +msgstr "Kaukasische Albanees" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:765 +msgid "Linear A" +msgstr "Lineaire A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:769 +msgid "Cypriot Syllabary" +msgstr "Cypriotisch syllabary" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:773 +msgid "Imperial Aramaic" +msgstr "Imperiaal Aramees" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:777 +msgid "Palmyrene" +msgstr "Palmyrene" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:781 +msgid "Nabataean" +msgstr "Nabatees" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:785 +msgid "Hatran" +msgstr "Hatran" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:789 +msgid "Phoenician" +msgstr "Fenicisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:793 +msgid "Lydian" +msgstr "Lydian" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:797 +msgid "Meroitic Hieroglyphs" +msgstr "Meroïtische hiërogliefen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:801 +msgid "Meroitic Cursive" +msgstr "Meroïtisch cursief" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:805 +msgid "Kharoshthi" +msgstr "Kharoshthi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:809 +msgid "Old South Arabian" +msgstr "Oud Zuid-Arabisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:813 +msgid "Old North Arabian" +msgstr "Oud Noord-Arabisch" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:817 +msgid "Manichaean" +msgstr "Manichaean" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:821 +msgid "Avestan" +msgstr "Avestan" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:825 +msgid "Inscriptional Parthian" +msgstr "Inscriptioneel Parthian" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:829 +msgid "Inscriptional Pahlavi" +msgstr "Inscriptioneel Pahlavi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:833 +msgid "Psalter Pahlavi" +msgstr "Psalter Pahlavi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:837 +msgid "Old Turkic" +msgstr "Oud-Turks" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:841 +msgid "Old Hungarian" +msgstr "Oud-Hongaars" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:845 +msgid "Hanifi Rohingya" +msgstr "Hanifi Rohingya" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:849 +msgid "Rumi Numeral Symbols" +msgstr "Rumi numerieke symbolen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:853 +msgid "Old Sogdian" +msgstr "Old Sogdian" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:857 +msgid "Sogdian" +msgstr "Sogdian" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:861 +msgid "Elymaic" +msgstr "Elymaic" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:865 +msgid "Brahmi" +msgstr "Brahmi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:869 +msgid "Kaithi" +msgstr "Kaithi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:873 +msgid "Sora Sompeng" +msgstr "Sora Sompeng" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:877 +msgid "Chakma" +msgstr "Chakma" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:881 +msgid "Mahajani" +msgstr "Mahajani" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:885 +msgid "Sharada" +msgstr "Sharada" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:889 +msgid "Sinhala Archaic Numbers" +msgstr "Archaïsche getallen van Sinhala" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:893 +msgid "Khojki" +msgstr "Khojki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:897 +msgid "Multani" +msgstr "Multani" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:901 +msgid "Khudawadi" +msgstr "Khudawadi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:905 +msgid "Grantha" +msgstr "Grantha" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:909 +msgid "Newa" +msgstr "Newa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:913 +msgid "Tirhuta" +msgstr "Tirhuta" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:917 +msgid "Siddham" +msgstr "Siddham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:921 +msgid "Modi" +msgstr "Modi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:925 +msgid "Mongolian Supplement" +msgstr "Mongools supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:929 +msgid "Takri" +msgstr "Takri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:933 +msgid "Ahom" +msgstr "Ahom" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:937 +msgid "Dogra" +msgstr "Dogra" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:941 +msgid "Warang Citi" +msgstr "Warang Citi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:945 +msgid "Nandinagari" +msgstr "Nandinagari" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:949 +msgid "Zanabazar Square" +msgstr "Zanabazar Square" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:953 +msgid "Soyombo" +msgstr "Soyombo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:957 +msgid "Pau Cin Hau" +msgstr "Pau Cin Hau" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:961 +msgid "Bhaiksuki" +msgstr "Bhaiksuki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:965 +msgid "Marchen" +msgstr "Marchen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:969 +msgid "Masaram Gondi" +msgstr "Masaram Gondi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:973 +msgid "Gunjala Gondi" +msgstr "Gunjala Gondi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:977 +msgid "Makasar" +msgstr "Makasar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:981 +msgid "Tamil Supplement" +msgstr "Tamil supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:985 +msgid "Cuneiform" +msgstr "Cuneiform" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:989 +msgid "Cuneiform Numbers and Punctuation" +msgstr "Cuneiform getallen en interpunctie" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:993 +msgid "Early Dynastic Cuneiform" +msgstr "Vroeg-dynastic Cuneiform" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:997 +msgid "Egyptian Hieroglyphs" +msgstr "Egyptische hiërogliefen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1001 +msgid "Egyptian Hieroglyph Format Controls" +msgstr "Egyptische hiëroglief formaat controles" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1005 +msgid "Anatolian Hieroglyphs" +msgstr "Anatolische hiërogliefen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1009 +msgid "Bamum Supplement" +msgstr "Bamum supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1013 +msgid "Mro" +msgstr "Mro" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1017 +msgid "Bassa Vah" +msgstr "Bassa Vah" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1021 +msgid "Pahawh Hmong" +msgstr "Pahawh Hmong" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1025 +msgid "Medefaidrin" +msgstr "Medefaidrin" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1029 +msgid "Miao" +msgstr "Miao" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1033 +msgid "Ideographic Symbols and Punctuation" +msgstr "Ideografische symbolen en interpunktie" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1037 +msgid "Tangut" +msgstr "Tangut" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1041 +msgid "Tangut Components" +msgstr "Tangut onderdelen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1045 +msgid "Kana Supplement" +msgstr "Kana supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1049 +msgid "Kana Extended-A" +msgstr "Kana uitgebreid-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1053 +msgid "Small Kana Extension" +msgstr "Small Kana uitbreiding" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1057 +msgid "Nushu" +msgstr "Nushu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1061 +msgid "Duployan" +msgstr "Duployan" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1065 +msgid "Shorthand Format Controls" +msgstr "Steno formaatcontrole" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1069 +msgid "Byzantine Musical Symbols" +msgstr "Byzantijnse muzikale symbolen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1073 +msgid "Musical Symbols" +msgstr "Muzikale symbolen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1077 +msgid "Ancient Greek Musical Notation" +msgstr "Oude Griekse muzieknotatie" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1081 +msgid "Mayan Numerals" +msgstr "Mayan Numerals" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1085 +msgid "Tai Xuan Jing Symbols" +msgstr "Tai Xuan Jing symbolen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1089 +msgid "Counting Rod Numerals" +msgstr "Telpaal cijfers" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1093 +msgid "Mathematical Alphanumeric Symbols" +msgstr "Wiskundige alfanumerieke symbolen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1097 +msgid "Sutton SignWriting" +msgstr "Sutton tekenschrift" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1101 +msgid "Glagolitic Supplement" +msgstr "Glagolitisch supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1105 +msgid "Nyiakeng Puachue Hmong" +msgstr "Nyiakeng Puachue Hmong" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1109 +msgid "Wancho" +msgstr "Wancho" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1113 +msgid "Mende Kikakui" +msgstr "Mende Kikakui" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1117 +msgid "Adlam" +msgstr "Adlam" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1121 +msgid "Indic Siyaq Numbers" +msgstr "Indic Siyaq Nummers" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1125 +msgid "Ottoman Siyaq Numbers" +msgstr "Ottoman Siyaq getallen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1129 +msgid "Arabic Mathematical Alphabetic Symbols" +msgstr "Arabische wiskundige alfabetische symbolen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1133 +msgid "Mahjong Tiles" +msgstr "Mahjong stenen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1137 +msgid "Domino Tiles" +msgstr "Domino stenen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1141 +msgid "Playing Cards" +msgstr "Speelkaarten" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1145 +msgid "Enclosed Alphanumeric Supplement" +msgstr "Ingesloten alfanumeriek supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1149 +msgid "Enclosed Ideographic Supplement" +msgstr "Ingesloten ideografisch supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1153 +msgid "Miscellaneous Symbols and Pictographs" +msgstr "Diverse symbolen en pictogrammen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1157 +msgid "Emoticons" +msgstr "Emoticons" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1161 +msgid "Ornamental Dingbats" +msgstr "Ornamentele dingbats" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1165 +msgid "Transport and Map Symbols" +msgstr "Transport- en kaartsymbolen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1169 +msgid "Alchemical Symbols" +msgstr "Alchemistische symbolen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1173 +msgid "Geometric Shapes Extended" +msgstr "Geometrische vormen uitgebreid" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1177 +msgid "Supplemental Arrows-C" +msgstr "Supplementaire pijlen-C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1181 +msgid "Supplemental Symbols and Pictographs" +msgstr "Supplementaire symbolen en pictogrammen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1185 +msgid "Chess Symbols" +msgstr "Schaaksymbolen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1189 +msgid "Symbols and Pictographs Extended-A" +msgstr "Symbolen en Pictogrammen Uitgebreid-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1193 +msgid "CJK Unified Ideographs Extension B" +msgstr "CJK uniforme ideografen extensie B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1197 +msgid "CJK Unified Ideographs Extension C" +msgstr "CJK uniforme ideografen extensie C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1201 +msgid "CJK Unified Ideographs Extension D" +msgstr "CJK uniforme ideografen extensie D" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1205 +msgid "CJK Unified Ideographs Extension E" +msgstr "CJK uniforme ideografen extensie E" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1209 +msgid "CJK Unified Ideographs Extension F" +msgstr "CJK uniforme ideografen extensie F" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1213 +msgid "CJK Compatibility Ideographs Supplement" +msgstr "CJK compatibiliteit ideografen supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1217 +msgid "Tags" +msgstr "Tags" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1221 +msgid "Variation Selectors Supplement" +msgstr "Variatie selectoren supplement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1225 +msgid "Supplementary Private Use Area-A" +msgstr "Supplementair privé gebruiksgebied-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1229 +msgid "Supplementary Private Use Area-B" +msgstr "Supplementair privé gebruiksgebied-B" + +#: tools/main.vala:51 +msgid "List engine name only" +msgstr "Toon alleen machinenamen" + +#: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 +msgid "Can't connect to IBus.\n" +msgstr "Kan niet met IBus verbinden.\n" + +#: tools/main.vala:93 +#, c-format +msgid "language: %s\n" +msgstr "taal:%s\n" + +#: tools/main.vala:161 +msgid "No engine is set.\n" +msgstr "Er is geen machine ingesteld.\n" + +#: tools/main.vala:169 +msgid "Set global engine failed.\n" +msgstr "Instellen van globale machine is mislukt.\n" + +#: tools/main.vala:174 +msgid "Get global engine failed.\n" +msgstr "Verkrijgen van globale machine is mislukt.\n" + +#: tools/main.vala:217 +msgid "Read the system registry cache." +msgstr "Lees de systeem registry cache." + +#: tools/main.vala:219 +msgid "Read the registry cache FILE." +msgstr "Lees het registry cache BESTAND." + +#: tools/main.vala:237 tools/main.vala:242 +msgid "The registry cache is invalid.\n" +msgstr "De registry cache is ongeldig.\n" + +#: tools/main.vala:257 +msgid "Write the system registry cache." +msgstr "Schrijf de systeem registry cache." + +#: tools/main.vala:259 +msgid "Write the registry cache FILE." +msgstr "Schrijf het registry cache BESTAND." + +#: tools/main.vala:295 +msgid "" +"Use engine schema paths instead of ibus core, which can be comma-separated " +"values." msgstr "" -"De sneltoetsen voor het schakelen naar de volgende invoermethode in de lijst" +"Gebruik engine schemapaden in plaats van ibus core, welde door komma's " +"gescheiden waardes kunnen zijn." -#: ../setup/setup.ui.h:50 -msgid "The shortcut keys for switching to previous input method in the list" +#: tools/main.vala:381 +msgid "Resetting…" +msgstr "Herstellen…" + +#: tools/main.vala:399 +msgid "Done" +msgstr "Klaar" + +#: tools/main.vala:444 +msgid "Set or get engine" +msgstr "Stel engine in of haal deze op" + +#: tools/main.vala:445 +msgid "Exit ibus-daemon" +msgstr "Verlaat ibus-daemon" + +#: tools/main.vala:446 +msgid "Show available engines" +msgstr "Toon beschikbare engines" + +#: tools/main.vala:447 +msgid "(Not implemented)" +msgstr "(Niet geimplementeerd)" + +#: tools/main.vala:448 +msgid "Restart ibus-daemon" +msgstr "Start ibus-daemon opnieuw op" + +#: tools/main.vala:449 +msgid "Show version" +msgstr "Toon versie" + +#: tools/main.vala:450 +msgid "Show the content of registry cache" +msgstr "Toon de inhoud van registry cache" + +#: tools/main.vala:451 +msgid "Create registry cache" +msgstr "Maak registry cache aan" + +#: tools/main.vala:452 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "Print het D-Bus adres van ibus-daemon" + +#: tools/main.vala:453 +msgid "Show the configuration values" +msgstr "Toon de configuratiewaarden" + +#: tools/main.vala:454 +msgid "Reset the configuration values" +msgstr "Herstel de configuratiewaarden" + +#: tools/main.vala:456 +msgid "Save emoji on dialog to clipboard" +msgstr "Sla emoji op dialoog op naar clipboard" + +#: tools/main.vala:458 +msgid "Show this information" +msgstr "Toon deze informatie" + +#: tools/main.vala:464 +#, c-format +msgid "Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "Gebruik: %s COMMANDO [OPTIE...]\n" +"\n" + +#: tools/main.vala:465 +msgid "Commands:\n" +msgstr "Commando's:\n" + +#: tools/main.vala:494 +#, c-format +msgid "%s is unknown command!\n" +msgstr "%s is een onbekend commando!\n" + +#: ui/gtk3/emojier.vala:233 +msgid "Favorites" +msgstr "Favorieten" + +#: ui/gtk3/emojier.vala:234 +msgid "Others" +msgstr "Andere" + +#: ui/gtk3/emojier.vala:235 +msgid "Open Unicode choice" +msgstr "Open Unicode keuze" + +#: ui/gtk3/emojier.vala:994 +msgid "Bring back emoji choice" +msgstr "Bring de emoji keuze terug" + +#: ui/gtk3/emojier.vala:1096 +msgid "Page Down" +msgstr "Pagina naar beneden" + +#: ui/gtk3/emojier.vala:1107 +msgid "Page Up" +msgstr "Pagina omhoog" + +#: ui/gtk3/emojier.vala:1110 +msgid "Show emoji variants" +msgstr "Toon emoji varianten" + +#: ui/gtk3/emojier.vala:1111 +msgid "Close" +msgstr "Sluiten" + +#: ui/gtk3/emojier.vala:1117 +msgid "Menu" +msgstr "Menu" + +#: ui/gtk3/emojier.vala:1128 +msgid "Click to view a warning message" +msgstr "Klik om een waarschuwingsboodschap te bekijken" + +#: ui/gtk3/emojier.vala:1172 +msgid "Loading a Unicode dictionary:" +msgstr "Een Unicode woordenboek wordt geladen:" + +#: ui/gtk3/emojier.vala:1418 +#, c-format +msgid "Code point: %s" +msgstr "Code punt: %s" + +#: ui/gtk3/emojier.vala:1424 +msgid "Has emoji variants" +msgstr "Heeft emoji varianten" + +#: ui/gtk3/emojier.vala:1591 ui/gtk3/emojier.vala:1604 +#, c-format +msgid "Description: %s" +msgstr "Beschrijving: %s" + +#: ui/gtk3/emojier.vala:1591 +msgid "None" +msgstr "Geen" + +#: ui/gtk3/emojier.vala:1615 +#, c-format +msgid "Annotations: %s" +msgstr "Annotaties: %s" + +#: ui/gtk3/emojier.vala:1641 +#, c-format +msgid "Name: %s" +msgstr "Naam: %s" + +#: ui/gtk3/emojier.vala:1649 +#, c-format +msgid "Alias: %s" +msgstr "Alias: %s" + +#: ui/gtk3/emojier.vala:2139 ui/gtk3/ibus-extension-gtk3.desktop.in:3 +#: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 +msgid "Emoji Choice" +msgstr "Emoji keuze" + +#: ui/gtk3/emojier.vala:2141 +msgid "Unicode Choice" +msgstr "Unicode keuze" + +#: ui/gtk3/emojier.vala:2429 +msgid "" +"Failed to get the current text application. Please re-focus your application." +" E.g. Press Esc key several times to release the emoji typing mode, click " +"your desktop and click your text application again." msgstr "" -"De sneltoetsen voor het schakelen naar de vorige invoermethode in de lijst" +"Het verkrijgen van de huidige teksttoepassing mislukte. Stel de focus op je " +"toepassing opnieuw in. Bijvoorbeeld, druk meerdere keren op de Esc toets " +"voor het vrijgeven van de emoji type modus, klik op je bureaublad en klik " +"opnieuw op de teksttoepassing." + +#: ui/gtk3/emojierapp.vala:58 +msgid "Canceled to choose an emoji." +msgstr "Annuleer het kiezen van een emoji." + +#: ui/gtk3/emojierapp.vala:93 +msgid "Copied an emoji to your clipboard." +msgstr "Een emoji naar je clipboard gecopieerd." + +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ui/gtk3/emojierapp.vala:114 +msgid "\"FONT\" for emoji characters on emoji dialog" +msgstr "\"FONT\" voor emoji karakters op emoji dialoog" + +#: ui/gtk3/emojierapp.vala:115 +msgid "FONT" +msgstr "FONT" + +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ui/gtk3/emojierapp.vala:120 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" +msgstr "\"TAAL\" voor annotaties op emoji dialoog. B.v. \"en\"" + +#: ui/gtk3/emojierapp.vala:121 +msgid "LANG" +msgstr "TAAL" + +#: ui/gtk3/emojierapp.vala:123 +msgid "Emoji annotations can be match partially" +msgstr "Emoji annotaties kunnen gedeeltelijk gematched worden" + +#: ui/gtk3/emojierapp.vala:127 +msgid "Match with the length of the specified integer" +msgstr "Match met de lengte van het gespecificeerde geheel getal" + +#: ui/gtk3/emojierapp.vala:131 +msgid "Match with the condition of the specified integer" +msgstr "Match met de conditie van het gespecificeerde geheel getal" + +#: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 +msgid "IBus Panel" +msgstr "IBus Paneel" -#: ../setup/setup.ui.h:52 -msgid "Top left corner" -msgstr "Linksboven" +#: ui/gtk3/panel.vala:1095 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus is een intelligente invoer bus voor Linux/Unix." -#: ../setup/setup.ui.h:53 -msgid "Top right corner" -msgstr "Rechtsboven" +#: ui/gtk3/panel.vala:1099 +msgid "translator-credits" +msgstr "Geert Warrink" -#: ../setup/setup.ui.h:54 -msgid "Use custom font:" -msgstr "Gebruik aangepast lettertype:" +#: ui/gtk3/panel.vala:1118 +msgid "Preferences" +msgstr "Voorkeuren" -#: ../setup/setup.ui.h:57 -msgid "Vertical" -msgstr "Verticaal" +#: ui/gtk3/panel.vala:1144 +msgid "Restart" +msgstr "Opnieuw starten" + +#: ui/gtk3/panel.vala:1148 +msgid "Quit" +msgstr "Afsluiten" -#: ../setup/setup.ui.h:58 -msgid "When active" -msgstr "Als deze actief is" +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 +msgid "default:LTR" +msgstr "default:LTR" diff --git a/po/oc.po b/po/oc.po new file mode 100644 index 000000000..56e6edac7 --- /dev/null +++ b/po/oc.po @@ -0,0 +1,3288 @@ +# Occitan translation of ibus. +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2021 Takao Fujiwara +# This file is distributed under the same license as the ibus package. +# +# Quentin PAGÈS , 2021. +msgid "" +msgstr "" +"Project-Id-Version: ibus 1.5.23\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2020-12-11 16:21+0900\n" +"PO-Revision-Date: 2021-06-08 19:04+0000\n" +"Last-Translator: Quentin PAGÈS \n" +"Language-Team: Occitan \n" +"Language: oc\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.6.2\n" + +#. Translators: Here “Preload” is a verb +#: data/dconf/org.freedesktop.ibus.gschema.xml:11 +msgid "Preload engines" +msgstr "Precargar los motors" + +#. Translators: Tooltip for the button “Preload Engines” +#: data/dconf/org.freedesktop.ibus.gschema.xml:13 +msgid "Preload engines during ibus starts up" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:17 +msgid "Engines order" +msgstr "Òrdre dels motors" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:18 +msgid "Saved engines order in input method list" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:22 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:23 +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is " +"400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " +"show the window and switch prev/next engines." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:27 +msgid "Saved version number" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:28 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:32 +msgid "Latin layouts which have no ASCII" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:33 +msgid "US layout is appended to the Latin layouts. variant can be omitted." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:37 +msgid "Use xmodmap" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:38 +msgid "" +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 +msgid "Use system keyboard layout" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 +msgid "Use system keyboard (XKB) layout" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:47 +msgid "Embed Preedit Text" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:48 +msgid "Embed Preedit Text in Application Window" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:52 +msgid "Use global input method" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 +msgid "Share the same input method among all applications" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:57 +msgid "Enable input method by default" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:58 +msgid "Enable input method by default when the application gets input focus" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:62 +msgid "DConf preserve name prefixes" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:63 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:70 +msgid "Trigger shortcut keys" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:71 +#: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 +msgid "The shortcut keys for turning input method on or off" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:75 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:80 +msgid "Enable shortcut keys" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:81 +msgid "The shortcut keys for turning input method on" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:85 +msgid "Disable shortcut keys" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:86 +msgid "The shortcut keys for turning input method off" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:90 +#: data/dconf/org.freedesktop.ibus.gschema.xml:95 +msgid "Next engine shortcut keys" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:91 +#: data/dconf/org.freedesktop.ibus.gschema.xml:96 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:100 +#: data/dconf/org.freedesktop.ibus.gschema.xml:105 +msgid "Prev engine shortcut keys" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:101 +#: data/dconf/org.freedesktop.ibus.gschema.xml:106 +msgid "The shortcut keys for switching to the previous input method" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:112 +msgid "Auto hide" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:113 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:117 +#: data/dconf/org.freedesktop.ibus.gschema.xml:121 +msgid "Language panel position" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:125 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:126 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:130 +msgid "The milliseconds to show property panel" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:131 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:135 +msgid "Orientation of lookup table" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:136 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:140 +#: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 +#: setup/setup.ui:475 +msgid "Show icon on system tray" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:145 +msgid "Show input method name" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 +msgid "Show input method name on language bar" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:150 +msgid "RGBA value of XKB icon" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:151 +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form 'rgba(r," +"g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 to 255 or " +"percentage values in the range 0% to 100%, and 'a' is a floating point value " +"in the range 0 to 1 of the alpha." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:155 +msgid "The milliseconds to show the panel icon for a property" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:156 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:160 +msgid "Use custom font" +msgstr "Utilizar una poliça personalizada" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:161 +msgid "Use custom font name for language panel" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:165 +#: data/dconf/org.freedesktop.ibus.gschema.xml:192 +msgid "Custom font" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:166 +msgid "Custom font name for language panel" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:170 setup/setup.ui:1305 +msgid "Choose glyphs with input method's language on candidate window" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:171 +msgid "" +"Some code points have the different glyphs and Pango determines the glyphs " +"from the language attribute. Pango chooses glyphs from the IBus engine's " +"language if the value is true and choose them from the desktop locale if the " +"value is false." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:182 +msgid "Unicode shortcut keys for gtk_accelerator_parse" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:183 +msgid "The shortcut keys for turning Unicode typing on or off" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:187 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:188 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:193 +msgid "Custom font name for emoji characters on emoji dialog" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:197 +msgid "Default language for emoji dictionary" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:198 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict ." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:202 +msgid "favorite emoji list on emoji dialog" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:203 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:207 +msgid "favorite emoji annotation list on emoji dialog" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:208 +msgid "You can assign an annotation for a favorite emoji in this list." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:212 +msgid "Whether emoji annotations can be match partially or not" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:213 +msgid "" +"Whether emoji annotations can be matched with a partial string instead of " +"the exact match or not." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:217 +msgid "Match emoji annotations with the specified length" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:218 +msgid "" +"Match emoji annotations partially with more than the specified number of " +"characters instead of the exact match." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:222 +msgid "Choose a condition to match emoji annotations partially" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:223 +msgid "" +"Choose one of the following conditions to match emoji annotations partially: " +"0 == Prefix match, 1 == Suffix match, 2 == Containing match" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:227 +msgid "Load the emoji data at the time of startup" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:228 +msgid "" +"Load the emoji data at the time of startup if true. About 10MB memory is " +"needed to load the data. Load the emoji data when open the emoji dialog at " +"the beginning if false." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:232 +msgid "Load the Unicode data at the time of startup" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:233 +msgid "" +"Load the Unicode data at the time of startup if true. About 15MB memory is " +"needed to load the data. Load the Unicode data when open the emoji dialog at " +"the beginning if false. The Unicode data is always loaded after the emoji " +"data is loaded even if true." +msgstr "" + +#: ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "" + +#: ibus/lang.py:41 src/ibusutil.c:209 +msgid "Other" +msgstr "Autre" + +#: setup/emojilang.py:67 +msgid "Select a language" +msgstr "Seleccionar una lenga" + +#: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 +#: setup/main.py:560 +msgid "_Cancel" +msgstr "A_nullar" + +#: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 +msgid "_OK" +msgstr "_D'acòrdi" + +#: setup/emojilang.py:235 setup/enginedialog.py:205 +msgid "More…" +msgstr "Mai…" + +#: setup/engineabout.py:37 setup/setup.ui:1368 ui/gtk3/panel.vala:1184 +msgid "About" +msgstr "A prepaus" + +#: setup/engineabout.py:40 setup/setup.ui:1391 +msgid "_Close" +msgstr "_Tampar" + +#: setup/engineabout.py:72 +#, python-format +msgid "Language: %s\n" +msgstr "Lenga : %s\n" + +#: setup/engineabout.py:75 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "Agençament del clavièr : %s\n" + +#: setup/engineabout.py:78 +#, python-format +msgid "Author: %s\n" +msgstr "Autor : %s\n" + +#: setup/engineabout.py:81 +msgid "Description:\n" +msgstr "Descripcion :\n" + +#: setup/enginecombobox.py:139 setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "" + +#. add button +#: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 +msgid "_Add" +msgstr "_Apondre" + +#. create im name & icon column +#: setup/enginetreeview.py:69 setup/setup.ui:838 +msgid "Input Method" +msgstr "Metòde de picada" + +#: setup/ibus-setup.desktop:3 setup/setup.ui:69 +msgid "IBus Preferences" +msgstr "Preferéncias d'IBus" + +#: setup/ibus-setup.desktop:4 +msgid "Set IBus Preferences" +msgstr "Définissez las preferéncias d'IBus" + +#: setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "Acorchis de clavièr" + +#: setup/keyboardshortcut.py:67 +msgid "Key code:" +msgstr "Còde tòca :" + +#: setup/keyboardshortcut.py:82 +msgid "Modifiers:" +msgstr "Modificadors :" + +#. apply button +#: setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "_Aplicar" + +#. delete button +#: setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "Su_primir lo camin" + +#: setup/keyboardshortcut.py:252 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "" + +#: setup/keyboardshortcut.py:255 +msgid "Please press a key (or a key combination)" +msgstr "Quichatz una tòca (o una combinason de tòcas)" + +#: setup/main.py:121 setup/main.py:588 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "" + +#: setup/main.py:515 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "" + +#: setup/main.py:536 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "" + +#. Translators: %d == 5 currently +#: setup/main.py:550 +#, python-format +msgid "IBus daemon could not be started in %d seconds." +msgstr "" + +#: setup/main.py:562 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "" + +#. Translators: Title of the window +#: setup/main.py:564 +msgid "switching input methods" +msgstr "" + +#: setup/setup.ui:11 +msgid "Horizontal" +msgstr "Orizontal" + +#: setup/setup.ui:14 +msgid "Vertical" +msgstr "Vertical" + +#: setup/setup.ui:25 +msgid "Top left corner" +msgstr "" + +#: setup/setup.ui:28 +msgid "Top right corner" +msgstr "" + +#: setup/setup.ui:31 +msgid "Bottom left corner" +msgstr "" + +#: setup/setup.ui:34 +msgid "Bottom right corner" +msgstr "" + +#: setup/setup.ui:37 +msgid "Custom" +msgstr "Personalizats" + +#: setup/setup.ui:48 +msgid "Do not show" +msgstr "" + +#: setup/setup.ui:51 +msgid "Hide automatically" +msgstr "" + +#: setup/setup.ui:54 +msgid "Always" +msgstr "Totjorn" + +#: setup/setup.ui:113 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "" + +#: setup/setup.ui:115 +msgid "Next input method:" +msgstr "" + +#: setup/setup.ui:127 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "" + +#: setup/setup.ui:129 +msgid "Previous input method:" +msgstr "" + +#: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 +#: setup/setup.ui:903 setup/setup.ui:957 +msgid "..." +msgstr "" + +#: setup/setup.ui:226 +msgid "Enable or disable:" +msgstr "" + +#: setup/setup.ui:238 +msgid "Enable:" +msgstr "" + +#: setup/setup.ui:291 +msgid "Disable:" +msgstr "" + +#: setup/setup.ui:345 setup/setup.ui:983 +msgid "Keyboard Shortcuts" +msgstr "" + +#: setup/setup.ui:374 +msgid "Set the orientation of candidates in lookup table" +msgstr "" + +#: setup/setup.ui:376 +msgid "Candidates orientation:" +msgstr "" + +#: setup/setup.ui:407 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "" + +#: setup/setup.ui:409 +msgid "Show property panel:" +msgstr "" + +#: setup/setup.ui:423 +msgid "Language panel position:" +msgstr "" + +#: setup/setup.ui:494 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "" + +#: setup/setup.ui:508 +msgid "Embed preedit text in application window" +msgstr "" + +#: setup/setup.ui:513 +msgid "Embed the preedit text of input method in the application window" +msgstr "" + +#: setup/setup.ui:527 +msgid "Use custom font:" +msgstr "" + +#: setup/setup.ui:562 setup/setup.ui:1156 +msgid "Font and Style" +msgstr "" + +#: setup/setup.ui:579 +msgid "General" +msgstr "General" + +#: setup/setup.ui:671 +msgid "Add the selected input method into the enabled input methods" +msgstr "" + +#: setup/setup.ui:682 +msgid "_Remove" +msgstr "_Suprimir" + +#: setup/setup.ui:689 +msgid "Remove the selected input method from the enabled input methods" +msgstr "" + +#: setup/setup.ui:700 +msgid "_Up" +msgstr "_Naut" + +#: setup/setup.ui:707 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "" + +#: setup/setup.ui:718 +msgid "_Down" +msgstr "_Bas" + +#: setup/setup.ui:725 +msgid "Move down the selected input method in the enabled input methods" +msgstr "" + +#: setup/setup.ui:736 +msgid "_About" +msgstr "A pr_epaus" + +#: setup/setup.ui:743 +msgid "Show information of the selected input method" +msgstr "" + +#: setup/setup.ui:754 +msgid "_Preferences" +msgstr "_Preferéncias" + +#: setup/setup.ui:761 +msgid "Show setup of the selected input method" +msgstr "" + +#: setup/setup.ui:812 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" + +#: setup/setup.ui:873 +msgid "" +"The shortcut keys to enable conversions of emoji annotations or Unicode names" +msgstr "" + +#: setup/setup.ui:875 +msgid "Emoji annotation:" +msgstr "" + +#: setup/setup.ui:927 +msgid "The shortcut keys to enable Unicode code point conversions" +msgstr "" + +#: setup/setup.ui:929 +msgid "Unicode code point:" +msgstr "" + +#: setup/setup.ui:1013 +msgid "Set a font of Unicode candidates on the emoji dialog" +msgstr "" + +#: setup/setup.ui:1015 +msgid "Unicode font:" +msgstr "" + +#: setup/setup.ui:1038 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "" + +#: setup/setup.ui:1040 +msgid "Emoji annotation language:" +msgstr "" + +#: setup/setup.ui:1062 +msgid "" +"Match emoji annotations partially with the following condition and more than " +"the number of characters:" +msgstr "" + +#: setup/setup.ui:1067 +msgid "" +"If emoji annotations can be matched with a partial string instead of the " +"exact match" +msgstr "" + +#: setup/setup.ui:1101 +msgid "Prefix match" +msgstr "" + +#: setup/setup.ui:1115 +msgid "Suffix match" +msgstr "" + +#: setup/setup.ui:1130 +msgid "Containing match" +msgstr "" + +#: setup/setup.ui:1176 +msgid "Emoji" +msgstr "Emoji" + +#: setup/setup.ui:1230 +msgid "Keyboard Layout" +msgstr "Disposicion de clavièr" + +#: setup/setup.ui:1278 +msgid "Global input method settings" +msgstr "" + +#: setup/setup.ui:1310 +msgid "" +"Choose glyphs with the input method's language on the candidate window for " +"the duplicated code points" +msgstr "" + +#: setup/setup.ui:1327 +msgid "Fonts" +msgstr "Poliças" + +#: setup/setup.ui:1347 +msgid "Advanced" +msgstr "Avançat" + +#: src/ibusemojigen.h:30 +msgid "Activities" +msgstr "Activitats" + +#: src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "Animals e natura" + +#: src/ibusemojigen.h:32 +msgid "Component" +msgstr "Component" + +#: src/ibusemojigen.h:33 +msgid "Flags" +msgstr "Bandièras" + +#: src/ibusemojigen.h:34 +msgid "Food & Drink" +msgstr "Noiridura e bevenda" + +#: src/ibusemojigen.h:35 +msgid "Objects" +msgstr "Objèctes" + +#: src/ibusemojigen.h:36 +msgid "People & Body" +msgstr "" + +#: src/ibusemojigen.h:37 +msgid "Smileys & Emotion" +msgstr "" + +#: src/ibusemojigen.h:38 +msgid "Symbols" +msgstr "Simbòls" + +#: src/ibusemojigen.h:39 +msgid "Travel & Places" +msgstr "Viatges e luòcs" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:33 +msgid "Basic Latin" +msgstr "Latin de basa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:37 +msgid "Latin-1 Supplement" +msgstr "Suplement Latin-1" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:41 +msgid "Latin Extended-A" +msgstr "Latin espandit-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:45 +msgid "Latin Extended-B" +msgstr "Latin espandit-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:49 +msgid "IPA Extensions" +msgstr "Extensions IPA" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:53 +msgid "Spacing Modifier Letters" +msgstr "Letras del modificador d'espaçament" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:57 +msgid "Combining Diacritical Marks" +msgstr "Marcas diactiticas jonctivas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:61 +msgid "Greek and Coptic" +msgstr "Grèc e còpte" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:65 +msgid "Cyrillic" +msgstr "Cirillic" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:69 +msgid "Cyrillic Supplement" +msgstr "Suplement Cirillic" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:73 +msgid "Armenian" +msgstr "Armèni" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:77 +msgid "Hebrew" +msgstr "Ebrèu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:81 +msgid "Arabic" +msgstr "Arabi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:85 +msgid "Syriac" +msgstr "Siriac" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:89 +msgid "Arabic Supplement" +msgstr "Suplement arabi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:93 +msgid "Thaana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:97 +msgid "NKo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:101 +msgid "Samaritan" +msgstr "Samaritan" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:105 +msgid "Mandaic" +msgstr "Mandean" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:109 +msgid "Syriac Supplement" +msgstr "Suplement siriac" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:113 +msgid "Arabic Extended-A" +msgstr "Arabi espandit - A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:117 +msgid "Devanagari" +msgstr "Devanagari" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:121 +msgid "Bengali" +msgstr "Bengalin" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:125 +msgid "Gurmukhi" +msgstr "Gurmukhi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:129 +msgid "Gujarati" +msgstr "Gujarati" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:133 +msgid "Oriya" +msgstr "Oriyà" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:137 +msgid "Tamil" +msgstr "Tamol" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:141 +msgid "Telugu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:145 +msgid "Kannada" +msgstr "Kannadà" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:149 +msgid "Malayalam" +msgstr "Malaialam" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:153 +msgid "Sinhala" +msgstr "Singalés" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:157 +msgid "Thai" +msgstr "Tailandés" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:161 +msgid "Lao" +msgstr "Laossian" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:165 +msgid "Tibetan" +msgstr "Tibetan" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:169 +msgid "Myanmar" +msgstr "Myanmar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:173 +msgid "Georgian" +msgstr "Georgian" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:177 +msgid "Hangul Jamo" +msgstr "Jamos Hangul" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:181 +msgid "Ethiopic" +msgstr "Etiopian" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:185 +msgid "Ethiopic Supplement" +msgstr "Suplement etiopian" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:189 +msgid "Cherokee" +msgstr "Cheroquí" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:193 +msgid "Unified Canadian Aboriginal Syllabics" +msgstr "Sillabari autoctòne canadian unificat" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:197 +msgid "Ogham" +msgstr "Ogam" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:201 +msgid "Runic" +msgstr "Runic" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:205 +msgid "Tagalog" +msgstr "Tagalòg" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:209 +msgid "Hanunoo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:213 +msgid "Buhid" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:217 +msgid "Tagbanwa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:221 +msgid "Khmer" +msgstr "Cmèr" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:225 +msgid "Mongolian" +msgstr "Mongòl" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:229 +msgid "Unified Canadian Aboriginal Syllabics Extended" +msgstr "Sillabaris autoctòns canadians unificats espandits" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:233 +msgid "Limbu" +msgstr "Litua" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:237 +msgid "Tai Le" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:241 +msgid "New Tai Lue" +msgstr "Tai Lue novèl" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:245 +msgid "Khmer Symbols" +msgstr "Símbòls Cmèr" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:249 +msgid "Buginese" +msgstr "Bugui" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:253 +msgid "Tai Tham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:257 +msgid "Combining Diacritical Marks Extended" +msgstr "Suplement de combinasons de marcas diacriticas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:261 +msgid "Balinese" +msgstr "Balinés" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:265 +msgid "Sundanese" +msgstr "Sodanés" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:269 +msgid "Batak" +msgstr "Bascon" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:273 +msgid "Lepcha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:277 +msgid "Ol Chiki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:281 +msgid "Cyrillic Extended-C" +msgstr "Cirillic espandit - C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:285 +msgid "Georgian Extended" +msgstr "Georgian espandit" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:289 +msgid "Sundanese Supplement" +msgstr "Suplement sodanés" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:293 +msgid "Vedic Extensions" +msgstr "Extensions vedicas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:297 +msgid "Phonetic Extensions" +msgstr "Extensions foneticas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:301 +msgid "Phonetic Extensions Supplement" +msgstr "Suplement d'extensions foneticas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:305 +msgid "Combining Diacritical Marks Supplement" +msgstr "Suplement de combinasons de marcas diacriticas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:309 +msgid "Latin Extended Additional" +msgstr "Latin espandit addicional" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:313 +msgid "Greek Extended" +msgstr "Grèc espandit" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:317 +msgid "General Punctuation" +msgstr "Ponctuacion generala" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:321 +msgid "Superscripts and Subscripts" +msgstr "Exponents e indicis" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:325 +msgid "Currency Symbols" +msgstr "Simbòls monetaris" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:329 +msgid "Combining Diacritical Marks for Symbols" +msgstr "Marcas diacriticas jonctivas pels simbòls" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:333 +msgid "Letterlike Symbols" +msgstr "Simbòls Letterlike (grafèms)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:337 +msgid "Number Forms" +msgstr "Simbòls de nombres" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:341 +msgid "Arrows" +msgstr "Sagetas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:345 +msgid "Mathematical Operators" +msgstr "Operadors matematics" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:349 +msgid "Miscellaneous Technical" +msgstr "Tecnicas divèrsas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:353 +msgid "Control Pictures" +msgstr "Pictogramas de comanda" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:357 +msgid "Optical Character Recognition" +msgstr "Reconeissença optica dels caractèrs" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:361 +msgid "Enclosed Alphanumerics" +msgstr "Alfanumerics encerclats" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:365 +msgid "Box Drawing" +msgstr "Bóstia de dessenh" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:369 +msgid "Block Elements" +msgstr "Pavats" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:373 +msgid "Geometric Shapes" +msgstr "Formas geometricas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:377 +msgid "Miscellaneous Symbols" +msgstr "Simbòls divèrses" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:381 +msgid "Dingbats" +msgstr "Ornaments tipografics (« Dingbats »)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:385 +msgid "Miscellaneous Mathematical Symbols-A" +msgstr "Simbòls divèrses de matematicas-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:389 +msgid "Supplemental Arrows-A" +msgstr "Suplement A de sagetas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:393 +msgid "Braille Patterns" +msgstr "Combinasons Braille" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:397 +msgid "Supplemental Arrows-B" +msgstr "Suplement B de sagetas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:401 +msgid "Miscellaneous Mathematical Symbols-B" +msgstr "Simbòls divèrses de matematicas-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:405 +msgid "Supplemental Mathematical Operators" +msgstr "Operadors matematics suplementaris" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:409 +msgid "Miscellaneous Symbols and Arrows" +msgstr "Simbòls e flèchas divèrses" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:413 +msgid "Glagolitic" +msgstr "Glagolític" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:417 +msgid "Latin Extended-C" +msgstr "Latin espandit - C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:421 +msgid "Coptic" +msgstr "Còpt" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:425 +msgid "Georgian Supplement" +msgstr "Suplement georgian" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:429 +msgid "Tifinagh" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:433 +msgid "Ethiopic Extended" +msgstr "Etiopian espandit" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:437 +msgid "Cyrillic Extended-A" +msgstr "Cirillic espandit - A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:441 +msgid "Supplemental Punctuation" +msgstr "Pontuacion suplementària" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:445 +msgid "CJK Radicals Supplement" +msgstr "Suplement de claus CJC" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:449 +msgid "Kangxi Radicals" +msgstr "Radicals Kangxi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:453 +msgid "Ideographic Description Characters" +msgstr "Caractèrs de descripcion ideofonografica" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:457 +msgid "CJK Symbols and Punctuation" +msgstr "Simbòls e ponctuacion CJC" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:461 +msgid "Hiragana" +msgstr "Iragana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:465 +msgid "Katakana" +msgstr "Katakana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:469 +msgid "Bopomofo" +msgstr "Bopomofo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:473 +msgid "Hangul Compatibility Jamo" +msgstr "Hangul compatible Jamo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:477 +msgid "Kanbun" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:481 +msgid "Bopomofo Extended" +msgstr "Bopomofo espandit" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:485 +msgid "CJK Strokes" +msgstr "Traits CJC" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:489 +msgid "Katakana Phonetic Extensions" +msgstr "Suplement fonetic katakana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:493 +msgid "Enclosed CJK Letters and Months" +msgstr "Letras e meses CJC enrodats" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:497 +msgid "CJK Compatibility" +msgstr "Compatibilitat CJC (Chinés, Japanés, Corean)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:501 +msgid "CJK Unified Ideographs Extension A" +msgstr "Extension d'ideogramas unificats CJC - A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:505 +msgid "Yijing Hexagram Symbols" +msgstr "Simbòls d'exagrama Yijing" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:509 +msgid "CJK Unified Ideographs" +msgstr "Ideogramas unificats CJC" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:513 +msgid "Yi Syllables" +msgstr "Sillabaris Yi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:517 +msgid "Yi Radicals" +msgstr "Radicals Yi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:521 +msgid "Lisu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:525 +msgid "Vai" +msgstr "Vai" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:529 +msgid "Cyrillic Extended-B" +msgstr "Cirillic espandit - B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:533 +msgid "Bamum" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:537 +msgid "Modifier Tone Letters" +msgstr "Letras modificatrises de tonalitat" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:541 +msgid "Latin Extended-D" +msgstr "Latin espandit - D" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:545 +msgid "Syloti Nagri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:549 +msgid "Common Indic Number Forms" +msgstr "Formas de nombres indics comunas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:553 +msgid "Phags-pa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:557 +msgid "Saurashtra" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:561 +msgid "Devanagari Extended" +msgstr "Devanagari espandit" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:565 +msgid "Kayah Li" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:569 +msgid "Rejang" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:573 +msgid "Hangul Jamo Extended-A" +msgstr "Hangul Jamo espandit - A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:577 +msgid "Javanese" +msgstr "Javanés" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:581 +msgid "Myanmar Extended-B" +msgstr "Birman espandit-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:585 +msgid "Cham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:589 +msgid "Myanmar Extended-A" +msgstr "Myanmar espandit - A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:593 +msgid "Tai Viet" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:597 +msgid "Meetei Mayek Extensions" +msgstr "Extension Meetei Mayek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:601 +msgid "Ethiopic Extended-A" +msgstr "Etiopian espandit - A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:605 +msgid "Latin Extended-E" +msgstr "Latin espandit-E" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:609 +msgid "Cherokee Supplement" +msgstr "Suplement Cheroquí" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:613 +msgid "Meetei Mayek" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:617 +msgid "Hangul Syllables" +msgstr "Sillabas Hangulas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:621 +msgid "Hangul Jamo Extended-B" +msgstr "Hangul Jamo espandit - B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:625 +msgid "High Surrogates" +msgstr "Mièja zòna nauta d'indireccion" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:629 +msgid "High Private Use Surrogates" +msgstr "Partida d'usatge privat de la mièja zòna nauta d'indireccion" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:633 +msgid "Low Surrogates" +msgstr "Mièja zòna bassa d'indireccion" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:637 +msgid "Private Use Area" +msgstr "Zòna d'usatge privat" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:641 +msgid "CJK Compatibility Ideographs" +msgstr "Ideogramas compatibles CJC" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:645 +msgid "Alphabetic Presentation Forms" +msgstr "Formas de presentacion alfabeticas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:649 +msgid "Arabic Presentation Forms-A" +msgstr "Formas-A de presentacion aràbia" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:653 +msgid "Variation Selectors" +msgstr "Selectors de variacion" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:657 +msgid "Vertical Forms" +msgstr "Formas verticalas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:661 +msgid "Combining Half Marks" +msgstr "Mièg signes jonctius" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:665 +msgid "CJK Compatibility Forms" +msgstr "Formas compatiblas CJC" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:669 +msgid "Small Form Variants" +msgstr "Pichonas variantas de forma" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:673 +msgid "Arabic Presentation Forms-B" +msgstr "Forma-B de presentacion aràbia" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:677 +msgid "Halfwidth and Fullwidth Forms" +msgstr "caractèrs 1/2 e largor plena" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:681 +msgid "Specials" +msgstr "Simbòls especials" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:685 +msgid "Linear B Syllabary" +msgstr "Sillabari linear B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:689 +msgid "Linear B Ideograms" +msgstr "Ideogramas linears B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:693 +msgid "Aegean Numbers" +msgstr "Nombres egèus" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:697 +msgid "Ancient Greek Numbers" +msgstr "Nombres grècs ancians" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:701 +msgid "Ancient Symbols" +msgstr "Simbòls ancians" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:705 +msgid "Phaistos Disc" +msgstr "Disc de Faïstos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:709 +msgid "Lycian" +msgstr "Lician" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:713 +msgid "Carian" +msgstr "Maòri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:717 +msgid "Coptic Epact Numbers" +msgstr "Epactes còpts" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:721 +msgid "Old Italic" +msgstr "Italica anciana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:725 +msgid "Gothic" +msgstr "Gotic" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:729 +msgid "Old Permic" +msgstr "Ancian Permic" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:733 +msgid "Ugaritic" +msgstr "Ogaritic" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:737 +msgid "Old Persian" +msgstr "Pèrse ancian" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:741 +msgid "Deseret" +msgstr "Deseret" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:745 +msgid "Shavian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:749 +msgid "Osmanya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:753 +msgid "Osage" +msgstr "Osatge" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:757 +msgid "Elbasan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:761 +msgid "Caucasian Albanian" +msgstr "Albanés caucasian" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:765 +msgid "Linear A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:769 +msgid "Cypriot Syllabary" +msgstr "Sillabari chipriòta" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:773 +msgid "Imperial Aramaic" +msgstr "Aramean imperial" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:777 +msgid "Palmyrene" +msgstr "Palmirenian" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:781 +msgid "Nabataean" +msgstr "Nabatean" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:785 +msgid "Hatran" +msgstr "Atran" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:789 +msgid "Phoenician" +msgstr "Fenician" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:793 +msgid "Lydian" +msgstr "Lidian" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:797 +msgid "Meroitic Hieroglyphs" +msgstr "Ieroglifes meroïtics" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:801 +msgid "Meroitic Cursive" +msgstr "Cursiva meroïtica" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:805 +msgid "Kharoshthi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:809 +msgid "Old South Arabian" +msgstr "Arabi del Sud ancian" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:813 +msgid "Old North Arabian" +msgstr "Arabi del Nòrd ancian" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:817 +msgid "Manichaean" +msgstr "Maniquean" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:821 +msgid "Avestan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:825 +msgid "Inscriptional Parthian" +msgstr "Part d'inscripcion" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:829 +msgid "Inscriptional Pahlavi" +msgstr "Pehlevi de las inscripcions" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:833 +msgid "Psalter Pahlavi" +msgstr "Pehlevi dels psautièrs" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:837 +msgid "Old Turkic" +msgstr "Turc ancian" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:841 +msgid "Old Hungarian" +msgstr "Runas ongresa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:845 +msgid "Hanifi Rohingya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:849 +msgid "Rumi Numeral Symbols" +msgstr "Simbòls numerics rumi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:853 +msgid "Yezidi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:857 +msgid "Old Sogdian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:861 +msgid "Sogdian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:865 +msgid "Chorasmian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:869 +msgid "Elymaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:873 +msgid "Brahmi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:877 +msgid "Kaithi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:881 +msgid "Sora Sompeng" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:885 +msgid "Chakma" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:889 +msgid "Mahajani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:893 +msgid "Sharada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:897 +msgid "Sinhala Archaic Numbers" +msgstr "Chifras arcaïcas del cingalés" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:901 +msgid "Khojki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:905 +msgid "Multani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:909 +msgid "Khudawadi" +msgstr "Khoudawadi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:913 +msgid "Grantha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:917 +msgid "Newa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:921 +msgid "Tirhuta" +msgstr "Tirhouta" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:925 +msgid "Siddham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:929 +msgid "Modi" +msgstr "Modi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:933 +msgid "Mongolian Supplement" +msgstr "Suplement mongòl" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:937 +msgid "Takri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:941 +msgid "Ahom" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:945 +msgid "Dogra" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:949 +msgid "Warang Citi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:953 +msgid "Dives Akuru" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:957 +msgid "Nandinagari" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:961 +msgid "Zanabazar Square" +msgstr "Carrat Zanabazar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:965 +msgid "Soyombo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:969 +msgid "Pau Cin Hau" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:973 +msgid "Bhaiksuki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:977 +msgid "Marchen" +msgstr "Marchen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:981 +msgid "Masaram Gondi" +msgstr "Gondí de Masaram" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:985 +msgid "Gunjala Gondi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:989 +msgid "Makasar" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:993 +msgid "Lisu Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:997 +msgid "Tamil Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1001 +msgid "Cuneiform" +msgstr "Cuneïfòrme" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1005 +msgid "Cuneiform Numbers and Punctuation" +msgstr "Ponctuacion e nombres cuneifòrme" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1009 +msgid "Early Dynastic Cuneiform" +msgstr "Ancians cuneifòrmes dinastics" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1013 +msgid "Egyptian Hieroglyphs" +msgstr "Ieroglifes egipcians" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1017 +msgid "Egyptian Hieroglyph Format Controls" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1021 +msgid "Anatolian Hieroglyphs" +msgstr "Ieroglifes anatolians" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1025 +msgid "Bamum Supplement" +msgstr "Suplement Bamum" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1029 +msgid "Mro" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1033 +msgid "Bassa Vah" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1037 +msgid "Pahawh Hmong" +msgstr "Hmong pahawh" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1041 +msgid "Medefaidrin" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1045 +msgid "Miao" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1049 +msgid "Ideographic Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1053 +msgid "Tangut" +msgstr "Tangut" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1057 +msgid "Tangut Components" +msgstr "Components de tangut" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1061 +msgid "Khitan Small Script" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1065 +msgid "Tangut Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1069 +msgid "Kana Supplement" +msgstr "Suplement Kana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1073 +msgid "Kana Extended-A" +msgstr "Kana espandit - A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1077 +msgid "Small Kana Extension" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1081 +msgid "Nushu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1085 +msgid "Duployan" +msgstr "Duploiat" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1089 +msgid "Shorthand Format Controls" +msgstr "Contraròtles de format estenografia" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1093 +msgid "Byzantine Musical Symbols" +msgstr "Símbòls musicals bizantins" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1097 +msgid "Musical Symbols" +msgstr "Símbòls musicals" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1101 +msgid "Ancient Greek Musical Notation" +msgstr "Notacion musicala grèc ancian" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1105 +msgid "Mayan Numerals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1109 +msgid "Tai Xuan Jing Symbols" +msgstr "Simbòls Tai Xuan Jing" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1113 +msgid "Counting Rod Numerals" +msgstr "Numeracions de bastons" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1117 +msgid "Mathematical Alphanumeric Symbols" +msgstr "Símbòls musicals" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1121 +msgid "Sutton SignWriting" +msgstr "Lenga dels signa de Sutton" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1125 +msgid "Glagolitic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1129 +msgid "Nyiakeng Puachue Hmong" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1133 +msgid "Wancho" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1137 +msgid "Mende Kikakui" +msgstr "Mendé kikakui" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1141 +msgid "Adlam" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1145 +msgid "Indic Siyaq Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1149 +msgid "Ottoman Siyaq Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1153 +msgid "Arabic Mathematical Alphabetic Symbols" +msgstr "Simbòls alfabetics matematics arabis" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1157 +msgid "Mahjong Tiles" +msgstr "Tèules de Mahjong" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1161 +msgid "Domino Tiles" +msgstr "Tèules de dominos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1165 +msgid "Playing Cards" +msgstr "Cartas de jòc" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1169 +msgid "Enclosed Alphanumeric Supplement" +msgstr "Suplement alfanumeric inclús" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1173 +msgid "Enclosed Ideographic Supplement" +msgstr "Suplement ideografic inclús" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1177 +msgid "Miscellaneous Symbols and Pictographs" +msgstr "Simbòls divèrses e pictogramas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1181 +msgid "Emoticons" +msgstr "Emoticònas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1185 +msgid "Ornamental Dingbats" +msgstr "Dingbats decoratius" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1189 +msgid "Transport and Map Symbols" +msgstr "Simbòls de transpòrts e de topografia" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1193 +msgid "Alchemical Symbols" +msgstr "Simbòls alquimics" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1197 +msgid "Geometric Shapes Extended" +msgstr "Formas geometricas, avançat" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1201 +msgid "Supplemental Arrows-C" +msgstr "Suplement C de sagetas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1205 +msgid "Supplemental Symbols and Pictographs" +msgstr "Simbòls e pictogramas suplementaris" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1209 +msgid "Chess Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1213 +msgid "Symbols and Pictographs Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1217 +msgid "Symbols for Legacy Computing" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1221 +msgid "CJK Unified Ideographs Extension B" +msgstr "Extension d'ideogramas unificats CJC - B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1225 +msgid "CJK Unified Ideographs Extension C" +msgstr "Extension d'ideogramas unificats CJC - C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1229 +msgid "CJK Unified Ideographs Extension D" +msgstr "Extension d'ideogramas unificats CJC - D" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1233 +msgid "CJK Unified Ideographs Extension E" +msgstr "Extension d'ideogramas unificats CJC - E" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1237 +msgid "CJK Unified Ideographs Extension F" +msgstr "Extension d'ideogramas unificats CJC - F" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1241 +msgid "CJK Compatibility Ideographs Supplement" +msgstr "Suplement d'ideograma de compatibilitat CJC" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1245 +msgid "CJK Unified Ideographs Extension G" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1249 +msgid "Tags" +msgstr "Etiquetas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1253 +msgid "Variation Selectors Supplement" +msgstr "Suplement de selectors de variacion" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1257 +msgid "Supplementary Private Use Area-A" +msgstr "Zòna d'utilizacion privada suplementària - A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1261 +msgid "Supplementary Private Use Area-B" +msgstr "Zòna d'utilizacion privada suplementària - B" + +#: tools/main.vala:51 +msgid "List engine name only" +msgstr "" + +#: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 +msgid "Can't connect to IBus.\n" +msgstr "" + +#: tools/main.vala:93 +#, c-format +msgid "language: %s\n" +msgstr "" + +#: tools/main.vala:161 +msgid "No engine is set.\n" +msgstr "" + +#: tools/main.vala:169 +msgid "Set global engine failed.\n" +msgstr "" + +#: tools/main.vala:174 +msgid "Get global engine failed.\n" +msgstr "" + +#: tools/main.vala:217 +msgid "Read the system registry cache." +msgstr "" + +#: tools/main.vala:219 +msgid "Read the registry cache FILE." +msgstr "" + +#: tools/main.vala:237 tools/main.vala:242 +msgid "The registry cache is invalid.\n" +msgstr "" + +#: tools/main.vala:257 +msgid "Write the system registry cache." +msgstr "" + +#: tools/main.vala:259 +msgid "Write the registry cache FILE." +msgstr "" + +#: tools/main.vala:295 +msgid "" +"Use engine schema paths instead of ibus core, which can be comma-separated " +"values." +msgstr "" + +#: tools/main.vala:381 +msgid "Resetting…" +msgstr "" + +#: tools/main.vala:399 +msgid "Done" +msgstr "Acabat" + +#: tools/main.vala:444 +msgid "Set or get engine" +msgstr "" + +#: tools/main.vala:445 +msgid "Exit ibus-daemon" +msgstr "" + +#: tools/main.vala:446 +msgid "Show available engines" +msgstr "" + +#: tools/main.vala:447 +msgid "(Not implemented)" +msgstr "" + +#: tools/main.vala:448 +msgid "Restart ibus-daemon" +msgstr "" + +#: tools/main.vala:449 +msgid "Show version" +msgstr "Afichar la version" + +#: tools/main.vala:450 +msgid "Show the content of registry cache" +msgstr "" + +#: tools/main.vala:451 +msgid "Create registry cache" +msgstr "" + +#: tools/main.vala:452 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "" + +#: tools/main.vala:453 +msgid "Show the configuration values" +msgstr "" + +#: tools/main.vala:454 +msgid "Reset the configuration values" +msgstr "" + +#: tools/main.vala:456 +msgid "Save emoji on dialog to clipboard" +msgstr "" + +#: tools/main.vala:458 +msgid "Show this information" +msgstr "" + +#: tools/main.vala:464 +#, c-format +msgid "" +"Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "" + +#: tools/main.vala:465 +msgid "Commands:\n" +msgstr "Comandas :\n" + +#: tools/main.vala:494 +#, c-format +msgid "%s is unknown command!\n" +msgstr "" + +#: ui/gtk3/emojier.vala:233 +msgid "Favorites" +msgstr "Favorits" + +#: ui/gtk3/emojier.vala:234 +msgid "Others" +msgstr "Autres" + +#: ui/gtk3/emojier.vala:235 +msgid "Open Unicode choice" +msgstr "" + +#: ui/gtk3/emojier.vala:995 +msgid "Bring back emoji choice" +msgstr "" + +#: ui/gtk3/emojier.vala:1097 +msgid "Page Down" +msgstr "Pagina seguenta" + +#: ui/gtk3/emojier.vala:1108 +msgid "Page Up" +msgstr "Pagina precedenta" + +#: ui/gtk3/emojier.vala:1111 +msgid "Show emoji variants" +msgstr "" + +#: ui/gtk3/emojier.vala:1112 +msgid "Close" +msgstr "Barrar" + +#: ui/gtk3/emojier.vala:1118 +msgid "Menu" +msgstr "Menú" + +#: ui/gtk3/emojier.vala:1129 +msgid "Click to view a warning message" +msgstr "" + +#: ui/gtk3/emojier.vala:1173 +msgid "Loading a Unicode dictionary:" +msgstr "" + +#: ui/gtk3/emojier.vala:1419 +#, c-format +msgid "Code point: %s" +msgstr "" + +#: ui/gtk3/emojier.vala:1425 +msgid "Has emoji variants" +msgstr "" + +#: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 +#, c-format +msgid "Description: %s" +msgstr "Descripcion : %s" + +#: ui/gtk3/emojier.vala:1592 +msgid "None" +msgstr "" + +#: ui/gtk3/emojier.vala:1616 +#, c-format +msgid "Annotations: %s" +msgstr "" + +#: ui/gtk3/emojier.vala:1642 +#, c-format +msgid "Name: %s" +msgstr "Nom : %s" + +#: ui/gtk3/emojier.vala:1650 +#, c-format +msgid "Alias: %s" +msgstr "" + +#: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 +#: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1169 +msgid "Emoji Choice" +msgstr "" + +#: ui/gtk3/emojier.vala:2142 +msgid "Unicode Choice" +msgstr "" + +#: ui/gtk3/emojier.vala:2432 +msgid "" +"Failed to get the current text application. Please re-focus your " +"application. E.g. Press Esc key several times to release the emoji typing " +"mode, click your desktop and click your text application again." +msgstr "" + +#: ui/gtk3/emojierapp.vala:47 +msgid "Canceled to choose an emoji." +msgstr "" + +#: ui/gtk3/emojierapp.vala:67 +msgid "Copied an emoji to your clipboard." +msgstr "" + +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ui/gtk3/emojierapp.vala:126 +msgid "\"FONT\" for emoji characters on emoji dialog" +msgstr "" + +#: ui/gtk3/emojierapp.vala:127 +msgid "FONT" +msgstr "POLIÇA" + +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ui/gtk3/emojierapp.vala:132 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" +msgstr "" + +#: ui/gtk3/emojierapp.vala:133 +msgid "LANG" +msgstr "" + +#: ui/gtk3/emojierapp.vala:135 +msgid "Emoji annotations can be match partially" +msgstr "" + +#: ui/gtk3/emojierapp.vala:139 +msgid "Match with the length of the specified integer" +msgstr "" + +#: ui/gtk3/emojierapp.vala:143 +msgid "Match with the condition of the specified integer" +msgstr "" + +#: ui/gtk3/panel.vala:292 ui/gtk3/panel.vala:323 +msgid "IBus Panel" +msgstr "" + +#: ui/gtk3/panel.vala:975 +#, c-format +msgid "" +"Your configured input method %s does not exist in IBus input methods so \"US" +"\" layout was configured instead of your input method." +msgstr "" + +#: ui/gtk3/panel.vala:980 +msgid "" +"At least one of your configured input methods does not exist in IBus input " +"methods." +msgstr "" + +#: ui/gtk3/panel.vala:983 +msgid "" +"Please run `ibus-setup` command, open \"Input Method\" tab, and configure " +"your input methods again." +msgstr "" + +#: ui/gtk3/panel.vala:1141 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "" + +#: ui/gtk3/panel.vala:1145 +msgid "translator-credits" +msgstr "" +"Launchpad Contributions:\n" +" Cédric VALMARY (Tot en òc) https://launchpad.net/~cvalmary\n" +" Quentin PAGÈS https://launchpad.net/~kwentin\n" +" Vincent L. https://launchpad.net/~vincent-laporte\n" +" Yannig MARCHEGAY (Kokoyaya) https://launchpad.net/~yannick-marchegay" + +#: ui/gtk3/panel.vala:1164 +msgid "Preferences" +msgstr "_Preferéncias" + +#: ui/gtk3/panel.vala:1190 +msgid "Restart" +msgstr "Reaviar" + +#: ui/gtk3/panel.vala:1194 +msgid "Quit" +msgstr "Quitar" + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 +msgid "default:LTR" +msgstr "default:LTR" diff --git a/po/or.po b/po/or.po index d55e2ae15..2d8cd5728 100644 --- a/po/or.po +++ b/po/or.po @@ -1,37 +1,399 @@ -# translation of ibus.master.or.po to Oriya # Oriya translation of ibus. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2020 Takao Fujiwara # This file is distributed under the same license as the ibus package. # -# Manoj Kumar Giri , 2009-2011. +# Translators: +# Manoj Kumar Giri , 2009,2011-2013 +# Manoj Kumar Giri , 2013 +# Ankit Behera , 2020. msgid "" msgstr "" -"Project-Id-Version: ibus.master.or\n" -"Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/list\n" -"POT-Creation-Date: 2011-03-08 12:32+0900\n" -"PO-Revision-Date: 2011-03-22 15:23+0000\n" -"Last-Translator: Manoj Kumar Giri \n" -"Language-Team: Oriya \n" +"Project-Id-Version: IBus\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2020-01-08 12:40+0900\n" +"PO-Revision-Date: 2020-04-13 22:40+0000\n" +"Last-Translator: Ankit Behera \n" +"Language-Team: Odia \n" "Language: or\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.11.4\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.11.3\n" -#: ../bus/ibus.desktop.in.h:1 -msgid "IBus" -msgstr "IBus" +#. Translators: Here “Preload” is a verb +#: data/dconf/org.freedesktop.ibus.gschema.xml:11 +msgid "Preload engines" +msgstr "ଯନ୍ତ୍ରକୁ ପ୍ରାକ ଧାରଣ କରନ୍ତୁ" + +#. Translators: Tooltip for the button “Preload Engines” +#: data/dconf/org.freedesktop.ibus.gschema.xml:13 +msgid "Preload engines during ibus starts up" +msgstr "ibus ଆରମ୍ଭ ସମୟରେ ଯନ୍ତ୍ର ପ୍ରାକ ଧାରଣ କରନ୍ତୁ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:17 +msgid "Engines order" +msgstr "ଯନ୍ତ୍ର କ୍ରମ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:18 +msgid "Saved engines order in input method list" +msgstr "ନିବେଶ ପ୍ରଣାଳୀ ତାଲିକାରେ ସଂରକ୍ଷିତ ଯନ୍ତ୍ର କ୍ରମ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:22 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "IME ପରିବର୍ତ୍ତନକାରୀ ୱିଣ୍ଡୋ ପାଇଁ ପପ୍‌ଅପ୍‌ ବିଳମ୍ବ ମିଲିସେକେଣ୍ଡରେ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:23 +#, fuzzy +#| msgid "" +#| "Set popup delay milliseconds to show IME switcher window. The default is " +#| "400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > " +#| "Do not show the window and switch prev/next engines." +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is " +"400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " +"show the window and switch prev/next engines." +msgstr "" +"IME ପରିବର୍ତ୍ତନକାରୀ ୱିଣ୍ଡୋ ପାଇଁ ପପ୍‌ଅପ୍‌ ବିଳମ୍ବ ମିଲିସେକେଣ୍ଡରେ ସେଟ କରନ୍ତୁ। ପୂର୍ବନିର୍ଦ୍ଧାରିତଟି ହେଉଛି400. " +"0 = ସଙ୍ଗେ ସଙ୍ଗେ ୱିଣ୍ଡୋ ଦର୍ଶାନ୍ତୁ। 0 < ବିଳମ୍ବ ମିଲିସେକେଣ୍ଡରେ। 0 > ୱିଣ୍ଡୋ ଦର୍ଶାନ୍ତୁ ନାହିଁ " +"ଏବଂ ପୂର୍ବ/ପର ଯନ୍ତ୍ରଗୁଡ଼ିକୁ ପରିବର୍ତ୍ତନ କରନ୍ତୁ।" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:27 +msgid "Saved version number" +msgstr "ସଂରକ୍ଷିତ ସଂସ୍କରଣ କ୍ରମ ସଂଖ୍ୟା" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:28 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" +"ସଂରକ୍ଷିତ ସଂସ୍କରଣ କ୍ରମ ସଂଖ୍ୟାକୁ ପୂର୍ବରୁ ସ୍ଥାପିତ ibus ଏବଂ ପ୍ରଚଳିତ ibus ମଧ୍ଯରେ ପାର୍ଥକ୍ୟକୁ ଯାଞ୍ଚ " +"କରିବା ପାଇଁ ବ୍ୟବହାର କରାଯାଇଥାଏ।" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:32 +msgid "Latin layouts which have no ASCII" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:33 +msgid "US layout is appended to the Latin layouts. variant can be omitted." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:37 +msgid "Use xmodmap" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:38 +msgid "" +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 +msgid "Use system keyboard layout" +msgstr "ତନ୍ତ୍ର କିବୋର୍ଡ ବିନ୍ୟାସକୁ ବ୍ୟବହାର କରନ୍ତୁ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 +msgid "Use system keyboard (XKB) layout" +msgstr "ତନ୍ତ୍ର କିବୋର୍ଡ (XKB) ବିନ୍ୟାସକୁ ବ୍ୟବହାର କରନ୍ତୁ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:47 +msgid "Embed Preedit Text" +msgstr "ଅନ୍ତସ୍ଥାପିତ ପ୍ରୀଡିତ ପାଠ୍ୟ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:48 +msgid "Embed Preedit Text in Application Window" +msgstr "ପ୍ରୟୋଗ ୱିଣ୍ଡୋରେ ଅନ୍ତସ୍ଥାପିତ ପ୍ରୀଡିତ ପାଠ୍ୟ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:52 +msgid "Use global input method" +msgstr "ସର୍ବସାଧାରଣ ନିବେଶ ପ୍ରଣୀଳୀକୁ ବ୍ୟବହାର କରନ୍ତୁ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 +msgid "Share the same input method among all applications" +msgstr "ସମସ୍ତ ପ୍ରୟୋଗଗୁଡ଼ିକ ମଧ୍ଯରେ ଏକା ପ୍ରକାରର ନିବେଶ ପଦ୍ଧତିକୁ ସହଭାଗ କରନ୍ତୁ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:57 +msgid "Enable input method by default" +msgstr "ପୂର୍ବନିର୍ଦ୍ଧାରିତ ଭାବରେ ନିବେଶ ପ୍ରଣାଳୀକୁ ସକ୍ରିୟ କରନ୍ତୁ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:58 +msgid "Enable input method by default when the application gets input focus" +msgstr "" +"ପୂର୍ବନିର୍ଦ୍ଧାରିତ ଭାବରେ ନିବେଶ ପ୍ରଣାଳୀକୁ ସକ୍ରିୟ କରନ୍ତୁ ଯେତେବେଳେ ପ୍ରୟୋଗକୁ ନିବେଶ ଲକ୍ଷ୍ଯ ମିଳିଥାଏ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:62 +msgid "DConf preserve name prefixes" +msgstr "DConf ନାମ ଉପସର୍ଗଗୁଡ଼ିକୁ ସଂରକ୍ଷିତ ରଖିଥାଏ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:63 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "ନାମ ପରିବର୍ତ୍ତନକୁ ଅଟକାଇବା ପାଇଁ DConf କିଗୁଡ଼ିକର ଉପସର୍ଗଗୁଡ଼ିକ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:70 +msgid "Trigger shortcut keys" +msgstr "ସଂକ୍ଷିପ୍ତ ପଥ କି'ଗୁଡ଼ିକୁ ଟ୍ରିଗର କରନ୍ତୁ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:71 +#: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 +msgid "The shortcut keys for turning input method on or off" +msgstr "ନିବେଶ ପଦ୍ଧତିକୁ ଅନ କିମ୍ବା ଅଫ କରିବା ପାଇଁ ସକ୍ଷିପ୍ତ ପଥଗୁଡ଼ିକ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:75 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "gtk_accelerator_parse ପାଇଁ ସଂକ୍ଷିପ୍ତ ପଥ ଚାବିଗୁଡ଼ିକୁ ସକ୍ରିୟ କରନ୍ତୁ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:80 +msgid "Enable shortcut keys" +msgstr "ସଂକ୍ଷିପ୍ତ ପଥ କି'ଗୁଡ଼ିକୁ ସକ୍ରିୟ କରନ୍ତୁ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:81 +msgid "The shortcut keys for turning input method on" +msgstr "ନିବେଶ ପଦ୍ଧତିକୁ ଅନ କରିବା ପାଇଁ ସକ୍ଷିପ୍ତ ପଥ କି ଗୁଡ଼ିକ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:85 +msgid "Disable shortcut keys" +msgstr "ସଂକ୍ଷିପ୍ତ ପଥ କି'ଗୁଡ଼ିକୁ ନିଷ୍କ୍ରିୟ କରନ୍ତୁ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:86 +msgid "The shortcut keys for turning input method off" +msgstr "ନିବେଶ ପଦ୍ଧତିକୁ ଅଫ କରିବା ପାଇଁ ସକ୍ଷିପ୍ତ ପଥ କି ଗୁଡ଼ିକ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:90 +#: data/dconf/org.freedesktop.ibus.gschema.xml:95 +msgid "Next engine shortcut keys" +msgstr "ପରବର୍ତ୍ତି ଯନ୍ତ୍ର ସଂକ୍ଷିପ୍ତ ପଥ କି'ଗୁଡ଼ିକ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:91 +#: data/dconf/org.freedesktop.ibus.gschema.xml:96 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "ତାଲିକାରେ ପରବର୍ତ୍ତୀ ନିବେଶ ପ୍ରଣାଳୀକୁ ବଦଳାଇବା ପାଇଁ ସକ୍ଷିପ୍ତ ପଥଗୁଡ଼ିକ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:100 +#: data/dconf/org.freedesktop.ibus.gschema.xml:105 +msgid "Prev engine shortcut keys" +msgstr "ପୂର୍ବ ଯନ୍ତ୍ରର ସଂକ୍ଷିପ୍ତ ପଥ କି'ଗୁଡ଼ିକ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:101 +#: data/dconf/org.freedesktop.ibus.gschema.xml:106 +msgid "The shortcut keys for switching to the previous input method" +msgstr "ତାଲିକାରେ ପୂର୍ବ ନିବେଶ ପ୍ରଣାଳୀକୁ ବଦଳାଇବା ପାଇଁ ସକ୍ଷିପ୍ତ ପଥଗୁଡ଼ିକ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:112 +msgid "Auto hide" +msgstr "ସ୍ୱୟଂଚାଳିତ ଭାବରେ ଲୁଚାନ୍ତୁ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:113 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "" +"ଗୁଣଧର୍ମ ତାଲିକାର ଆଚରଣ। 0 = ଦେଖାନ୍ତୁ ନାହିଁ, 1 = ସ୍ୱୟଂଚାଳିତ ଭାବରେ ଲୁଚାନ୍ତୁ , 2 = ସର୍ବଦା " +"ଦେଖାନ୍ତୁ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:117 +#: data/dconf/org.freedesktop.ibus.gschema.xml:121 +msgid "Language panel position" +msgstr "ଭାଷା ଫଳକ ଅବସ୍ଥାନ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:125 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:126 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:130 +msgid "The milliseconds to show property panel" +msgstr "ଗୁଣଧର୍ମ ତାଲିକାକୁ ଦେଖାଇବା ପାଇଁ ମିଲି ସେକେଣ୍ଡସ୍‌" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:131 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:135 +msgid "Orientation of lookup table" +msgstr "ଅବଲୋକନ ସାରଣୀର ଅନୁସ୍ଥାପନ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:136 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "ଅବଲୋକନ ସାରଣୀର ଅନୁସ୍ଥାପନ। 0 = ଭୂ-ସମାନ୍ତର, 1 = ଭୂ-ଲମ୍ବ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:140 +#: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 +#: setup/setup.ui:475 +msgid "Show icon on system tray" +msgstr "ତନ୍ତ୍ର ଟ୍ରେରେ ଚିତ୍ରସଂକେତଗୁଡ଼ିକୁ ଦର୍ଶାନ୍ତୁ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:145 +msgid "Show input method name" +msgstr "ନିବେଶ ପଦ୍ଧତି ନାମ ଦର୍ଶାନ୍ତୁ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 +msgid "Show input method name on language bar" +msgstr "ଭାଷା ତାଲିକା ପାଇଁ ନିବେଶ ପଦ୍ଧତି ନାମ ଦର୍ଶାନ୍ତୁ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:150 +msgid "RGBA value of XKB icon" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:151 +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form 'rgba(r," +"g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 to 255 or " +"percentage values in the range 0% to 100%, and 'a' is a floating point value " +"in the range 0 to 1 of the alpha." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:155 +msgid "The milliseconds to show the panel icon for a property" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:156 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:160 +msgid "Use custom font" +msgstr "ଇଚ୍ଛାମୁତାବକ ଅକ୍ଷରରୂପ ବ୍ୟବହାର କରନ୍ତୁ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:161 +msgid "Use custom font name for language panel" +msgstr "ଭାଷା ତାଲିକା ପାଇଁ ଇଚ୍ଛାମୁତାବକ ଅକ୍ଷରରୂପ ନାମକୁ ବ୍ୟବହାର କରନ୍ତୁ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:165 +#: data/dconf/org.freedesktop.ibus.gschema.xml:183 +msgid "Custom font" +msgstr "ଇଚ୍ଛାରୂପୀ ଅକ୍ଷରରୂପ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:166 +msgid "Custom font name for language panel" +msgstr "ଭାଷା ତାଲିକା ପାଇଁ ଇଚ୍ଛାମୁତାବକ ଅକ୍ଷରରୂପ ନାମ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:173 +#, fuzzy +#| msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgid "Unicode shortcut keys for gtk_accelerator_parse" +msgstr "gtk_accelerator_parse ପାଇଁ ସଂକ୍ଷିପ୍ତ ପଥ ଚାବିଗୁଡ଼ିକୁ ସକ୍ରିୟ କରନ୍ତୁ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:174 +#, fuzzy +#| msgid "The shortcut keys for turning input method on or off" +msgid "The shortcut keys for turning Unicode typing on or off" +msgstr "ନିବେଶ ପଦ୍ଧତିକୁ ଅନ କିମ୍ବା ଅଫ କରିବା ପାଇଁ ସକ୍ଷିପ୍ତ ପଥଗୁଡ଼ିକ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:178 +#, fuzzy +#| msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "gtk_accelerator_parse ପାଇଁ ସଂକ୍ଷିପ୍ତ ପଥ ଚାବିଗୁଡ଼ିକୁ ସକ୍ରିୟ କରନ୍ତୁ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:179 +#, fuzzy +#| msgid "The shortcut keys for turning input method on or off" +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "ନିବେଶ ପଦ୍ଧତିକୁ ଅନ କିମ୍ବା ଅଫ କରିବା ପାଇଁ ସକ୍ଷିପ୍ତ ପଥଗୁଡ଼ିକ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:184 +#, fuzzy +#| msgid "Custom font name for language panel" +msgid "Custom font name for emoji characters on emoji dialog" +msgstr "ଭାଷା ତାଲିକା ପାଇଁ ଇଚ୍ଛାମୁତାବକ ଅକ୍ଷରରୂପ ନାମ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:188 +msgid "Default language for emoji dictionary" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:189 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:193 +msgid "favorite emoji list on emoji dialog" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:194 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:198 +msgid "favorite emoji annotation list on emoji dialog" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:199 +msgid "You can assign an annotation for a favorite emoji in this list." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:203 +msgid "Whether emoji annotations can be match partially or not" +msgstr "" -#: ../bus/ibus.desktop.in.h:2 -msgid "Input Method Framework" -msgstr "ନିବେଶ ପ୍ରଣାଳୀ ଫ୍ରେମୱର୍କ" +#: data/dconf/org.freedesktop.ibus.gschema.xml:204 +msgid "" +"Whether emoji annotations can be matched with a partial string instead of " +"the exact match or not." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:208 +msgid "Match emoji annotations with the specified length" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:209 +msgid "" +"Match emoji annotations partially with more than the specified number of " +"characters instead of the exact match." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:213 +msgid "Choose a condition to match emoji annotations partially" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:214 +msgid "" +"Choose one of the following conditions to match emoji annotations partially: " +"0 == Prefix match, 1 == Suffix match, 2 == Containing match" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:218 +msgid "Load the emoji data at the time of startup" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:219 +msgid "" +"Load the emoji data at the time of startup if true. About 10MB memory is " +"needed to load the data. Load the emoji data when open the emoji dialog at " +"the beginning if false." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:223 +msgid "Load the Unicode data at the time of startup" +msgstr "" -#: ../bus/ibus.desktop.in.h:3 -msgid "Start IBus Input Method Framework" -msgstr "IBus ନିବେଶ ପ୍ରଣାଳୀ ଫ୍ରେମୱର୍କକୁ ଆରମ୍ଭ କରନ୍ତୁ" +#: data/dconf/org.freedesktop.ibus.gschema.xml:224 +msgid "" +"Load the Unicode data at the time of startup if true. About 15MB memory is " +"needed to load the data. Load the Unicode data when open the emoji dialog at " +"the beginning if false. The Unicode data is always loaded after the emoji " +"data is loaded even if true." +msgstr "" -#: ../ibus/_config.py.in:39 +#: ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." @@ -39,504 +401,2881 @@ msgstr "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." -#: ../ibus/lang.py:41 +#: ibus/lang.py:41 src/ibusutil.c:209 msgid "Other" msgstr "ଅନ୍ୟାନ୍ୟ" -#: ../ui/gtk/candidatepanel.py:264 -msgid "Previous page" -msgstr "ପୂର୍ବବର୍ତ୍ତୀ ପୃଷ୍ଠା" +#: setup/emojilang.py:67 +#, fuzzy +#| msgid "Select an input method" +msgid "Select a language" +msgstr "ଗୋଟିଏ ନିବେଶ ପ୍ରଣୀଳୀ ବାଛନ୍ତୁ" + +#: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 +#: setup/main.py:560 +msgid "_Cancel" +msgstr "ବାତିଲ କରନ୍ତୁ (_C)" -#: ../ui/gtk/candidatepanel.py:269 -msgid "Next page" -msgstr "ପରବର୍ତ୍ତୀ ପୃଷ୍ଠା" +#: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 +msgid "_OK" +msgstr "ଠିକ ଅଛି (_O)" -#: ../ui/gtk/main.py:55 -msgid "" -"Some input methods have been installed, removed or updated. Please restart " -"ibus input platform." +#: setup/emojilang.py:235 setup/enginedialog.py:205 +msgid "More…" msgstr "" -"କିଛି ନିବେଶ ପଦ୍ଧତିକୁ ସ୍ଥାପନ କରାଯାଇଛି, କଢ଼ାଯାଇଛି ଅଥବା ଅଦ୍ୟତନ କରାଯାଇଛି। ଦୟାକରି " -"ibus ନିବେଶ ପ୍ଲାଟଫର୍ମକୁ ପୁନର୍ଚାଳନ କରନ୍ତୁ।" -#: ../ui/gtk/main.py:59 -msgid "Restart Now" -msgstr "ବର୍ତ୍ତମାନ ପୁନଃଚାଳନ କରନ୍ତୁ" +#: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 +msgid "About" +msgstr "ବିବରଣୀ" -#: ../ui/gtk/main.py:60 -msgid "Later" -msgstr "ପରେ" +#: setup/engineabout.py:40 setup/setup.ui:1401 +msgid "_Close" +msgstr "ବନ୍ଦ କରନ୍ତୁ (_C)" -#: ../ui/gtk/panel.py:109 -msgid "IBus input method framework" -msgstr "IBus ନିବେଶ ପ୍ରଣାଳୀ ଫ୍ରେମୱର୍କ" +#: setup/engineabout.py:72 +#, python-format +msgid "Language: %s\n" +msgstr "ଭାଷା: %s\n" -#: ../ui/gtk/panel.py:327 -msgid "Restart" -msgstr "ପୁନଃଚାଳନ" +#: setup/engineabout.py:75 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "କିବୋର୍ଡ ବିନ୍ୟାସ: %s\n" -#: ../ui/gtk/panel.py:414 -msgid "Turn off input method" -msgstr "ନିବେଶ ପ୍ରଣୀଳୀକୁ ବନ୍ଦ କରନ୍ତୁ" +#: setup/engineabout.py:78 +#, python-format +msgid "Author: %s\n" +msgstr "ଲେଖକ: %s\n" -#: ../ui/gtk/panel.py:453 -msgid "No input window" -msgstr "କୌଣସି ନିବେଶ ୱିଣ୍ଡୋ ନାହିଁ" +#: setup/engineabout.py:81 +msgid "Description:\n" +msgstr "ବର୍ଣ୍ଣନା:\n" -#: ../ui/gtk/panel.py:484 -msgid "IBus is an intelligent input bus for Linux/Unix." -msgstr "IBus ହେଉଛି Linux/Unix ପାଇଁ ଗୋଟିଏ ବୁଦ୍ଧିମାନ ନିବେଶ ପରିପଥ।" +#: setup/enginecombobox.py:139 setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "ଗୋଟିଏ ନିବେଶ ପ୍ରଣୀଳୀ ବାଛନ୍ତୁ" -#: ../ui/gtk/panel.py:488 -msgid "translator-credits" -msgstr "ମନୋଜ କୁମାର ଗିରି " +#. add button +#: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 +msgid "_Add" +msgstr "ଯୋଗ କରନ୍ତୁ (_A)" + +#. create im name & icon column +#: setup/enginetreeview.py:69 setup/setup.ui:838 +msgid "Input Method" +msgstr "ନିବେଶ ପ୍ରଣାଳୀ" -#: ../ui/gtk/languagebar.py:106 -msgid "About the input method" -msgstr "ନିବେଶ ପ୍ରଣାଳୀ ବିଷୟରେ" +#: setup/enginetreeview.py:96 +msgid "Kbd" +msgstr "Kbd" -#: ../ui/gtk/languagebar.py:214 -msgid "Switch input method" -msgstr "ନିବେଶ ପ୍ରଣୀଳିକୁ ବଦଳାନ୍ତୁ" +#: setup/ibus-setup.desktop:3 setup/setup.ui:69 +msgid "IBus Preferences" +msgstr "IBus ପସନ୍ଦ" -#: ../ui/gtk/languagebar.py:357 ../ui/gtk/engineabout.py:33 -#: ../setup/engineabout.py:33 ../setup/setup.ui.h:16 -msgid "About" -msgstr "ବିବରଣୀ" +#: setup/ibus-setup.desktop:4 +msgid "Set IBus Preferences" +msgstr "IBus ପସନ୍ଦଗୁଡ଼ିକୁ ସେଟକରନ୍ତୁ" + +#: setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "କିବୋର୍ଡ ସକ୍ଷିପ୍ତପଥ" + +#: setup/keyboardshortcut.py:67 +msgid "Key code:" +msgstr "କି ସଂକେତ:" + +#: setup/keyboardshortcut.py:82 +msgid "Modifiers:" +msgstr "ରୂପାନ୍ତରକ:" + +#. apply button +#: setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "ପ୍ରୟୋଗ କରନ୍ତୁ (_A)" + +#. delete button +#: setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "ଲିଭାନ୍ତୁ (_D)" + +#: setup/keyboardshortcut.py:252 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "" +"ଦୟାକରି ଗୋଟିଏ କି (କିମ୍ବା ଗୋଟିଏ କି ସଂଯୋଜନ) ଦବାନ୍ତୁ।\n" +"କିକୁ ଛାଡ଼ିଦେଲାପରେ ସଂଳାପଟି ବନ୍ଦ ହୋଇଯିବ।" + +#: setup/keyboardshortcut.py:255 +msgid "Please press a key (or a key combination)" +msgstr "ଦୟାକରି ଗୋଟିଏ କି (କିମ୍ବା ଗୋଟିଏ କି ସଂଯୋଜନ) ଦବାନ୍ତୁ।" + +#: setup/main.py:121 setup/main.py:588 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "shift ସହିତ ସଂକ୍ଷିପ୍ତ ପଥକୁ ପୂର୍ବ ନିବେଶ ପଦ୍ଧତିକୁ ବ୍ୟବହାର କରନ୍ତୁ" + +#: setup/main.py:515 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "IBus ଡେମନ ଚାଲୁ ନାହିଁ। ଆପଣ ଏହାକୁ ଆରମ୍ଭ କରିବାକୁ ଚାହୁଁଛନ୍ତି କି?" -#: ../ui/gtk/languagebar.py:361 -msgid "About the Input Method" -msgstr "ନିବେଶ ପ୍ରଣାଳୀ ବିଷୟରେ" +#: setup/main.py:536 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "" +"IBus ଆରମ୍ଭ ହୋଇସାରିଛି! ଯଦି ଆପଣ IBus ବ୍ୟବହାର କରି ନପାରନ୍ତି, ତେବେ ଦୟାକରି ନିମ୍ନଲିଖିତ ଧାଡ଼ିଗୁଡ଼ିକୁ " +"$HOME/.bashrcରେ ଯୋଗ କରନ୍ତୁ, ତାପରେ ଆପଣଙ୍କର ଡେସ୍କଟପକୁ ପୁଣି ଲଗଇନ କରନ୍ତୁ।\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" -#: ../ui/gtk/engineabout.py:61 ../setup/engineabout.py:61 +#. Translators: %d == 5 currently +#: setup/main.py:550 #, python-format -msgid "Language: %s\n" -msgstr "ଭାଷା: %s\n" +msgid "IBus daemon could not be started in %d seconds" +msgstr "IBus ଡେମନ %d ସେକଣ୍ଡରେ ଆରମ୍ଭ ହୋଇ ପାରିଲା ନାହିଁ" + +#: setup/main.py:562 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "%s ପାଇଁ କିବୋର୍ଡ ସକ୍ଷିପ୍ତପଥ ବାଛନ୍ତୁ" + +#. Translators: Title of the window +#: setup/main.py:564 +msgid "switching input methods" +msgstr "ନିବେଶ ପ୍ରଣାଳୀଗୁଡ଼ିକୁ ପରିବର୍ତ୍ତନ କରୁଅଛି" + +#: setup/setup.ui:11 +msgid "Horizontal" +msgstr "ଭୂ-ସମାନ୍ତରାଳ" + +#: setup/setup.ui:14 +msgid "Vertical" +msgstr "ଭୂଲମ୍ବ" + +#: setup/setup.ui:25 +msgid "Top left corner" +msgstr "ଉପର ପାଖ ବାମ କୋଣ" + +#: setup/setup.ui:28 +msgid "Top right corner" +msgstr "ଉପର ପାଖ ଡ଼ାହାଣ କୋଣ" + +#: setup/setup.ui:31 +msgid "Bottom left corner" +msgstr "ତଳପାଖ ବାମ କୋଣ" + +#: setup/setup.ui:34 +msgid "Bottom right corner" +msgstr "ତଳ ପାଖ ଡ଼ାହାଣ କୋଣ" + +#: setup/setup.ui:37 +msgid "Custom" +msgstr "ଇଚ୍ଛାରୂପୀ" + +#: setup/setup.ui:48 +msgid "Do not show" +msgstr "ଦେଖାଅ ନାହିଁ" + +#: setup/setup.ui:51 +msgid "Hide automatically" +msgstr "ସ୍ୱୟଂଚାଳିତ ଭାବରେ ଲୁଚେଇ ଦିଅ" + +#: setup/setup.ui:54 +msgid "Always" +msgstr "ସର୍ବଦା" + +#: setup/setup.ui:113 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "ତାଲିକାରେ ପରବର୍ତ୍ତୀ ନିବେଶ ପ୍ରଣାଳୀକୁ ବଦଳାଇବା ପାଇଁ ସକ୍ଷିପ୍ତ ପଥଗୁଡ଼ିକ" + +#: setup/setup.ui:115 +msgid "Next input method:" +msgstr "ପରବର୍ତ୍ତି ନିବେଶ ପ୍ରଣାଳୀ:" + +#: setup/setup.ui:127 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "ତାଲିକାରେ ପୂର୍ବ ନିବେଶ ପ୍ରଣାଳୀକୁ ବଦଳାଇବା ପାଇଁ ସକ୍ଷିପ୍ତ ପଥଗୁଡ଼ିକ" + +#: setup/setup.ui:129 +msgid "Previous input method:" +msgstr "ପୂର୍ବ ନିବେଶ ପ୍ରଣାଳୀ:" + +#: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 +#: setup/setup.ui:903 setup/setup.ui:957 +msgid "..." +msgstr "..." + +#: setup/setup.ui:226 +msgid "Enable or disable:" +msgstr "ସକ୍ରିୟ ଅଥବା ନିଷ୍କ୍ରିୟ:" + +#: setup/setup.ui:238 +msgid "Enable:" +msgstr "ସକ୍ରିୟ କରନ୍ତୁ:" + +#: setup/setup.ui:291 +msgid "Disable:" +msgstr "ନିଷ୍କ୍ରିୟ କରନ୍ତୁ:" + +#: setup/setup.ui:345 setup/setup.ui:983 +msgid "Keyboard Shortcuts" +msgstr "କିବୋର୍ଡ ସଂକ୍ଷିପ୍ତ ପଥଗୁଡ଼ିକ" + +#: setup/setup.ui:374 +msgid "Set the orientation of candidates in lookup table" +msgstr "ଅବଲୋକନ ସାରଣୀରେ ବ୍ୟକ୍ତିମାନଙ୍କର ଅନୁସ୍ଥାପନ ସେଟକରନ୍ତୁ" + +#: setup/setup.ui:376 +msgid "Candidates orientation:" +msgstr "ପ୍ରାର୍ଥୀ ଅନୁସ୍ଥାପନ:" + +#: setup/setup.ui:407 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "ଭାଷା ସୂଚକକୁ ଦର୍ଶାଇବା ଅଥବା ଲୁଚାଇବା ପାଇଁ ibus ର ଆଚରଣକୁ ସେଟକରନ୍ତୁ" + +#: setup/setup.ui:409 +msgid "Show property panel:" +msgstr "ଗୁଣଧର୍ମ ତାଲିକା ଦେଖନ୍ତୁ:" + +#: setup/setup.ui:423 +msgid "Language panel position:" +msgstr "ଭାଷା ଫଳକ ଅବସ୍ଥାନ:" + +#: setup/setup.ui:494 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "ନିବେଶ ପଦ୍ଧତି ନାମକୁ ଭାଷା ସୂଚକରେ ଦର୍ଶାନ୍ତୁ ଯେତେବେଳେ ଯାଞ୍ଚବାକ୍ସକୁ ଯାଞ୍ଚକରୁଛନ୍ତି" + +#: setup/setup.ui:508 +msgid "Embed preedit text in application window" +msgstr "ପ୍ରୟୋଗ ୱିଣ୍ଡୋରେ ଅନ୍ତସ୍ଥାପିତ ପ୍ରୀଡିତ ପାଠ୍ୟ" + +#: setup/setup.ui:513 +msgid "Embed the preedit text of input method in the application window" +msgstr "ନିବେଶ ପଦ୍ଧତିର ପ୍ରୀଡିତ ପାଠ୍ୟକୁ ପ୍ରୟୋଗ ୱିଣ୍ଡୋରେ ଅନ୍ତସ୍ଥାପିତ କରନ୍ତୁ" + +#: setup/setup.ui:527 +msgid "Use custom font:" +msgstr "ଇଚ୍ଛାରୂପଣ ଅକ୍ଷରରୂପ ବ୍ୟବହାର କରନ୍ତୁ:" + +#: setup/setup.ui:562 setup/setup.ui:1156 +msgid "Font and Style" +msgstr "ଅକ୍ଷରରୂପ ଏବଂ ଶୈଳୀ" + +#: setup/setup.ui:579 +msgid "General" +msgstr "ସାଧାରଣ" + +#: setup/setup.ui:671 +msgid "Add the selected input method into the enabled input methods" +msgstr "ବଚ୍ଛିତ ନିବେଶ ପ୍ରଣାଳୀକୁ ସକ୍ରିୟ ନିବେଶ ପ୍ରଣାଳୀରେ ଯୋଗକରନ୍ତୁ" + +#: setup/setup.ui:682 +msgid "_Remove" +msgstr "କାଢ଼ନ୍ତୁ (_R)" + +#: setup/setup.ui:689 +msgid "Remove the selected input method from the enabled input methods" +msgstr "ସକ୍ରିୟ ନିବେଶ ପଦ୍ଧତିରୁ ବଚ୍ଛିତ ନିବେଶ ପ୍ରଣୀଳୀକୁ କାଢ଼ିଦିଅନ୍ତୁ" + +#: setup/setup.ui:700 +msgid "_Up" +msgstr "ଉପର (_U)" + +#: setup/setup.ui:707 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "ସକ୍ରିୟ ନିବେଶ ପଦ୍ଧତି ତାଲିକାରେ ବଚ୍ଛିତ ନିବେଶ ପ୍ରଣୀଳୀକୁ ଉପରକୁ ଘୁଞ୍ଚାନ୍ତୁ" + +#: setup/setup.ui:718 +msgid "_Down" +msgstr "ତଳ (_D)" + +#: setup/setup.ui:725 +msgid "Move down the selected input method in the enabled input methods" +msgstr "ସକ୍ରିୟ ନିବେଶ ପଦ୍ଧତିଗୁଡ଼ିକରେ ବଚ୍ଛିତ ନିବେଶ ପ୍ରଣୀଳୀକୁ ତଳକୁ ଘୁଞ୍ଚାନ୍ତୁ" + +#: setup/setup.ui:736 +msgid "_About" +msgstr "ବିବରଣୀ (_A)" + +#: setup/setup.ui:743 +msgid "Show information of the selected input method" +msgstr "ବଚ୍ଛିତ ନିବେଶ ପଦ୍ଧତିର ସୂଚନା ଦର୍ଶାନ୍ତୁ" + +#: setup/setup.ui:754 +msgid "_Preferences" +msgstr "ପସନ୍ଦ (_P)" + +#: setup/setup.ui:761 +msgid "Show setup of the selected input method" +msgstr "ବଚ୍ଛିତ ନିବେଶ ପ୍ରଣାଳୀର ବ୍ୟବସ୍ଥାକୁ ଦର୍ଶାନ୍ତୁ" + +#: setup/setup.ui:812 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" +"ସକ୍ରିୟ ନିବେଶ ପଦ୍ଧତିକୁ ପରିବର୍ତ୍ତନ କରାଯାଇପାରିବ ଉପର ତାଲିକାରୁ ବଛିତ ମାନଙ୍କ ମଧ୍ଯରୁ, " +"କୀବୋର୍ଡ଼ shortcut କୀ ଦବେଇବା ଦ୍ୱାରା କିମ୍ବା ତାଲିକା ଚିତ୍ରସଙ୍କେତକୁ ଦବେଇବା ଦ୍ୱାରା<" + +#: setup/setup.ui:873 +msgid "" +"The shortcut keys to enable conversions of emoji annotations or Unicode names" +msgstr "" + +#: setup/setup.ui:875 +msgid "Emoji annotation:" +msgstr "" + +#: setup/setup.ui:927 +#, fuzzy +#| msgid "The shortcut keys for turning input method on or off" +msgid "The shortcut keys to enable Unicode code point conversions" +msgstr "ନିବେଶ ପଦ୍ଧତିକୁ ଅନ କିମ୍ବା ଅଫ କରିବା ପାଇଁ ସକ୍ଷିପ୍ତ ପଥଗୁଡ଼ିକ" + +#: setup/setup.ui:929 +msgid "Unicode code point:" +msgstr "" + +#: setup/setup.ui:1013 +msgid "Set a font of Unicode candidates on the emoji dialog" +msgstr "" + +#: setup/setup.ui:1015 +#, fuzzy +#| msgid "Use custom font:" +msgid "Unicode font:" +msgstr "ଇଚ୍ଛାରୂପଣ ଅକ୍ଷରରୂପ ବ୍ୟବହାର କରନ୍ତୁ:" + +#: setup/setup.ui:1038 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "" + +#: setup/setup.ui:1040 +msgid "Emoji annotation language:" +msgstr "" + +#: setup/setup.ui:1062 +msgid "" +"Match emoji annotations partially with the following condition and more than " +"the number of characters:" +msgstr "" + +#: setup/setup.ui:1067 +msgid "" +"If emoji annotations can be matched with a partial string instead of the " +"exact match" +msgstr "" + +#: setup/setup.ui:1101 +msgid "Prefix match" +msgstr "" + +#: setup/setup.ui:1115 +msgid "Suffix match" +msgstr "" + +#: setup/setup.ui:1130 +msgid "Containing match" +msgstr "" + +#: setup/setup.ui:1176 +msgid "Emoji" +msgstr "" + +#: setup/setup.ui:1230 +msgid "Keyboard Layout" +msgstr "କିବୋର୍ଡ ବିନ୍ୟାସ" + +#: setup/setup.ui:1278 +msgid "Global input method settings" +msgstr "ସର୍ବସାଧାରଣ ନିବେଶ ପ୍ରଣୀଳୀ ବିନ୍ୟାସ" + +#: setup/setup.ui:1298 +msgid "Advanced" +msgstr "ଉନ୍ନତ" + +#: setup/setup.ui:1317 +msgid "" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" +msgstr "" +"IBus\n" +"ବୁଦ୍ଧିମାନ ନିବେଶ ପରିପଥ\n" +"ମୂଖ୍ୟ ପୃଷ୍ଠା: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" + +#: setup/setup.ui:1341 +msgid "Start ibus on login" +msgstr "ଲଗଇନ ସମୟରେ ibus କୁ ଆରମ୍ଭ କରନ୍ତୁ" + +#: setup/setup.ui:1358 +msgid "Startup" +msgstr "ଆରମ୍ଭ" + +#: src/ibusemojigen.h:30 +msgid "Activities" +msgstr "" + +#: src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "" + +#: src/ibusemojigen.h:32 +msgid "Component" +msgstr "" + +#: src/ibusemojigen.h:33 +msgid "Flags" +msgstr "" + +#: src/ibusemojigen.h:34 +msgid "Food & Drink" +msgstr "" + +#: src/ibusemojigen.h:35 +msgid "Objects" +msgstr "" + +#: src/ibusemojigen.h:36 +msgid "People & Body" +msgstr "" + +#: src/ibusemojigen.h:37 +msgid "Smileys & Emotion" +msgstr "" + +#: src/ibusemojigen.h:38 +msgid "Symbols" +msgstr "" + +#: src/ibusemojigen.h:39 +msgid "Travel & Places" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:33 +msgid "Basic Latin" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:37 +msgid "Latin-1 Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:41 +msgid "Latin Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:45 +msgid "Latin Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:49 +msgid "IPA Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:53 +msgid "Spacing Modifier Letters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:57 +msgid "Combining Diacritical Marks" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:61 +msgid "Greek and Coptic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:65 +msgid "Cyrillic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:69 +msgid "Cyrillic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:73 +msgid "Armenian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:77 +msgid "Hebrew" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:81 +msgid "Arabic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:85 +msgid "Syriac" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:89 +msgid "Arabic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:93 +msgid "Thaana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:97 +msgid "NKo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:101 +msgid "Samaritan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:105 +msgid "Mandaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:109 +msgid "Syriac Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:113 +msgid "Arabic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:117 +msgid "Devanagari" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:121 +msgid "Bengali" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:125 +msgid "Gurmukhi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:129 +msgid "Gujarati" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:133 +msgid "Oriya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:137 +msgid "Tamil" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:141 +msgid "Telugu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:145 +msgid "Kannada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:149 +msgid "Malayalam" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:153 +msgid "Sinhala" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:157 +msgid "Thai" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:161 +msgid "Lao" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:165 +msgid "Tibetan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:169 +msgid "Myanmar" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:173 +msgid "Georgian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:177 +msgid "Hangul Jamo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:181 +msgid "Ethiopic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:185 +msgid "Ethiopic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:189 +msgid "Cherokee" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:193 +msgid "Unified Canadian Aboriginal Syllabics" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:197 +msgid "Ogham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:201 +msgid "Runic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:205 +msgid "Tagalog" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:209 +msgid "Hanunoo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:213 +msgid "Buhid" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:217 +msgid "Tagbanwa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:221 +msgid "Khmer" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:225 +msgid "Mongolian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:229 +msgid "Unified Canadian Aboriginal Syllabics Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:233 +msgid "Limbu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:237 +msgid "Tai Le" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:241 +msgid "New Tai Lue" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:245 +msgid "Khmer Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:249 +msgid "Buginese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:253 +msgid "Tai Tham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:257 +msgid "Combining Diacritical Marks Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:261 +msgid "Balinese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:265 +msgid "Sundanese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:269 +msgid "Batak" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:273 +msgid "Lepcha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:277 +msgid "Ol Chiki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:281 +msgid "Cyrillic Extended-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:285 +msgid "Georgian Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:289 +msgid "Sundanese Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:293 +msgid "Vedic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:297 +msgid "Phonetic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:301 +msgid "Phonetic Extensions Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:305 +msgid "Combining Diacritical Marks Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:309 +msgid "Latin Extended Additional" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:313 +msgid "Greek Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:317 +msgid "General Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:321 +msgid "Superscripts and Subscripts" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:325 +msgid "Currency Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:329 +msgid "Combining Diacritical Marks for Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:333 +msgid "Letterlike Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:337 +msgid "Number Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:341 +msgid "Arrows" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:345 +msgid "Mathematical Operators" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:349 +msgid "Miscellaneous Technical" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:353 +msgid "Control Pictures" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:357 +msgid "Optical Character Recognition" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:361 +msgid "Enclosed Alphanumerics" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:365 +msgid "Box Drawing" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:369 +msgid "Block Elements" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:373 +msgid "Geometric Shapes" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:377 +msgid "Miscellaneous Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:381 +msgid "Dingbats" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:385 +msgid "Miscellaneous Mathematical Symbols-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:389 +msgid "Supplemental Arrows-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:393 +msgid "Braille Patterns" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:397 +msgid "Supplemental Arrows-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:401 +msgid "Miscellaneous Mathematical Symbols-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:405 +msgid "Supplemental Mathematical Operators" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:409 +msgid "Miscellaneous Symbols and Arrows" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:413 +msgid "Glagolitic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:417 +msgid "Latin Extended-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:421 +msgid "Coptic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:425 +msgid "Georgian Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:429 +msgid "Tifinagh" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:433 +msgid "Ethiopic Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:437 +msgid "Cyrillic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:441 +msgid "Supplemental Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:445 +msgid "CJK Radicals Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:449 +msgid "Kangxi Radicals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:453 +msgid "Ideographic Description Characters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:457 +msgid "CJK Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:461 +msgid "Hiragana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:465 +msgid "Katakana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:469 +msgid "Bopomofo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:473 +msgid "Hangul Compatibility Jamo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:477 +msgid "Kanbun" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:481 +msgid "Bopomofo Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:485 +msgid "CJK Strokes" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:489 +msgid "Katakana Phonetic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:493 +msgid "Enclosed CJK Letters and Months" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:497 +msgid "CJK Compatibility" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:501 +msgid "CJK Unified Ideographs Extension A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:505 +msgid "Yijing Hexagram Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:509 +msgid "CJK Unified Ideographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:513 +msgid "Yi Syllables" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:517 +msgid "Yi Radicals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:521 +msgid "Lisu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:525 +msgid "Vai" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:529 +msgid "Cyrillic Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:533 +msgid "Bamum" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:537 +msgid "Modifier Tone Letters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:541 +msgid "Latin Extended-D" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:545 +msgid "Syloti Nagri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:549 +msgid "Common Indic Number Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:553 +msgid "Phags-pa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:557 +msgid "Saurashtra" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:561 +msgid "Devanagari Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:565 +msgid "Kayah Li" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:569 +msgid "Rejang" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:573 +msgid "Hangul Jamo Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:577 +msgid "Javanese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:581 +msgid "Myanmar Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:585 +msgid "Cham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:589 +msgid "Myanmar Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:593 +msgid "Tai Viet" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:597 +msgid "Meetei Mayek Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:601 +msgid "Ethiopic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:605 +msgid "Latin Extended-E" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:609 +msgid "Cherokee Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:613 +msgid "Meetei Mayek" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:617 +msgid "Hangul Syllables" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:621 +msgid "Hangul Jamo Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:625 +msgid "High Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:629 +msgid "High Private Use Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:633 +msgid "Low Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:637 +msgid "Private Use Area" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:641 +msgid "CJK Compatibility Ideographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:645 +msgid "Alphabetic Presentation Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:649 +msgid "Arabic Presentation Forms-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:653 +msgid "Variation Selectors" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:657 +#, fuzzy +#| msgid "Vertical" +msgid "Vertical Forms" +msgstr "ଭୂଲମ୍ବ" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:661 +msgid "Combining Half Marks" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:665 +msgid "CJK Compatibility Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:669 +msgid "Small Form Variants" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:673 +msgid "Arabic Presentation Forms-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:677 +msgid "Halfwidth and Fullwidth Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:681 +msgid "Specials" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:685 +msgid "Linear B Syllabary" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:689 +msgid "Linear B Ideograms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:693 +msgid "Aegean Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:697 +msgid "Ancient Greek Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:701 +msgid "Ancient Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:705 +msgid "Phaistos Disc" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:709 +msgid "Lycian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:713 +msgid "Carian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:717 +msgid "Coptic Epact Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:721 +msgid "Old Italic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:725 +msgid "Gothic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:729 +msgid "Old Permic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:733 +msgid "Ugaritic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:737 +msgid "Old Persian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:741 +msgid "Deseret" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:745 +msgid "Shavian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:749 +msgid "Osmanya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:753 +msgid "Osage" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:757 +msgid "Elbasan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:761 +msgid "Caucasian Albanian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:765 +msgid "Linear A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:769 +msgid "Cypriot Syllabary" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:773 +msgid "Imperial Aramaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:777 +msgid "Palmyrene" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:781 +msgid "Nabataean" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:785 +msgid "Hatran" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:789 +msgid "Phoenician" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:793 +msgid "Lydian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:797 +msgid "Meroitic Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:801 +msgid "Meroitic Cursive" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:805 +msgid "Kharoshthi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:809 +msgid "Old South Arabian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:813 +msgid "Old North Arabian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:817 +msgid "Manichaean" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:821 +msgid "Avestan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:825 +msgid "Inscriptional Parthian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:829 +msgid "Inscriptional Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:833 +msgid "Psalter Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:837 +msgid "Old Turkic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:841 +msgid "Old Hungarian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:845 +msgid "Hanifi Rohingya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:849 +msgid "Rumi Numeral Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:853 +msgid "Old Sogdian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:857 +msgid "Sogdian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:861 +msgid "Elymaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:865 +msgid "Brahmi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:869 +msgid "Kaithi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:873 +msgid "Sora Sompeng" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:877 +msgid "Chakma" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:881 +msgid "Mahajani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:885 +msgid "Sharada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:889 +msgid "Sinhala Archaic Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:893 +msgid "Khojki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:897 +msgid "Multani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:901 +msgid "Khudawadi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:905 +msgid "Grantha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:909 +msgid "Newa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:913 +msgid "Tirhuta" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:917 +msgid "Siddham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:921 +msgid "Modi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:925 +msgid "Mongolian Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:929 +msgid "Takri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:933 +msgid "Ahom" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:937 +msgid "Dogra" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:941 +msgid "Warang Citi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:945 +msgid "Nandinagari" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:949 +msgid "Zanabazar Square" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:953 +msgid "Soyombo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:957 +msgid "Pau Cin Hau" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:961 +msgid "Bhaiksuki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:965 +msgid "Marchen" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:969 +msgid "Masaram Gondi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:973 +msgid "Gunjala Gondi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:977 +msgid "Makasar" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:981 +msgid "Tamil Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:985 +msgid "Cuneiform" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:989 +msgid "Cuneiform Numbers and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:993 +msgid "Early Dynastic Cuneiform" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:997 +msgid "Egyptian Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1001 +msgid "Egyptian Hieroglyph Format Controls" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1005 +msgid "Anatolian Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1009 +msgid "Bamum Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1013 +msgid "Mro" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1017 +msgid "Bassa Vah" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1021 +msgid "Pahawh Hmong" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1025 +msgid "Medefaidrin" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1029 +msgid "Miao" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1033 +msgid "Ideographic Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1037 +msgid "Tangut" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1041 +msgid "Tangut Components" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1045 +msgid "Kana Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1049 +msgid "Kana Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1053 +msgid "Small Kana Extension" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1057 +msgid "Nushu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1061 +msgid "Duployan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1065 +msgid "Shorthand Format Controls" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1069 +msgid "Byzantine Musical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1073 +msgid "Musical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1077 +msgid "Ancient Greek Musical Notation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1081 +msgid "Mayan Numerals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1085 +msgid "Tai Xuan Jing Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1089 +msgid "Counting Rod Numerals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1093 +msgid "Mathematical Alphanumeric Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1097 +msgid "Sutton SignWriting" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1101 +msgid "Glagolitic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1105 +msgid "Nyiakeng Puachue Hmong" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1109 +msgid "Wancho" +msgstr "" -#: ../ui/gtk/engineabout.py:63 ../setup/engineabout.py:63 -#, python-format -msgid "Keyboard layout: %s\n" -msgstr "କିବୋର୍ଡ ବିନ୍ୟାସ: %s\n" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1113 +msgid "Mende Kikakui" +msgstr "" -#: ../ui/gtk/engineabout.py:65 ../setup/engineabout.py:65 -#, python-format -msgid "Author: %s\n" -msgstr "ଲେଖକ: %s\n" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1117 +msgid "Adlam" +msgstr "" -#: ../ui/gtk/engineabout.py:67 ../setup/engineabout.py:67 -msgid "Description:\n" -msgstr "ବର୍ଣ୍ଣନା:\n" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1121 +msgid "Indic Siyaq Numbers" +msgstr "" -#: ../setup/main.py:102 -msgid "trigger" -msgstr "ଟ୍ରିଗର" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1125 +msgid "Ottoman Siyaq Numbers" +msgstr "" -#: ../setup/main.py:113 -msgid "enable" -msgstr "ସକ୍ରିୟ କରନ୍ତୁ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1129 +msgid "Arabic Mathematical Alphabetic Symbols" +msgstr "" -#: ../setup/main.py:124 -msgid "disable" -msgstr "ନିଷ୍କ୍ରିୟ କରନ୍ତୁ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1133 +msgid "Mahjong Tiles" +msgstr "" -#: ../setup/main.py:135 -msgid "next input method" -msgstr "ପରବର୍ତ୍ତି ନିବେଶ ପ୍ରଣାଳୀ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1137 +msgid "Domino Tiles" +msgstr "" -#: ../setup/main.py:146 -msgid "previous input method" -msgstr "ପୂର୍ବ ନିବେଶ ପ୍ରଣାଳୀ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1141 +msgid "Playing Cards" +msgstr "" -#: ../setup/main.py:286 -msgid "IBus daemon is not started. Do you want to start it now?" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1145 +msgid "Enclosed Alphanumeric Supplement" msgstr "" -"IBus ଡେମନଟି ଆରମ୍ଭ ହୋଇନାହିଁ। ଆପଣ ଏହାକୁ ବର୍ତ୍ତମାନ ଆରମ୍ଭ କରିବାକୁ ଚାହୁଁଛନ୍ତି କି?" -#: ../setup/main.py:301 -msgid "" -"IBus has been started! If you can not use IBus, please add below lines in $HOME/.bashrc, and relogin your desktop.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1149 +msgid "Enclosed Ideographic Supplement" msgstr "" -"IBus ଆରମ୍ଭ ହୋଇସାରିଛି! ଯଦି ଆପଣ IBus ବ୍ୟବହାର କରି ନପାରନ୍ତି, ତେବେ ଦୟାକରି ନିମ୍ନଲିଖିତ ଧାଡ଼ିଗୁଡ଼ିକୁ $HOME/.bashrcରେ ଯୋଗ କରନ୍ତୁ, ଏବଂ ଆପଣଙ୍କର ଡେସ୍କଟପକୁ ପୁଣି ଲଗଇନ କରନ୍ତୁ।\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" -#: ../setup/main.py:316 -#, python-format -msgid "Select keyboard shortcut for %s" -msgstr "%s ପାଇଁ କିବୋର୍ଡ ସକ୍ଷିପ୍ତପଥ ବାଛନ୍ତୁ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1153 +msgid "Miscellaneous Symbols and Pictographs" +msgstr "" -#: ../setup/keyboardshortcut.py:52 -msgid "Keyboard shortcuts" -msgstr "କିବୋର୍ଡ ସକ୍ଷିପ୍ତପଥ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1157 +msgid "Emoticons" +msgstr "" -#: ../setup/keyboardshortcut.py:63 -msgid "Key code:" -msgstr "କି ସଂକେତ:" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1161 +msgid "Ornamental Dingbats" +msgstr "" -#: ../setup/keyboardshortcut.py:78 -msgid "Modifiers:" -msgstr "ରୂପାନ୍ତରକ:" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1165 +msgid "Transport and Map Symbols" +msgstr "" -#: ../setup/keyboardshortcut.py:231 -msgid "" -"Please press a key (or a key combination).\n" -"The dialog will be closed when the key is released." +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1169 +msgid "Alchemical Symbols" msgstr "" -"ଦୟାକରି ଗୋଟିଏ କି (କିମ୍ବା ଗୋଟିଏ କି ସଂଯୋଜନ) ଦବାନ୍ତୁ।\n" -"କିକୁ ଛାଡ଼ିଦେଲାପରେ ସଂଳାପଟି ବନ୍ଦ ହୋଇଯିବ।" -#: ../setup/keyboardshortcut.py:233 -msgid "Please press a key (or a key combination)" -msgstr "ଦୟାକରି ଗୋଟିଏ କି (କିମ୍ବା ଗୋଟିଏ କି ସଂଯୋଜନ) ଦବାନ୍ତୁ।" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1173 +msgid "Geometric Shapes Extended" +msgstr "" -#: ../setup/enginecombobox.py:120 -msgid "Select an input method" -msgstr "ଗୋଟିଏ ନିବେଶ ପ୍ରଣୀଳୀ ବାଛନ୍ତୁ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1177 +msgid "Supplemental Arrows-C" +msgstr "" -#. create im name & icon column -#: ../setup/enginetreeview.py:64 ../setup/setup.ui.h:33 -msgid "Input Method" -msgstr "ନିବେଶ ପ୍ରଣାଳୀ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1181 +msgid "Supplemental Symbols and Pictographs" +msgstr "" -#: ../setup/enginetreeview.py:92 -msgid "Kbd" -msgstr "Kbd" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1185 +msgid "Chess Symbols" +msgstr "" -#: ../setup/ibus-setup.desktop.in.h:1 ../setup/setup.ui.h:32 -msgid "IBus Preferences" -msgstr "IBus ପସନ୍ଦ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1189 +msgid "Symbols and Pictographs Extended-A" +msgstr "" -#: ../setup/ibus-setup.desktop.in.h:2 -msgid "Set IBus Preferences" -msgstr "IBus ପସନ୍ଦଗୁଡ଼ିକୁ ସେଟକରନ୍ତୁ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1193 +msgid "CJK Unified Ideographs Extension B" +msgstr "" -#: ../data/ibus.schemas.in.h:1 -msgid "Auto hide" -msgstr "ସ୍ୱୟଂଚାଳିତ ଭାବରେ ଲୁଚାନ୍ତୁ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1197 +msgid "CJK Unified Ideographs Extension C" +msgstr "" -#: ../data/ibus.schemas.in.h:2 -msgid "Custom font" -msgstr "ଇଚ୍ଛାରୂପୀ ଅକ୍ଷରରୂପ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1201 +msgid "CJK Unified Ideographs Extension D" +msgstr "" -#: ../data/ibus.schemas.in.h:3 -msgid "Custom font name for language panel" -msgstr "ଭାଷା ତାଲିକା ପାଇଁ ଇଚ୍ଛାମୁତାବକ ଅକ୍ଷରରୂପ ନାମ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1205 +msgid "CJK Unified Ideographs Extension E" +msgstr "" -#: ../data/ibus.schemas.in.h:4 -msgid "Disable shortcut keys" -msgstr "ସଂକ୍ଷିପ୍ତ ପଥ କି'ଗୁଡ଼ିକୁ ନିଷ୍କ୍ରିୟ କରନ୍ତୁ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1209 +msgid "CJK Unified Ideographs Extension F" +msgstr "" -#: ../data/ibus.schemas.in.h:5 -msgid "Embed Preedit Text" -msgstr "ଅନ୍ତସ୍ଥାପିତ ପ୍ରୀଡିତ ପାଠ୍ୟ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1213 +msgid "CJK Compatibility Ideographs Supplement" +msgstr "" -#: ../data/ibus.schemas.in.h:6 -msgid "Embed Preedit Text in Application Window" -msgstr "ପ୍ରୟୋଗ ୱିଣ୍ଡୋରେ ଅନ୍ତସ୍ଥାପିତ ପ୍ରୀଡିତ ପାଠ୍ୟ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1217 +msgid "Tags" +msgstr "" -#: ../data/ibus.schemas.in.h:7 -msgid "Enable input method by default" -msgstr "ପୂର୍ବନିର୍ଦ୍ଧାରିତ ଭାବରେ ନିବେଶ ପ୍ରଣାଳୀକୁ ସକ୍ରିୟ କରନ୍ତୁ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1221 +msgid "Variation Selectors Supplement" +msgstr "" -#: ../data/ibus.schemas.in.h:8 -msgid "Enable input method by default when the application gets input focus" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1225 +msgid "Supplementary Private Use Area-A" msgstr "" -"ପୂର୍ବନିର୍ଦ୍ଧାରିତ ଭାବରେ ନିବେଶ ପ୍ରଣାଳୀକୁ ସକ୍ରିୟ କରନ୍ତୁ ଯେତେବେଳେ ପ୍ରୟୋଗକୁ ନିବେଶ" -" ଲକ୍ଷ୍ଯ ମିଳିଥାଏ" -#: ../data/ibus.schemas.in.h:9 -msgid "Enable shortcut keys" -msgstr "ସଂକ୍ଷିପ୍ତ ପଥ କି'ଗୁଡ଼ିକୁ ସକ୍ରିୟ କରନ୍ତୁ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1229 +msgid "Supplementary Private Use Area-B" +msgstr "" -#: ../data/ibus.schemas.in.h:10 -msgid "Language panel position" -msgstr "ଭାଷା ଫଳକ ଅବସ୍ଥାନ" +#: tools/main.vala:51 +msgid "List engine name only" +msgstr "କେବଳ ଯନ୍ତ୍ର ନାମକୁ ତାଲିକାଭୁକ୍ତ କରନ୍ତୁ" -#: ../data/ibus.schemas.in.h:11 -msgid "Next engine shortcut keys" -msgstr "ପରବର୍ତ୍ତି ଯନ୍ତ୍ର ସଂକ୍ଷିପ୍ତ ପଥ କି'ଗୁଡ଼ିକ" +#: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 +msgid "Can't connect to IBus.\n" +msgstr "IBus ସହିତ ସଂଯୋଗ ସ୍ଥାପନ କରିପାରିବେ ନାହିଁ।\n" -#: ../data/ibus.schemas.in.h:12 -msgid "Orientation of lookup table" -msgstr "ଅବଲୋକନ ସାରଣୀର ଅନୁସ୍ଥାପନ" +#: tools/main.vala:93 +#, c-format +msgid "language: %s\n" +msgstr "ଭାଷା: %s\n" -#: ../data/ibus.schemas.in.h:13 -msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" -msgstr "ଅବଲୋକନ ସାରଣୀର ଅନୁସ୍ଥାପନ। 0 = ଭୂ-ସମାନ୍ତର, 1 = ଭୂ-ଲମ୍ବ" +#: tools/main.vala:161 +msgid "No engine is set.\n" +msgstr "କୋଣସି ଯନ୍ତ୍ର ସେଟ ହୋଇନାହିଁ।\n" -#: ../data/ibus.schemas.in.h:14 -msgid "Preload engines" -msgstr "ଯନ୍ତ୍ରକୁ ପ୍ରାକ ଧାରଣ କରନ୍ତୁ" +#: tools/main.vala:169 +msgid "Set global engine failed.\n" +msgstr "ସର୍ବସାଧାରଣ ଯନ୍ତ୍ର ସେଟ କରିବାରେ ବିଫଳ।\n" -#: ../data/ibus.schemas.in.h:15 -msgid "Preload engines during ibus starts up" -msgstr "ibus ଆରମ୍ଭ ସମୟରେ ଯନ୍ତ୍ର ପ୍ରାକ ଧାରଣ କରନ୍ତୁ" +#: tools/main.vala:174 +msgid "Get global engine failed.\n" +msgstr "ସର୍ବସାଧାରଣ ଯନ୍ତ୍ର ପାଇବାରେ ବିଫଳ।\n" -#: ../data/ibus.schemas.in.h:16 -msgid "Prev engine shortcut keys" -msgstr "ପୂର୍ବ ଯନ୍ତ୍ରର ସଂକ୍ଷିପ୍ତ ପଥ କି'ଗୁଡ଼ିକ" +#: tools/main.vala:217 +msgid "Read the system registry cache." +msgstr "ତନ୍ତ୍ର ପଞ୍ଜିକରଣ କ୍ୟାଶେକୁ ପଢ଼ନ୍ତୁ।" -#: ../data/ibus.schemas.in.h:17 ../setup/setup.ui.h:42 -msgid "Share the same input method among all applications" -msgstr "ସମସ୍ତ ପ୍ରୟୋଗଗୁଡ଼ିକ ମଧ୍ଯରେ ଏକା ପ୍ରକାରର ନିବେଶ ପଦ୍ଧତିକୁ ସହଭାଗ କରନ୍ତୁ" +#: tools/main.vala:219 +msgid "Read the registry cache FILE." +msgstr "ପଞ୍ଜିକରଣ କ୍ୟାଶେ ଫାଇଲକୁ ପଢ଼ନ୍ତୁ।" -#: ../data/ibus.schemas.in.h:18 ../setup/setup.ui.h:43 -msgid "Show icon on system tray" -msgstr "ତନ୍ତ୍ର ଟ୍ରେରେ ଚିତ୍ରସଂକେତଗୁଡ଼ିକୁ ଦର୍ଶାନ୍ତୁ" +#: tools/main.vala:237 tools/main.vala:242 +msgid "The registry cache is invalid.\n" +msgstr "ପଞ୍ଜିକରଣ କ୍ୟାଶେ ଅବୈଧ ଅଟେ।\n" -#: ../data/ibus.schemas.in.h:19 -msgid "Show input method name" -msgstr "ନିବେଶ ପଦ୍ଧତି ନାମ ଦର୍ଶାନ୍ତୁ" +#: tools/main.vala:257 +msgid "Write the system registry cache." +msgstr "ତନ୍ତ୍ର ପଞ୍ଜିକରଣ କ୍ୟାଶେକୁ ଲେଖନ୍ତୁ।" -#: ../data/ibus.schemas.in.h:20 ../setup/setup.ui.h:45 -msgid "Show input method name on language bar" -msgstr "ଭାଷା ତାଲିକା ପାଇଁ ନିବେଶ ପଦ୍ଧତି ନାମ ଦର୍ଶାନ୍ତୁ" +#: tools/main.vala:259 +msgid "Write the registry cache FILE." +msgstr "ପଞ୍ଜିକରଣ କ୍ୟାଶେ ଫାଇଲକୁ ଲେଖନ୍ତୁ।" -#: ../data/ibus.schemas.in.h:21 +#: tools/main.vala:295 msgid "" -"The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = " -"Always show" +"Use engine schema paths instead of ibus core, which can be comma-separated " +"values." msgstr "" -"ଭାଷା ତାଲିକାର ଆଚରଣ। 0 = ତାଲିକାରେ ସନ୍ନିହିତ, 1 = ସ୍ୱୟଂଚାଳିତ ଭାବରେ ଲୁଚାନ୍ତୁ, 2 =" -" ସର୍ବଦା ଦର୍ଶାନ୍ତୁ" -#: ../data/ibus.schemas.in.h:22 -msgid "" -"The position of the language panel. 0 = Top left corner, 1 = Top right " -"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +#: tools/main.vala:381 +msgid "Resetting…" msgstr "" -"ଭାଷା ଫଳକର ଅବସ୍ଥାନ। 0 = ଉପର ପାଖ ବାମ କୋଣ, 1 = ଉପର ପାଖ ଡାହାଣ କୋଣ, 2 = ତଳ ପାଖ " -"ବାମ କୋଣ, 3 = ତଳ ପାଖ ଡ଼ାହାଣ କୋଣ, 4 = ଇଚ୍ଛାମୁତାବକ" - -#: ../data/ibus.schemas.in.h:23 -msgid "The shortcut keys for switching to the next input method in the list" -msgstr "ତାଲିକାରେ ପରବର୍ତ୍ତୀ ନିବେଶ ପ୍ରଣାଳୀକୁ ବଦଳାଇବା ପାଇଁ ସକ୍ଷିପ୍ତ ପଥଗୁଡ଼ିକ" -#: ../data/ibus.schemas.in.h:24 -msgid "The shortcut keys for switching to the previous input method" -msgstr "ତାଲିକାରେ ପୂର୍ବ ନିବେଶ ପ୍ରଣାଳୀକୁ ବଦଳାଇବା ପାଇଁ ସକ୍ଷିପ୍ତ ପଥଗୁଡ଼ିକ" - -#: ../data/ibus.schemas.in.h:25 -msgid "The shortcut keys for turning input method off" -msgstr "ନିବେଶ ପଦ୍ଧତିକୁ ଅଫ କରିବା ପାଇଁ ସକ୍ଷିପ୍ତ ପଥ କି ଗୁଡ଼ିକ" - -#: ../data/ibus.schemas.in.h:26 -msgid "The shortcut keys for turning input method on" -msgstr "ନିବେଶ ପଦ୍ଧତିକୁ ଅନ କରିବା ପାଇଁ ସକ୍ଷିପ୍ତ ପଥ କି ଗୁଡ଼ିକ" +#: tools/main.vala:399 +msgid "Done" +msgstr "" -#: ../data/ibus.schemas.in.h:27 ../setup/setup.ui.h:51 -msgid "The shortcut keys for turning input method on or off" -msgstr "ନିବେଶ ପଦ୍ଧତିକୁ ଅନ କିମ୍ବା ଅଫ କରିବା ପାଇଁ ସକ୍ଷିପ୍ତ ପଥଗୁଡ଼ିକ" +#: tools/main.vala:444 +msgid "Set or get engine" +msgstr "ଯନ୍ତ୍ରକୁ ସେଟ କରନ୍ତୁ କିମ୍ବା ଆଣନ୍ତୁ" -#: ../data/ibus.schemas.in.h:28 -msgid "Trigger shortcut keys" -msgstr "ସଂକ୍ଷିପ୍ତ ପଥ କି'ଗୁଡ଼ିକୁ ଟ୍ରିଗର କରନ୍ତୁ" +#: tools/main.vala:445 +msgid "Exit ibus-daemon" +msgstr "ibus-ଡେମନରୁ ପ୍ରସ୍ଥାନ କରନ୍ତୁ" -#: ../data/ibus.schemas.in.h:29 -msgid "Use custom font" -msgstr "ଇଚ୍ଛାମୁତାବକ ଅକ୍ଷରରୂପ ବ୍ୟବହାର କରନ୍ତୁ" +#: tools/main.vala:446 +msgid "Show available engines" +msgstr "ଉପଲବ୍ଧ ଯନ୍ତ୍ରଗୁଡ଼ିକୁ ଦର୍ଶାନ୍ତୁ" -#: ../data/ibus.schemas.in.h:30 -msgid "Use custom font name for language panel" -msgstr "ଭାଷା ତାଲିକା ପାଇଁ ଇଚ୍ଛାମୁତାବକ ଅକ୍ଷରରୂପ ନାମକୁ ବ୍ୟବହାର କରନ୍ତୁ" +#: tools/main.vala:447 +msgid "(Not implemented)" +msgstr "(କାର୍ଯ୍ୟକାରୀ ହୋଇନାହିଁ)" -#: ../data/ibus.schemas.in.h:31 -msgid "Use global input method" -msgstr "ସର୍ବସାଧାରଣ ନିବେଶ ପ୍ରଣୀଳୀକୁ ବ୍ୟବହାର କରନ୍ତୁ" +#: tools/main.vala:448 +msgid "Restart ibus-daemon" +msgstr "ibus-ଡେମନକୁ ପୁନଃପ୍ରାରମ୍ଭ କରନ୍ତୁ" -#: ../data/ibus.schemas.in.h:32 ../setup/setup.ui.h:55 -msgid "Use system keyboard (XKB) layout" -msgstr "ତନ୍ତ୍ର କିବୋର୍ଡ (XKB) ବିନ୍ୟାସକୁ ବ୍ୟବହାର କରନ୍ତୁ" +#: tools/main.vala:449 +msgid "Show version" +msgstr "ସଂସ୍କରଣ ଦେଖାନ୍ତୁ" -#: ../data/ibus.schemas.in.h:33 ../setup/setup.ui.h:56 -msgid "Use system keyboard layout" -msgstr "ତନ୍ତ୍ର କିବୋର୍ଡ ବିନ୍ୟାସକୁ ବ୍ୟବହାର କରନ୍ତୁ" +#: tools/main.vala:450 +msgid "Show the content of registry cache" +msgstr "ପଞ୍ଜିକରଣ କ୍ୟାଶେର ବିଷୟବସ୍ତୁ ଦର୍ଶାନ୍ତୁ" -#: ../setup/setup.ui.h:1 -msgid "..." -msgstr "..." +#: tools/main.vala:451 +msgid "Create registry cache" +msgstr "ପଞ୍ଜିକରଣ କ୍ୟାଶେ ସୃଷ୍ଟିକରନ୍ତୁ" -#: ../setup/setup.ui.h:2 -msgid "Font and Style" -msgstr "ଅକ୍ଷରରୂପ ଏବଂ ଶୈଳୀ" +#: tools/main.vala:452 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "ibus-ଡେମନର D-Bus ଠିକଣାକୁ ମୁଦ୍ରଣ କରନ୍ତୁ" -#: ../setup/setup.ui.h:3 -msgid "Global input method settings" -msgstr "ସର୍ବସାଧାରଣ ନିବେଶ ପ୍ରଣୀଳୀ ବିନ୍ୟାସ" +#: tools/main.vala:453 +#, fuzzy +#| msgid "Show this information" +msgid "Show the configuration values" +msgstr "ଏହି ସୂଚନାକୁ ଦର୍ଶାନ୍ତୁ" -#: ../setup/setup.ui.h:4 -msgid "Keyboard Layout" -msgstr "କିବୋର୍ଡ ବିନ୍ୟାସ" +#: tools/main.vala:454 +msgid "Reset the configuration values" +msgstr "" -#: ../setup/setup.ui.h:5 -msgid "Keyboard Shortcuts" -msgstr "କିବୋର୍ଡ ସଂକ୍ଷିପ୍ତ ପଥଗୁଡ଼ିକ" +#: tools/main.vala:456 +msgid "Save emoji on dialog to clipboard " +msgstr "" -#: ../setup/setup.ui.h:6 -msgid "Startup" -msgstr "ଆରମ୍ଭ" +#: tools/main.vala:458 +msgid "Show this information" +msgstr "ଏହି ସୂଚନାକୁ ଦର୍ଶାନ୍ତୁ" -#: ../setup/setup.ui.h:7 +#: tools/main.vala:464 +#, c-format msgid "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" -"\n" +"Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" -"IBus\n" -"ବୁଦ୍ଧିମାନ ନିବେଶ ପରିପଥ\n" -"ମୂଖ୍ୟ ପୃଷ୍ଠା: http://code.google.com/p/ibus\n" -"\n" -"\n" +"ବ୍ୟବହାର: %s COMMAND [OPTION...]\n" "\n" -#: ../setup/setup.ui.h:14 -msgid "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." +#: tools/main.vala:465 +msgid "Commands:\n" +msgstr "ଆଦେଶଗୁଡିକ:\n" + +#: tools/main.vala:494 +#, c-format +msgid "%s is unknown command!\n" +msgstr "%s ଟି ଗୋଟିଏ ଅଜଣା ନିର୍ଦ୍ଦେଶ!\n" + +#: ui/gtk3/emojier.vala:233 +msgid "Favorites" msgstr "" -"ପୂର୍ବନିର୍ଦ୍ଧାରିତ ନିବେଶ ପଦ୍ଧତିଟି ତାଲିକା ଉପରେ ଅଛି।\n" -"ଆପଣ ଉପର/ତଳ ବଟନକୁ ବ୍ୟାବହାର କରି ଏହାକୁ ପରିବର୍ତ୍ତନ କରିପାରିବେ।" -#: ../setup/setup.ui.h:17 -msgid "Add the selected input method into the enabled input methods" -msgstr "ବଚ୍ଛିତ ନିବେଶ ପ୍ରଣାଳୀକୁ ସକ୍ରିୟ ନିବେଶ ପ୍ରଣାଳୀରେ ଯୋଗକରନ୍ତୁ" +#: ui/gtk3/emojier.vala:234 +#, fuzzy +#| msgid "Other" +msgid "Others" +msgstr "ଅନ୍ୟାନ୍ୟ" -#: ../setup/setup.ui.h:18 -msgid "Advanced" -msgstr "ଉନ୍ନତ" +#: ui/gtk3/emojier.vala:235 +msgid "Open Unicode choice" +msgstr "" -#: ../setup/setup.ui.h:19 -msgid "Always" -msgstr "ସର୍ବଦା" +#: ui/gtk3/emojier.vala:994 +msgid "Bring back emoji choice" +msgstr "" -#: ../setup/setup.ui.h:20 -msgid "Bottom left corner" -msgstr "ତଳପାଖ ବାମ କୋଣ" +#: ui/gtk3/emojier.vala:1096 +msgid "Page Down" +msgstr "" -#: ../setup/setup.ui.h:21 -msgid "Bottom right corner" -msgstr "ତଳ ପାଖ ଡ଼ାହାଣ କୋଣ" +#: ui/gtk3/emojier.vala:1107 +msgid "Page Up" +msgstr "" -#: ../setup/setup.ui.h:22 -msgid "Candidates orientation:" -msgstr "ପ୍ରାର୍ଥୀ ଅନୁସ୍ଥାପନ:" +#: ui/gtk3/emojier.vala:1110 +msgid "Show emoji variants" +msgstr "" -#: ../setup/setup.ui.h:23 -msgid "Custom" -msgstr "ଇଚ୍ଛାରୂପୀ" +#: ui/gtk3/emojier.vala:1111 +#, fuzzy +#| msgid "_Close" +msgid "Close" +msgstr "ବନ୍ଦ କରନ୍ତୁ (_C)" -#: ../setup/setup.ui.h:24 -msgid "Disable:" -msgstr "ନିଷ୍କ୍ରିୟ କରନ୍ତୁ:" +#: ui/gtk3/emojier.vala:1117 +msgid "Menu" +msgstr "" -#: ../setup/setup.ui.h:25 -msgid "Embed preedit text in application window" -msgstr "ପ୍ରୟୋଗ ୱିଣ୍ଡୋରେ ଅନ୍ତସ୍ଥାପିତ ପ୍ରୀଡିତ ପାଠ୍ୟ" +#: ui/gtk3/emojier.vala:1128 +msgid "Click to view a warning message" +msgstr "" -#: ../setup/setup.ui.h:26 -msgid "Embed the preedit text of input method in the application window" -msgstr "ନିବେଶ ପଦ୍ଧତିର ପ୍ରୀଡିତ ପାଠ୍ୟକୁ ପ୍ରୟୋଗ ୱିଣ୍ଡୋରେ ଅନ୍ତସ୍ଥାପିତ କରନ୍ତୁ" +#: ui/gtk3/emojier.vala:1172 +msgid "Loading a Unicode dictionary:" +msgstr "" -#: ../setup/setup.ui.h:27 -msgid "Embedded in menu" -msgstr "ତାଲିକାରେ ଅନ୍ତସ୍ଥାପିତ କରନ୍ତୁ" +#: ui/gtk3/emojier.vala:1418 +#, c-format +msgid "Code point: %s" +msgstr "" -#: ../setup/setup.ui.h:28 -msgid "Enable or disable:" -msgstr "ସକ୍ରିୟ ଅଥବା ନିଷ୍କ୍ରିୟ:" +#: ui/gtk3/emojier.vala:1424 +msgid "Has emoji variants" +msgstr "" -#: ../setup/setup.ui.h:29 -msgid "Enable:" -msgstr "ସକ୍ରିୟ କରନ୍ତୁ:" +#: ui/gtk3/emojier.vala:1591 ui/gtk3/emojier.vala:1604 +#, fuzzy, c-format +#| msgid "Description:\n" +msgid "Description: %s" +msgstr "ବର୍ଣ୍ଣନା:\n" -#: ../setup/setup.ui.h:30 -msgid "General" -msgstr "ସାଧାରଣ" +#: ui/gtk3/emojier.vala:1591 +msgid "None" +msgstr "" -#: ../setup/setup.ui.h:31 -msgid "Horizontal" -msgstr "ଭୂ-ସମାନ୍ତରାଳ" +#: ui/gtk3/emojier.vala:1615 +#, c-format +msgid "Annotations: %s" +msgstr "" -#: ../setup/setup.ui.h:34 -msgid "Language panel position:" -msgstr "ଭାଷା ଫଳକ ଅବସ୍ଥାନ:" +#: ui/gtk3/emojier.vala:1641 +#, c-format +msgid "Name: %s" +msgstr "" -#: ../setup/setup.ui.h:35 -msgid "Move down the selected input method in the enabled input methods" -msgstr "ସକ୍ରିୟ ନିବେଶ ପଦ୍ଧତିଗୁଡ଼ିକରେ ବଚ୍ଛିତ ନିବେଶ ପ୍ରଣୀଳୀକୁ ତଳକୁ ଘୁଞ୍ଚାନ୍ତୁ" +#: ui/gtk3/emojier.vala:1649 +#, c-format +msgid "Alias: %s" +msgstr "" -#: ../setup/setup.ui.h:36 -msgid "Move up the selected input method in the enabled input methods list" -msgstr "ସକ୍ରିୟ ନିବେଶ ପଦ୍ଧତି ତାଲିକାରେ ବଚ୍ଛିତ ନିବେଶ ପ୍ରଣୀଳୀକୁ ଉପରକୁ ଘୁଞ୍ଚାନ୍ତୁ" +#: ui/gtk3/emojier.vala:2139 ui/gtk3/ibus-extension-gtk3.desktop.in:3 +#: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 +msgid "Emoji Choice" +msgstr "" -#: ../setup/setup.ui.h:37 -msgid "Next input method:" -msgstr "ପରବର୍ତ୍ତି ନିବେଶ ପ୍ରଣାଳୀ:" +#: ui/gtk3/emojier.vala:2141 +msgid "Unicode Choice" +msgstr "" -#: ../setup/setup.ui.h:38 -msgid "Previous input method:" -msgstr "ପୂର୍ବ ନିବେଶ ପ୍ରଣାଳୀ:" +#: ui/gtk3/emojier.vala:2429 +msgid "" +"Failed to get the current text application. Please re-focus your " +"application. E.g. Press Esc key several times to release the emoji typing " +"mode, click your desktop and click your text application again." +msgstr "" -#: ../setup/setup.ui.h:39 -msgid "Remove the selected input method from the enabled input methods" -msgstr "ସକ୍ରିୟ ନିବେଶ ପଦ୍ଧତିରୁ ବଚ୍ଛିତ ନିବେଶ ପ୍ରଣୀଳୀକୁ କାଢ଼ିଦିଅନ୍ତୁ" +#: ui/gtk3/emojierapp.vala:58 +msgid "Canceled to choose an emoji." +msgstr "" -#: ../setup/setup.ui.h:40 -msgid "Set the behavior of ibus how to show or hide language bar" -msgstr "ଭାଷା ସୂଚକକୁ ଦର୍ଶାଇବା ଅଥବା ଲୁଚାଇବା ପାଇଁ ibus ର ଆଚରଣକୁ ସେଟକରନ୍ତୁ" +#: ui/gtk3/emojierapp.vala:93 +msgid "Copied an emoji to your clipboard." +msgstr "" -#: ../setup/setup.ui.h:41 -msgid "Set the orientation of candidates in lookup table" -msgstr "ଅବଲୋକନ ସାରଣୀରେ ବ୍ୟକ୍ତିମାନଙ୍କର ଅନୁସ୍ଥାପନ ସେଟକରନ୍ତୁ" +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ui/gtk3/emojierapp.vala:114 +msgid "\"FONT\" for emoji characters on emoji dialog" +msgstr "" -#: ../setup/setup.ui.h:44 -msgid "Show information of the selected input method" -msgstr "ବଚ୍ଛିତ ନିବେଶ ପଦ୍ଧତିର ସୂଚନା ଦର୍ଶାନ୍ତୁ" +#: ui/gtk3/emojierapp.vala:115 +msgid "FONT" +msgstr "" -#: ../setup/setup.ui.h:46 -msgid "Show input method's name on language bar when check the checkbox" +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ui/gtk3/emojierapp.vala:120 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" -"ନିବେଶ ପଦ୍ଧତି ନାମକୁ ଭାଷା ସୂଚକରେ ଦର୍ଶାନ୍ତୁ ଯେତେବେଳେ ଯାଞ୍ଚବାକ୍ସକୁ ଯାଞ୍ଚକରୁଛନ୍ତି" -#: ../setup/setup.ui.h:47 -msgid "Show language panel:" -msgstr "ଭାଷା ତାଲିକା ଦର୍ଶାନ୍ତୁ:" +#: ui/gtk3/emojierapp.vala:121 +msgid "LANG" +msgstr "" -#: ../setup/setup.ui.h:48 -msgid "Start ibus on login" -msgstr "ଲଗଇନ ସମୟରେ ibus କୁ ଆରମ୍ଭ କରନ୍ତୁ" +#: ui/gtk3/emojierapp.vala:123 +msgid "Emoji annotations can be match partially" +msgstr "" -#: ../setup/setup.ui.h:49 -msgid "The shortcut keys for switching to next input method in the list" -msgstr "ତାଲିକାରେ ପରବର୍ତ୍ତୀ ନିବେଶ ପ୍ରଣାଳୀକୁ ବଦଳାଇବା ପାଇଁ ସକ୍ଷିପ୍ତ ପଥଗୁଡ଼ିକ" +#: ui/gtk3/emojierapp.vala:127 +msgid "Match with the length of the specified integer" +msgstr "" -#: ../setup/setup.ui.h:50 -msgid "The shortcut keys for switching to previous input method in the list" -msgstr "ତାଲିକାରେ ପୂର୍ବ ନିବେଶ ପ୍ରଣାଳୀକୁ ବଦଳାଇବା ପାଇଁ ସକ୍ଷିପ୍ତ ପଥଗୁଡ଼ିକ" +#: ui/gtk3/emojierapp.vala:131 +msgid "Match with the condition of the specified integer" +msgstr "" -#: ../setup/setup.ui.h:52 -msgid "Top left corner" -msgstr "ଉପର ପାଖ ବାମ କୋଣ" +#: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 +#, fuzzy +#| msgid "IBus Update" +msgid "IBus Panel" +msgstr "IBus ଅଦ୍ୟତନ" -#: ../setup/setup.ui.h:53 -msgid "Top right corner" -msgstr "ଉପର ପାଖ ଡ଼ାହାଣ କୋଣ" +#: ui/gtk3/panel.vala:1095 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus ହେଉଛି Linux/Unix ପାଇଁ ଗୋଟିଏ ବୁଦ୍ଧିମାନ ନିବେଶ ପରିପଥ।" -#: ../setup/setup.ui.h:54 -msgid "Use custom font:" -msgstr "ଇଚ୍ଛାରୂପଣ ଅକ୍ଷରରୂପ ବ୍ୟବହାର କରନ୍ତୁ:" +#: ui/gtk3/panel.vala:1099 +msgid "translator-credits" +msgstr "ମନୋଜ କୁମାର ଗିରି " -#: ../setup/setup.ui.h:57 -msgid "Vertical" -msgstr "ଭୂଲମ୍ବ" +#: ui/gtk3/panel.vala:1118 +msgid "Preferences" +msgstr "ପସନ୍ଦ" + +#: ui/gtk3/panel.vala:1144 +msgid "Restart" +msgstr "ପୁନଃଚାଳନ" -#: ../setup/setup.ui.h:58 -msgid "When active" -msgstr "ସକ୍ରିୟ ଥିବା ସମୟରେ" +#: ui/gtk3/panel.vala:1148 +msgid "Quit" +msgstr "ବିଦାୟ ନିଅନ୍ତୁ" + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 +msgid "default:LTR" +msgstr "default:LTR" + +#~ msgid "" +#~ "The position of the language panel. 0 = Top left corner, 1 = Top right " +#~ "corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +#~ msgstr "" +#~ "ଭାଷା ଫଳକର ଅବସ୍ଥାନ। 0 = ଉପର ପାଖ ବାମ କୋଣ, 1 = ଉପର ପାଖ ଡାହାଣ କୋଣ, 2 = ତଳ ପାଖ " +#~ "ବାମ କୋଣ, 3 = ତଳ ପାଖ ଡ଼ାହାଣ କୋଣ, 4 = ଇଚ୍ଛାମୁତାବକ" + +#~ msgid "Super+space is now the default hotkey." +#~ msgstr "Super+space ଟି ବର୍ତ୍ତମାନ ପୂର୍ବନିର୍ଦ୍ଧାରିତ ହଟକି ଅଟେ।" diff --git a/po/pa.po b/po/pa.po index c9d5f7d33..83fad0bac 100644 --- a/po/pa.po +++ b/po/pa.po @@ -1,41 +1,387 @@ -# translation of ibus.pot to Panjabi # Panjabi translation of ibus. -# Copyright (C) 2008 Peng Huang +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2022 Takao Fujiwara # This file is distributed under the same license as the ibus package. -# +# # Translators: -# Amanpreet Singh , 2008. -# A S Alam , 2009. -# A S Alam , 2011. -# Jaswinder Singh , 2009, 2010. +# asaini , 2013 +# Amanpreet Singh , 2008 +# asaini , 2013 +# A S Alam , 2009 +# A S Alam , 2011-2012 +# Jaswinder Singh , 2009-2010 +# Jaswinder Singh , 2011,2013 +# Jaswinder Singh , 2011,2013 +# A S Alam , 2015. #zanata +# fujiwara , 2015. #zanata +# A S Alam , 2019. #zanata +# A S Alam , 2022. msgid "" msgstr "" -"Project-Id-Version: IBus\n" -"Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/list\n" -"POT-Creation-Date: 2011-05-13 11:21+0900\n" -"PO-Revision-Date: 2011-08-18 01:36+0000\n" -"Last-Translator: aalam \n" -"Language-Team: Panjabi (Punjabi) \n" +"Project-Id-Version: ibus 1.5.20\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2019-04-16 17:33+0900\n" +"PO-Revision-Date: 2022-04-18 16:17+0000\n" +"Last-Translator: A S Alam \n" +"Language-Team: Punjabi \n" +"Language: pa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pa\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Lokalize 1.0\n" +"X-Generator: Weblate 4.11.2\n" + +#. Translators: Here “Preload” is a verb +#: data/dconf/org.freedesktop.ibus.gschema.xml:11 +msgid "Preload engines" +msgstr "ਪ੍ਰੀ-ਲੋਡ ਇੰਜਣ" + +#. Translators: Tooltip for the button “Preload Engines” +#: data/dconf/org.freedesktop.ibus.gschema.xml:13 +msgid "Preload engines during ibus starts up" +msgstr "ibus ਸ਼ੁਰੂ ਹੋਣ ਸਮੇਂ ਪਹਿਲਾਂ ਲੋਡ ਕੀਤੇ ਇੰਜਣ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:17 +msgid "Engines order" +msgstr "ਇੰਜਣ ਕ੍ਰਮ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:18 +msgid "Saved engines order in input method list" +msgstr "ਇੰਪੁੱਟ ਢੰਗ ਸੂਚੀ ਵਿੱਚ ਸੰਭਾਲੇ ਇੰਜਣਾਂ ਦਾ ਕ੍ਰਮ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:22 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "ਮਿਲੀਸਕਿੰਟ 'ਚ ਸ਼ੁਰੂਆਤੀ ਦੇਰੀ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:23 +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is 400." +" 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not show " +"the window and switch prev/next engines." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:27 +msgid "Saved version number" +msgstr "ਸੰਭਾਲਿਆ ਸੰਸਕਰਣ ਨੰਬਰ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:28 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" +"ਸੰਭਾਲਿਆ ਸੰਸਕਰਣ ਨੰਬਰ ਪੁਰਾਣੇ ਇੰਸਟਾਲ ਕੀਤੇ ਹੋਏ ibus ਅਤੇ ਮੌਜੂਦਾ ibus ਦੇ ਸੰਸਕਰਣ " +"ਵਿਚਲੇ ਫ਼ਰਕ ਨੂੰ ਜਾਂਚਣ ਲਈ ਵਰਤਿਆ ਜਾਏਗਾ।" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:32 +msgid "Latin layouts which have no ASCII" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:33 +msgid "US layout is appended to the Latin layouts. variant can be omitted." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:37 +msgid "Use xmodmap" +msgstr "xmodmap ਵਰਤੋਂ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:38 +msgid "" +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 +msgid "Use system keyboard layout" +msgstr "ਸਿਸਟਮ ਕੀਬੋਰਡ ਲੇਆਉਟ ਵਰਤੋ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 +msgid "Use system keyboard (XKB) layout" +msgstr "ਸਿਸਟਮ ਕੀਬੋਰਡ (XKB) ਲੇਆਉਟ ਵਰਤੋ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:47 +msgid "Embed Preedit Text" +msgstr "ਸ਼ਾਮਿਲ ਕੀਤਾ ਪਹਿਲਾਂ-ਸੋਧ ਟੈਕਸਟ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:48 +msgid "Embed Preedit Text in Application Window" +msgstr "ਐਪਲੀਕੇਸ਼ਨ ਵਿੰਡੋ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕੀਤਾ ਪਹਿਲਾਂ-ਸੋਧ ਟੈਕਸਟ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:52 +msgid "Use global input method" +msgstr "ਗਲੋਬਲ ਇੰਪੁੱਟ ਢੰਗ ਵਰਤੋ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 +msgid "Share the same input method among all applications" +msgstr "ਸਭ ਐਪਲੀਕੇਸ਼ਨ ਵਿੱਚ ਇੱਕੋ ਇੰਪੁੱਟ ਢੰਗ ਸਾਂਝਾ ਕਰੋ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:57 +msgid "Enable input method by default" +msgstr "ਇੰਪੁੱਟ ਢੰਗ ਡਿਫਾਲਟ ਹੀ ਚਾਲੂ ਕਰੋ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:58 +msgid "Enable input method by default when the application gets input focus" +msgstr "ਜਦੋਂ ਐਪਲੀਕੇਸ਼ਨ ਇੰਪੁੱਟ ਫੋਕਸ ਲਵੇ ਤਾਂ ਇੰਪੁੱਟ ਢੰਗ ਡਿਫਾਲਟ ਹੀ ਚਲਾਉ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:62 +msgid "DConf preserve name prefixes" +msgstr "DConf ਨਾਂ ਅਗੇਤਰ ਰੱਖਦਾ ਹੈ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:63 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "DConf ਦੇ ਅਗੇਤਰ ਨਾਂ ਤਬਦੀਲੀ ਰੋਕਣ ਲਈ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:70 +msgid "Trigger shortcut keys" +msgstr "ਟਰਿੱਗਰ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:71 +#: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 +msgid "The shortcut keys for turning input method on or off" +msgstr "ਇੰਪੁੱਟ ਢੰਗ ਬੰਦ ਜਾਂ ਚਾਲੂ ਕਰਨ ਲਈ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:75 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "gtk_accelerator_parse ਲਈ ਸ਼ਾਰਟਕੱਟ ਕੁੰਜੀਆਂ ਟਰਿੱਗਰ ਕਰੋ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:80 +msgid "Enable shortcut keys" +msgstr "ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ ਚਾਲੂ ਕਰੋ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:81 +msgid "The shortcut keys for turning input method on" +msgstr "ਇੰਪੁੱਟ ਢੰਗ ਚਾਲੂ ਕਰਨ ਲਈ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:85 +msgid "Disable shortcut keys" +msgstr "ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ ਬੰਦ ਕਰੋ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:86 +msgid "The shortcut keys for turning input method off" +msgstr "ਇੰਪੁੱਟ ਢੰਗ ਬੰਦ ਕਰਨ ਲਈ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:90 +#: data/dconf/org.freedesktop.ibus.gschema.xml:95 +msgid "Next engine shortcut keys" +msgstr "ਅਗਲਾ ਇੰਜਣ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:91 +#: data/dconf/org.freedesktop.ibus.gschema.xml:96 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "ਲਿਸਟ ਵਿੱਚ ਅਗਲਾ ਇੰਪੁੱਟ ਢੰਗ ਬਦਲਣ ਲਈ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:100 +#: data/dconf/org.freedesktop.ibus.gschema.xml:105 +msgid "Prev engine shortcut keys" +msgstr "ਪਿਛਲਾ ਇੰਜਣ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:101 +#: data/dconf/org.freedesktop.ibus.gschema.xml:106 +msgid "The shortcut keys for switching to the previous input method" +msgstr "ਪਿਛਲਾ ਇੰਪੁੱਟ ਢੰਗ ਬਦਲਣ ਲਈ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:112 +msgid "Auto hide" +msgstr "ਆਟੋਮੈਟਿਕ ਓਹਲੇ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:113 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:117 +#: data/dconf/org.freedesktop.ibus.gschema.xml:121 +msgid "Language panel position" +msgstr "ਭਾਸ਼ਾ ਪੈਨਲ ਸਥਿਤੀ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:125 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:126 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:130 +msgid "The milliseconds to show property panel" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:131 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:135 +msgid "Orientation of lookup table" +msgstr "ਖੋਜ ਟੇਬਲ ਦੀ ਸਥਿਤੀ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:136 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "ਖੋਜ ਟੇਬਲ ਦੀ ਸਥਿਤੀ। 0 = ਲੇਟਵਾਂ, 1 =ਖੜ੍ਹਵਾ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:140 +#: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 +#: setup/setup.ui:475 +msgid "Show icon on system tray" +msgstr "ਸਿਸਟਮ ਟਰੇਅ ਵਿੱਚ ਆਈਕਾਨ ਵੇਖਾਓ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:145 +msgid "Show input method name" +msgstr "ਇੰਪੁੱਟ ਢੰਗ ਨਾਂ ਵੇਖਾਓ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 +msgid "Show input method name on language bar" +msgstr "ਭਾਸ਼ਾ ਪੱਟੀ ਉੱਤੇ ਇੰਪੁੱਟ ਢੰਗ ਨਾਂ ਵੇਖਾਓ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:150 +msgid "RGBA value of XKB icon" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:151 +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " +"'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " +"to 255 or percentage values in the range 0% to 100%, and 'a' is a floating " +"point value in the range 0 to 1 of the alpha." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:155 +msgid "The milliseconds to show the panel icon for a property" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:156 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:160 +msgid "Use custom font" +msgstr "ਮਨਪਸੰਦ ਫੋਂਟ ਵਰਤੋਂ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:161 +msgid "Use custom font name for language panel" +msgstr "ਭਾਸ਼ਾ ਪੈਨਲ ਲਈ ਮਨਪਸੰਦ ਫੋਂਟ ਨਾਂ ਵਰਤੋਂ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:165 +#: data/dconf/org.freedesktop.ibus.gschema.xml:183 +msgid "Custom font" +msgstr "ਮਨਪਸੰਦ ਫੋਂਟ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:166 +msgid "Custom font name for language panel" +msgstr "ਭਾਸ਼ਾ ਪੈਨਲ ਲਈ ਮਨਪਸੰਦ ਫੋਂਟ ਨਾਂ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:173 +msgid "Unicode shortcut keys for gtk_accelerator_parse" +msgstr "gtk_accelerator_parse ਲਈ ਸ਼ਾਰਟਕੱਟ ਕੁੰਜੀਆਂ ਟਰਿੱਗਰ ਕਰੋ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:174 +msgid "The shortcut keys for turning Unicode typing on or off" +msgstr "ਯੂਨੀਕੋਡ ਲਿਖਣ ਨੂੰ ਚਾਲੂ ਜਾਂ ਬੰਦ ਕਰਨ ਵਾਸਤੇ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:178 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "gtk_accelerator_parse ਲਈ ਸ਼ਾਰਟਕੱਟ ਕੁੰਜੀਆਂ ਟਰਿੱਗਰ ਕਰੋ" -#: ../bus/ibus.desktop.in.h:1 -msgid "IBus" -msgstr "ਆਈ-ਬੱਸ" +#: data/dconf/org.freedesktop.ibus.gschema.xml:179 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:184 +msgid "Custom font name for emoji characters on emoji dialog" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:188 +msgid "Default language for emoji dictionary" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:189 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:193 +msgid "favorite emoji list on emoji dialog" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:194 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:198 +msgid "favorite emoji annotation list on emoji dialog" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:199 +msgid "You can assign an annotation for a favorite emoji in this list." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:203 +msgid "Whether emoji annotations can be match partially or not" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:204 +msgid "" +"Whether emoji annotations can be matched with a partial string instead of " +"the exact match or not." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:208 +msgid "Match emoji annotations with the specified length" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:209 +msgid "" +"Match emoji annotations partially with more than the specified number of " +"characters instead of the exact match." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:213 +msgid "Choose a condition to match emoji annotations partially" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:214 +msgid "" +"Choose one of the following conditions to match emoji annotations partially: " +"0 == Prefix match, 1 == Suffix match, 2 == Containing match" +msgstr "" -#: ../bus/ibus.desktop.in.h:2 -msgid "Input Method Framework" -msgstr "ਇੰਪੁੱਟ ਢੰਗ ਫਰੇਮਵਰਕ" +#: data/dconf/org.freedesktop.ibus.gschema.xml:218 +msgid "Load the emoji data at the time of startup" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:219 +msgid "" +"Load the emoji data at the time of startup if true. About 10MB memory is " +"needed to load the data. Load the emoji data when open the emoji dialog at " +"the beginning if false." +msgstr "" -#: ../bus/ibus.desktop.in.h:3 -msgid "Start IBus Input Method Framework" -msgstr "ਆਈਬਸ ਇੰਪੁੱਟ ਢੰਗ ਫਰੇਮਵਰਕ ਸ਼ੁਰੂ ਕਰੋ" +#: data/dconf/org.freedesktop.ibus.gschema.xml:223 +msgid "Load the Unicode data at the time of startup" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:224 +msgid "" +"Load the Unicode data at the time of startup if true. About 15MB memory is " +"needed to load the data. Load the Unicode data when open the emoji dialog at " +"the beginning if false. The Unicode data is always loaded after the emoji " +"data is loaded even if true." +msgstr "" -#: ../ibus/_config.py.in:40 +#: ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." @@ -43,505 +389,2853 @@ msgstr "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." -#: ../ibus/lang.py:41 +#: ibus/lang.py:41 src/ibusutil.c:198 msgid "Other" msgstr "ਹੋਰ" -#: ../ui/gtk/candidatepanel.py:264 -msgid "Previous page" -msgstr "ਪਿਛਲਾ ਪੇਜ਼" +#: setup/emojilang.py:67 +msgid "Select a language" +msgstr "ਭਾਸ਼ਾ ਚੁਣੋ" + +#: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 +#: setup/main.py:560 +msgid "_Cancel" +msgstr "ਰੱਦ ਕਰੋ(_C)" + +#: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 +msgid "_OK" +msgstr "ਠੀਕ ਹੈ(_O)" + +#: setup/emojilang.py:235 setup/enginedialog.py:205 +msgid "More…" +msgstr "...ਹੋਰ" + +#: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 +msgid "About" +msgstr "ਇਸ ਬਾਰੇ" + +#: setup/engineabout.py:40 setup/setup.ui:1401 +msgid "_Close" +msgstr "ਬੰਦ ਕਰੋ(_C)" + +#: setup/engineabout.py:72 +#, python-format +msgid "Language: %s\n" +msgstr "ਭਾਸ਼ਾ: %s\n" + +#: setup/engineabout.py:75 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "ਕੀਬੋਰਡ ਲੇਆਉਟ: %s\n" + +#: setup/engineabout.py:78 +#, python-format +msgid "Author: %s\n" +msgstr "ਲੇਖਕ: %s\n" + +#: setup/engineabout.py:81 +msgid "Description:\n" +msgstr "ਵੇਰਵਾ:\n" + +#: setup/enginecombobox.py:139 setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "ਇੱਕ ਇੰਪੁੱਟ ਢੰਗ ਚੁਣੋ" + +#. add button +#: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 +msgid "_Add" +msgstr "ਸ਼ਾਮਲ(_A)" + +#. create im name & icon column +#: setup/enginetreeview.py:69 setup/setup.ui:838 +msgid "Input Method" +msgstr "ਇੰਪੁੱਟ ਢੰਗ" + +#: setup/enginetreeview.py:96 +msgid "Kbd" +msgstr "Kbd" + +#: setup/ibus-setup.desktop:3 setup/setup.ui:69 +msgid "IBus Preferences" +msgstr "IBus ਪਸੰਦ" + +#: setup/ibus-setup.desktop:4 +msgid "Set IBus Preferences" +msgstr "IBus ਪਸੰਦ ਸੈੱਟ ਕਰੋ" + +#: setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "ਕੀਬੋਰਡ ਸ਼ਾਰਟਕੱਟ" + +#: setup/keyboardshortcut.py:67 +msgid "Key code:" +msgstr "ਕੀ ਕੋਡ:" + +#: setup/keyboardshortcut.py:82 +msgid "Modifiers:" +msgstr "ਮੋਡੀਫਾਇਰ:" + +#. apply button +#: setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "ਲਾਗੂ ਕਰੋ(_A)" + +#. delete button +#: setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "ਹਟਾਓ(_D)" + +#: setup/keyboardshortcut.py:252 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "" +"ਕੋਈ ਵੀ ਸਵਿੱਚ ਦੱਬੋ (ਜਾਂ ਕੋਈ ਸਵਿੱਚ ਜੋੜ)।\n" +"ਜਦੋਂ ਸਵਿੱਚ ਛੱਡੀ ਜਾਵੇਗੀ ਤਾਂ ਇਹ ਡਾਇਲਾਗ ਬੰਦ ਹੋ ਜਾਵੇਗਾ।" + +#: setup/keyboardshortcut.py:255 +msgid "Please press a key (or a key combination)" +msgstr "ਕੋਈ ਵੀ ਸਵਿੱਚ ਦੱਬੋ (ਜਾਂ ਸਵਿੱਚ ਜੋੜ)" + +#: setup/main.py:121 setup/main.py:588 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "ਲਿਸਟ ਵਿੱਚ ਪਿਛਲੇ ਇੰਪੁੱਟ ਢੰਗ ਤੇ ਜਾਣ ਲਈ ਸ਼ਾਰਟਕੱਟ ਬਟਨ" + +#: setup/main.py:515 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "IBus ਡੈਮਨ ਚੱਲ ਨਹੀਂ ਰਿਹਾ ਹੈ। ਕੀ ਤੁਸੀਂ ਇਸਨੂੰ ਚਲਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?" + +#: setup/main.py:536 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "" +"IBus ਚੱਲ ਪਿਆ ਹੈ! ਜੇ ਤੁਸੀਂ IBus ਨਹੀਂ ਵਰਤ ਸਕੇ, ਤਾਂ ਹੇਠਲੀ ਲਾਈਨ ਆਪਣੀ $HOME/." +"bashrc ਵਿੱਚ ਜੋੜੋ; ਅਤੇ ਦੁਬਾਰਾ ਲਾਗਇਨ ਕਰੋ।\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" + +#. Translators: %d == 5 currently +#: setup/main.py:550 +#, python-format +msgid "IBus daemon could not be started in %d seconds." +msgstr "IBus ਡੈਮਨ %d ਸਕਿੰਟਾਂ ਵਿੱਚ ਚਾਲੂ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ." + +#: setup/main.py:562 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "%s ਲਈ ਕੀਬੋਰਡ ਸ਼ਾਰਟਕੱਟ ਚੁਣੋ" + +#. Translators: Title of the window +#: setup/main.py:564 +msgid "switching input methods" +msgstr "ਇੰਪੁੱਟ ਢੰਗ ਬਦਲਨਾ" + +#: setup/setup.ui:11 +msgid "Horizontal" +msgstr "ਲੇਟਵਾਂ" + +#: setup/setup.ui:14 +msgid "Vertical" +msgstr "ਖੜ੍ਹਵਾਂ" + +#: setup/setup.ui:25 +msgid "Top left corner" +msgstr "ਉੱਤੇ ਖੱਬਾ ਕੋਨਾ" + +#: setup/setup.ui:28 +msgid "Top right corner" +msgstr "ਉੱਤੇ ਸੱਜਾ ਕੋਨਾ" -#: ../ui/gtk/candidatepanel.py:269 -msgid "Next page" -msgstr "ਅਗਲਾ ਪੇਜ਼" +#: setup/setup.ui:31 +msgid "Bottom left corner" +msgstr "ਹੇਠਾਂ ਖੱਬਾ ਕੋਨਾ" + +#: setup/setup.ui:34 +msgid "Bottom right corner" +msgstr "ਹੇਠਾਂ ਸੱਜਾ ਕੋਨਾ" + +#: setup/setup.ui:37 +msgid "Custom" +msgstr "ਪਸੰਦ" + +#: setup/setup.ui:48 +msgid "Do not show" +msgstr "ਨਾ ਦਿਖਾਓ" + +#: setup/setup.ui:51 +msgid "Hide automatically" +msgstr "ਆਪਣੇ ਆਪ ਲੁਕਾਓ" + +#: setup/setup.ui:54 +msgid "Always" +msgstr "ਹਮੇਸ਼ਾ" + +#: setup/setup.ui:113 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "ਲਿਸਟ ਵਿੱਚ ਅਗਲਾ ਇੰਪੁੱਟ ਢੰਗ ਬਦਲਣ ਲਈ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚ" + +#: setup/setup.ui:115 +msgid "Next input method:" +msgstr "ਅਗਲਾ ਇੰਪੁੱਟ ਢੰਗ:" + +#: setup/setup.ui:127 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "ਲਿਸਟ ਵਿੱਚ ਪਿਛਲਾ ਇੰਪੁੱਟ ਢੰਗ ਬਦਲਣ ਲਈ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚ" + +#: setup/setup.ui:129 +msgid "Previous input method:" +msgstr "ਪਿਛਲਾ ਇੰਪੁੱਟ ਢੰਗ:" + +#: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 +#: setup/setup.ui:903 setup/setup.ui:957 +msgid "..." +msgstr "..." + +#: setup/setup.ui:226 +msgid "Enable or disable:" +msgstr "ਚਾਲੂ ਜਾਂ ਬੰਦ:" + +#: setup/setup.ui:238 +msgid "Enable:" +msgstr "ਚਾਲੂ:" + +#: setup/setup.ui:291 +msgid "Disable:" +msgstr "ਬੰਦ:" + +#: setup/setup.ui:345 setup/setup.ui:983 +msgid "Keyboard Shortcuts" +msgstr "ਕੀਬੋਰਡ ਸ਼ਾਰਟਕੱਟ" + +#: setup/setup.ui:374 +msgid "Set the orientation of candidates in lookup table" +msgstr "ਖੋਜ ਟੇਬਲ ਵਿੱਚ ਉਮੀਦਵਾਰ ਦੀ ਸਥਿਤੀ ਸੈੱਟ ਕਰੋ" + +#: setup/setup.ui:376 +msgid "Candidates orientation:" +msgstr "ਉਮੀਦਵਾਰ ਸਥਿਤੀ:" + +#: setup/setup.ui:407 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "ibus ਦਾ ਰਵੱਈਆ ਸੈੱਟ ਕਰੋ ਕਿ ਭਾਸ਼ਾ ਪੱਟੀ ਕਿਵੇਂ ਵੇਖਾਈ ਜਾਵੇ" + +#: setup/setup.ui:409 +msgid "Show property panel:" +msgstr "ਵਿਸ਼ੇਸ਼ਤਾ ਪੈਨਲ ਦਿਖਾਓ:" + +#: setup/setup.ui:423 +msgid "Language panel position:" +msgstr "ਭਾਸ਼ਾ ਪੈਨਲ ਸਥਿਤੀ:" + +#: setup/setup.ui:494 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "ਜਦੋਂ ਚੈੱਕ ਬਾਕਸ ਚੁਣਿਆ ਹੋਵੇ ਤਾਂ ਇੰਪੁੱਟ ਢੰਗ ਨਾਂ ਭਾਸ਼ਾ ਪੱਟੀ ਉੱਤੇ ਵੇਖੋ" + +#: setup/setup.ui:508 +msgid "Embed preedit text in application window" +msgstr "ਐਪਲੀਕੇਸ਼ਨ ਵਿੰਡੋ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕੀਤਾ ਪਹਿਲਾਂ-ਸੋਧ ਟੈਕਸਟ" + +#: setup/setup.ui:513 +msgid "Embed the preedit text of input method in the application window" +msgstr "ਐਪਲੀਕੇਸ਼ਨ ਵਿੰਡੋ ਵਿੱਚ ਇੰਪੁੱਟ ਢੰਗ ਦਾ ਸ਼ਾਮਿਲ ਕੀਤਾ ਪਹਿਲਾਂ-ਸੋਧ ਟੈਕਸਟ" + +#: setup/setup.ui:527 +msgid "Use custom font:" +msgstr "ਪਸੰਦੀਦਾ ਫੋਂਟ ਵਰਤੋਂ:" + +#: setup/setup.ui:562 setup/setup.ui:1156 +msgid "Font and Style" +msgstr "ਫੋਂਟ ਅਤੇ ਸਟਾਈਲ" + +#: setup/setup.ui:579 +msgid "General" +msgstr "ਆਮ" + +#: setup/setup.ui:671 +msgid "Add the selected input method into the enabled input methods" +msgstr "ਚੁਣਿਆ ਇੰਪੁੱਟ ਢੰਗ ਚਾਲੂ ਕੀਤੇ ਇੰਪੁੱਟ ਢੰਗਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ" + +#: setup/setup.ui:682 +msgid "_Remove" +msgstr "ਹਟਾਓ(_R)" + +#: setup/setup.ui:689 +msgid "Remove the selected input method from the enabled input methods" +msgstr "ਚੁਣਿਆ ਇੰਪੁੱਟ ਢੰਗ ਚਾਲੂ ਇੰਪੁੱਟ ਢੰਗਾਂ ਵਿੱਚੋਂ ਹਟਾਓ" + +#: setup/setup.ui:700 +msgid "_Up" +msgstr "ਉੱਤੇ(_U)" + +#: setup/setup.ui:707 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "ਚੁਣਿਆ ਇੰਪੁੱਟ ਢੰਗ ਚਾਲੂ ਇੰਪੁੱਟ ਢੰਗਾਂ ਵਿੱਚ ਉੱਤੇ ਭੇਜੋ" + +#: setup/setup.ui:718 +msgid "_Down" +msgstr "ਹੇਠਾਂ(_D)" + +#: setup/setup.ui:725 +msgid "Move down the selected input method in the enabled input methods" +msgstr "ਚੁਣਿਆ ਇੰਪੁੱਟ ਢੰਗ ਚਾਲੂ ਇੰਪੁੱਟ ਢੰਗਾਂ ਵਿੱਚ ਹੇਠਾਂ ਭੇਜੋ" + +#: setup/setup.ui:736 +msgid "_About" +msgstr "ਇਸ ਬਾਰੇ(_A)" + +#: setup/setup.ui:743 +msgid "Show information of the selected input method" +msgstr "ਚੁਣੇ ਇੰਪੁੱਟ ਢੰਗ ਬਾਰੇ ਜਾਣਕਾਰੀ ਵੇਖੋ" + +#: setup/setup.ui:754 +msgid "_Preferences" +msgstr "ਮੇਰੀ ਪਸੰਦ(_P)" + +#: setup/setup.ui:761 +msgid "Show setup of the selected input method" +msgstr "ਚੁਣਿਆ ਇੰਪੁੱਟ ਢੰਗ ਦਾ ਸੈਟਅੱਪ ਵੇਖਾਓ" + +#: setup/setup.ui:812 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" + +#: setup/setup.ui:873 +msgid "" +"The shortcut keys to enable conversions of emoji annotations or Unicode " +"names" +msgstr "" + +#: setup/setup.ui:875 +msgid "Emoji annotation:" +msgstr "" + +#: setup/setup.ui:927 +msgid "The shortcut keys to enable Unicode code point conversions" +msgstr "" + +#: setup/setup.ui:929 +msgid "Unicode code point:" +msgstr "ਯੂਨੀਕੋਡ ਕੋਡ ਬਿੰਦੂ:" + +#: setup/setup.ui:1013 +msgid "Set a font of Unicode candidates on the emoji dialog" +msgstr "" + +#: setup/setup.ui:1015 +msgid "Unicode font:" +msgstr "ਯੂਨੀਕੋਡ ਫ਼ੋਂਟ:" + +#: setup/setup.ui:1038 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "" + +#: setup/setup.ui:1040 +msgid "Emoji annotation language:" +msgstr "" + +#: setup/setup.ui:1062 +msgid "" +"Match emoji annotations partially with the following condition and more than " +"the number of characters:" +msgstr "" + +#: setup/setup.ui:1067 +msgid "" +"If emoji annotations can be matched with a partial string instead of the " +"exact match" +msgstr "" + +#: setup/setup.ui:1101 +msgid "Prefix match" +msgstr "" + +#: setup/setup.ui:1115 +msgid "Suffix match" +msgstr "" + +#: setup/setup.ui:1130 +msgid "Containing match" +msgstr "" + +#: setup/setup.ui:1176 +msgid "Emoji" +msgstr "ਇਮੋਜ਼ੀ" + +#: setup/setup.ui:1230 +msgid "Keyboard Layout" +msgstr "ਕੀਬੋਰਡ ਲੇਆਉਟ" + +#: setup/setup.ui:1278 +msgid "Global input method settings" +msgstr "ਗਲੋਬਲ ਇੰਪੁੱਟ ਢੰਗ ਸੈਟਿੰਗ" + +#: setup/setup.ui:1298 +msgid "Advanced" +msgstr "ਤਕਨੀਕੀ" + +#: setup/setup.ui:1317 +msgid "" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" +msgstr "" +"IBus\n" +"ਇੰਟੈਲੀਜੈਂਟ ਇੰਪੁੱਟ ਢੰਗ\n" +"ਮੁੱਖ ਸਫ਼ਾ: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" + +#: setup/setup.ui:1341 +msgid "Start ibus on login" +msgstr "ਲਾਗਇਨ ਕਰਨ ਸਮੇਂ ibus ਚਲਾਓ" + +#: setup/setup.ui:1358 +msgid "Startup" +msgstr "ਸ਼ੁਰੂ" + +#: src/ibusemojigen.h:30 +msgid "Activities" +msgstr "ਸਰਗਰਮੀਆਂ" + +#: src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "ਜਾਨਵਰ ਤੇ ਕੁਦਰਤ" + +#: src/ibusemojigen.h:32 +msgid "Component" +msgstr "" + +#: src/ibusemojigen.h:33 +msgid "Flags" +msgstr "ਝੰਡੇ" + +#: src/ibusemojigen.h:34 +msgid "Food & Drink" +msgstr "ਖਾਣ-ਪੀਣ" + +#: src/ibusemojigen.h:35 +msgid "Objects" +msgstr "ਚੀਜ਼ਾਂ" + +#: src/ibusemojigen.h:36 +msgid "People & Body" +msgstr "" + +#: src/ibusemojigen.h:37 +msgid "Smileys & Emotion" +msgstr "" + +#: src/ibusemojigen.h:38 +msgid "Symbols" +msgstr "ਚਿੰਨ੍ਹ" + +#: src/ibusemojigen.h:39 +msgid "Travel & Places" +msgstr "ਯਾਤਰਾ ਤੇ ਥਾਵਾਂ" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:33 +msgid "Basic Latin" +msgstr "ਮੁਢਲੀ ਲਾਤੀਨੀ" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:37 +msgid "Latin-1 Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:41 +msgid "Latin Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:45 +msgid "Latin Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:49 +msgid "IPA Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:53 +msgid "Spacing Modifier Letters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:57 +msgid "Combining Diacritical Marks" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:61 +msgid "Greek and Coptic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:65 +msgid "Cyrillic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:69 +msgid "Cyrillic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:73 +msgid "Armenian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:77 +msgid "Hebrew" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:81 +msgid "Arabic" +msgstr "ਅਰਬੀ" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:85 +msgid "Syriac" +msgstr "ਸੀਰੀਅਕ" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:89 +msgid "Arabic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:93 +msgid "Thaana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:97 +msgid "NKo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:101 +msgid "Samaritan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:105 +msgid "Mandaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:109 +msgid "Syriac Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:113 +msgid "Arabic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:117 +msgid "Devanagari" +msgstr "ਦੇਵਨਾਗਰੀ" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:121 +msgid "Bengali" +msgstr "ਬੰਗਾਲੀ" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:125 +msgid "Gurmukhi" +msgstr "ਗੁਰਮੁਖੀ" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:129 +msgid "Gujarati" +msgstr "ਗੁਜਰਾਤੀ" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:133 +msgid "Oriya" +msgstr "ਓੜੀਆ" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:137 +msgid "Tamil" +msgstr "ਤਾਮਿਲ" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:141 +msgid "Telugu" +msgstr "ਤੇਲਗੂ" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:145 +msgid "Kannada" +msgstr "ਕੰਨੜ" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:149 +msgid "Malayalam" +msgstr "ਮਲਿਆਲਮ" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:153 +msgid "Sinhala" +msgstr "ਸਿੰਹਾਲਾ" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:157 +msgid "Thai" +msgstr "ਥਾਈ" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:161 +msgid "Lao" +msgstr "ਲਾਓ" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:165 +msgid "Tibetan" +msgstr "ਤਿੱਬਤੀ" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:169 +msgid "Myanmar" +msgstr "ਮਿਆਮਾਰ" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:173 +msgid "Georgian" +msgstr "ਜਾਰਜੀਅਨ" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:177 +msgid "Hangul Jamo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:181 +msgid "Ethiopic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:185 +msgid "Ethiopic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:189 +msgid "Cherokee" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:193 +msgid "Unified Canadian Aboriginal Syllabics" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:197 +msgid "Ogham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:201 +msgid "Runic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:205 +msgid "Tagalog" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:209 +msgid "Hanunoo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:213 +msgid "Buhid" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:217 +msgid "Tagbanwa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:221 +msgid "Khmer" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:225 +msgid "Mongolian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:229 +msgid "Unified Canadian Aboriginal Syllabics Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:233 +msgid "Limbu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:237 +msgid "Tai Le" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:241 +msgid "New Tai Lue" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:245 +msgid "Khmer Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:249 +msgid "Buginese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:253 +msgid "Tai Tham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:257 +msgid "Combining Diacritical Marks Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:261 +msgid "Balinese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:265 +msgid "Sundanese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:269 +msgid "Batak" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:273 +msgid "Lepcha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:277 +msgid "Ol Chiki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:281 +msgid "Cyrillic Extended-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:285 +msgid "Georgian Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:289 +msgid "Sundanese Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:293 +msgid "Vedic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:297 +msgid "Phonetic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:301 +msgid "Phonetic Extensions Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:305 +msgid "Combining Diacritical Marks Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:309 +msgid "Latin Extended Additional" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:313 +msgid "Greek Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:317 +msgid "General Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:321 +msgid "Superscripts and Subscripts" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:325 +msgid "Currency Symbols" +msgstr "ਮੁਦਰਾ ਚਿੰਨ੍ਹ" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:329 +msgid "Combining Diacritical Marks for Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:333 +msgid "Letterlike Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:337 +msgid "Number Forms" +msgstr "ਨੰਬਰ ਰੂਪ" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:341 +msgid "Arrows" +msgstr "ਤੀਰ" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:345 +msgid "Mathematical Operators" +msgstr "ਗਣਿਤ ਕਾਰਵਾਈਆਂ" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:349 +msgid "Miscellaneous Technical" +msgstr "ਫੁਟਕਲ ਤਕਨੀਕੀ" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:353 +msgid "Control Pictures" +msgstr "ਕੰਟਰੋਲ ਤਸਵੀਰਾਂ" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:357 +msgid "Optical Character Recognition" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:361 +msgid "Enclosed Alphanumerics" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:365 +msgid "Box Drawing" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:369 +msgid "Block Elements" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:373 +msgid "Geometric Shapes" +msgstr "ਜਾਇਮਿਤੀ ਸ਼ਕਲਾਂ" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:377 +msgid "Miscellaneous Symbols" +msgstr "ਫੁਟਕਲ ਚਿੰਨ੍ਹ" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:381 +msgid "Dingbats" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:385 +msgid "Miscellaneous Mathematical Symbols-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:389 +msgid "Supplemental Arrows-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:393 +msgid "Braille Patterns" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:397 +msgid "Supplemental Arrows-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:401 +msgid "Miscellaneous Mathematical Symbols-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:405 +msgid "Supplemental Mathematical Operators" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:409 +msgid "Miscellaneous Symbols and Arrows" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:413 +msgid "Glagolitic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:417 +msgid "Latin Extended-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:421 +msgid "Coptic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:425 +msgid "Georgian Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:429 +msgid "Tifinagh" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:433 +msgid "Ethiopic Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:437 +msgid "Cyrillic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:441 +msgid "Supplemental Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:445 +msgid "CJK Radicals Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:449 +msgid "Kangxi Radicals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:453 +msgid "Ideographic Description Characters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:457 +msgid "CJK Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:461 +msgid "Hiragana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:465 +msgid "Katakana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:469 +msgid "Bopomofo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:473 +msgid "Hangul Compatibility Jamo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:477 +msgid "Kanbun" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:481 +msgid "Bopomofo Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:485 +msgid "CJK Strokes" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:489 +msgid "Katakana Phonetic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:493 +msgid "Enclosed CJK Letters and Months" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:497 +msgid "CJK Compatibility" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:501 +msgid "CJK Unified Ideographs Extension A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:505 +msgid "Yijing Hexagram Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:509 +msgid "CJK Unified Ideographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:513 +msgid "Yi Syllables" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:517 +msgid "Yi Radicals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:521 +msgid "Lisu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:525 +msgid "Vai" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:529 +msgid "Cyrillic Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:533 +msgid "Bamum" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:537 +msgid "Modifier Tone Letters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:541 +msgid "Latin Extended-D" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:545 +msgid "Syloti Nagri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:549 +msgid "Common Indic Number Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:553 +msgid "Phags-pa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:557 +msgid "Saurashtra" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:561 +msgid "Devanagari Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:565 +msgid "Kayah Li" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:569 +msgid "Rejang" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:573 +msgid "Hangul Jamo Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:577 +msgid "Javanese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:581 +msgid "Myanmar Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:585 +msgid "Cham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:589 +msgid "Myanmar Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:593 +msgid "Tai Viet" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:597 +msgid "Meetei Mayek Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:601 +msgid "Ethiopic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:605 +msgid "Latin Extended-E" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:609 +msgid "Cherokee Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:613 +msgid "Meetei Mayek" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:617 +msgid "Hangul Syllables" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:621 +msgid "Hangul Jamo Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:625 +msgid "High Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:629 +msgid "High Private Use Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:633 +msgid "Low Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:637 +msgid "Private Use Area" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:641 +msgid "CJK Compatibility Ideographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:645 +msgid "Alphabetic Presentation Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:649 +msgid "Arabic Presentation Forms-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:653 +msgid "Variation Selectors" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:657 +msgid "Vertical Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:661 +msgid "Combining Half Marks" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:665 +msgid "CJK Compatibility Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:669 +msgid "Small Form Variants" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:673 +msgid "Arabic Presentation Forms-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:677 +msgid "Halfwidth and Fullwidth Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:681 +msgid "Specials" +msgstr "ਖਾਸ" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:685 +msgid "Linear B Syllabary" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:689 +msgid "Linear B Ideograms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:693 +msgid "Aegean Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:697 +msgid "Ancient Greek Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:701 +msgid "Ancient Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:705 +msgid "Phaistos Disc" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:709 +msgid "Lycian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:713 +msgid "Carian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:717 +msgid "Coptic Epact Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:721 +msgid "Old Italic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:725 +msgid "Gothic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:729 +msgid "Old Permic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:733 +msgid "Ugaritic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:737 +msgid "Old Persian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:741 +msgid "Deseret" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:745 +msgid "Shavian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:749 +msgid "Osmanya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:753 +msgid "Osage" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:757 +msgid "Elbasan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:761 +msgid "Caucasian Albanian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:765 +msgid "Linear A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:769 +msgid "Cypriot Syllabary" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:773 +msgid "Imperial Aramaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:777 +msgid "Palmyrene" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:781 +msgid "Nabataean" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:785 +msgid "Hatran" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:789 +msgid "Phoenician" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:793 +msgid "Lydian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:797 +msgid "Meroitic Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:801 +msgid "Meroitic Cursive" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:805 +msgid "Kharoshthi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:809 +msgid "Old South Arabian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:813 +msgid "Old North Arabian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:817 +msgid "Manichaean" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:821 +msgid "Avestan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:825 +msgid "Inscriptional Parthian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:829 +msgid "Inscriptional Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:833 +msgid "Psalter Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:837 +msgid "Old Turkic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:841 +msgid "Old Hungarian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:845 +msgid "Hanifi Rohingya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:849 +msgid "Rumi Numeral Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:853 +msgid "Old Sogdian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:857 +msgid "Sogdian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:861 +msgid "Elymaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:865 +msgid "Brahmi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:869 +msgid "Kaithi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:873 +msgid "Sora Sompeng" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:877 +msgid "Chakma" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:881 +msgid "Mahajani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:885 +msgid "Sharada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:889 +msgid "Sinhala Archaic Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:893 +msgid "Khojki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:897 +msgid "Multani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:901 +msgid "Khudawadi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:905 +msgid "Grantha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:909 +msgid "Newa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:913 +msgid "Tirhuta" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:917 +msgid "Siddham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:921 +msgid "Modi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:925 +msgid "Mongolian Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:929 +msgid "Takri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:933 +msgid "Ahom" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:937 +msgid "Dogra" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:941 +msgid "Warang Citi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:945 +msgid "Nandinagari" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:949 +msgid "Zanabazar Square" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:953 +msgid "Soyombo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:957 +msgid "Pau Cin Hau" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:961 +msgid "Bhaiksuki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:965 +msgid "Marchen" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:969 +msgid "Masaram Gondi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:973 +msgid "Gunjala Gondi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:977 +msgid "Makasar" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:981 +msgid "Tamil Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:985 +msgid "Cuneiform" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:989 +msgid "Cuneiform Numbers and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:993 +msgid "Early Dynastic Cuneiform" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:997 +msgid "Egyptian Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1001 +msgid "Egyptian Hieroglyph Format Controls" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1005 +msgid "Anatolian Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1009 +msgid "Bamum Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1013 +msgid "Mro" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1017 +msgid "Bassa Vah" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1021 +msgid "Pahawh Hmong" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1025 +msgid "Medefaidrin" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1029 +msgid "Miao" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1033 +msgid "Ideographic Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1037 +msgid "Tangut" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1041 +msgid "Tangut Components" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1045 +msgid "Kana Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1049 +msgid "Kana Extended-A" +msgstr "" -#: ../ui/gtk/main.py:62 -msgid "" -"Some input methods have been installed, removed or updated. Please restart " -"ibus input platform." +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1053 +msgid "Small Kana Extension" msgstr "" -"ਕੁਝ ਇੰਪੁੰਟ ਢੰਗ ਇੰਸਟਾਲ ਕੀਤੇ, ਹਟਾਏ ਜਾਂ ਅੱਪਡੇਟ ਕੀਤੇ ਗਏ ਹਨ। ਕਿਰਪਾ ਕਰਕੇ ibus " -"ਇੰਪੁੱਟ ਪਲੇਟਫਾਰਮ ਮੁੜ-ਚਾਲੂ ਕਰੋ।" -#: ../ui/gtk/main.py:66 -msgid "Restart Now" -msgstr "ਹੁਣੇ ਮੁੜ-ਚਾਲੂ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1057 +msgid "Nushu" +msgstr "" -#: ../ui/gtk/main.py:67 -msgid "Later" -msgstr "ਬਾਅਦ 'ਚ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1061 +msgid "Duployan" +msgstr "" -#: ../ui/gtk/panel.py:116 -msgid "IBus Panel" -msgstr "ਆਈਬੱਸ ਪੈਨਲ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1065 +msgid "Shorthand Format Controls" +msgstr "" -#: ../ui/gtk/panel.py:122 -msgid "IBus input method framework" -msgstr "IBus ਇੰਪੁੱਟ ਢੰਗ ਫਰੇਮਵਰਕ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1069 +msgid "Byzantine Musical Symbols" +msgstr "" -#: ../ui/gtk/panel.py:352 -msgid "Restart" -msgstr "ਮੁੜ-ਚਾਲੂ ਕਰੋ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1073 +msgid "Musical Symbols" +msgstr "" -#: ../ui/gtk/panel.py:439 -msgid "Turn off input method" -msgstr "ਇੰਪੁੱਟ ਢੰਗ ਬੰਦ ਕਰੋ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1077 +msgid "Ancient Greek Musical Notation" +msgstr "" -#: ../ui/gtk/panel.py:478 -msgid "No input window" -msgstr "ਕੋਈ ਇੰਪੁੱਟ ਵਿੰਡੋ ਨਹੀਂ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1081 +msgid "Mayan Numerals" +msgstr "" -#: ../ui/gtk/panel.py:509 -msgid "IBus is an intelligent input bus for Linux/Unix." -msgstr "IBus ਲੀਨਕਸ/ਯੂਨੈਕਸ ਲਈ ਮਾਹਰ ਇੰਪੁੱਟ ਬੱਸ ਹੈ।" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1085 +msgid "Tai Xuan Jing Symbols" +msgstr "" -#: ../ui/gtk/panel.py:513 -msgid "translator-credits" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1089 +msgid "Counting Rod Numerals" msgstr "" -"ਅਮਨਪਰੀਤ ਸਿੰਘ ਆਲਮ ੨੦੦੮-੨੦੧੧\n" -"http://www.satluj.com/" -#: ../ui/gtk/languagebar.py:106 -msgid "About the input method" -msgstr "ਇੰਪੁੱਟ ਢੰਗ ਬਾਰੇ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1093 +msgid "Mathematical Alphanumeric Symbols" +msgstr "" -#: ../ui/gtk/languagebar.py:214 -msgid "Switch input method" -msgstr "ਇੰਪੁੱਟ ਢੰਗ ਬਦਲੋ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1097 +msgid "Sutton SignWriting" +msgstr "" -#: ../ui/gtk/languagebar.py:357 ../ui/gtk/engineabout.py:33 -#: ../setup/engineabout.py:33 ../setup/setup.ui.h:16 -msgid "About" -msgstr "ਇਸ ਬਾਰੇ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1101 +msgid "Glagolitic Supplement" +msgstr "" -#: ../ui/gtk/languagebar.py:361 -msgid "About the Input Method" -msgstr "ਇੰਪੁੱਟ ਢੰਗ ਬਾਰੇ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1105 +msgid "Nyiakeng Puachue Hmong" +msgstr "" -#: ../ui/gtk/engineabout.py:61 ../setup/engineabout.py:61 -#, python-format -msgid "Language: %s\n" -msgstr "ਭਾਸ਼ਾ: %s\n" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1109 +msgid "Wancho" +msgstr "" -#: ../ui/gtk/engineabout.py:63 ../setup/engineabout.py:63 -#, python-format -msgid "Keyboard layout: %s\n" -msgstr "ਕੀਬੋਰਡ ਲੇਆਉਟ: %s\n" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1113 +msgid "Mende Kikakui" +msgstr "" -#: ../ui/gtk/engineabout.py:65 ../setup/engineabout.py:65 -#, python-format -msgid "Author: %s\n" -msgstr "ਲੇਖਕ: %s\n" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1117 +msgid "Adlam" +msgstr "" -#: ../ui/gtk/engineabout.py:67 ../setup/engineabout.py:67 -msgid "Description:\n" -msgstr "ਵੇਰਵਾ:\n" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1121 +msgid "Indic Siyaq Numbers" +msgstr "" -#: ../setup/main.py:102 -msgid "trigger" -msgstr "ਟਰਿੱਗਰ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1125 +msgid "Ottoman Siyaq Numbers" +msgstr "" -#: ../setup/main.py:113 -msgid "enable" -msgstr "ਚਾਲੂ ਕਰੋ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1129 +msgid "Arabic Mathematical Alphabetic Symbols" +msgstr "" -#: ../setup/main.py:124 -msgid "disable" -msgstr "ਬੰਦ ਕਰੋ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1133 +msgid "Mahjong Tiles" +msgstr "" -#: ../setup/main.py:135 -msgid "next input method" -msgstr "ਅਗਲਾ ਇੰਪੁੱਟ ਢੰਗ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1137 +msgid "Domino Tiles" +msgstr "" -#: ../setup/main.py:146 -msgid "previous input method" -msgstr "ਪਿਛਲਾ ਇੰਪੁੱਟ ਢੰਗ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1141 +msgid "Playing Cards" +msgstr "" -#: ../setup/main.py:286 -msgid "IBus daemon is not started. Do you want to start it now?" -msgstr "IBus ਡੈਮਨ ਚੱਲਦੀ ਨਹੀਂ ਹੈ। ਕੀ ਤੁਸੀਂ ਇਸ ਨੂੰ ਸ਼ੁਰੂ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1145 +msgid "Enclosed Alphanumeric Supplement" +msgstr "" -#: ../setup/main.py:301 -msgid "" -"IBus has been started! If you can not use IBus, please add below lines in $HOME/.bashrc, and relogin your desktop.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1149 +msgid "Enclosed Ideographic Supplement" msgstr "" -"IBus ਸ਼ੁਰੂ ਹੋ ਗਈ ਹੈ! ਜੇ ਤੁਹਾਨੂੰ IBus ਨਾ ਵਰਤ ਸਕੋ ਤਾਂ ਅੱਗੇ ਦਿੱਤੀਆਂ ਲਾਈਨਾਂ ਨੂੰ $HOME/.bashrc ਵਿੱਚ ਲਿਖੋ ਅਤੇ ਆਪਣੇ ਡੈਸਕਟਾਪ ਵਿੱਚ ਮੁੜ-ਲਾਗਇਨ ਕਰੋ।\n" -" export GTK_IM_MODULE=ibus⏎ \n" -" export XMODIFIERS=@im=ibus⏎ \n" -" export QT_IM_MODULE=ibus" -#: ../setup/main.py:316 -#, python-format -msgid "Select keyboard shortcut for %s" -msgstr "%s ਲਈ ਕੀਬੋਰਡ ਸ਼ਾਰਟਕੱਟ ਚੁਣੋ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1153 +msgid "Miscellaneous Symbols and Pictographs" +msgstr "" -#: ../setup/keyboardshortcut.py:52 -msgid "Keyboard shortcuts" -msgstr "ਕੀਬੋਰਡ ਸ਼ਾਰਟਕੱਟ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1157 +msgid "Emoticons" +msgstr "" -#: ../setup/keyboardshortcut.py:63 -msgid "Key code:" -msgstr "ਕੀ ਕੋਡ:" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1161 +msgid "Ornamental Dingbats" +msgstr "" -#: ../setup/keyboardshortcut.py:78 -msgid "Modifiers:" -msgstr "ਮਾਡੀਫਾਇਰ:" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1165 +msgid "Transport and Map Symbols" +msgstr "" -#: ../setup/keyboardshortcut.py:231 -msgid "" -"Please press a key (or a key combination).\n" -"The dialog will be closed when the key is released." +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1169 +msgid "Alchemical Symbols" msgstr "" -"ਕੋਈ ਵੀ ਸਵਿੱਚ ਦੱਬੋ (ਜਾਂ ਕੋਈ ਸਵਿੱਚ ਜੋੜ)।\n" -"ਜਦੋਂ ਸਵਿੱਚ ਛੱਡੀ ਜਾਵੇਗੀ ਤਾਂ ਇਹ ਡਾਈਲਾਗ ਬੰਦ ਹੋ ਜਾਵੇਗਾ।" -#: ../setup/keyboardshortcut.py:233 -msgid "Please press a key (or a key combination)" -msgstr "ਕੋਈ ਵੀ ਸਵਿੱਚ ਦੱਬੋ (ਜਾਂ ਸਵਿੱਚ ਜੋੜ)" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1173 +msgid "Geometric Shapes Extended" +msgstr "" -#: ../setup/enginecombobox.py:120 -msgid "Select an input method" -msgstr "ਇੱਕ ਇੰਪੁੱਟ ਢੰਗ ਚੁਣੋ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1177 +msgid "Supplemental Arrows-C" +msgstr "" -#. create im name & icon column -#: ../setup/enginetreeview.py:64 ../setup/setup.ui.h:33 -msgid "Input Method" -msgstr "ਇੰਪੁੱਟ ਢੰਗ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1181 +msgid "Supplemental Symbols and Pictographs" +msgstr "" -#: ../setup/enginetreeview.py:92 -msgid "Kbd" -msgstr "Kbd" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1185 +msgid "Chess Symbols" +msgstr "" -#: ../setup/ibus-setup.desktop.in.h:1 ../setup/setup.ui.h:32 -msgid "IBus Preferences" -msgstr "IBus ਪਸੰਦ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1189 +msgid "Symbols and Pictographs Extended-A" +msgstr "" -#: ../setup/ibus-setup.desktop.in.h:2 -msgid "Set IBus Preferences" -msgstr "ਆਈਬਸ ਪਸੰਦ ਸੈੱਟ ਕਰੋ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1193 +msgid "CJK Unified Ideographs Extension B" +msgstr "" -#: ../data/ibus.schemas.in.h:1 -msgid "Auto hide" -msgstr "ਆਟੋਮੈਟਿਕ ਓਹਲੇ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1197 +msgid "CJK Unified Ideographs Extension C" +msgstr "" -#: ../data/ibus.schemas.in.h:2 -msgid "Custom font" -msgstr "ਪਸੰਦੀਦਾ ਫੋਂਟ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1201 +msgid "CJK Unified Ideographs Extension D" +msgstr "" -#: ../data/ibus.schemas.in.h:3 -msgid "Custom font name for language panel" -msgstr "ਭਾਸ਼ਾ ਪੈਨਲ ਲਈ ਪਸੰਦੀਦਾ ਫੋਂਟ ਨਾਂ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1205 +msgid "CJK Unified Ideographs Extension E" +msgstr "" -#: ../data/ibus.schemas.in.h:4 -msgid "Disable shortcut keys" -msgstr "ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ ਬੰਦ ਕਰੋ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1209 +msgid "CJK Unified Ideographs Extension F" +msgstr "" -#: ../data/ibus.schemas.in.h:5 -msgid "Embed Preedit Text" -msgstr "ਸ਼ਾਮਿਲ ਕੀਤਾ ਪਹਿਲਾਂ-ਸੋਧਿਆ ਪਾਠ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1213 +msgid "CJK Compatibility Ideographs Supplement" +msgstr "" -#: ../data/ibus.schemas.in.h:6 -msgid "Embed Preedit Text in Application Window" -msgstr "ਐਪਲੀਕੇਸ਼ਨ ਵਿੱਡੋ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕੀਤਾ ਪਹਿਲਾਂ-ਸੋਧਿਆ ਪਾਠ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1217 +msgid "Tags" +msgstr "" -#: ../data/ibus.schemas.in.h:7 -msgid "Enable input method by default" -msgstr "ਇੰਪੁੱਟ ਢੰਗ ਡਿਫਾਲਟ ਹੀ ਚਾਲੂ ਕਰੋ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1221 +msgid "Variation Selectors Supplement" +msgstr "" -#: ../data/ibus.schemas.in.h:8 -msgid "Enable input method by default when the application gets input focus" -msgstr "ਜਦੋਂ ਐਪਲੀਕੇਸ਼ਨ ਇੰਪੁੱਟ ਫੋਕਸ ਲਵੇ ਤਾਂ ਇੰਪੁੱਟ ਢੰਗ ਡਿਫਾਲਟ ਹੀ ਚਲਾਉ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1225 +msgid "Supplementary Private Use Area-A" +msgstr "" -#: ../data/ibus.schemas.in.h:9 -msgid "Enable shortcut keys" -msgstr "ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ ਚਾਲੂ ਕਰੋ" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1229 +msgid "Supplementary Private Use Area-B" +msgstr "" -#: ../data/ibus.schemas.in.h:10 -msgid "Language panel position" -msgstr "ਭਾਸ਼ਾ ਪੈਨਲ ਸਥਿਤੀ" +#: tools/main.vala:51 +msgid "List engine name only" +msgstr "ਸਿਰਫ ਇੰਜਣ ਨਾਂ ਵੇਖਾਓ" -#: ../data/ibus.schemas.in.h:11 -msgid "Next engine shortcut keys" -msgstr "ਅਗਲਾ ਇੰਜਣ ਸ਼ਾਰਟਕੱਟ ਕੁੰਜੀਆਂ" +#: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 +msgid "Can't connect to IBus.\n" +msgstr "IBus ਨਾਲ ਨਹੀਂ ਜੁੜ ਸਕਿਆ।\n" -#: ../data/ibus.schemas.in.h:12 -msgid "Orientation of lookup table" -msgstr "ਖੋਜ ਟੇਬਲ ਦੀ ਸਥਿਤੀ" +#: tools/main.vala:93 +#, c-format +msgid "language: %s\n" +msgstr "ਭਾਸ਼ਾ: %s\n" -#: ../data/ibus.schemas.in.h:13 -msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" -msgstr "ਖੋਜ ਟੇਬਲ ਦੀ ਸਥਿਤੀ। 0 = ਲੇਟਵਾਂ, 1 =ਖੜ੍ਹਵਾ" +#: tools/main.vala:161 +msgid "No engine is set.\n" +msgstr "ਕੋਈ ਇੰਜਣ ਸੈੱਟ ਨਹੀਂ ਹੈ।\n" -#: ../data/ibus.schemas.in.h:14 -msgid "Preload engines" -msgstr "ਪ੍ਰੀ-ਲੋਡ ਇੰਜਣ" +#: tools/main.vala:169 +msgid "Set global engine failed.\n" +msgstr "ਗਲੋਬਲ ਇੰਜਣ ਸੈੱਟ ਕਰਨ ਲਈ ਫੇਲ੍ਹ।\n" -#: ../data/ibus.schemas.in.h:15 -msgid "Preload engines during ibus starts up" -msgstr "ibus ਸ਼ੁਰੂ ਹੋਣ ਸਮੇਂ ਪਹਿਲਾਂ ਲੋਡ ਕੀਤੇ ਇੰਜਣ" +#: tools/main.vala:174 +msgid "Get global engine failed.\n" +msgstr "ਗਲੋਬਲ ਇੰਜਣ ਫੇਲ ਹੋਇਆ।\n" -#: ../data/ibus.schemas.in.h:16 -msgid "Prev engine shortcut keys" -msgstr "ਪਿਛਲਾ ਇੰਜਣ ਸ਼ਾਰਟਕੱਟ ਕੁੰਜੀਆਂ" +#: tools/main.vala:217 +msgid "Read the system registry cache." +msgstr "ਸਿਸਟਮ ਰਜਿਸਟਰੀ ਕੈਚੇ ਪੜ੍ਹੋ।" -#: ../data/ibus.schemas.in.h:17 ../setup/setup.ui.h:42 -msgid "Share the same input method among all applications" -msgstr "ਸਭ ਐਪਲੀਕੇਸ਼ਨਾਂ ਵਿਚਕਾਰ ਕੁਝ ਇੰਪੁੱਟ ਸਾਂਝੀ ਕਰੋ" +#: tools/main.vala:219 +msgid "Read the registry cache FILE." +msgstr "ਰਜਿਸਟਰੀ ਕੈਚੇ ਫ਼ਈਲ ਪੜ੍ਹੋ।" -#: ../data/ibus.schemas.in.h:18 ../setup/setup.ui.h:43 -msgid "Show icon on system tray" -msgstr "ਸਿਸਟਮ ਟਰੇਅ ਵਿੱਚ ਆਈਕਾਨ ਵੇਖਾਓ" +#: tools/main.vala:237 tools/main.vala:242 +msgid "The registry cache is invalid.\n" +msgstr "ਰਜਿਸਟਰੀ ਕੈਚੇ ਅਯੋਗ ਹੈ।\n" -#: ../data/ibus.schemas.in.h:19 -msgid "Show input method name" -msgstr "ਇੰਪੁੱਟ ਢੰਗ ਨਾਂ ਵੇਖਾਓ" +#: tools/main.vala:257 +msgid "Write the system registry cache." +msgstr "ਸਿਸਟਮ ਰਜਿਸਟਰੀ ਕੈਚੇ ਲਿਖੋ।" -#: ../data/ibus.schemas.in.h:20 ../setup/setup.ui.h:45 -msgid "Show input method name on language bar" -msgstr "ਭਾਸ਼ਾ ਪੱਟੀ ਉੱਤੇ ਇੰਪੁੱਟ ਨਾਂ ਵੇਖੋ" +#: tools/main.vala:259 +msgid "Write the registry cache FILE." +msgstr "ਰਜਿਸਟਰੀ ਕੈਚੇ ਫ਼ਾਈਲ ਲਿਖੋ।" -#: ../data/ibus.schemas.in.h:21 +#: tools/main.vala:295 msgid "" -"The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = " -"Always show" +"Use engine schema paths instead of ibus core, which can be comma-separated " +"values." msgstr "" -"ਭਾਸ਼ਾ ਪੈਨਲ ਦਾ ਰਵੱਈਆ. 0 = ਹਮੇਸ਼ਾ ਓਹਲੇ, 1 = ਆਟੋਮੈਟਿਕ ਓਹਲੇ, 2 = ਹਮੇਸ਼ਾ ਵੇਖੋ" -#: ../data/ibus.schemas.in.h:22 -msgid "" -"The position of the language panel. 0 = Top left corner, 1 = Top right " -"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" -msgstr "" -"ਭਾਸ਼ਾ ਪੈਨਲ ਦੀ ਸਥਿਤੀ. 0 = ਉੱਪਰ ਖੱਬਾ ਕੋਨਾ, 1 = ਉੱਪਰ ਸੱਜਾ ਕੋਨਾ, 2 = ਹੇਠਾਂ ਖੱਬਾ " -"ਕੋਨਾ, 3 = ਹੇਠਾਂ ਸੱਜਾ ਕੋਨਾ, 4 = ਪਸੰਦੀਦਾ" +#: tools/main.vala:381 +msgid "Resetting…" +msgstr "...ਮੁੜ-ਸੈਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" -#: ../data/ibus.schemas.in.h:23 -msgid "The shortcut keys for switching to the next input method in the list" -msgstr "ਲਿਸਟ ਵਿੱਚ ਅਗਲਾ ਇੰਪੁੱਟ ਢੰਗ ਬਦਲਣ ਲਈ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ" +#: tools/main.vala:399 +msgid "Done" +msgstr "ਮੁਕੰਮਲ" -#: ../data/ibus.schemas.in.h:24 -msgid "The shortcut keys for switching to the previous input method" -msgstr "ਪਿਛਲਾ ਇੰਪੁੱਟ ਢੰਗ ਬਦਲਣ ਲਈ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ" +#: tools/main.vala:444 +msgid "Set or get engine" +msgstr "ਇੰਜਣ ਸੈੱਟ ਜਾਂ ਪ੍ਰਾਪਤ ਕਰੋ" -#: ../data/ibus.schemas.in.h:25 -msgid "The shortcut keys for turning input method off" -msgstr "ਇੰਪੁੱਟ ਢੰਗ ਬੰਦ ਕਰਨ ਲਈ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ" +#: tools/main.vala:445 +msgid "Exit ibus-daemon" +msgstr "ibus-daemon ਤੋਂ ਬਾਹਰ ਆਓ" -#: ../data/ibus.schemas.in.h:26 -msgid "The shortcut keys for turning input method on" -msgstr "ਇੰਪੁੱਟ ਢੰਗ ਚਾਲੂ ਕਰਨ ਲਈ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ" +#: tools/main.vala:446 +msgid "Show available engines" +msgstr "ਉਪਲੱਬਧ ਇੰਜਣ ਵਿਖਾਓ" -#: ../data/ibus.schemas.in.h:27 ../setup/setup.ui.h:51 -msgid "The shortcut keys for turning input method on or off" -msgstr "ਇੰਪੁੱਟ ਢੰਗ ਬੰਦ ਕਰਨ ਜਾਂ ਚਾਲੂ ਕਰਨ ਲਈ ਸ਼ਾਰਟਕੱਟ ਕੁੰਜੀਆਂ" +#: tools/main.vala:447 +msgid "(Not implemented)" +msgstr "(ਲਾਗੂ ਨਹੀਂ ਕੀਤੀ ਹੋਈ)" -#: ../data/ibus.schemas.in.h:28 -msgid "Trigger shortcut keys" -msgstr "ਟਰਿੱਗਰ ਸ਼ਾਰਟਕੱਟ ਕੁੰਜੀਆਂ" +#: tools/main.vala:448 +msgid "Restart ibus-daemon" +msgstr "ibus-daemon ਮੁੜ ਸ਼ੁਰੂ ਕਰੋ" -#: ../data/ibus.schemas.in.h:29 -msgid "Use custom font" -msgstr "ਪਸੰਦੀਦਾ ਫੋਂਟ ਵਰਤੋਂ" +#: tools/main.vala:449 +msgid "Show version" +msgstr "ਸੰਸਕਰਣ ਵਿਖਾਓ" -#: ../data/ibus.schemas.in.h:30 -msgid "Use custom font name for language panel" -msgstr "ਭਾਸ਼ਾ ਪੈਨਲ ਲਈ ਪਸੰਦੀਦਾ ਫੋਂਟ ਨਾਂ ਵਰਤੋਂ" +#: tools/main.vala:450 +msgid "Show the content of registry cache" +msgstr "ਰਜਿਸਟਰੀ ਕੈਚੇ ਦੇ ਅੰਸ਼ ਵਿਖਾਓ" -#: ../data/ibus.schemas.in.h:31 -msgid "Use global input method" -msgstr "ਗਲੋਬਲ ਇੰਪੁੱਟ ਢੰਗ ਵਰਤੋ" +#: tools/main.vala:451 +msgid "Create registry cache" +msgstr "ਰਜਿਸਟਰੀ ਕੈਸ਼ ਬਣਾਓ" -#: ../data/ibus.schemas.in.h:32 ../setup/setup.ui.h:55 -msgid "Use system keyboard (XKB) layout" -msgstr "ਸਿਸਟਮ ਕੀਬੋਰਡ (XKB) ਲੇਆਉਟ ਵਰਤੋਂ" +#: tools/main.vala:452 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "ibus-daemon ਦਾ D-Bus ਪਤਾ ਛਾਪੋ" -#: ../data/ibus.schemas.in.h:33 ../setup/setup.ui.h:56 -msgid "Use system keyboard layout" -msgstr "ਸਿਸਟਮ ਕੀਬੋਰਡ ਲੇਆਉਟ ਵਰਤੋਂ" +#: tools/main.vala:453 +msgid "Show the configuration values" +msgstr "ਸੰਰਚਨਾ ਮੁੱਲ ਦਿਖਾਓ" -#: ../setup/setup.ui.h:1 -msgid "..." -msgstr "..." +#: tools/main.vala:454 +msgid "Reset the configuration values" +msgstr "ਸੰਰਚਨਾ ਮੁੱਲ ਮੁੜ-ਸੈਟ ਕਰੋ" -#: ../setup/setup.ui.h:2 -msgid "Font and Style" -msgstr "ਫੋਂਟ ਅਤੇ ਸਟਾਈਲ" +#: tools/main.vala:456 +msgid "Save emoji on dialog to clipboard " +msgstr "" -#: ../setup/setup.ui.h:3 -msgid "Global input method settings" -msgstr "ਗਲੋਬਲ ਇੰਪੁੱਟ ਢੰਗ ਸੈਟਿੰਗ" +#: tools/main.vala:458 +msgid "Show this information" +msgstr "ਇਹ ਜਾਣਕਾਰੀ ਵਿਖਾਓ" -#: ../setup/setup.ui.h:4 -msgid "Keyboard Layout" -msgstr "ਕੀਬੋਰਡ ਲੇਆਉਟ" +#: tools/main.vala:464 +#, c-format +msgid "Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "ਵਰਤੋਂ: %s COMMAND [OPTION...]\n" +"\n" -#: ../setup/setup.ui.h:5 -msgid "Keyboard Shortcuts" -msgstr "ਕੀਬੋਰਡ ਸ਼ਾਰਟਕੱਟ" +#: tools/main.vala:465 +msgid "Commands:\n" +msgstr "ਕਮਾਂਡ:\n" -#: ../setup/setup.ui.h:6 -msgid "Startup" -msgstr "ਸ਼ੁਰੂ" +#: tools/main.vala:494 +#, c-format +msgid "%s is unknown command!\n" +msgstr "%s ਅਣਜਾਣ ਕਮਾਂਡ ਹੈ!\n" -#: ../setup/setup.ui.h:7 -msgid "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" -msgstr "" -"IBus\n" -"ਇੰਟੈਲੀਜੈਂਟ ਇੰਪੁੱਟ ਢੰਗ\n" -"ਮੁੱਖ ਸਫ਼ਾ: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" +#: ui/gtk3/emojier.vala:233 +msgid "Favorites" +msgstr "ਮਨਪਸੰਦ" -#: ../setup/setup.ui.h:14 -msgid "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." -msgstr "" -"ਡਿਫਾਲਟ ਇੰਪੁੱਟ ਢੰਗ ਲਿਸਟ ਵਿੱਚ ਸਭ ਤੋਂ ਉੱਤੇ ਹੈ।\n" -"ਤੁਸੀਂ ਇਸ ਨੂੰ ਬਦਲਣ ਲਈ ਉੱਤੇ/ਹੇਠਾਂ ਬਟਨ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ।" +#: ui/gtk3/emojier.vala:234 +msgid "Others" +msgstr "ਹੋਰ" -#: ../setup/setup.ui.h:17 -msgid "Add the selected input method into the enabled input methods" -msgstr "ਚੁਣਿਆ ਇੰਪੁੱਟ ਢੰਗ ਚਾਲੂ ਕੀਤੇ ਇੰਪੁੱਟ ਢੰਗਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ" +#: ui/gtk3/emojier.vala:235 +msgid "Open Unicode choice" +msgstr "ਯੂਨੀਕੋਡ ਚੋਣ ਖੋਲ੍ਹੋ" -#: ../setup/setup.ui.h:18 -msgid "Advanced" -msgstr "ਤਕਨੀਕੀ" +#: ui/gtk3/emojier.vala:994 +msgid "Bring back emoji choice" +msgstr "" -#: ../setup/setup.ui.h:19 -msgid "Always" -msgstr "ਹਮੇਸ਼ਾ" +#: ui/gtk3/emojier.vala:1096 +msgid "Page Down" +msgstr "" -#: ../setup/setup.ui.h:20 -msgid "Bottom left corner" -msgstr "ਹੇਠਾਂ ਖੱਬਾ ਕੋਨਾ" +#: ui/gtk3/emojier.vala:1107 +msgid "Page Up" +msgstr "" -#: ../setup/setup.ui.h:21 -msgid "Bottom right corner" -msgstr "ਹੇਠਾਂ ਸੱਜਾ ਕੋਨਾ" +#: ui/gtk3/emojier.vala:1110 +msgid "Show emoji variants" +msgstr "" -#: ../setup/setup.ui.h:22 -msgid "Candidates orientation:" -msgstr "ਉਮੀਦਵਾਰ ਸਥਿਤੀ:" +#: ui/gtk3/emojier.vala:1111 +msgid "Close" +msgstr "ਬੰਦ ਕਰੋ" -#: ../setup/setup.ui.h:23 -msgid "Custom" -msgstr "ਪਸੰਦੀਦਾ" +#: ui/gtk3/emojier.vala:1117 +msgid "Menu" +msgstr "ਮੇਨੂ" -#: ../setup/setup.ui.h:24 -msgid "Disable:" -msgstr "ਬੰਦ:" +#: ui/gtk3/emojier.vala:1128 +msgid "Click to view a warning message" +msgstr "ਚੇਤਾਵਨੀ ਸੁਨੇਹਾ ਵੇਖਣ ਲਈ ਕਲਿੱਕ ਕਰੋ" -#: ../setup/setup.ui.h:25 -msgid "Embed preedit text in application window" -msgstr "ਐਪਲੀਕੇਸ਼ਨ ਵਿੰਡੋ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕੀਤਾ ਪਹਿਲਾਂ-ਸੋਧਿਆ ਪਾਠ" +#: ui/gtk3/emojier.vala:1172 +msgid "Loading a Unicode dictionary:" +msgstr "ਯੂਨੀਕੋਡ ਸ਼ਬਦ-ਕੋਸ਼ ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ:" -#: ../setup/setup.ui.h:26 -msgid "Embed the preedit text of input method in the application window" -msgstr "ਐਪਲੀਕੇਸ਼ਨ ਵਿੰਡੋ ਵਿੱਚ ਇੰਪੁੱਟ ਢੰਗ ਦਾ ਸ਼ਾਮਿਲ ਕੀਤਾ ਪਹਿਲਾਂ-ਸੋਧਿਆ ਪਾਠ" +#: ui/gtk3/emojier.vala:1418 +#, c-format +msgid "Code point: %s" +msgstr "ਕੋਡ ਬਿੰਦੂ: %s" -#: ../setup/setup.ui.h:27 -msgid "Embedded in menu" -msgstr "ਮੇਨੂ ਵਿੱਚ ਸ਼ਾਮਿਲ" +#: ui/gtk3/emojier.vala:1424 +msgid "Has emoji variants" +msgstr "" -#: ../setup/setup.ui.h:28 -msgid "Enable or disable:" -msgstr "ਚਾਲੂ ਜਾਂ ਬੰਦ:" +#: ui/gtk3/emojier.vala:1591 ui/gtk3/emojier.vala:1604 +#, c-format +msgid "Description: %s" +msgstr "ਵਰਣਨ: %s" -#: ../setup/setup.ui.h:29 -msgid "Enable:" -msgstr "ਚਾਲੂ:" +#: ui/gtk3/emojier.vala:1591 +msgid "None" +msgstr "ਕੋਈ ਨਹੀਂ" -#: ../setup/setup.ui.h:30 -msgid "General" -msgstr "ਆਮ" +#: ui/gtk3/emojier.vala:1615 +#, c-format +msgid "Annotations: %s" +msgstr "" -#: ../setup/setup.ui.h:31 -msgid "Horizontal" -msgstr "ਲੇਟਵਾਂ" +#: ui/gtk3/emojier.vala:1641 +#, c-format +msgid "Name: %s" +msgstr "ਨਾਂ: %s" -#: ../setup/setup.ui.h:34 -msgid "Language panel position:" -msgstr "ਭਾਸ਼ਾ ਪੈਨਲ ਸਥਿਤੀ:" +#: ui/gtk3/emojier.vala:1649 +#, c-format +msgid "Alias: %s" +msgstr "" -#: ../setup/setup.ui.h:35 -msgid "Move down the selected input method in the enabled input methods" -msgstr "ਚੁਣਿਆ ਇੰਪੁੱਟ ਢੰਗ ਚਾਲੂ ਇੰਪੁੱਟ ਢੰਗਾਂ ਵਿੱਚ ਹੇਠਾਂ ਭੇਜੋ" +#: ui/gtk3/emojier.vala:2139 ui/gtk3/ibus-extension-gtk3.desktop.in:3 +#: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 +msgid "Emoji Choice" +msgstr "ਇਮੋਜ਼ੀ ਚੋਣ" -#: ../setup/setup.ui.h:36 -msgid "Move up the selected input method in the enabled input methods list" -msgstr "ਚੁਣਿਆ ਇੰਪੁੱਟ ਢੰਗ ਚਾਲੂ ਇੰਪੁੱਟ ਢੰਗਾਂ ਵਿੱਚ ਉੱਤੇ ਭੇਜੋ" +#: ui/gtk3/emojier.vala:2141 +msgid "Unicode Choice" +msgstr "ਯੂਨੀਕੋਡ ਚੋਣ" -#: ../setup/setup.ui.h:37 -msgid "Next input method:" -msgstr "ਅਗਲਾ ਇੰਪੁੱਟ ਢੰਗ:" +#: ui/gtk3/emojier.vala:2429 +msgid "" +"Failed to get the current text application. Please re-focus your application." +" E.g. Press Esc key several times to release the emoji typing mode, click " +"your desktop and click your text application again." +msgstr "" -#: ../setup/setup.ui.h:38 -msgid "Previous input method:" -msgstr "ਪਿਛਲਾ ਇੰਪੁੱਟ ਢੰਗ:" +#: ui/gtk3/emojierapp.vala:58 +msgid "Canceled to choose an emoji." +msgstr "" -#: ../setup/setup.ui.h:39 -msgid "Remove the selected input method from the enabled input methods" -msgstr "ਚੁਣਿਆ ਇੰਪੁੱਟ ਢੰਗ ਚਾਲੂ ਇੰਪੁੱਟ ਢੰਗਾਂ ਵਿੱਚੋਂ ਹਟਾਓ" +#: ui/gtk3/emojierapp.vala:93 +msgid "Copied an emoji to your clipboard." +msgstr "" -#: ../setup/setup.ui.h:40 -msgid "Set the behavior of ibus how to show or hide language bar" -msgstr "ibus ਦਾ ਰਵੱਈਆ ਸੈੱਟ ਕਰੋ ਕਿ ਭਾਸ਼ਾ ਪੱਟੀ ਕਿਵੇਂ ਵੇਖਾਈ ਜਾਵੇ" +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ui/gtk3/emojierapp.vala:114 +msgid "\"FONT\" for emoji characters on emoji dialog" +msgstr "" -#: ../setup/setup.ui.h:41 -msgid "Set the orientation of candidates in lookup table" -msgstr "ਖੋਜ ਟੇਬਲ ਵਿੱਚ ਉਮੀਦਵਾਰ ਦੀ ਸਥਿਤੀ ਸੈੱਟ ਕਰੋ" +#: ui/gtk3/emojierapp.vala:115 +msgid "FONT" +msgstr "ਫ਼ੌਂਟ" -#: ../setup/setup.ui.h:44 -msgid "Show information of the selected input method" -msgstr "ਚੁਣੇ ਇੰਪੁੱਟ ਢੰਗ ਬਾਰੇ ਜਾਣਕਾਰੀ ਵੇਖੋ" +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ui/gtk3/emojierapp.vala:120 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" +msgstr "" -#: ../setup/setup.ui.h:46 -msgid "Show input method's name on language bar when check the checkbox" -msgstr "ਜਦੋਂ ਚੈੱਕ ਬਾਕਸ ਚੁਣਿਆ ਹੋਵੇ ਤਾਂ ਇੰਪੁੱਟ ਢੰਗ ਨਾਂ ਭਾਸ਼ਾ ਪੱਟੀ ਉੱਤੇ ਵੇਖੋ" +#: ui/gtk3/emojierapp.vala:121 +msgid "LANG" +msgstr "" -#: ../setup/setup.ui.h:47 -msgid "Show language panel:" -msgstr "ਭਾਸ਼ਾ ਪੈਨਲ ਵੇਖੋ:" +#: ui/gtk3/emojierapp.vala:123 +msgid "Emoji annotations can be match partially" +msgstr "" -#: ../setup/setup.ui.h:48 -msgid "Start ibus on login" -msgstr "ਲਾਗਇਨ ਸਮੇਂ ibus ਚਲਾਉ" +#: ui/gtk3/emojierapp.vala:127 +msgid "Match with the length of the specified integer" +msgstr "" -#: ../setup/setup.ui.h:49 -msgid "The shortcut keys for switching to next input method in the list" -msgstr "ਲਿਸਟ ਵਿੱਚ ਅਗਲਾ ਇੰਪੁੱਟ ਢੰਗ ਬਦਲਣ ਲਈ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚ" +#: ui/gtk3/emojierapp.vala:131 +msgid "Match with the condition of the specified integer" +msgstr "" -#: ../setup/setup.ui.h:50 -msgid "The shortcut keys for switching to previous input method in the list" -msgstr "ਲਿਸਟ ਵਿੱਚ ਪਿਛਲਾ ਇੰਪੁੱਟ ਢੰਗ ਬਦਲਣ ਲਈ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚ" +#: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 +msgid "IBus Panel" +msgstr "IBus ਪੈਨਲ" -#: ../setup/setup.ui.h:52 -msgid "Top left corner" -msgstr "ਉੱਤੇ ਖੱਬਾ ਕੋਨਾ" +#: ui/gtk3/panel.vala:1095 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus ਲੀਨਕਸ/ਯੂਨੈਕਸ ਲਈ ਮਾਹਰ ਇੰਪੁੱਟ ਬੱਸ ਹੈ।" -#: ../setup/setup.ui.h:53 -msgid "Top right corner" -msgstr "ਉੱਤੇ ਸੱਜਾ ਕੋਨਾ" +#: ui/gtk3/panel.vala:1099 +msgid "translator-credits" +msgstr "" +"ਅਮਨਪਰੀਤ ਸਿੰਘ ਆਲਮ ੨੦੦੮-੨੦੨੨\n" +"ਜਸਵਿੰਦਰ ਸਿੰਘ \n" +"http://satluj.org" -#: ../setup/setup.ui.h:54 -msgid "Use custom font:" -msgstr "ਪਸੰਦੀਦਾ ਫੋਂਟ ਵਰਤੋਂ:" +#: ui/gtk3/panel.vala:1118 +msgid "Preferences" +msgstr "ਮੇਰੀ ਪਸੰਦ" -#: ../setup/setup.ui.h:57 -msgid "Vertical" -msgstr "ਖੜ੍ਹਵਾਂ" +#: ui/gtk3/panel.vala:1144 +msgid "Restart" +msgstr "ਮੁੜ-ਚਾਲੂ ਕਰੋ" + +#: ui/gtk3/panel.vala:1148 +msgid "Quit" +msgstr "ਬਾਹਰ" -#: ../setup/setup.ui.h:58 -msgid "When active" -msgstr "ਜਦੋਂ ਐਕਟਿਵ" +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 +msgid "default:LTR" +msgstr "default:LTR" diff --git a/po/pl.po b/po/pl.po index ed90c06d5..364549f36 100644 --- a/po/pl.po +++ b/po/pl.po @@ -1,557 +1,3403 @@ -# translation of pl.po to Polish # Polish translation of ibus. +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2021 Takao Fujiwara # This file is distributed under the same license as the ibus package. # -# Piotr Drąg , 2009. -# raven , 2011. +# Translators: +# fujiwara , 2015, 2017. +# Piotr Drąg , 2011-2020, 2021. msgid "" msgstr "" -"Project-Id-Version: pl\n" -"Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/list\n" -"POT-Creation-Date: 2011-05-13 11:21+0900\n" -"PO-Revision-Date: 2011-05-13 07:46+0000\n" -"Last-Translator: raven \n" -"Language-Team: Polish \n" +"Project-Id-Version: ibus 1.5.20\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2020-12-11 16:21+0900\n" +"PO-Revision-Date: 2021-01-16 12:24+0000\n" +"Last-Translator: Piotr Drąg \n" +"Language-Team: Polish \n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\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" +"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 4.4.2\n" -#: ../bus/ibus.desktop.in.h:1 -msgid "IBus" -msgstr "iBus" +#. Translators: Here “Preload” is a verb +#: data/dconf/org.freedesktop.ibus.gschema.xml:11 +msgid "Preload engines" +msgstr "Wcześniejsze wczytanie mechanizmów" + +#. Translators: Tooltip for the button “Preload Engines” +#: data/dconf/org.freedesktop.ibus.gschema.xml:13 +msgid "Preload engines during ibus starts up" +msgstr "Wcześniejsze wczytanie mechanizmów podczas uruchamiania usługi IBus" -#: ../bus/ibus.desktop.in.h:2 -msgid "Input Method Framework" -msgstr "Struktura metody wprowadzania" +#: data/dconf/org.freedesktop.ibus.gschema.xml:17 +msgid "Engines order" +msgstr "Kolejność mechanizmów" -#: ../bus/ibus.desktop.in.h:3 -msgid "Start IBus Input Method Framework" -msgstr "Uruchomienie struktury metody wprowadzania iBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:18 +msgid "Saved engines order in input method list" +msgstr "Kolejność zapisanych mechanizmów na liście metod wprowadzania" -#: ../ibus/_config.py.in:40 +#: data/dconf/org.freedesktop.ibus.gschema.xml:22 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "Opóźnienie wyświetlenia okna przełącznika IME w milisekundach" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:23 msgid "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +"Set popup delay milliseconds to show IME switcher window. The default is " +"400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " +"show the window and switch prev/next engines." msgstr "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +"Ustawia opóźnienie wyświetlenia okna przełącznika IME w milisekundach. " +"Domyślnie wynosi 400. 0 = natychmiastowe wyświetlanie okna. 0 < Milisekundy " +"opóźnienia. 0 > Bez wyświetlania okna i przełączania na następny/poprzedni " +"mechanizm." -#: ../ibus/lang.py:41 -msgid "Other" -msgstr "Inne" +#: data/dconf/org.freedesktop.ibus.gschema.xml:27 +msgid "Saved version number" +msgstr "Zapisany numer wersji" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:28 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" +"Zapisany numer wersji będzie używany do sprawdzania różnicy między wersją " +"poprzednio zainstalowanego IBus a obecnego." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:32 +msgid "Latin layouts which have no ASCII" +msgstr "Układy łacińskie niemające ASCII" -#: ../ui/gtk/candidatepanel.py:264 -msgid "Previous page" -msgstr "Poprzednia strona" +#: data/dconf/org.freedesktop.ibus.gschema.xml:33 +msgid "US layout is appended to the Latin layouts. variant can be omitted." +msgstr "" +"Układ US jest dołączany do układów łacińskich. Można pominąć „variant”." -#: ../ui/gtk/candidatepanel.py:269 -msgid "Next page" -msgstr "Następna strona" +#: data/dconf/org.freedesktop.ibus.gschema.xml:37 +msgid "Use xmodmap" +msgstr "Użycie xmodmap" -#: ../ui/gtk/main.py:62 +#: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" -"Some input methods have been installed, removed or updated. Please restart " -"ibus input platform." +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" -"Metody wprowadzania zostały zainstalowane, usunięte lub zaktualizowane. " -"Proszę ponownie uruchomić platformę wprowadzania iBus." +"Wykonuje xmodmap, jeśli istnieje .xmodmap lub .Xmodmap, kiedy mechanizmy " +"IBus są przełączane." -#: ../ui/gtk/main.py:66 -msgid "Restart Now" -msgstr "Uruchom ponownie teraz" +#: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 +msgid "Use system keyboard layout" +msgstr "Systemowe ustawienia układu klawiatury" -#: ../ui/gtk/main.py:67 -msgid "Later" -msgstr "Później" +#: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 +msgid "Use system keyboard (XKB) layout" +msgstr "Systemowy układ klawiatury (XKB)" -#: ../ui/gtk/panel.py:116 -msgid "IBus Panel" -msgstr "Panel iBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:47 +msgid "Embed Preedit Text" +msgstr "Osadzanie wcześniej wprowadzonego tekstu" -#: ../ui/gtk/panel.py:122 -msgid "IBus input method framework" -msgstr "Struktura metody wprowadzania iBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:48 +msgid "Embed Preedit Text in Application Window" +msgstr "Osadzanie wcześniej wprowadzonego tekstu w oknie aplikacji" -#: ../ui/gtk/panel.py:352 -msgid "Restart" -msgstr "Uruchom ponownie" +#: data/dconf/org.freedesktop.ibus.gschema.xml:52 +msgid "Use global input method" +msgstr "Globalna metoda wprowadzania" -#: ../ui/gtk/panel.py:439 -msgid "Turn off input method" -msgstr "Wyłącz metodę wprowadzania" +#: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 +msgid "Share the same input method among all applications" +msgstr "Ta sama metoda wprowadzania we wszystkich aplikacjach" -#: ../ui/gtk/panel.py:478 -msgid "No input window" -msgstr "Brak okna wprowadzania" +#: data/dconf/org.freedesktop.ibus.gschema.xml:57 +msgid "Enable input method by default" +msgstr "Domyślne włączanie metody wprowadzania" -#: ../ui/gtk/panel.py:509 -msgid "IBus is an intelligent input bus for Linux/Unix." +#: data/dconf/org.freedesktop.ibus.gschema.xml:58 +msgid "Enable input method by default when the application gets input focus" msgstr "" -"iBus jest inteligentną magistralą wprowadzania dla systemu Linux/UNIX." - -#: ../ui/gtk/panel.py:513 -msgid "translator-credits" -msgstr "Piotr Drąg , 2009" +"Domyślne włączanie metody wprowadzania, kiedy aplikacja uzyskuje aktywność " +"wprowadzania" -#: ../ui/gtk/languagebar.py:106 -msgid "About the input method" -msgstr "O metodzie wprowadzania" +#: data/dconf/org.freedesktop.ibus.gschema.xml:62 +msgid "DConf preserve name prefixes" +msgstr "DConf zachowuje przedrostki nazw" -#: ../ui/gtk/languagebar.py:214 -msgid "Switch input method" -msgstr "Przełącz metodę wprowadzania" +#: data/dconf/org.freedesktop.ibus.gschema.xml:63 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "Przedrostki kluczy DConf zatrzymujące konwersję nazw" -#: ../ui/gtk/languagebar.py:357 ../ui/gtk/engineabout.py:33 -#: ../setup/engineabout.py:33 ../setup/setup.ui.h:16 -msgid "About" -msgstr "O programie" +#: data/dconf/org.freedesktop.ibus.gschema.xml:70 +msgid "Trigger shortcut keys" +msgstr "Klawisze skrótów przełącznika" -#: ../ui/gtk/languagebar.py:361 -msgid "About the Input Method" -msgstr "O metodzie wprowadzania" +#: data/dconf/org.freedesktop.ibus.gschema.xml:71 +#: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 +msgid "The shortcut keys for turning input method on or off" +msgstr "Klawisze skrótów do włączania lub wyłączania metody wprowadzania" -#: ../ui/gtk/engineabout.py:61 ../setup/engineabout.py:61 -#, python-format -msgid "Language: %s\n" -msgstr "Język: %s\n" +#: data/dconf/org.freedesktop.ibus.gschema.xml:75 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "Klawisz skrótu dla „gtk_accelerator_parse”" -#: ../ui/gtk/engineabout.py:63 ../setup/engineabout.py:63 -#, python-format -msgid "Keyboard layout: %s\n" -msgstr "Układ klawiatury: %s\n" +#: data/dconf/org.freedesktop.ibus.gschema.xml:80 +msgid "Enable shortcut keys" +msgstr "Skróty klawiszowe włączania" -#: ../ui/gtk/engineabout.py:65 ../setup/engineabout.py:65 -#, python-format -msgid "Author: %s\n" -msgstr "Autor: %s\n" +#: data/dconf/org.freedesktop.ibus.gschema.xml:81 +msgid "The shortcut keys for turning input method on" +msgstr "Skróty klawiszowe do włączania metody wprowadzania" -#: ../ui/gtk/engineabout.py:67 ../setup/engineabout.py:67 -msgid "Description:\n" -msgstr "Opis:\n" +#: data/dconf/org.freedesktop.ibus.gschema.xml:85 +msgid "Disable shortcut keys" +msgstr "Skróty klawiszowe wyłączania" -#: ../setup/main.py:102 -msgid "trigger" -msgstr "przełącznik" +#: data/dconf/org.freedesktop.ibus.gschema.xml:86 +msgid "The shortcut keys for turning input method off" +msgstr "Skróty klawiszowe do wyłączania metody wprowadzania" -#: ../setup/main.py:113 -msgid "enable" -msgstr "włączenie" +#: data/dconf/org.freedesktop.ibus.gschema.xml:90 +#: data/dconf/org.freedesktop.ibus.gschema.xml:95 +msgid "Next engine shortcut keys" +msgstr "Klawisze skrótów następnego mechanizmu" -#: ../setup/main.py:124 -msgid "disable" -msgstr "wyłączenie" +#: data/dconf/org.freedesktop.ibus.gschema.xml:91 +#: data/dconf/org.freedesktop.ibus.gschema.xml:96 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "" +"Klawisze skrótów do przełączania na następną metodę wprowadzania na liście" -#: ../setup/main.py:135 -msgid "next input method" -msgstr "następna metoda wprowadzania" +#: data/dconf/org.freedesktop.ibus.gschema.xml:100 +#: data/dconf/org.freedesktop.ibus.gschema.xml:105 +msgid "Prev engine shortcut keys" +msgstr "Klawisze skrótów poprzedniego mechanizmu" -#: ../setup/main.py:146 -msgid "previous input method" -msgstr "poprzednia metoda wprowadzania" +#: data/dconf/org.freedesktop.ibus.gschema.xml:101 +#: data/dconf/org.freedesktop.ibus.gschema.xml:106 +msgid "The shortcut keys for switching to the previous input method" +msgstr "" +"Klawisze skrótów do przełączania na poprzednią metodę wprowadzania na liście" -#: ../setup/main.py:286 -msgid "IBus daemon is not started. Do you want to start it now?" -msgstr "Demon iBus nie jest uruchomiony. Uruchomić go teraz?" +#: data/dconf/org.freedesktop.ibus.gschema.xml:112 +msgid "Auto hide" +msgstr "Automatyczne ukrywanie" -#: ../setup/main.py:301 +#: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" -"IBus has been started! If you can not use IBus, please add below lines in $HOME/.bashrc, and relogin your desktop.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" msgstr "" -"iBus został uruchomiony. Jeśli nie można używać iBus, należy dodać poniższe wiersze do pliku $HOME/.bashrc i zalogować się ponownie.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +"Zachowanie panela właściwości. 0 = bez wyświetlania, 1 = automatycznie " +"ukrywany, 2 = zawsze wyświetlany" -#: ../setup/main.py:316 -#, python-format -msgid "Select keyboard shortcut for %s" -msgstr "Wybór skrótu klawiszowego dla %s" +#: data/dconf/org.freedesktop.ibus.gschema.xml:117 +#: data/dconf/org.freedesktop.ibus.gschema.xml:121 +msgid "Language panel position" +msgstr "Pozycja panela języków" -#: ../setup/keyboardshortcut.py:52 -msgid "Keyboard shortcuts" -msgstr "Skróty klawiszowe" +#: data/dconf/org.freedesktop.ibus.gschema.xml:125 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "" +"Podążanie za kursorem wprowadzania, kiedy panel jest zawsze wyświetlany" -#: ../setup/keyboardshortcut.py:63 -msgid "Key code:" -msgstr "Kod klawisza:" +#: data/dconf/org.freedesktop.ibus.gschema.xml:126 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" +"Jeśli jest ustawione na wartość „true”, to panel podążą za kursorem " +"wprowadzania, kiedy panel jest zawsze wyświetlany. Jeśli jest ustawione na " +"wartość „false”, to panel jest wyświetlany w stałym położeniu." -#: ../setup/keyboardshortcut.py:78 -msgid "Modifiers:" -msgstr "Modyfikatory:" +#: data/dconf/org.freedesktop.ibus.gschema.xml:130 +msgid "The milliseconds to show property panel" +msgstr "Milisekundy do wyświetlenia panelu właściwości" -#: ../setup/keyboardshortcut.py:231 +#: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" -"Please press a key (or a key combination).\n" -"The dialog will be closed when the key is released." +"The milliseconds to show property panel after focus-in or properties are " +"changed." msgstr "" -"Proszę nacisnąć klawisz (lub kombinację klawiszy).\n" -"Okno dialogowe zostanie zamknięte po zwolnieniu klawisza." +"Milisekundy do wyświetlenia panelu właściwości po zmianie aktywności lub " +"właściwości." -#: ../setup/keyboardshortcut.py:233 -msgid "Please press a key (or a key combination)" -msgstr "Proszę nacisnąć klawisz (lub kombinację klawiszy)" +#: data/dconf/org.freedesktop.ibus.gschema.xml:135 +msgid "Orientation of lookup table" +msgstr "Orientacja tablicy wyszukiwania" -#: ../setup/enginecombobox.py:120 -msgid "Select an input method" -msgstr "Wybór metodę wprowadzania" +#: data/dconf/org.freedesktop.ibus.gschema.xml:136 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "Orientacja tablicy wyszukiwania. 0 = pozioma, 1 = pionowa" -#. create im name & icon column -#: ../setup/enginetreeview.py:64 ../setup/setup.ui.h:33 -msgid "Input Method" -msgstr "Metoda wprowadzania" +#: data/dconf/org.freedesktop.ibus.gschema.xml:140 +#: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 +#: setup/setup.ui:475 +msgid "Show icon on system tray" +msgstr "Ikona w obszarze powiadamiania" -#: ../setup/enginetreeview.py:92 -msgid "Kbd" -msgstr "KBD" +#: data/dconf/org.freedesktop.ibus.gschema.xml:145 +msgid "Show input method name" +msgstr "Wyświetlanie nazwy metody wprowadzania" -#: ../setup/ibus-setup.desktop.in.h:1 ../setup/setup.ui.h:32 -msgid "IBus Preferences" -msgstr "Preferencje usługi iBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 +msgid "Show input method name on language bar" +msgstr "Nazwa metody wprowadzania na panelu języków" -#: ../setup/ibus-setup.desktop.in.h:2 -msgid "Set IBus Preferences" -msgstr "Ustawianie preferencji usługi iBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:150 +msgid "RGBA value of XKB icon" +msgstr "Wartość RGBA ikony XKB" -#: ../data/ibus.schemas.in.h:1 -msgid "Auto hide" -msgstr "Automatyczne ukrywanie" +#: data/dconf/org.freedesktop.ibus.gschema.xml:151 +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form 'rgba(r," +"g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 to 255 or " +"percentage values in the range 0% to 100%, and 'a' is a floating point value " +"in the range 0 to 1 of the alpha." +msgstr "" +"Ikona XKB wyświetla ciąg układu, który jest wyświetlany za pomocą wartości " +"RGBA. Wartość RGBA może wynosić 1. nazwę kolory z X11, 2. wartość " +"szesnastkową w formie „#rrggbb”, gdzie „r”, „g” i „b” są cyframi " +"szesnastkowymi koloru czerwonego, zielonego i niebieskiego, 3. kolor RGB " +"w formie „rgb(r,g,b)” lub 4. kolor RGBA w formie „rgba(r,g,b,a)”, gdzie „r”, " +"„g” i „b” są liczbami całkowitymi w zakresie od 0 do 255 lub wartościami " +"procentowymi w zakresie od 0% do 100%, a „a” jest wartością " +"zmiennoprzecinkową w zakresie od 0 do 1 alfy." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:155 +msgid "The milliseconds to show the panel icon for a property" +msgstr "Milisekundy do wyświetlenia ikony panelu dla właściwości" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:156 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" +"Milisekundy do wyświetlenia ikony panelu z ikony mechanizmu do ikony " +"właściwości, kiedy mechanizmy są przełączane, jeśli właściwość została " +"podana za pomocą wartości „icon-prop-key” w IBusEngineDesc. Jeśli wartość " +"wynosi 0, to nie będzie żadnego opóźnienia i ikona zostanie wyświetlona od " +"razu." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:160 +msgid "Use custom font" +msgstr "Niestandardowa czcionka" -#: ../data/ibus.schemas.in.h:2 +#: data/dconf/org.freedesktop.ibus.gschema.xml:161 +msgid "Use custom font name for language panel" +msgstr "Niestandardowa czcionka dla panelu języków" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:165 +#: data/dconf/org.freedesktop.ibus.gschema.xml:192 msgid "Custom font" -msgstr "Własna czcionka" +msgstr "Nazwa niestandardowej czcionki" -#: ../data/ibus.schemas.in.h:3 +#: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" -msgstr "Nazwa własnej czcionki dla panelu języków" +msgstr "Nazwa niestandardowej czcionki dla panelu języków" -#: ../data/ibus.schemas.in.h:4 -msgid "Disable shortcut keys" -msgstr "Wyłącza skróty klawiszowe" +#: data/dconf/org.freedesktop.ibus.gschema.xml:170 setup/setup.ui:1305 +msgid "Choose glyphs with input method's language on candidate window" +msgstr "Wybieranie glifów w oknie kandydatów w języku metody wprowadzania" -#: ../data/ibus.schemas.in.h:5 -msgid "Embed Preedit Text" -msgstr "Osadzanie wcześniej wprowadzonego tekstu" +#: data/dconf/org.freedesktop.ibus.gschema.xml:171 +msgid "" +"Some code points have the different glyphs and Pango determines the glyphs " +"from the language attribute. Pango chooses glyphs from the IBus engine's " +"language if the value is true and choose them from the desktop locale if the " +"value is false." +msgstr "" +"Niektóre kody znaków mają różne glify i biblioteka Pango ustala je na " +"podstawie atrybutu języka. Pango wybiera glify z języka mechanizmu IBus, " +"jeśli wartość wynosi „true”, lub z języka środowiska, jeśli wartość wynosi " +"„false”." -#: ../data/ibus.schemas.in.h:6 -msgid "Embed Preedit Text in Application Window" -msgstr "Osadzanie wcześniej wprowadzonego tekstu w oknie aplikacji" +#: data/dconf/org.freedesktop.ibus.gschema.xml:182 +msgid "Unicode shortcut keys for gtk_accelerator_parse" +msgstr "Klawisze skrótów unikodu dla gtk_accelerator_parse" -#: ../data/ibus.schemas.in.h:7 -msgid "Enable input method by default" -msgstr "Domyślne włączanie metody wprowadzania" +#: data/dconf/org.freedesktop.ibus.gschema.xml:183 +msgid "The shortcut keys for turning Unicode typing on or off" +msgstr "Klawisze skrótów do włączania lub wyłączania pisania unikodu" -#: ../data/ibus.schemas.in.h:8 -msgid "Enable input method by default when the application gets input focus" -msgstr "" -"Domyślne włączanie metody wprowadzania, kiedy aplikacja uzyskuje aktywność " -"wprowadzania" +#: data/dconf/org.freedesktop.ibus.gschema.xml:187 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "Klawisz skrótu emoji dla „gtk_accelerator_parse”" -#: ../data/ibus.schemas.in.h:9 -msgid "Enable shortcut keys" -msgstr "Włącza skróty klawiszowe" +#: data/dconf/org.freedesktop.ibus.gschema.xml:188 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "Klawisze skrótów do włączania lub wyłączania wpisywania emoji" -#: ../data/ibus.schemas.in.h:10 -msgid "Language panel position" -msgstr "Pozycja panela języków" +#: data/dconf/org.freedesktop.ibus.gschema.xml:193 +msgid "Custom font name for emoji characters on emoji dialog" +msgstr "Nazwa niestandardowej czcionki dla znaków emoji w oknie emoji" -#: ../data/ibus.schemas.in.h:11 -msgid "Next engine shortcut keys" -msgstr "Klawisze skrótów następnego mechanizmu" +#: data/dconf/org.freedesktop.ibus.gschema.xml:197 +msgid "Default language for emoji dictionary" +msgstr "Domyślny język dla słownika emoji" -#: ../data/ibus.schemas.in.h:12 -msgid "Orientation of lookup table" -msgstr "Orientacja tablicy wyszukiwania" +#: data/dconf/org.freedesktop.ibus.gschema.xml:198 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict ." +msgstr "" +"Wybór domyślnego języka słowników emoji w oknie emoji. Wartość $lang jest " +"zastosowywana do /usr/share/ibus/dicts/emoji-$lang.dict ." -#: ../data/ibus.schemas.in.h:13 -msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" -msgstr "Orientacja tablicy wyszukiwania. 0 = pozioma, 1 = pionowa" +#: data/dconf/org.freedesktop.ibus.gschema.xml:202 +msgid "favorite emoji list on emoji dialog" +msgstr "lista ulubionych emoji w oknie emoji" -#: ../data/ibus.schemas.in.h:14 -msgid "Preload engines" -msgstr "Wcześniejsze wczytanie mechanizmów" +#: data/dconf/org.freedesktop.ibus.gschema.xml:203 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "Wpisane tutaj znaki pojawią się na liście ulubionych emoji." -#: ../data/ibus.schemas.in.h:15 -msgid "Preload engines during ibus starts up" -msgstr "Wcześniejsze wczytanie mechanizmów podczas uruchamiania usługi iBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:207 +msgid "favorite emoji annotation list on emoji dialog" +msgstr "lista ulubionych uwag emoji w oknie emoji" -#: ../data/ibus.schemas.in.h:16 -msgid "Prev engine shortcut keys" -msgstr "Klawisze skrótów poprzedniego mechanizmu" +#: data/dconf/org.freedesktop.ibus.gschema.xml:208 +msgid "You can assign an annotation for a favorite emoji in this list." +msgstr "Można przydzielić uwagę do ulubionej emoji na tej liście." -#: ../data/ibus.schemas.in.h:17 ../setup/setup.ui.h:42 -msgid "Share the same input method among all applications" -msgstr "Używanie tej samej metody wprowadzania we wszystkich aplikacjach" +#: data/dconf/org.freedesktop.ibus.gschema.xml:212 +msgid "Whether emoji annotations can be match partially or not" +msgstr "Czy uwagi emoji mogą być dopasowywane częściowo" -#: ../data/ibus.schemas.in.h:18 ../setup/setup.ui.h:43 -msgid "Show icon on system tray" -msgstr "Wyświetlanie ikony w obszarze powiadamiania" +#: data/dconf/org.freedesktop.ibus.gschema.xml:213 +msgid "" +"Whether emoji annotations can be matched with a partial string instead of " +"the exact match or not." +msgstr "" +"Czy uwagi emoji mogą być dopasowywane z częściowym ciągiem, zamiast " +"z dokładnym dopasowaniem." -#: ../data/ibus.schemas.in.h:19 -msgid "Show input method name" -msgstr "Wyświetlanie nazwy metody wprowadzania" +#: data/dconf/org.freedesktop.ibus.gschema.xml:217 +msgid "Match emoji annotations with the specified length" +msgstr "Dopasowywanie uwag emoji o podanej długości" -#: ../data/ibus.schemas.in.h:20 ../setup/setup.ui.h:45 -msgid "Show input method name on language bar" -msgstr "Wyświetlanie nazwy metody wprowadzania na panelu języków" +#: data/dconf/org.freedesktop.ibus.gschema.xml:218 +msgid "" +"Match emoji annotations partially with more than the specified number of " +"characters instead of the exact match." +msgstr "" +"Częściowe dopasowywanie uwag emoji o więcej niż tej liczbie znaków, zamiast " +"dokładnego dopasowywania." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:222 +msgid "Choose a condition to match emoji annotations partially" +msgstr "Warunek częściowego dopasowywania uwag emoji" -#: ../data/ibus.schemas.in.h:21 +#: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "" -"The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = " -"Always show" +"Choose one of the following conditions to match emoji annotations partially: " +"0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" -"Zachowanie panela języków. 0 = osadzony w menu, 1 = automatycznie ukrywany, " -"2 = zawsze wyświetlany" +"Wybór jednego z następujących warunków częściowego dopasowywania uwag emoji: " +"0 == dopasowywanie przedrostka, 1 == dopasowywanie przyrostka, 2 == " +"dopasowywanie w środku" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:227 +msgid "Load the emoji data at the time of startup" +msgstr "Wczytywanie danych emoji podczas uruchamiania" -#: ../data/ibus.schemas.in.h:22 +#: data/dconf/org.freedesktop.ibus.gschema.xml:228 msgid "" -"The position of the language panel. 0 = Top left corner, 1 = Top right " -"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +"Load the emoji data at the time of startup if true. About 10MB memory is " +"needed to load the data. Load the emoji data when open the emoji dialog at " +"the beginning if false." msgstr "" -"Pozycja panela języków. 0 = górny lewy róg, 1 = górny prawy róg, 2 = dolny " -"lewy róg, 3 = dolny prawy róg, 4 = własna" +"Jeśli jest ustawione na wartość „true”, to wczytuje dane emoji podczas " +"uruchamiania. Wymaga około 10 MB pamięci. Jeśli jest ustawione na wartość " +"„false”, to wczytuje dane emoji podczas otwierania okna emoji." -#: ../data/ibus.schemas.in.h:23 -msgid "The shortcut keys for switching to the next input method in the list" +#: data/dconf/org.freedesktop.ibus.gschema.xml:232 +msgid "Load the Unicode data at the time of startup" +msgstr "Wczytywanie danych unikodu podczas uruchamiania" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:233 +msgid "" +"Load the Unicode data at the time of startup if true. About 15MB memory is " +"needed to load the data. Load the Unicode data when open the emoji dialog at " +"the beginning if false. The Unicode data is always loaded after the emoji " +"data is loaded even if true." msgstr "" -"Klawisze skrótu do przełączania na następną metodę wprowadzania na liście" +"Jeśli jest ustawione na wartość „true”, to wczytuje dane unikodu podczas " +"uruchamiania. Wymaga około 15 MB pamięci. Jeśli jest ustawione na wartość " +"„false”, to wczytuje dane unikodu podczas otwierania okna emoji. Dane " +"unikodu są zawsze wczytywane po wczytaniu danych emoji, nawet jeśli " +"ustawiono na wartość „true”." -#: ../data/ibus.schemas.in.h:24 -msgid "The shortcut keys for switching to the previous input method" +#: ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." msgstr "" -"Klawisze skrótu do przełączania na poprzednią metodę wprowadzania na liście" +"Copyright © 2007-2010 Peng Huang\n" +"Copyright © 2007-2010 Red Hat, Inc." -#: ../data/ibus.schemas.in.h:25 -msgid "The shortcut keys for turning input method off" -msgstr "Skróty klawiszowe do wyłączania metody wprowadzania" +#: ibus/lang.py:41 src/ibusutil.c:209 +msgid "Other" +msgstr "Inne" -#: ../data/ibus.schemas.in.h:26 -msgid "The shortcut keys for turning input method on" -msgstr "Skróty klawiszowe do włączania metody wprowadzania" +#: setup/emojilang.py:67 +msgid "Select a language" +msgstr "Wybierz język" -#: ../data/ibus.schemas.in.h:27 ../setup/setup.ui.h:51 -msgid "The shortcut keys for turning input method on or off" -msgstr "Klawisze skrótów do włączania lub wyłączania metody wprowadzania" +#: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 +#: setup/main.py:560 +msgid "_Cancel" +msgstr "_Anuluj" -#: ../data/ibus.schemas.in.h:28 -msgid "Trigger shortcut keys" -msgstr "Klawisze skrótów przełącznika" +#: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 +msgid "_OK" +msgstr "_OK" -#: ../data/ibus.schemas.in.h:29 -msgid "Use custom font" -msgstr "Użycie własnej czcionki" +#: setup/emojilang.py:235 setup/enginedialog.py:205 +msgid "More…" +msgstr "Więcej…" -#: ../data/ibus.schemas.in.h:30 -msgid "Use custom font name for language panel" -msgstr "Nazwa własnej czcionki użytej w panelu języków" +#: setup/engineabout.py:37 setup/setup.ui:1368 ui/gtk3/panel.vala:1184 +msgid "About" +msgstr "O programie" -#: ../data/ibus.schemas.in.h:31 -msgid "Use global input method" -msgstr "Użycie globalnej metody wprowadzania" +#: setup/engineabout.py:40 setup/setup.ui:1391 +msgid "_Close" +msgstr "Za_mknij" -#: ../data/ibus.schemas.in.h:32 ../setup/setup.ui.h:55 -msgid "Use system keyboard (XKB) layout" -msgstr "Użycie systemowego układu klawiatury (XKB)" +#: setup/engineabout.py:72 +#, python-format +msgid "Language: %s\n" +msgstr "Język: %s\n" -#: ../data/ibus.schemas.in.h:33 ../setup/setup.ui.h:56 -msgid "Use system keyboard layout" -msgstr "Użycie systemowych ustawień układu klawiatury" +#: setup/engineabout.py:75 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "Układ klawiatury: %s\n" -#: ../setup/setup.ui.h:1 -msgid "..." -msgstr "..." +#: setup/engineabout.py:78 +#, python-format +msgid "Author: %s\n" +msgstr "Autor: %s\n" -#: ../setup/setup.ui.h:2 -msgid "Font and Style" -msgstr "Czcionka i styl" +#: setup/engineabout.py:81 +msgid "Description:\n" +msgstr "Opis:\n" -#: ../setup/setup.ui.h:3 -msgid "Global input method settings" -msgstr "Ustawienia globalnej metody wprowadzania" +#: setup/enginecombobox.py:139 setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "Wybór metody wprowadzania" -#: ../setup/setup.ui.h:4 -msgid "Keyboard Layout" -msgstr "Układ klawiatury" +#. add button +#: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 +msgid "_Add" +msgstr "_Dodaj" -#: ../setup/setup.ui.h:5 -msgid "Keyboard Shortcuts" -msgstr "Skróty klawiszowe" +#. create im name & icon column +#: setup/enginetreeview.py:69 setup/setup.ui:838 +msgid "Input Method" +msgstr "Metoda wprowadzania" -#: ../setup/setup.ui.h:6 -msgid "Startup" -msgstr "Uruchomienie" +#: setup/ibus-setup.desktop:3 setup/setup.ui:69 +msgid "IBus Preferences" +msgstr "Preferencje usługi IBus" + +#: setup/ibus-setup.desktop:4 +msgid "Set IBus Preferences" +msgstr "Ustawianie preferencji usługi IBus" + +#: setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "Skróty klawiszowe" -#: ../setup/setup.ui.h:7 +#: setup/keyboardshortcut.py:67 +msgid "Key code:" +msgstr "Kod klawisza:" + +#: setup/keyboardshortcut.py:82 +msgid "Modifiers:" +msgstr "Modyfikatory:" + +#. apply button +#: setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "_Zastosuj" + +#. delete button +#: setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "_Usuń" + +#: setup/keyboardshortcut.py:252 msgid "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." msgstr "" -"iBus\n" -"Inteligentna magistrala wprowadzania\n" -"Strona domowa: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" +"Proszę nacisnąć klawisz (lub kombinację klawiszy).\n" +"Okno dialogowe zostanie zamknięte po zwolnieniu klawisza." -#: ../setup/setup.ui.h:14 +#: setup/keyboardshortcut.py:255 +msgid "Please press a key (or a key combination)" +msgstr "Proszę nacisnąć klawisz (lub kombinację klawiszy)" + +#: setup/main.py:121 setup/main.py:588 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "" +"Skrót z klawiszem Shift do przełączania do poprzedniej metody wprowadzania" + +#: setup/main.py:515 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "Usługa IBus nie jest uruchomiona. Uruchomić ją?" + +#: setup/main.py:536 msgid "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" msgstr "" -"Domyślna metoda wprowadzania znajduje się na górze listy.\n" -"Można użyć klawiszy w górę/w dół, aby ją zmienić." +"Usługa IBus została uruchomiona. Jeśli nie można używać IBus, należy dodać " +"poniższe wiersze do pliku $HOME/.bashrc i zalogować się ponownie.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" -#: ../setup/setup.ui.h:17 -msgid "Add the selected input method into the enabled input methods" -msgstr "Dodanie wybranej metody wprowadzania do włączonych metod wprowadzania" +#. Translators: %d == 5 currently +#: setup/main.py:550 +#, python-format +msgid "IBus daemon could not be started in %d seconds." +msgstr "Nie można uruchomić usługi IBus od %d s." -#: ../setup/setup.ui.h:18 -msgid "Advanced" -msgstr "Zaawansowane" +#: setup/main.py:562 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "Wybór skrótu klawiszowego dla %s" -#: ../setup/setup.ui.h:19 -msgid "Always" -msgstr "Zawsze" +#. Translators: Title of the window +#: setup/main.py:564 +msgid "switching input methods" +msgstr "przełączanie metod wprowadzania" -#: ../setup/setup.ui.h:20 +#: setup/setup.ui:11 +msgid "Horizontal" +msgstr "Poziomo" + +#: setup/setup.ui:14 +msgid "Vertical" +msgstr "Pionowo" + +#: setup/setup.ui:25 +msgid "Top left corner" +msgstr "Górny lewy róg" + +#: setup/setup.ui:28 +msgid "Top right corner" +msgstr "Górny prawy róg" + +#: setup/setup.ui:31 msgid "Bottom left corner" msgstr "Dolny lewy róg" -#: ../setup/setup.ui.h:21 +#: setup/setup.ui:34 msgid "Bottom right corner" msgstr "Dolny prawy róg" -#: ../setup/setup.ui.h:22 -msgid "Candidates orientation:" -msgstr "Orientacja kandydatów:" - -#: ../setup/setup.ui.h:23 +#: setup/setup.ui:37 msgid "Custom" -msgstr "Własna" +msgstr "Niestandardowa" -#: ../setup/setup.ui.h:24 -msgid "Disable:" -msgstr "Wyłączone:" +#: setup/setup.ui:48 +msgid "Do not show" +msgstr "Bez wyświetlania" -#: ../setup/setup.ui.h:25 -msgid "Embed preedit text in application window" -msgstr "Osadzanie wcześniej wprowadzonego tekstu metody wejścia" +#: setup/setup.ui:51 +msgid "Hide automatically" +msgstr "Automatyczne ukrywanie" -#: ../setup/setup.ui.h:26 -msgid "Embed the preedit text of input method in the application window" +#: setup/setup.ui:54 +msgid "Always" +msgstr "Zawsze" + +#: setup/setup.ui:113 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "" +"Klawisz skrótu do przełączenia na następną metodę wprowadzania na liście" + +#: setup/setup.ui:115 +msgid "Next input method:" +msgstr "Następna metoda wprowadzania:" + +#: setup/setup.ui:127 +msgid "The shortcut keys for switching to previous input method in the list" msgstr "" -"Osadzanie wcześniej wprowadzonego tekstu metody wejścia w oknie aplikacji" +"Klawisz skrótu do przełączenia na poprzednią metodę wprowadzania na liście" -#: ../setup/setup.ui.h:27 -msgid "Embedded in menu" -msgstr "Osadzanie w menu" +#: setup/setup.ui:129 +msgid "Previous input method:" +msgstr "Poprzednia metoda wprowadzania:" + +#: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 +#: setup/setup.ui:903 setup/setup.ui:957 +msgid "..." +msgstr "…" -#: ../setup/setup.ui.h:28 +#: setup/setup.ui:226 msgid "Enable or disable:" msgstr "Włączenie lub wyłączenie:" -#: ../setup/setup.ui.h:29 +#: setup/setup.ui:238 msgid "Enable:" msgstr "Włączone:" -#: ../setup/setup.ui.h:30 -msgid "General" -msgstr "Ogólne" +#: setup/setup.ui:291 +msgid "Disable:" +msgstr "Wyłączone:" -#: ../setup/setup.ui.h:31 -msgid "Horizontal" -msgstr "Poziomo" +#: setup/setup.ui:345 setup/setup.ui:983 +msgid "Keyboard Shortcuts" +msgstr "Skróty klawiszowe" + +#: setup/setup.ui:374 +msgid "Set the orientation of candidates in lookup table" +msgstr "Ustawienie orientacji kandydatów w tablicy wyszukiwania" + +#: setup/setup.ui:376 +msgid "Candidates orientation:" +msgstr "Orientacja kandydatów:" + +#: setup/setup.ui:407 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "Ustawienie wyświetlania lub ukrywania panela języków usługi IBus" + +#: setup/setup.ui:409 +msgid "Show property panel:" +msgstr "Wyświetlanie panelu właściwości:" -#: ../setup/setup.ui.h:34 +#: setup/setup.ui:423 msgid "Language panel position:" msgstr "Pozycja panelu języków:" -#: ../setup/setup.ui.h:35 -msgid "Move down the selected input method in the enabled input methods" +#: setup/setup.ui:494 +msgid "Show input method's name on language bar when check the checkbox" msgstr "" -"Przeniesienie w dół zaznaczonej metody wprowadzania we włączonych metodach " -"wprowadzania" +"Nazwa metody wprowadzania na panelu języków podczas zaznaczania pola wyboru" -#: ../setup/setup.ui.h:36 -msgid "Move up the selected input method in the enabled input methods list" +#: setup/setup.ui:508 +msgid "Embed preedit text in application window" +msgstr "Osadzanie wcześniej wprowadzonego tekstu metody wprowadzania" + +#: setup/setup.ui:513 +msgid "Embed the preedit text of input method in the application window" msgstr "" -"Przeniesienie w górę zaznaczonej metody wprowadzania we włączonych metodach " -"wprowadzania" +"Osadzanie wcześniej wprowadzonego tekstu metody wprowadzania w oknie " +"aplikacji" -#: ../setup/setup.ui.h:37 -msgid "Next input method:" -msgstr "Następna metoda wprowadzania:" +#: setup/setup.ui:527 +msgid "Use custom font:" +msgstr "Niestandardowa czcionka:" -#: ../setup/setup.ui.h:38 -msgid "Previous input method:" -msgstr "Poprzednia metoda wprowadzania:" +#: setup/setup.ui:562 setup/setup.ui:1156 +msgid "Font and Style" +msgstr "Czcionka i styl" + +#: setup/setup.ui:579 +msgid "General" +msgstr "Ogólne" + +#: setup/setup.ui:671 +msgid "Add the selected input method into the enabled input methods" +msgstr "Dodaje wybraną metodę wprowadzania do włączonych metod wprowadzania" + +#: setup/setup.ui:682 +msgid "_Remove" +msgstr "_Usuń" -#: ../setup/setup.ui.h:39 +#: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" +msgstr "Usuwa zaznaczoną metodę wprowadzania z włączonych metod wprowadzania" + +#: setup/setup.ui:700 +msgid "_Up" +msgstr "W _górę" + +#: setup/setup.ui:707 +msgid "Move up the selected input method in the enabled input methods list" msgstr "" -"Usunięcie zaznaczonej metody wprowadzania we włączonych metodach " +"Przenosi w górę zaznaczoną metodę wprowadzania we włączonych metodach " "wprowadzania" -#: ../setup/setup.ui.h:40 -msgid "Set the behavior of ibus how to show or hide language bar" -msgstr "Ustawienie wyświetlania lub ukrywania panela języków usługi iBus" +#: setup/setup.ui:718 +msgid "_Down" +msgstr "W _dół" -#: ../setup/setup.ui.h:41 -msgid "Set the orientation of candidates in lookup table" -msgstr "Ustawienie orientacji kandydatów w tablicy wyszukiwania" +#: setup/setup.ui:725 +msgid "Move down the selected input method in the enabled input methods" +msgstr "" +"Przenosi w dół zaznaczoną metodę wprowadzania we włączonych metodach " +"wprowadzania" -#: ../setup/setup.ui.h:44 +#: setup/setup.ui:736 +msgid "_About" +msgstr "_O programie" + +#: setup/setup.ui:743 msgid "Show information of the selected input method" -msgstr "Wyświetlanie informacji o wybranej metodzie wprowadzania" +msgstr "Wyświetla informacje o wybranej metodzie wprowadzania" -#: ../setup/setup.ui.h:46 -msgid "Show input method's name on language bar when check the checkbox" +#: setup/setup.ui:754 +msgid "_Preferences" +msgstr "P_referencje" + +#: setup/setup.ui:761 +msgid "Show setup of the selected input method" +msgstr "Wyświetla ustawienia zaznaczonej metody wprowadzania" + +#: setup/setup.ui:812 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." msgstr "" -"Wyświetlanie nazwy metody wprowadzania na panelu języków podczas zaznaczania" -" pola wyboru" +"Aktywna metoda wprowadzania może być przełączana z wybranych metod " +"na powyższej liście za pomocą skrótu klawiszowego lub kliknięcia ikony na " +"panelu." -#: ../setup/setup.ui.h:47 -msgid "Show language panel:" -msgstr "Wyświetlanie panelu języków:" +#: setup/setup.ui:873 +msgid "" +"The shortcut keys to enable conversions of emoji annotations or Unicode names" +msgstr "Klawisze skrótów do włączania konwersji uwag emoji lub nazw unikodu" -#: ../setup/setup.ui.h:48 -msgid "Start ibus on login" -msgstr "Uruchamianie iBus podczas logowania" +#: setup/setup.ui:875 +msgid "Emoji annotation:" +msgstr "Uwaga emoji:" -#: ../setup/setup.ui.h:49 -msgid "The shortcut keys for switching to next input method in the list" +#: setup/setup.ui:927 +msgid "The shortcut keys to enable Unicode code point conversions" +msgstr "Klawisze skrótów do włączania konwersji kodów znaków unikodu" + +#: setup/setup.ui:929 +msgid "Unicode code point:" +msgstr "Kod znaku unikodu:" + +#: setup/setup.ui:1013 +msgid "Set a font of Unicode candidates on the emoji dialog" +msgstr "Ustawienie czcionki kandydatów unikodu w oknie emoji" + +#: setup/setup.ui:1015 +msgid "Unicode font:" +msgstr "Czcionka unikodu:" + +#: setup/setup.ui:1038 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "Ustawienie języka uwag emoji w oknie emoji" + +#: setup/setup.ui:1040 +msgid "Emoji annotation language:" +msgstr "Język uwag emoji:" + +#: setup/setup.ui:1062 +msgid "" +"Match emoji annotations partially with the following condition and more than " +"the number of characters:" msgstr "" -"Klawisz skrótu do przełączenia na następną metodę wprowadzania na liście" +"Częściowe dopasowywanie uwag emoji o tym warunku i więcej niż tej liczbie " +"znaków:" -#: ../setup/setup.ui.h:50 -msgid "The shortcut keys for switching to previous input method in the list" +#: setup/setup.ui:1067 +msgid "" +"If emoji annotations can be matched with a partial string instead of the " +"exact match" msgstr "" -"Klawisz skrótu do przełączenia na poprzednią metodę wprowadzania na liście" +"Czy uwagi emoji mogą być dopasowywane z częściowym ciągiem, zamiast " +"z dokładnym dopasowaniem" -#: ../setup/setup.ui.h:52 -msgid "Top left corner" -msgstr "Górny lewy róg" +#: setup/setup.ui:1101 +msgid "Prefix match" +msgstr "Dopasowanie przedrostka" -#: ../setup/setup.ui.h:53 -msgid "Top right corner" -msgstr "Górny prawy róg" +#: setup/setup.ui:1115 +msgid "Suffix match" +msgstr "Dopasowanie przyrostka" -#: ../setup/setup.ui.h:54 -msgid "Use custom font:" -msgstr "Użycie własnej czcionki:" +#: setup/setup.ui:1130 +msgid "Containing match" +msgstr "Dopasowanie w środku" -#: ../setup/setup.ui.h:57 -msgid "Vertical" -msgstr "Pionowo" +#: setup/setup.ui:1176 +msgid "Emoji" +msgstr "Emoji" + +#: setup/setup.ui:1230 +msgid "Keyboard Layout" +msgstr "Układ klawiatury" + +#: setup/setup.ui:1278 +msgid "Global input method settings" +msgstr "Ustawienia globalnej metody wprowadzania" + +#: setup/setup.ui:1310 +msgid "" +"Choose glyphs with the input method's language on the candidate window for " +"the duplicated code points" +msgstr "" +"Wybiera glify dla podwójnych kodów znaków w oknie kandydatów w języku metody " +"wprowadzania" + +#: setup/setup.ui:1327 +msgid "Fonts" +msgstr "Czcionki" + +#: setup/setup.ui:1347 +msgid "Advanced" +msgstr "Zaawansowane" + +#: src/ibusemojigen.h:30 +msgid "Activities" +msgstr "Sport" + +#: src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "Zwierzęta i przyroda" + +#: src/ibusemojigen.h:32 +msgid "Component" +msgstr "Składnik" + +#: src/ibusemojigen.h:33 +msgid "Flags" +msgstr "Flagi" + +#: src/ibusemojigen.h:34 +msgid "Food & Drink" +msgstr "Jedzenie i napoje" + +#: src/ibusemojigen.h:35 +msgid "Objects" +msgstr "Rzeczy" + +#: src/ibusemojigen.h:36 +msgid "People & Body" +msgstr "Osoby i ciało" + +#: src/ibusemojigen.h:37 +msgid "Smileys & Emotion" +msgstr "Uśmieszki i emotikony" + +#: src/ibusemojigen.h:38 +msgid "Symbols" +msgstr "Symbole" + +#: src/ibusemojigen.h:39 +msgid "Travel & Places" +msgstr "Podróże i miejsca" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:33 +msgid "Basic Latin" +msgstr "Podstawowy łaciński" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:37 +msgid "Latin-1 Supplement" +msgstr "Uzupełnienie Latin-1" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:41 +msgid "Latin Extended-A" +msgstr "Rozszerzony łaciński A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:45 +msgid "Latin Extended-B" +msgstr "Rozszerzony łaciński B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:49 +msgid "IPA Extensions" +msgstr "Rozszerzenia IPA" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:53 +msgid "Spacing Modifier Letters" +msgstr "Oddzielone litery modyfikujące" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:57 +msgid "Combining Diacritical Marks" +msgstr "Składające znaki diakrytyczne" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:61 +msgid "Greek and Coptic" +msgstr "Grecki i koptyjski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:65 +msgid "Cyrillic" +msgstr "Cyrylica" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:69 +msgid "Cyrillic Supplement" +msgstr "Uzupełnienie cyrylicy" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:73 +msgid "Armenian" +msgstr "Ormiański" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:77 +msgid "Hebrew" +msgstr "Hebrajski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:81 +msgid "Arabic" +msgstr "Arabski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:85 +msgid "Syriac" +msgstr "Syryjski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:89 +msgid "Arabic Supplement" +msgstr "Uzupełnienie arabskiego" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:93 +msgid "Thaana" +msgstr "Thaana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:97 +msgid "NKo" +msgstr "N’Ko" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:101 +msgid "Samaritan" +msgstr "Samarytański" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:105 +msgid "Mandaic" +msgstr "Mandejski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:109 +msgid "Syriac Supplement" +msgstr "Uzupełnienie syryjskiego" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:113 +msgid "Arabic Extended-A" +msgstr "Rozszerzony arabski A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:117 +msgid "Devanagari" +msgstr "Dewanagari" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:121 +msgid "Bengali" +msgstr "Bengalski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:125 +msgid "Gurmukhi" +msgstr "Gurmukhi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:129 +msgid "Gujarati" +msgstr "Gudżarati" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:133 +msgid "Oriya" +msgstr "Orija" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:137 +msgid "Tamil" +msgstr "Tamilski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:141 +msgid "Telugu" +msgstr "Telugu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:145 +msgid "Kannada" +msgstr "Kannada" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:149 +msgid "Malayalam" +msgstr "Malajalam" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:153 +msgid "Sinhala" +msgstr "Syngaleski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:157 +msgid "Thai" +msgstr "Tajski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:161 +msgid "Lao" +msgstr "Laotański" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:165 +msgid "Tibetan" +msgstr "Tybetański" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:169 +msgid "Myanmar" +msgstr "Birmański" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:173 +msgid "Georgian" +msgstr "Gruziński" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:177 +msgid "Hangul Jamo" +msgstr "Dzamo hangyl" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:181 +msgid "Ethiopic" +msgstr "Etiopski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:185 +msgid "Ethiopic Supplement" +msgstr "Uzupełnienie etiopskiego" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:189 +msgid "Cherokee" +msgstr "Czirokeski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:193 +msgid "Unified Canadian Aboriginal Syllabics" +msgstr "Ujednolicony sylabariusz rdzennych Kanadyjczyków" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:197 +msgid "Ogham" +msgstr "Ogamiczny" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:201 +msgid "Runic" +msgstr "Runiczny" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:205 +msgid "Tagalog" +msgstr "Tagalski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:209 +msgid "Hanunoo" +msgstr "Hanunoo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:213 +msgid "Buhid" +msgstr "Buid" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:217 +msgid "Tagbanwa" +msgstr "Tagbanwa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:221 +msgid "Khmer" +msgstr "Khmerski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:225 +msgid "Mongolian" +msgstr "Mongolski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:229 +msgid "Unified Canadian Aboriginal Syllabics Extended" +msgstr "Rozszerzony ujednolicony sylabariusz rdzennych Kanadyjczyków" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:233 +msgid "Limbu" +msgstr "Limbu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:237 +msgid "Tai Le" +msgstr "Tai le" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:241 +msgid "New Tai Lue" +msgstr "Nowy tai le" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:245 +msgid "Khmer Symbols" +msgstr "Symbole khmerskie" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:249 +msgid "Buginese" +msgstr "Bugiński" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:253 +msgid "Tai Tham" +msgstr "Tai Tham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:257 +msgid "Combining Diacritical Marks Extended" +msgstr "Rozszerzone składające znaki diakrytyczne" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:261 +msgid "Balinese" +msgstr "Balijski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:265 +msgid "Sundanese" +msgstr "Sundajski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:269 +msgid "Batak" +msgstr "Batak" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:273 +msgid "Lepcha" +msgstr "Lepczowski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:277 +msgid "Ol Chiki" +msgstr "Ol Chiki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:281 +msgid "Cyrillic Extended-C" +msgstr "Rozszerzona cyrylica C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:285 +msgid "Georgian Extended" +msgstr "Rozszerzony gruziński" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:289 +msgid "Sundanese Supplement" +msgstr "Uzupełnienie sundajskiego" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:293 +msgid "Vedic Extensions" +msgstr "Rozszerzenia wed" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:297 +msgid "Phonetic Extensions" +msgstr "Rozszerzenia fonetyczne" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:301 +msgid "Phonetic Extensions Supplement" +msgstr "Uzupełnienie rozszerzeń fonetycznych" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:305 +msgid "Combining Diacritical Marks Supplement" +msgstr "Uzupełnienie składających znaków diakrytycznych" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:309 +msgid "Latin Extended Additional" +msgstr "Łaciński rozszerzony dodatkowy" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:313 +msgid "Greek Extended" +msgstr "Grecki rozszerzony" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:317 +msgid "General Punctuation" +msgstr "Ogólne znaki interpunkcyjne" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:321 +msgid "Superscripts and Subscripts" +msgstr "Indeksy górne i dolne" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:325 +msgid "Currency Symbols" +msgstr "Symbole walutowe" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:329 +msgid "Combining Diacritical Marks for Symbols" +msgstr "Składające znaki diakrytyczne dla symboli" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:333 +msgid "Letterlike Symbols" +msgstr "Symbole literopodobne" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:337 +msgid "Number Forms" +msgstr "Formy liczbowe" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:341 +msgid "Arrows" +msgstr "Strzałki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:345 +msgid "Mathematical Operators" +msgstr "Operatory matematyczne" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:349 +msgid "Miscellaneous Technical" +msgstr "Różne znaki techniczne" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:353 +msgid "Control Pictures" +msgstr "Obrazy znaków sterujących" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:357 +msgid "Optical Character Recognition" +msgstr "Optyczne rozpoznawanie znaków" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:361 +msgid "Enclosed Alphanumerics" +msgstr "Otoczone symbole alfanumeryczne" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:365 +msgid "Box Drawing" +msgstr "Rysowanie ramek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:369 +msgid "Block Elements" +msgstr "Elementy blokowe" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:373 +msgid "Geometric Shapes" +msgstr "Kształty geometryczne" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:377 +msgid "Miscellaneous Symbols" +msgstr "Różnorodne symbole" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:381 +msgid "Dingbats" +msgstr "Ozdoby drukarskie" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:385 +msgid "Miscellaneous Mathematical Symbols-A" +msgstr "Różne symbole matematyczne A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:389 +msgid "Supplemental Arrows-A" +msgstr "Dodatkowe strzałki A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:393 +msgid "Braille Patterns" +msgstr "Pismo Braille’a" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:397 +msgid "Supplemental Arrows-B" +msgstr "Dodatkowe strzałki B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:401 +msgid "Miscellaneous Mathematical Symbols-B" +msgstr "Różne symbole matematyczne B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:405 +msgid "Supplemental Mathematical Operators" +msgstr "Dodatkowe operatory matematyczne" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:409 +msgid "Miscellaneous Symbols and Arrows" +msgstr "Różne symbole i strzałki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:413 +msgid "Glagolitic" +msgstr "Głagolica" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:417 +msgid "Latin Extended-C" +msgstr "Rozszerzony łaciński C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:421 +msgid "Coptic" +msgstr "Koptyjski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:425 +msgid "Georgian Supplement" +msgstr "Uzupełnienie gruzińskiego" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:429 +msgid "Tifinagh" +msgstr "Tifinagh" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:433 +msgid "Ethiopic Extended" +msgstr "Rozszerzony etiopski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:437 +msgid "Cyrillic Extended-A" +msgstr "Rozszerzona cyrylica A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:441 +msgid "Supplemental Punctuation" +msgstr "Dodatkowe znaki interpunkcyjne" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:445 +msgid "CJK Radicals Supplement" +msgstr "Radykały CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:449 +msgid "Kangxi Radicals" +msgstr "Radykały Kangxi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:453 +msgid "Ideographic Description Characters" +msgstr "Znaki opisu ideograficznego" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:457 +msgid "CJK Symbols and Punctuation" +msgstr "Symbole i znaki interpunkcyjne CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:461 +msgid "Hiragana" +msgstr "Hiragana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:465 +msgid "Katakana" +msgstr "Katakana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:469 +msgid "Bopomofo" +msgstr "Bopomofo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:473 +msgid "Hangul Compatibility Jamo" +msgstr "Dzamo zgodności dla hangyl" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:477 +msgid "Kanbun" +msgstr "Kanbun" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:481 +msgid "Bopomofo Extended" +msgstr "Rozszerzone bopomofo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:485 +msgid "CJK Strokes" +msgstr "Kreski CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:489 +msgid "Katakana Phonetic Extensions" +msgstr "Rozszerzenia fonetyczne katakana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:493 +msgid "Enclosed CJK Letters and Months" +msgstr "Otoczone litery i miesiące CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:497 +msgid "CJK Compatibility" +msgstr "Znaki zgodności CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:501 +msgid "CJK Unified Ideographs Extension A" +msgstr "Rozszerzenie A ujednoliconych ideogramów CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:505 +msgid "Yijing Hexagram Symbols" +msgstr "Heksagramy Yijing" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:509 +msgid "CJK Unified Ideographs" +msgstr "Ujednolicone ideogramy CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:513 +msgid "Yi Syllables" +msgstr "Sylaby Yi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:517 +msgid "Yi Radicals" +msgstr "Radykały Yi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:521 +msgid "Lisu" +msgstr "Lisu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:525 +msgid "Vai" +msgstr "Wai" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:529 +msgid "Cyrillic Extended-B" +msgstr "Rozszerzona cyrylica B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:533 +msgid "Bamum" +msgstr "Bamum" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:537 +msgid "Modifier Tone Letters" +msgstr "Modyfikujące litery tonów" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:541 +msgid "Latin Extended-D" +msgstr "Rozszerzony łaciński D" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:545 +msgid "Syloti Nagri" +msgstr "Syloti Nagri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:549 +msgid "Common Indic Number Forms" +msgstr "Wspólne indyjskie formy liczbowe" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:553 +msgid "Phags-pa" +msgstr "Phags-Pa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:557 +msgid "Saurashtra" +msgstr "Saurashtra" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:561 +msgid "Devanagari Extended" +msgstr "Rozszerzone dewanagari" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:565 +msgid "Kayah Li" +msgstr "Kayah Li" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:569 +msgid "Rejang" +msgstr "Rejang" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:573 +msgid "Hangul Jamo Extended-A" +msgstr "Rozszerzony dzamo hangyl A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:577 +msgid "Javanese" +msgstr "Jawajski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:581 +msgid "Myanmar Extended-B" +msgstr "Rozszerzony birmański B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:585 +msgid "Cham" +msgstr "Czamski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:589 +msgid "Myanmar Extended-A" +msgstr "Rozszerzony birmański A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:593 +msgid "Tai Viet" +msgstr "Tai Viet" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:597 +msgid "Meetei Mayek Extensions" +msgstr "Rozszerzenia Meetei Mayek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:601 +msgid "Ethiopic Extended-A" +msgstr "Rozszerzony etiopski A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:605 +msgid "Latin Extended-E" +msgstr "Rozszerzony łaciński E" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:609 +msgid "Cherokee Supplement" +msgstr "Uzupełnienie czirokeskiego" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:613 +msgid "Meetei Mayek" +msgstr "Meetei Mayek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:617 +msgid "Hangul Syllables" +msgstr "Sylaby Hangyl" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:621 +msgid "Hangul Jamo Extended-B" +msgstr "Rozszerzony dzamo hangyl B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:625 +msgid "High Surrogates" +msgstr "Starsze surogaty" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:629 +msgid "High Private Use Surrogates" +msgstr "Starsze surogaty prywatnego użytku" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:633 +msgid "Low Surrogates" +msgstr "Młodsze surogaty" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:637 +msgid "Private Use Area" +msgstr "Obszar prywatnego użytku" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:641 +msgid "CJK Compatibility Ideographs" +msgstr "Ideogramy zgodności CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:645 +msgid "Alphabetic Presentation Forms" +msgstr "Alfabetyczne formy prezentacyjne" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:649 +msgid "Arabic Presentation Forms-A" +msgstr "Arabskie formy prezentacyjne A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:653 +msgid "Variation Selectors" +msgstr "Przełączniki wariantów glifów" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:657 +msgid "Vertical Forms" +msgstr "Formy pionowe" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:661 +msgid "Combining Half Marks" +msgstr "Składające półznaki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:665 +msgid "CJK Compatibility Forms" +msgstr "Formy zgodności CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:669 +msgid "Small Form Variants" +msgstr "Różne małe formy" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:673 +msgid "Arabic Presentation Forms-B" +msgstr "Arabskie formy prezentacyjne B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:677 +msgid "Halfwidth and Fullwidth Forms" +msgstr "Formy połowy i pełnej szerokości" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:681 +msgid "Specials" +msgstr "Specjalne" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:685 +msgid "Linear B Syllabary" +msgstr "Sylabariusz pisma linearnego B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:689 +msgid "Linear B Ideograms" +msgstr "Ideogramy pisma linearnego B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:693 +msgid "Aegean Numbers" +msgstr "Cyfry egejskie" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:697 +msgid "Ancient Greek Numbers" +msgstr "Starożytne cyfry greckie" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:701 +msgid "Ancient Symbols" +msgstr "Symbole starożytne" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:705 +msgid "Phaistos Disc" +msgstr "Dysk z Fajstos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:709 +msgid "Lycian" +msgstr "Licyjski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:713 +msgid "Carian" +msgstr "Karyjski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:717 +msgid "Coptic Epact Numbers" +msgstr "Koptyjskie cyfry epakta" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:721 +msgid "Old Italic" +msgstr "Staroitalski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:725 +msgid "Gothic" +msgstr "Gocki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:729 +msgid "Old Permic" +msgstr "Staropermski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:733 +msgid "Ugaritic" +msgstr "Ugarycki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:737 +msgid "Old Persian" +msgstr "Staroperski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:741 +msgid "Deseret" +msgstr "Deseret" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:745 +msgid "Shavian" +msgstr "Alfabet Shawa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:749 +msgid "Osmanya" +msgstr "Osmański" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:753 +msgid "Osage" +msgstr "Osage" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:757 +msgid "Elbasan" +msgstr "Elbasański" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:761 +msgid "Caucasian Albanian" +msgstr "Kaukasko-albański" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:765 +msgid "Linear A" +msgstr "Linearne A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:769 +msgid "Cypriot Syllabary" +msgstr "Sylabariusz cypryjski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:773 +msgid "Imperial Aramaic" +msgstr "Aramejski imperialny" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:777 +msgid "Palmyrene" +msgstr "Palmyreński" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:781 +msgid "Nabataean" +msgstr "Nabatejski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:785 +msgid "Hatran" +msgstr "Hatran" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:789 +msgid "Phoenician" +msgstr "Fenicki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:793 +msgid "Lydian" +msgstr "Lidyjski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:797 +msgid "Meroitic Hieroglyphs" +msgstr "Hieroglify meroickie" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:801 +msgid "Meroitic Cursive" +msgstr "Kursywa meroicka" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:805 +msgid "Kharoshthi" +msgstr "Charosti" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:809 +msgid "Old South Arabian" +msgstr "Południowoarabski epigraficzny" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:813 +msgid "Old North Arabian" +msgstr "Północnoarabski epigraficzny" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:817 +msgid "Manichaean" +msgstr "Manichejski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:821 +msgid "Avestan" +msgstr "Awestyjski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:825 +msgid "Inscriptional Parthian" +msgstr "Inskrypcyjny partyjski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:829 +msgid "Inscriptional Pahlavi" +msgstr "Inskrypcyjny pahlawi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:833 +msgid "Psalter Pahlavi" +msgstr "Psałterzowy pahlawi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:837 +msgid "Old Turkic" +msgstr "Staroturecki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:841 +msgid "Old Hungarian" +msgstr "Starowęgierski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:845 +msgid "Hanifi Rohingya" +msgstr "Rohingya hanifi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:849 +msgid "Rumi Numeral Symbols" +msgstr "Symbole numeryczne rumi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:853 +msgid "Yezidi" +msgstr "Jezydyjski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:857 +msgid "Old Sogdian" +msgstr "Starosogdyjski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:861 +msgid "Sogdian" +msgstr "Sogdyjski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:865 +msgid "Chorasmian" +msgstr "Chorezmijski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:869 +msgid "Elymaic" +msgstr "Elamicki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:873 +msgid "Brahmi" +msgstr "Brahmi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:877 +msgid "Kaithi" +msgstr "Kaithi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:881 +msgid "Sora Sompeng" +msgstr "Sorang sompeng" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:885 +msgid "Chakma" +msgstr "Czakma" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:889 +msgid "Mahajani" +msgstr "Mahajański" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:893 +msgid "Sharada" +msgstr "Śarada" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:897 +msgid "Sinhala Archaic Numbers" +msgstr "Archaiczne cyfry syngaleskie" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:901 +msgid "Khojki" +msgstr "Chodżycki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:905 +msgid "Multani" +msgstr "Multani" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:909 +msgid "Khudawadi" +msgstr "Khudawadi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:913 +msgid "Grantha" +msgstr "Grantha" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:917 +msgid "Newa" +msgstr "Newa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:921 +msgid "Tirhuta" +msgstr "Tirhuta" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:925 +msgid "Siddham" +msgstr "Siddham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:929 +msgid "Modi" +msgstr "Modi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:933 +msgid "Mongolian Supplement" +msgstr "Uzupełnienie mongolskiego" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:937 +msgid "Takri" +msgstr "Takri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:941 +msgid "Ahom" +msgstr "Ahom" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:945 +msgid "Dogra" +msgstr "Dogra" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:949 +msgid "Warang Citi" +msgstr "Varang kshiti" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:953 +msgid "Dives Akuru" +msgstr "Dives akuru" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:957 +msgid "Nandinagari" +msgstr "Nandinagari" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:961 +msgid "Zanabazar Square" +msgstr "Kwadratowe Zanabazara" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:965 +msgid "Soyombo" +msgstr "Sojombo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:969 +msgid "Pau Cin Hau" +msgstr "Pau Cin Hau" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:973 +msgid "Bhaiksuki" +msgstr "Bhaiksuki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:977 +msgid "Marchen" +msgstr "Marchen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:981 +msgid "Masaram Gondi" +msgstr "Gondi masarama" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:985 +msgid "Gunjala Gondi" +msgstr "Gondi gunjala" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:989 +msgid "Makasar" +msgstr "Makasar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:993 +msgid "Lisu Supplement" +msgstr "Uzupełnienie lisu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:997 +msgid "Tamil Supplement" +msgstr "Uzupełnienie tamilskiego" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1001 +msgid "Cuneiform" +msgstr "Pismo klinowe" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1005 +msgid "Cuneiform Numbers and Punctuation" +msgstr "Cyfry i interpunkcja pisma klinowego" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1009 +msgid "Early Dynastic Cuneiform" +msgstr "Wczesnodynastyczne pismo klinowe" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1013 +msgid "Egyptian Hieroglyphs" +msgstr "Hieroglify egipskie" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1017 +msgid "Egyptian Hieroglyph Format Controls" +msgstr "Modyfikatory formatu hieroglifów egipskich" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1021 +msgid "Anatolian Hieroglyphs" +msgstr "Hieroglify anatolijskie" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1025 +msgid "Bamum Supplement" +msgstr "Uzupełnienie bamum" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1029 +msgid "Mro" +msgstr "Mro" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1033 +msgid "Bassa Vah" +msgstr "Bassa vah" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1037 +msgid "Pahawh Hmong" +msgstr "Pahawh hmong" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1041 +msgid "Medefaidrin" +msgstr "Medefaidrin" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1045 +msgid "Miao" +msgstr "Miao" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1049 +msgid "Ideographic Symbols and Punctuation" +msgstr "Ideograficzne symbole i znaki interpunkcyjne" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1053 +msgid "Tangut" +msgstr "Tangucki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1057 +msgid "Tangut Components" +msgstr "Składniki tanguckie" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1061 +msgid "Khitan Small Script" +msgstr "Kitańskie małe" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1065 +msgid "Tangut Supplement" +msgstr "Uzupełnienie tanguckiego" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1069 +msgid "Kana Supplement" +msgstr "Uzupełnienie kana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1073 +msgid "Kana Extended-A" +msgstr "Rozszerzony kana A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1077 +msgid "Small Kana Extension" +msgstr "Rozszerzenie małej kany" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1081 +msgid "Nushu" +msgstr "Nüshu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1085 +msgid "Duployan" +msgstr "Stenografia Duployé’a" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1089 +msgid "Shorthand Format Controls" +msgstr "Modyfikatory formatu stenograficznego" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1093 +msgid "Byzantine Musical Symbols" +msgstr "Bizantyjskie symbole muzyczne" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1097 +msgid "Musical Symbols" +msgstr "Symbole muzyczne" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1101 +msgid "Ancient Greek Musical Notation" +msgstr "Starożytna grecka notacja muzyczna" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1105 +msgid "Mayan Numerals" +msgstr "Cyfry Majów" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1109 +msgid "Tai Xuan Jing Symbols" +msgstr "Symbole Tai xuan Jing" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1113 +msgid "Counting Rod Numerals" +msgstr "Cyfry w chińskim zapisie pałeczkowym" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1117 +msgid "Mathematical Alphanumeric Symbols" +msgstr "Matematyczne symbole alfanumeryczne" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1121 +msgid "Sutton SignWriting" +msgstr "Sutton SignWriting" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1125 +msgid "Glagolitic Supplement" +msgstr "Uzupełnienie głagolicy" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1129 +msgid "Nyiakeng Puachue Hmong" +msgstr "Nyiakeng puachue hmong" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1133 +msgid "Wancho" +msgstr "Wancho" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1137 +msgid "Mende Kikakui" +msgstr "Pismo ki-ka-ku" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1141 +msgid "Adlam" +msgstr "Adlam" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1145 +msgid "Indic Siyaq Numbers" +msgstr "Indyjskie cyfry siyaq" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1149 +msgid "Ottoman Siyaq Numbers" +msgstr "Osmańskie cyfry siyaq" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1153 +msgid "Arabic Mathematical Alphabetic Symbols" +msgstr "Arabskie matematyczne symbole alfabetyczne" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1157 +msgid "Mahjong Tiles" +msgstr "Klocki Mahjong" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1161 +msgid "Domino Tiles" +msgstr "Klocki domina" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1165 +msgid "Playing Cards" +msgstr "Karty do gry" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1169 +msgid "Enclosed Alphanumeric Supplement" +msgstr "Uzupełnienie otoczonych symboli alfanumerycznych" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1173 +msgid "Enclosed Ideographic Supplement" +msgstr "Uzupełnienie otoczonych ideogramów" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1177 +msgid "Miscellaneous Symbols and Pictographs" +msgstr "Różne symbole i piktogramy" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1181 +msgid "Emoticons" +msgstr "Emotikony" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1185 +msgid "Ornamental Dingbats" +msgstr "Ozdoby drukarskie Dingbat" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1189 +msgid "Transport and Map Symbols" +msgstr "Symbole transportowe i dla map" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1193 +msgid "Alchemical Symbols" +msgstr "Symbole alchemiczne" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1197 +msgid "Geometric Shapes Extended" +msgstr "Rozszerzone kształty geometryczne" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1201 +msgid "Supplemental Arrows-C" +msgstr "Uzupełnienie strzałek C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1205 +msgid "Supplemental Symbols and Pictographs" +msgstr "Uzupełnienie symboli i piktogramów" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1209 +msgid "Chess Symbols" +msgstr "Symbole szachowe" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1213 +msgid "Symbols and Pictographs Extended-A" +msgstr "Rozszerzone symbole i piktogramy A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1217 +msgid "Symbols for Legacy Computing" +msgstr "Symbole dla starych komputerów" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1221 +msgid "CJK Unified Ideographs Extension B" +msgstr "Rozszerzenie B ujednoliconych ideogramów CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1225 +msgid "CJK Unified Ideographs Extension C" +msgstr "Rozszerzenie C ujednoliconych ideogramów CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1229 +msgid "CJK Unified Ideographs Extension D" +msgstr "Rozszerzenie D ujednoliconych ideogramów CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1233 +msgid "CJK Unified Ideographs Extension E" +msgstr "Rozszerzenie E ujednoliconych ideogramów CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1237 +msgid "CJK Unified Ideographs Extension F" +msgstr "Rozszerzenie F ujednoliconych ideogramów CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1241 +msgid "CJK Compatibility Ideographs Supplement" +msgstr "Dodatkowe ideogramy zgodności CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1245 +msgid "CJK Unified Ideographs Extension G" +msgstr "Rozszerzenie G ujednoliconych ideogramów CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1249 +msgid "Tags" +msgstr "Znaczniki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1253 +msgid "Variation Selectors Supplement" +msgstr "Dodatkowe przełączniki wariantów glifów" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1257 +msgid "Supplementary Private Use Area-A" +msgstr "Dodatkowy obszar prywatnego użytku A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1261 +msgid "Supplementary Private Use Area-B" +msgstr "Dodatkowy obszar prywatnego użytku B" + +#: tools/main.vala:51 +msgid "List engine name only" +msgstr "Wyświetla tylko nazwę mechanizmu" + +#: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 +msgid "Can't connect to IBus.\n" +msgstr "Nie można połączyć z usługą IBus.\n" + +#: tools/main.vala:93 +#, c-format +msgid "language: %s\n" +msgstr "język: %s\n" + +#: tools/main.vala:161 +msgid "No engine is set.\n" +msgstr "Nie ustawiono żadnego mechanizmu.\n" + +#: tools/main.vala:169 +msgid "Set global engine failed.\n" +msgstr "Ustawienie globalnego mechanizmu się nie powiodło.\n" + +#: tools/main.vala:174 +msgid "Get global engine failed.\n" +msgstr "Uzyskanie globalnego mechanizmu się nie powiodło.\n" + +#: tools/main.vala:217 +msgid "Read the system registry cache." +msgstr "Odczytuje pamięć podręczną rejestru systemu." + +#: tools/main.vala:219 +msgid "Read the registry cache FILE." +msgstr "Odczytuje PLIK pamięci podręcznej rejestru." + +#: tools/main.vala:237 tools/main.vala:242 +msgid "The registry cache is invalid.\n" +msgstr "Pamięć podręczna rejestru jest nieprawidłowa.\n" + +#: tools/main.vala:257 +msgid "Write the system registry cache." +msgstr "Zapisuje pamięć podręczną rejestru systemu." + +#: tools/main.vala:259 +msgid "Write the registry cache FILE." +msgstr "Zapisuje PLIK pamięci podręcznej systemu." + +#: tools/main.vala:295 +msgid "" +"Use engine schema paths instead of ibus core, which can be comma-separated " +"values." +msgstr "" +"Używa ścieżek schematu mechanizmu zamiast rdzenia IBus, które mogą być " +"wartościami oddzielonymi przecinkami." + +#: tools/main.vala:381 +msgid "Resetting…" +msgstr "Przywracanie…" + +#: tools/main.vala:399 +msgid "Done" +msgstr "Gotowe" + +#: tools/main.vala:444 +msgid "Set or get engine" +msgstr "Ustawia lub uzyskuje mechanizm" + +#: tools/main.vala:445 +msgid "Exit ibus-daemon" +msgstr "Kończy działanie usługi ibus-daemon" + +#: tools/main.vala:446 +msgid "Show available engines" +msgstr "Wyświetla dostępne mechanizmy" + +#: tools/main.vala:447 +msgid "(Not implemented)" +msgstr "(Niezaimplementowane)" + +#: tools/main.vala:448 +msgid "Restart ibus-daemon" +msgstr "Ponownie uruchamia usługę ibus-daemon" + +#: tools/main.vala:449 +msgid "Show version" +msgstr "Wyświetla wersję" + +#: tools/main.vala:450 +msgid "Show the content of registry cache" +msgstr "Wyświetla zawartość pamięci podręcznej rejestru" + +#: tools/main.vala:451 +msgid "Create registry cache" +msgstr "Tworzy pamięć podręczną rejestru" + +#: tools/main.vala:452 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "Wyświetla adres D-Bus usługi ibus-daemon" + +#: tools/main.vala:453 +msgid "Show the configuration values" +msgstr "Wyświetla wartości konfiguracji" + +#: tools/main.vala:454 +msgid "Reset the configuration values" +msgstr "Przywraca wartości konfiguracji" + +#: tools/main.vala:456 +msgid "Save emoji on dialog to clipboard" +msgstr "Zapisuje emoji w oknie do schowka" + +#: tools/main.vala:458 +msgid "Show this information" +msgstr "Wyświetla tę informację" + +#: tools/main.vala:464 +#, c-format +msgid "" +"Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "" +"Użycie: %s POLECENIE [OPCJA…]\n" +"\n" + +#: tools/main.vala:465 +msgid "Commands:\n" +msgstr "Polecenia:\n" + +#: tools/main.vala:494 +#, c-format +msgid "%s is unknown command!\n" +msgstr "%s jest nieznanym poleceniem.\n" + +#: ui/gtk3/emojier.vala:233 +msgid "Favorites" +msgstr "Ulubione" + +#: ui/gtk3/emojier.vala:234 +msgid "Others" +msgstr "Inne" + +#: ui/gtk3/emojier.vala:235 +msgid "Open Unicode choice" +msgstr "Otwórz wybór unikodu" + +#: ui/gtk3/emojier.vala:995 +msgid "Bring back emoji choice" +msgstr "Wróć do wyboru emoji" + +#: ui/gtk3/emojier.vala:1097 +msgid "Page Down" +msgstr "Strona w dół" + +#: ui/gtk3/emojier.vala:1108 +msgid "Page Up" +msgstr "Strona w górę" + +#: ui/gtk3/emojier.vala:1111 +msgid "Show emoji variants" +msgstr "Wyświetlanie wariantów emoji" + +#: ui/gtk3/emojier.vala:1112 +msgid "Close" +msgstr "Zamknij" + +#: ui/gtk3/emojier.vala:1118 +msgid "Menu" +msgstr "Menu" + +#: ui/gtk3/emojier.vala:1129 +msgid "Click to view a warning message" +msgstr "Kliknięcie wyświetli komunikat ostrzeżenia" + +#: ui/gtk3/emojier.vala:1173 +msgid "Loading a Unicode dictionary:" +msgstr "Wczytywanie słownika unikodu:" + +#: ui/gtk3/emojier.vala:1419 +#, c-format +msgid "Code point: %s" +msgstr "Kod znaku: %s" + +#: ui/gtk3/emojier.vala:1425 +msgid "Has emoji variants" +msgstr "Ma warianty emoji" + +#: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 +#, c-format +msgid "Description: %s" +msgstr "Opis: %s" + +#: ui/gtk3/emojier.vala:1592 +msgid "None" +msgstr "Brak" + +#: ui/gtk3/emojier.vala:1616 +#, c-format +msgid "Annotations: %s" +msgstr "Uwagi: %s" + +#: ui/gtk3/emojier.vala:1642 +#, c-format +msgid "Name: %s" +msgstr "Nazwa: %s" + +#: ui/gtk3/emojier.vala:1650 +#, c-format +msgid "Alias: %s" +msgstr "Alias: %s" + +#: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 +#: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1169 +msgid "Emoji Choice" +msgstr "Wybór emoji" + +#: ui/gtk3/emojier.vala:2142 +msgid "Unicode Choice" +msgstr "Wybór unikodu" + +#: ui/gtk3/emojier.vala:2432 +msgid "" +"Failed to get the current text application. Please re-focus your " +"application. E.g. Press Esc key several times to release the emoji typing " +"mode, click your desktop and click your text application again." +msgstr "" +"Uzyskanie obecnej aplikacji tekstowej się nie powiodło. Proszę ponownie ją " +"aktywować. Można np. nacisnąć klawisz Esc kilka razy, aby zwolnić tryb " +"pisania emoji, albo kliknąć pulpit i kliknąć aplikację tekstową jeszcze raz." + +#: ui/gtk3/emojierapp.vala:47 +msgid "Canceled to choose an emoji." +msgstr "Anulowano, aby wybrać emoji." + +#: ui/gtk3/emojierapp.vala:67 +msgid "Copied an emoji to your clipboard." +msgstr "Skopiowano emoji do schowka." + +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ui/gtk3/emojierapp.vala:126 +msgid "\"FONT\" for emoji characters on emoji dialog" +msgstr "„CZCIONKA” dla znaków emoji w oknie emoji" + +#: ui/gtk3/emojierapp.vala:127 +msgid "FONT" +msgstr "CZCIONKA" + +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ui/gtk3/emojierapp.vala:132 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" +msgstr "„JĘZYK” uwag w oknie emoji, np. „pl”" + +#: ui/gtk3/emojierapp.vala:133 +msgid "LANG" +msgstr "JĘZYK" + +#: ui/gtk3/emojierapp.vala:135 +msgid "Emoji annotations can be match partially" +msgstr "Uwagi emoji mogą być częściowo dopasowywane" + +#: ui/gtk3/emojierapp.vala:139 +msgid "Match with the length of the specified integer" +msgstr "Dopasowywanie o podanej długości jako liczba całkowita" + +#: ui/gtk3/emojierapp.vala:143 +msgid "Match with the condition of the specified integer" +msgstr "Dopasowywanie o podanym warunku jako liczba całkowita" + +#: ui/gtk3/panel.vala:292 ui/gtk3/panel.vala:323 +msgid "IBus Panel" +msgstr "Panel IBus" + +#: ui/gtk3/panel.vala:975 +#, c-format +msgid "" +"Your configured input method %s does not exist in IBus input methods so \"US" +"\" layout was configured instead of your input method." +msgstr "" +"Skonfigurowana metoda wprowadzania %s nie istnieje w metodach wprowadzania " +"usługi IBus, więc zamiast niej skonfigurowano układ „US”." + +#: ui/gtk3/panel.vala:980 +msgid "" +"At least one of your configured input methods does not exist in IBus input " +"methods." +msgstr "" +"Co najmniej jedna ze skonfigurowanych metod wprowadzania nie istnieje w " +"metodach wprowadzania usługi IBus." + +#: ui/gtk3/panel.vala:983 +msgid "" +"Please run `ibus-setup` command, open \"Input Method\" tab, and configure " +"your input methods again." +msgstr "" +"Proszę wykonać polecenie „ibus-setup”, otworzyć kartę „Metoda wprowadzania” " +"i ponownie skonfigurować metody wprowadzania." + +#: ui/gtk3/panel.vala:1141 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus jest inteligentną magistralą wprowadzania dla systemu Linux/UNIX." + +#: ui/gtk3/panel.vala:1145 +msgid "translator-credits" +msgstr "Piotr Drąg , 2009-2021" + +#: ui/gtk3/panel.vala:1164 +msgid "Preferences" +msgstr "Preferencje" + +#: ui/gtk3/panel.vala:1190 +msgid "Restart" +msgstr "Uruchom ponownie" -#: ../setup/setup.ui.h:58 -msgid "When active" -msgstr "W czasie aktywności" +#: ui/gtk3/panel.vala:1194 +msgid "Quit" +msgstr "Zakończ" + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 +msgid "default:LTR" +msgstr "default:LTR" + +#~ msgid "" +#~ "IBus\n" +#~ "The intelligent input bus\n" +#~ "Homepage: https://github.com/ibus/ibus/wiki\n" +#~ "\n" +#~ "\n" +#~ "\n" +#~ msgstr "" +#~ "IBus\n" +#~ "Inteligentna magistrala wprowadzania\n" +#~ "Strona domowa: https://github.com/ibus/ibus/wiki\n" +#~ "\n" +#~ "\n" +#~ "\n" + +#~ msgid "Start ibus on login" +#~ msgstr "Uruchamianie IBus podczas logowania" + +#~ msgid "Startup" +#~ msgstr "Uruchamianie" diff --git a/po/pt.po b/po/pt.po new file mode 100644 index 000000000..32d820c18 --- /dev/null +++ b/po/pt.po @@ -0,0 +1,3209 @@ +# Portuguese translation of ibus. +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2019 Takao Fujiwara +# This file is distributed under the same license as the ibus package. +# +# Manuela Silva , 2019. #zanata +msgid "" +msgstr "" +"Project-Id-Version: ibus 1.5.21\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2019-10-24 19:18+0900\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2019-09-16 11:26+0000\n" +"Last-Translator: Manuela Silva \n" +"Language-Team: Portuguese\n" +"Language: pt\n" +"X-Generator: Zanata 4.6.2\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#. Translators: Here “Preload” is a verb +#: data/dconf/org.freedesktop.ibus.gschema.xml:11 +msgid "Preload engines" +msgstr "Mecanismos de pré-carregamento" + +#. Translators: Tooltip for the button “Preload Engines” +#: data/dconf/org.freedesktop.ibus.gschema.xml:13 +msgid "Preload engines during ibus starts up" +msgstr "Mecanismos de pré-carregamento durante o arranque de ibus" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:17 +msgid "Engines order" +msgstr "Ordem de mecanismos" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:18 +msgid "Saved engines order in input method list" +msgstr "Ordem de mecanismos guardados na lista de métodos de entrada" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:22 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:23 +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is 400." +" 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not show " +"the window and switch prev/next engines." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:27 +msgid "Saved version number" +msgstr "Número de versão guardado" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:28 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:32 +msgid "Latin layouts which have no ASCII" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:33 +msgid "US layout is appended to the Latin layouts. variant can be omitted." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:37 +msgid "Use xmodmap" +msgstr "Utilizar xmodmap" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:38 +msgid "" +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 +msgid "Use system keyboard layout" +msgstr "Utilizar disposição do teclado do sistema" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 +msgid "Use system keyboard (XKB) layout" +msgstr "Utilizar disposição do teclado do sistema (XKB)" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:47 +msgid "Embed Preedit Text" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:48 +msgid "Embed Preedit Text in Application Window" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:52 +msgid "Use global input method" +msgstr "Utilizar método de entrada global" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 +msgid "Share the same input method among all applications" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:57 +msgid "Enable input method by default" +msgstr "Ativar método de entrada por predefinição" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:58 +msgid "Enable input method by default when the application gets input focus" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:62 +msgid "DConf preserve name prefixes" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:63 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:70 +msgid "Trigger shortcut keys" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:71 +#: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 +msgid "The shortcut keys for turning input method on or off" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:75 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:80 +msgid "Enable shortcut keys" +msgstr "Ativar teclas de atalho" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:81 +msgid "The shortcut keys for turning input method on" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:85 +msgid "Disable shortcut keys" +msgstr "Desativar teclas de atalho" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:86 +msgid "The shortcut keys for turning input method off" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:90 +#: data/dconf/org.freedesktop.ibus.gschema.xml:95 +msgid "Next engine shortcut keys" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:91 +#: data/dconf/org.freedesktop.ibus.gschema.xml:96 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:100 +#: data/dconf/org.freedesktop.ibus.gschema.xml:105 +msgid "Prev engine shortcut keys" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:101 +#: data/dconf/org.freedesktop.ibus.gschema.xml:106 +msgid "The shortcut keys for switching to the previous input method" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:112 +msgid "Auto hide" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:113 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:117 +#: data/dconf/org.freedesktop.ibus.gschema.xml:121 +msgid "Language panel position" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:125 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:126 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:130 +msgid "The milliseconds to show property panel" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:131 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:135 +msgid "Orientation of lookup table" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:136 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:140 +#: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 +#: setup/setup.ui:475 +msgid "Show icon on system tray" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:145 +msgid "Show input method name" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 +msgid "Show input method name on language bar" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:150 +msgid "RGBA value of XKB icon" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:151 +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " +"'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " +"to 255 or percentage values in the range 0% to 100%, and 'a' is a floating " +"point value in the range 0 to 1 of the alpha." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:155 +msgid "The milliseconds to show the panel icon for a property" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:156 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:160 +msgid "Use custom font" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:161 +msgid "Use custom font name for language panel" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:165 +#: data/dconf/org.freedesktop.ibus.gschema.xml:183 +msgid "Custom font" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:166 +msgid "Custom font name for language panel" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:173 +msgid "Unicode shortcut keys for gtk_accelerator_parse" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:174 +msgid "The shortcut keys for turning Unicode typing on or off" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:178 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:179 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:184 +msgid "Custom font name for emoji characters on emoji dialog" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:188 +msgid "Default language for emoji dictionary" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:189 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:193 +msgid "favorite emoji list on emoji dialog" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:194 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:198 +msgid "favorite emoji annotation list on emoji dialog" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:199 +msgid "You can assign an annotation for a favorite emoji in this list." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:203 +msgid "Whether emoji annotations can be match partially or not" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:204 +msgid "" +"Whether emoji annotations can be matched with a partial string instead of " +"the exact match or not." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:208 +msgid "Match emoji annotations with the specified length" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:209 +msgid "" +"Match emoji annotations partially with more than the specified number of " +"characters instead of the exact match." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:213 +msgid "Choose a condition to match emoji annotations partially" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:214 +msgid "" +"Choose one of the following conditions to match emoji annotations partially: " +"0 == Prefix match, 1 == Suffix match, 2 == Containing match" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:218 +msgid "Load the emoji data at the time of startup" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:219 +msgid "" +"Load the emoji data at the time of startup if true. About 10MB memory is " +"needed to load the data. Load the emoji data when open the emoji dialog at " +"the beginning if false." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:223 +msgid "Load the Unicode data at the time of startup" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:224 +msgid "" +"Load the Unicode data at the time of startup if true. About 15MB memory is " +"needed to load the data. Load the Unicode data when open the emoji dialog at " +"the beginning if false. The Unicode data is always loaded after the emoji " +"data is loaded even if true." +msgstr "" + +#: ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "" +"Direitos de Autor (c) 2007-2010 Peng Huang\n" +"Direitos de Autor (c) 2007-2010 Red Hat, Inc." + +#: ibus/lang.py:41 src/ibusutil.c:209 +msgid "Other" +msgstr "Outros" + +#: setup/emojilang.py:67 +msgid "Select a language" +msgstr "Selecione um idioma" + +#: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 +#: setup/main.py:560 +msgid "_Cancel" +msgstr "_Cancelar" + +#: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 +msgid "_OK" +msgstr "_OK" + +#: setup/emojilang.py:235 setup/enginedialog.py:205 +msgid "More…" +msgstr "Mais…" + +#: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 +msgid "About" +msgstr "Sobre" + +#: setup/engineabout.py:40 setup/setup.ui:1401 +msgid "_Close" +msgstr "_Fechar" + +#: setup/engineabout.py:72 +#, python-format +msgid "Language: %s\n" +msgstr "Idioma: %s\n" + +#: setup/engineabout.py:75 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "Disposição do teclado: %s\n" + +#: setup/engineabout.py:78 +#, python-format +msgid "Author: %s\n" +msgstr "Autor: %s\n" + +#: setup/engineabout.py:81 +msgid "Description:\n" +msgstr "Descrição:\n" + +#: setup/enginecombobox.py:139 setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "Selecione um método de entrada" + +#. add button +#: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 +msgid "_Add" +msgstr "_Adicionar" + +#. create im name & icon column +#: setup/enginetreeview.py:69 setup/setup.ui:838 +msgid "Input Method" +msgstr "Método de Entrada" + +#: setup/enginetreeview.py:96 +msgid "Kbd" +msgstr "Kbd" + +#: setup/ibus-setup.desktop:3 setup/setup.ui:69 +msgid "IBus Preferences" +msgstr "Preferências de IBus" + +#: setup/ibus-setup.desktop:4 +msgid "Set IBus Preferences" +msgstr "Definir Preferências de IBus" + +#: setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "Atalhos de teclado" + +#: setup/keyboardshortcut.py:67 +msgid "Key code:" +msgstr "" + +#: setup/keyboardshortcut.py:82 +msgid "Modifiers:" +msgstr "" + +#. apply button +#: setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "_Aplicar" + +#. delete button +#: setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "_Eliminar" + +#: setup/keyboardshortcut.py:252 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "" + +#: setup/keyboardshortcut.py:255 +msgid "Please press a key (or a key combination)" +msgstr "" + +#: setup/main.py:121 setup/main.py:588 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "" + +#: setup/main.py:515 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "" + +#: setup/main.py:536 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "" + +#. Translators: %d == 5 currently +#: setup/main.py:550 +#, python-format +msgid "IBus daemon could not be started in %d seconds" +msgstr "" + +#: setup/main.py:562 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "" + +#. Translators: Title of the window +#: setup/main.py:564 +msgid "switching input methods" +msgstr "" + +#: setup/setup.ui:11 +msgid "Horizontal" +msgstr "Horizontal" + +#: setup/setup.ui:14 +msgid "Vertical" +msgstr "Vertical" + +#: setup/setup.ui:25 +msgid "Top left corner" +msgstr "" + +#: setup/setup.ui:28 +msgid "Top right corner" +msgstr "" + +#: setup/setup.ui:31 +msgid "Bottom left corner" +msgstr "" + +#: setup/setup.ui:34 +msgid "Bottom right corner" +msgstr "" + +#: setup/setup.ui:37 +msgid "Custom" +msgstr "" + +#: setup/setup.ui:48 +msgid "Do not show" +msgstr "Não mostrar" + +#: setup/setup.ui:51 +msgid "Hide automatically" +msgstr "Ocultar automaticamente" + +#: setup/setup.ui:54 +msgid "Always" +msgstr "Sempre" + +#: setup/setup.ui:113 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "" + +#: setup/setup.ui:115 +msgid "Next input method:" +msgstr "" + +#: setup/setup.ui:127 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "" + +#: setup/setup.ui:129 +msgid "Previous input method:" +msgstr "" + +#: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 +#: setup/setup.ui:903 setup/setup.ui:957 +msgid "..." +msgstr "..." + +#: setup/setup.ui:226 +msgid "Enable or disable:" +msgstr "Ativar ou desativar:" + +#: setup/setup.ui:238 +msgid "Enable:" +msgstr "Ativar:" + +#: setup/setup.ui:291 +msgid "Disable:" +msgstr "Desativar:" + +#: setup/setup.ui:345 setup/setup.ui:983 +msgid "Keyboard Shortcuts" +msgstr "Atalhos de Teclado" + +#: setup/setup.ui:374 +msgid "Set the orientation of candidates in lookup table" +msgstr "" + +#: setup/setup.ui:376 +msgid "Candidates orientation:" +msgstr "" + +#: setup/setup.ui:407 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "" + +#: setup/setup.ui:409 +msgid "Show property panel:" +msgstr "" + +#: setup/setup.ui:423 +msgid "Language panel position:" +msgstr "" + +#: setup/setup.ui:494 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "" + +#: setup/setup.ui:508 +msgid "Embed preedit text in application window" +msgstr "" + +#: setup/setup.ui:513 +msgid "Embed the preedit text of input method in the application window" +msgstr "" + +#: setup/setup.ui:527 +msgid "Use custom font:" +msgstr "" + +#: setup/setup.ui:562 setup/setup.ui:1156 +msgid "Font and Style" +msgstr "" + +#: setup/setup.ui:579 +msgid "General" +msgstr "Geral" + +#: setup/setup.ui:671 +msgid "Add the selected input method into the enabled input methods" +msgstr "" + +#: setup/setup.ui:682 +msgid "_Remove" +msgstr "_Remover" + +#: setup/setup.ui:689 +msgid "Remove the selected input method from the enabled input methods" +msgstr "" + +#: setup/setup.ui:700 +msgid "_Up" +msgstr "Para _Cima" + +#: setup/setup.ui:707 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "" + +#: setup/setup.ui:718 +msgid "_Down" +msgstr "Para _Baixo" + +#: setup/setup.ui:725 +msgid "Move down the selected input method in the enabled input methods" +msgstr "" + +#: setup/setup.ui:736 +msgid "_About" +msgstr "_Sobre" + +#: setup/setup.ui:743 +msgid "Show information of the selected input method" +msgstr "Mostrar informação do método de entrada selecionado" + +#: setup/setup.ui:754 +msgid "_Preferences" +msgstr "_Preferências" + +#: setup/setup.ui:761 +msgid "Show setup of the selected input method" +msgstr "" + +#: setup/setup.ui:812 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" + +#: setup/setup.ui:873 +msgid "" +"The shortcut keys to enable conversions of emoji annotations or Unicode " +"names" +msgstr "" + +#: setup/setup.ui:875 +msgid "Emoji annotation:" +msgstr "Anotação de emoji:" + +#: setup/setup.ui:927 +msgid "The shortcut keys to enable Unicode code point conversions" +msgstr "" + +#: setup/setup.ui:929 +msgid "Unicode code point:" +msgstr "" + +#: setup/setup.ui:1013 +msgid "Set a font of Unicode candidates on the emoji dialog" +msgstr "" + +#: setup/setup.ui:1015 +msgid "Unicode font:" +msgstr "" + +#: setup/setup.ui:1038 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "" + +#: setup/setup.ui:1040 +msgid "Emoji annotation language:" +msgstr "" + +#: setup/setup.ui:1062 +msgid "" +"Match emoji annotations partially with the following condition and more than " +"the number of characters:" +msgstr "" + +#: setup/setup.ui:1067 +msgid "" +"If emoji annotations can be matched with a partial string instead of the " +"exact match" +msgstr "" + +#: setup/setup.ui:1101 +msgid "Prefix match" +msgstr "" + +#: setup/setup.ui:1115 +msgid "Suffix match" +msgstr "" + +#: setup/setup.ui:1130 +msgid "Containing match" +msgstr "" + +#: setup/setup.ui:1176 +msgid "Emoji" +msgstr "Emoji" + +#: setup/setup.ui:1230 +msgid "Keyboard Layout" +msgstr "Atalhos de Teclado" + +#: setup/setup.ui:1278 +msgid "Global input method settings" +msgstr "Definições globais do método de entrada" + +#: setup/setup.ui:1298 +msgid "Advanced" +msgstr "Avançado" + +#: setup/setup.ui:1317 +msgid "" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" +msgstr "" + +#: setup/setup.ui:1341 +msgid "Start ibus on login" +msgstr "Iniciar ibus ao iniciar a sessão" + +#: setup/setup.ui:1358 +msgid "Startup" +msgstr "Arranque" + +#: src/ibusemojigen.h:30 +msgid "Activities" +msgstr "Atividades" + +#: src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "Animais e Natureza" + +#: src/ibusemojigen.h:32 +msgid "Component" +msgstr "Componente" + +#: src/ibusemojigen.h:33 +msgid "Flags" +msgstr "Bandeiras" + +#: src/ibusemojigen.h:34 +msgid "Food & Drink" +msgstr "Comida e Bebidas" + +#: src/ibusemojigen.h:35 +msgid "Objects" +msgstr "Objetos" + +#: src/ibusemojigen.h:36 +msgid "People & Body" +msgstr "" + +#: src/ibusemojigen.h:37 +msgid "Smileys & Emotion" +msgstr "" + +#: src/ibusemojigen.h:38 +msgid "Symbols" +msgstr "Símbolos" + +#: src/ibusemojigen.h:39 +msgid "Travel & Places" +msgstr "Viagem e Locais" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:33 +msgid "Basic Latin" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:37 +msgid "Latin-1 Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:41 +msgid "Latin Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:45 +msgid "Latin Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:49 +msgid "IPA Extensions" +msgstr "Extensões de IPA" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:53 +msgid "Spacing Modifier Letters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:57 +msgid "Combining Diacritical Marks" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:61 +msgid "Greek and Coptic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:65 +msgid "Cyrillic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:69 +msgid "Cyrillic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:73 +msgid "Armenian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:77 +msgid "Hebrew" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:81 +msgid "Arabic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:85 +msgid "Syriac" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:89 +msgid "Arabic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:93 +msgid "Thaana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:97 +msgid "NKo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:101 +msgid "Samaritan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:105 +msgid "Mandaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:109 +msgid "Syriac Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:113 +msgid "Arabic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:117 +msgid "Devanagari" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:121 +msgid "Bengali" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:125 +msgid "Gurmukhi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:129 +msgid "Gujarati" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:133 +msgid "Oriya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:137 +msgid "Tamil" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:141 +msgid "Telugu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:145 +msgid "Kannada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:149 +msgid "Malayalam" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:153 +msgid "Sinhala" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:157 +msgid "Thai" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:161 +msgid "Lao" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:165 +msgid "Tibetan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:169 +msgid "Myanmar" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:173 +msgid "Georgian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:177 +msgid "Hangul Jamo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:181 +msgid "Ethiopic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:185 +msgid "Ethiopic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:189 +msgid "Cherokee" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:193 +msgid "Unified Canadian Aboriginal Syllabics" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:197 +msgid "Ogham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:201 +msgid "Runic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:205 +msgid "Tagalog" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:209 +msgid "Hanunoo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:213 +msgid "Buhid" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:217 +msgid "Tagbanwa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:221 +msgid "Khmer" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:225 +msgid "Mongolian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:229 +msgid "Unified Canadian Aboriginal Syllabics Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:233 +msgid "Limbu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:237 +msgid "Tai Le" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:241 +msgid "New Tai Lue" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:245 +msgid "Khmer Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:249 +msgid "Buginese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:253 +msgid "Tai Tham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:257 +msgid "Combining Diacritical Marks Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:261 +msgid "Balinese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:265 +msgid "Sundanese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:269 +msgid "Batak" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:273 +msgid "Lepcha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:277 +msgid "Ol Chiki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:281 +msgid "Cyrillic Extended-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:285 +msgid "Georgian Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:289 +msgid "Sundanese Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:293 +msgid "Vedic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:297 +msgid "Phonetic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:301 +msgid "Phonetic Extensions Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:305 +msgid "Combining Diacritical Marks Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:309 +msgid "Latin Extended Additional" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:313 +msgid "Greek Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:317 +msgid "General Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:321 +msgid "Superscripts and Subscripts" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:325 +msgid "Currency Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:329 +msgid "Combining Diacritical Marks for Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:333 +msgid "Letterlike Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:337 +msgid "Number Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:341 +msgid "Arrows" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:345 +msgid "Mathematical Operators" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:349 +msgid "Miscellaneous Technical" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:353 +msgid "Control Pictures" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:357 +msgid "Optical Character Recognition" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:361 +msgid "Enclosed Alphanumerics" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:365 +msgid "Box Drawing" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:369 +msgid "Block Elements" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:373 +msgid "Geometric Shapes" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:377 +msgid "Miscellaneous Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:381 +msgid "Dingbats" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:385 +msgid "Miscellaneous Mathematical Symbols-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:389 +msgid "Supplemental Arrows-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:393 +msgid "Braille Patterns" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:397 +msgid "Supplemental Arrows-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:401 +msgid "Miscellaneous Mathematical Symbols-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:405 +msgid "Supplemental Mathematical Operators" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:409 +msgid "Miscellaneous Symbols and Arrows" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:413 +msgid "Glagolitic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:417 +msgid "Latin Extended-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:421 +msgid "Coptic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:425 +msgid "Georgian Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:429 +msgid "Tifinagh" +msgstr "Tifinagh" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:433 +msgid "Ethiopic Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:437 +msgid "Cyrillic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:441 +msgid "Supplemental Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:445 +msgid "CJK Radicals Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:449 +msgid "Kangxi Radicals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:453 +msgid "Ideographic Description Characters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:457 +msgid "CJK Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:461 +msgid "Hiragana" +msgstr "Hiragana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:465 +msgid "Katakana" +msgstr "Katakana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:469 +msgid "Bopomofo" +msgstr "Bopomofo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:473 +msgid "Hangul Compatibility Jamo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:477 +msgid "Kanbun" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:481 +msgid "Bopomofo Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:485 +msgid "CJK Strokes" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:489 +msgid "Katakana Phonetic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:493 +msgid "Enclosed CJK Letters and Months" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:497 +msgid "CJK Compatibility" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:501 +msgid "CJK Unified Ideographs Extension A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:505 +msgid "Yijing Hexagram Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:509 +msgid "CJK Unified Ideographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:513 +msgid "Yi Syllables" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:517 +msgid "Yi Radicals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:521 +msgid "Lisu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:525 +msgid "Vai" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:529 +msgid "Cyrillic Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:533 +msgid "Bamum" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:537 +msgid "Modifier Tone Letters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:541 +msgid "Latin Extended-D" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:545 +msgid "Syloti Nagri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:549 +msgid "Common Indic Number Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:553 +msgid "Phags-pa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:557 +msgid "Saurashtra" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:561 +msgid "Devanagari Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:565 +msgid "Kayah Li" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:569 +msgid "Rejang" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:573 +msgid "Hangul Jamo Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:577 +msgid "Javanese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:581 +msgid "Myanmar Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:585 +msgid "Cham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:589 +msgid "Myanmar Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:593 +msgid "Tai Viet" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:597 +msgid "Meetei Mayek Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:601 +msgid "Ethiopic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:605 +msgid "Latin Extended-E" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:609 +msgid "Cherokee Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:613 +msgid "Meetei Mayek" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:617 +msgid "Hangul Syllables" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:621 +msgid "Hangul Jamo Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:625 +msgid "High Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:629 +msgid "High Private Use Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:633 +msgid "Low Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:637 +msgid "Private Use Area" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:641 +msgid "CJK Compatibility Ideographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:645 +msgid "Alphabetic Presentation Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:649 +msgid "Arabic Presentation Forms-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:653 +msgid "Variation Selectors" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:657 +msgid "Vertical Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:661 +msgid "Combining Half Marks" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:665 +msgid "CJK Compatibility Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:669 +msgid "Small Form Variants" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:673 +msgid "Arabic Presentation Forms-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:677 +msgid "Halfwidth and Fullwidth Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:681 +msgid "Specials" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:685 +msgid "Linear B Syllabary" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:689 +msgid "Linear B Ideograms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:693 +msgid "Aegean Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:697 +msgid "Ancient Greek Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:701 +msgid "Ancient Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:705 +msgid "Phaistos Disc" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:709 +msgid "Lycian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:713 +msgid "Carian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:717 +msgid "Coptic Epact Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:721 +msgid "Old Italic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:725 +msgid "Gothic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:729 +msgid "Old Permic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:733 +msgid "Ugaritic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:737 +msgid "Old Persian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:741 +msgid "Deseret" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:745 +msgid "Shavian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:749 +msgid "Osmanya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:753 +msgid "Osage" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:757 +msgid "Elbasan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:761 +msgid "Caucasian Albanian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:765 +msgid "Linear A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:769 +msgid "Cypriot Syllabary" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:773 +msgid "Imperial Aramaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:777 +msgid "Palmyrene" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:781 +msgid "Nabataean" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:785 +msgid "Hatran" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:789 +msgid "Phoenician" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:793 +msgid "Lydian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:797 +msgid "Meroitic Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:801 +msgid "Meroitic Cursive" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:805 +msgid "Kharoshthi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:809 +msgid "Old South Arabian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:813 +msgid "Old North Arabian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:817 +msgid "Manichaean" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:821 +msgid "Avestan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:825 +msgid "Inscriptional Parthian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:829 +msgid "Inscriptional Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:833 +msgid "Psalter Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:837 +msgid "Old Turkic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:841 +msgid "Old Hungarian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:845 +msgid "Hanifi Rohingya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:849 +msgid "Rumi Numeral Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:853 +msgid "Old Sogdian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:857 +msgid "Sogdian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:861 +msgid "Elymaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:865 +msgid "Brahmi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:869 +msgid "Kaithi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:873 +msgid "Sora Sompeng" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:877 +msgid "Chakma" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:881 +msgid "Mahajani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:885 +msgid "Sharada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:889 +msgid "Sinhala Archaic Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:893 +msgid "Khojki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:897 +msgid "Multani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:901 +msgid "Khudawadi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:905 +msgid "Grantha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:909 +msgid "Newa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:913 +msgid "Tirhuta" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:917 +msgid "Siddham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:921 +msgid "Modi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:925 +msgid "Mongolian Supplement" +msgstr "Suplemento de Mongolian " + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:929 +msgid "Takri" +msgstr "Takri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:933 +msgid "Ahom" +msgstr "Ahom" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:937 +msgid "Dogra" +msgstr "Dogra" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:941 +msgid "Warang Citi" +msgstr "Warang Citi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:945 +msgid "Nandinagari" +msgstr "Nandinagari" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:949 +msgid "Zanabazar Square" +msgstr "Zanabazar Square" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:953 +msgid "Soyombo" +msgstr "Soyombo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:957 +msgid "Pau Cin Hau" +msgstr "Pau Cin Hau" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:961 +msgid "Bhaiksuki" +msgstr "Bhaiksuki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:965 +msgid "Marchen" +msgstr "Marchen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:969 +msgid "Masaram Gondi" +msgstr "Masaram Gondi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:973 +msgid "Gunjala Gondi" +msgstr "Gunjala Gondi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:977 +msgid "Makasar" +msgstr "Makasar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:981 +msgid "Tamil Supplement" +msgstr "Suplemento de Tamil" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:985 +msgid "Cuneiform" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:989 +msgid "Cuneiform Numbers and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:993 +msgid "Early Dynastic Cuneiform" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:997 +msgid "Egyptian Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1001 +msgid "Egyptian Hieroglyph Format Controls" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1005 +msgid "Anatolian Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1009 +msgid "Bamum Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1013 +msgid "Mro" +msgstr "Mro" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1017 +msgid "Bassa Vah" +msgstr "Bassa Vah" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1021 +msgid "Pahawh Hmong" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1025 +msgid "Medefaidrin" +msgstr "Medefaidrin" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1029 +msgid "Miao" +msgstr "Miao" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1033 +msgid "Ideographic Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1037 +msgid "Tangut" +msgstr "Tangut" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1041 +msgid "Tangut Components" +msgstr "Componentes de Tangut" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1045 +msgid "Kana Supplement" +msgstr "Suplemento de Kana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1049 +msgid "Kana Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1053 +msgid "Small Kana Extension" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1057 +msgid "Nushu" +msgstr "Nushu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1061 +msgid "Duployan" +msgstr "Duployan" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1065 +msgid "Shorthand Format Controls" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1069 +msgid "Byzantine Musical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1073 +msgid "Musical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1077 +msgid "Ancient Greek Musical Notation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1081 +msgid "Mayan Numerals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1085 +msgid "Tai Xuan Jing Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1089 +msgid "Counting Rod Numerals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1093 +msgid "Mathematical Alphanumeric Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1097 +msgid "Sutton SignWriting" +msgstr "Sutton SignWriting" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1101 +msgid "Glagolitic Supplement" +msgstr "Suplemento de Glagolitic" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1105 +msgid "Nyiakeng Puachue Hmong" +msgstr "Nyiakeng Puachue Hmong" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1109 +msgid "Wancho" +msgstr "Wancho" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1113 +msgid "Mende Kikakui" +msgstr "Mende Kikakui" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1117 +msgid "Adlam" +msgstr "Adlam" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1121 +msgid "Indic Siyaq Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1125 +msgid "Ottoman Siyaq Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1129 +msgid "Arabic Mathematical Alphabetic Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1133 +msgid "Mahjong Tiles" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1137 +msgid "Domino Tiles" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1141 +msgid "Playing Cards" +msgstr "Cartas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1145 +msgid "Enclosed Alphanumeric Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1149 +msgid "Enclosed Ideographic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1153 +msgid "Miscellaneous Symbols and Pictographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1157 +msgid "Emoticons" +msgstr "Emoticons" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1161 +msgid "Ornamental Dingbats" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1165 +msgid "Transport and Map Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1169 +msgid "Alchemical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1173 +msgid "Geometric Shapes Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1177 +msgid "Supplemental Arrows-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1181 +msgid "Supplemental Symbols and Pictographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1185 +msgid "Chess Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1189 +msgid "Symbols and Pictographs Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1193 +msgid "CJK Unified Ideographs Extension B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1197 +msgid "CJK Unified Ideographs Extension C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1201 +msgid "CJK Unified Ideographs Extension D" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1205 +msgid "CJK Unified Ideographs Extension E" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1209 +msgid "CJK Unified Ideographs Extension F" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1213 +msgid "CJK Compatibility Ideographs Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1217 +msgid "Tags" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1221 +msgid "Variation Selectors Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1225 +msgid "Supplementary Private Use Area-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1229 +msgid "Supplementary Private Use Area-B" +msgstr "" + +#: tools/main.vala:51 +msgid "List engine name only" +msgstr "" + +#: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 +msgid "Can't connect to IBus.\n" +msgstr "" + +#: tools/main.vala:93 +#, c-format +msgid "language: %s\n" +msgstr "" + +#: tools/main.vala:161 +msgid "No engine is set.\n" +msgstr "" + +#: tools/main.vala:169 +msgid "Set global engine failed.\n" +msgstr "" + +#: tools/main.vala:174 +msgid "Get global engine failed.\n" +msgstr "" + +#: tools/main.vala:217 +msgid "Read the system registry cache." +msgstr "" + +#: tools/main.vala:219 +msgid "Read the registry cache FILE." +msgstr "" + +#: tools/main.vala:237 tools/main.vala:242 +msgid "The registry cache is invalid.\n" +msgstr "" + +#: tools/main.vala:257 +msgid "Write the system registry cache." +msgstr "" + +#: tools/main.vala:259 +msgid "Write the registry cache FILE." +msgstr "" + +#: tools/main.vala:295 +msgid "" +"Use engine schema paths instead of ibus core, which can be comma-separated " +"values." +msgstr "" + +#: tools/main.vala:381 +msgid "Resetting…" +msgstr "A redefinir..." + +#: tools/main.vala:399 +msgid "Done" +msgstr "Concluído " + +#: tools/main.vala:444 +msgid "Set or get engine" +msgstr "" + +#: tools/main.vala:445 +msgid "Exit ibus-daemon" +msgstr "" + +#: tools/main.vala:446 +msgid "Show available engines" +msgstr "Mostrar mecanismos disponíveis" + +#: tools/main.vala:447 +msgid "(Not implemented)" +msgstr "(Não implementado)" + +#: tools/main.vala:448 +msgid "Restart ibus-daemon" +msgstr "" + +#: tools/main.vala:449 +msgid "Show version" +msgstr "Mostrar versão" + +#: tools/main.vala:450 +msgid "Show the content of registry cache" +msgstr "" + +#: tools/main.vala:451 +msgid "Create registry cache" +msgstr "" + +#: tools/main.vala:452 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "" + +#: tools/main.vala:453 +msgid "Show the configuration values" +msgstr "Mostrar os valores da configuração" + +#: tools/main.vala:454 +msgid "Reset the configuration values" +msgstr "Redefinir os valores da configuração" + +#: tools/main.vala:456 +msgid "Save emoji on dialog to clipboard" +msgstr "Guardar emoji na janela para a área de transferência" + +#: tools/main.vala:458 +msgid "Show this information" +msgstr "Mostrar esta informação" + +#: tools/main.vala:464 +#, c-format +msgid "Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "" + +#: tools/main.vala:465 +msgid "Commands:\n" +msgstr "Comandos:\n" + +#: tools/main.vala:494 +#, c-format +msgid "%s is unknown command!\n" +msgstr "" + +#: ui/gtk3/emojier.vala:233 +msgid "Favorites" +msgstr "Favoritos" + +#: ui/gtk3/emojier.vala:234 +msgid "Others" +msgstr "Outros" + +#: ui/gtk3/emojier.vala:235 +msgid "Open Unicode choice" +msgstr "" + +#: ui/gtk3/emojier.vala:994 +msgid "Bring back emoji choice" +msgstr "" + +#: ui/gtk3/emojier.vala:1096 +msgid "Page Down" +msgstr "Página para Baixo" + +#: ui/gtk3/emojier.vala:1107 +msgid "Page Up" +msgstr "Página para Cima" + +#: ui/gtk3/emojier.vala:1110 +msgid "Show emoji variants" +msgstr "Mostrar variantes de emoji" + +#: ui/gtk3/emojier.vala:1111 +msgid "Close" +msgstr "Fechar" + +#: ui/gtk3/emojier.vala:1117 +msgid "Menu" +msgstr "Menu" + +#: ui/gtk3/emojier.vala:1128 +msgid "Click to view a warning message" +msgstr "Clique para ver uma mensagem de aviso" + +#: ui/gtk3/emojier.vala:1172 +msgid "Loading a Unicode dictionary:" +msgstr "A carregar um dicionário Unicode:" + +#: ui/gtk3/emojier.vala:1418 +#, c-format +msgid "Code point: %s" +msgstr "" + +#: ui/gtk3/emojier.vala:1424 +msgid "Has emoji variants" +msgstr "Tem variantes de emoji" + +#: ui/gtk3/emojier.vala:1591 ui/gtk3/emojier.vala:1604 +#, c-format +msgid "Description: %s" +msgstr "Descrição: %s" + +#: ui/gtk3/emojier.vala:1591 +msgid "None" +msgstr "Nenhum" + +#: ui/gtk3/emojier.vala:1615 +#, c-format +msgid "Annotations: %s" +msgstr "Anotações: %s" + +#: ui/gtk3/emojier.vala:1641 +#, c-format +msgid "Name: %s" +msgstr "Nome: %s" + +#: ui/gtk3/emojier.vala:1649 +#, c-format +msgid "Alias: %s" +msgstr "" + +#: ui/gtk3/emojier.vala:2139 ui/gtk3/ibus-extension-gtk3.desktop.in:3 +#: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 +msgid "Emoji Choice" +msgstr "" + +#: ui/gtk3/emojier.vala:2141 +msgid "Unicode Choice" +msgstr "" + +#: ui/gtk3/emojier.vala:2429 +msgid "" +"Failed to get the current text application. Please re-focus your application." +" E.g. Press Esc key several times to release the emoji typing mode, click " +"your desktop and click your text application again." +msgstr "" + +#: ui/gtk3/emojierapp.vala:58 +msgid "Canceled to choose an emoji." +msgstr "Cancelado para escolher um emoji." + +#: ui/gtk3/emojierapp.vala:93 +msgid "Copied an emoji to your clipboard." +msgstr "Copiado um emoji para a sua área de transferência." + +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ui/gtk3/emojierapp.vala:114 +msgid "\"FONT\" for emoji characters on emoji dialog" +msgstr "" + +#: ui/gtk3/emojierapp.vala:115 +msgid "FONT" +msgstr "" + +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ui/gtk3/emojierapp.vala:120 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" +msgstr "" + +#: ui/gtk3/emojierapp.vala:121 +msgid "LANG" +msgstr "" + +#: ui/gtk3/emojierapp.vala:123 +msgid "Emoji annotations can be match partially" +msgstr "" + +#: ui/gtk3/emojierapp.vala:127 +msgid "Match with the length of the specified integer" +msgstr "" + +#: ui/gtk3/emojierapp.vala:131 +msgid "Match with the condition of the specified integer" +msgstr "" + +#: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 +msgid "IBus Panel" +msgstr "" + +#: ui/gtk3/panel.vala:1095 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "" + +#: ui/gtk3/panel.vala:1099 +msgid "translator-credits" +msgstr "Manuela Silva " + +#: ui/gtk3/panel.vala:1118 +msgid "Preferences" +msgstr "Preferências" + +#: ui/gtk3/panel.vala:1144 +msgid "Restart" +msgstr "Reiniciar" + +#: ui/gtk3/panel.vala:1148 +msgid "Quit" +msgstr "Sair" + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 +msgid "default:LTR" +msgstr "predefinição:LTR" diff --git a/po/pt_BR.po b/po/pt_BR.po index dedafcd02..f055cbe74 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -1,558 +1,3322 @@ -# translation of ibus.master.pt_BR.po to Portuguese -# Gujarati translations for el package. -# Copyright (C) 2010 THE el'S COPYRIGHT HOLDER +# Portuguese (Brazil) translation of ibus. +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2021 Takao Fujiwara # This file is distributed under the same license as the ibus package. # -# Automatically generated, 2010. -# Glaucia Cintra , 2010-2011. +# Translators: +# Arthur Rodrigues Araruna , 2012 +# Automatically generated, 2010 +# Glaucia Freitas , 2013 +# jonataszv , 2014 +# Taylon Silmer , 2011 +# Daniel Lara , 2016. #zanata +# Frederico Henrique Gonçalves Lima , 2017. #zanata +# Jonathan Muttini Topanotti , 2017. #zanata +# Mateus de Melo Santos , 2017. #zanata +# fujiwara , 2018. #zanata +# Cássio Rodrigo Honorato Rodrigues , 2019. #zanata +# Rafael Fontenelle , 2020. +# Henrique Roberto Gattermann Mittelstaedt , 2020. msgid "" msgstr "" -"Project-Id-Version: ibus.master.pt_BR\n" -"Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/list\n" -"POT-Creation-Date: 2011-03-08 12:32+0900\n" -"PO-Revision-Date: 2011-03-22 15:23+0000\n" -"Last-Translator: Glaucia Cintra \n" -"Language-Team: Portuguese (Brazilian) \n" +"Project-Id-Version: ibus 1.5.20\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2019-04-16 17:33+0900\n" +"PO-Revision-Date: 2020-11-30 11:35+0000\n" +"Last-Translator: Henrique Roberto Gattermann Mittelstaedt \n" +"Language-Team: Portuguese (Brazil) \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.11.4\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.3.2\n" -#: ../bus/ibus.desktop.in.h:1 -msgid "IBus" -msgstr "IBus" +#. Translators: Here “Preload” is a verb +#: data/dconf/org.freedesktop.ibus.gschema.xml:11 +msgid "Preload engines" +msgstr "Pré-carregar motores" + +#. Translators: Tooltip for the button “Preload Engines” +#: data/dconf/org.freedesktop.ibus.gschema.xml:13 +msgid "Preload engines during ibus starts up" +msgstr "Carrega motores durante a inicialização do ibus" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:17 +msgid "Engines order" +msgstr "Ordem dos motores" -#: ../bus/ibus.desktop.in.h:2 -msgid "Input Method Framework" -msgstr "Framework do método de entrada" +#: data/dconf/org.freedesktop.ibus.gschema.xml:18 +msgid "Saved engines order in input method list" +msgstr "Ordem dos motores salva na lista de método de entrada" -#: ../bus/ibus.desktop.in.h:3 -msgid "Start IBus Input Method Framework" -msgstr "Iniciar Framework do método de entrada IBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:22 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "Milissegundos de atraso do pop-up para a janela de alternador IME" -#: ../ibus/_config.py.in:39 +#: data/dconf/org.freedesktop.ibus.gschema.xml:23 msgid "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +"Set popup delay milliseconds to show IME switcher window. The default is 400." +" 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not show " +"the window and switch prev/next engines." msgstr "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +"Define o atraso do pop-up em milissegundos para mostrar a janela do " +"comutador IME. O padrão é 400. 0 = Mostra a janela imediatamente. 0 < Atraso " +"em milissegundos. 0 > Não mostra a janela e troca os motores anteriores/" +"próximos." -#: ../ibus/lang.py:41 -msgid "Other" -msgstr "Outros" +#: data/dconf/org.freedesktop.ibus.gschema.xml:27 +msgid "Saved version number" +msgstr "Número da versão salvo" -#: ../ui/gtk/candidatepanel.py:264 -msgid "Previous page" -msgstr "Página anterior" +#: data/dconf/org.freedesktop.ibus.gschema.xml:28 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" +"O número da versão salvo será utilizado para verificar a diferença entre a " +"versão do ibus instalado anteriormente e o da versão atual do ibus." -#: ../ui/gtk/candidatepanel.py:269 -msgid "Next page" -msgstr "Próxima página" +#: data/dconf/org.freedesktop.ibus.gschema.xml:32 +msgid "Latin layouts which have no ASCII" +msgstr "Layouts latinos que não contêm ASCII" -#: ../ui/gtk/main.py:55 +#: data/dconf/org.freedesktop.ibus.gschema.xml:33 +msgid "US layout is appended to the Latin layouts. variant can be omitted." +msgstr "" +"O layout dos EUA é anexado aos layouts Latinos, variantes podem ser omitidas." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:37 +msgid "Use xmodmap" +msgstr "Usar xmodmap" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" -"Some input methods have been installed, removed or updated. Please restart " -"ibus input platform." +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" -"Alguns métodos de entrada foram instalados, removidos ou atualizados. Por " -"favor, reinicie a plataforma de entrada do ibus. " +"Executar xmodmap se .xmodmap ou .Xmodmap existir quando os motores do ibus " +"forem alternados." -#: ../ui/gtk/main.py:59 -msgid "Restart Now" -msgstr "Reinicie Agora" +#: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 +msgid "Use system keyboard layout" +msgstr "Usar o layout de teclado do sistema" -#: ../ui/gtk/main.py:60 -msgid "Later" -msgstr "Mais tarde" +#: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 +msgid "Use system keyboard (XKB) layout" +msgstr "Usa o layout de teclado do sistema (XKB)" -#: ../ui/gtk/panel.py:109 -msgid "IBus input method framework" -msgstr "Framework do método de entrada IBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:47 +msgid "Embed Preedit Text" +msgstr "Embutir texto de pré-edição" -#: ../ui/gtk/panel.py:327 -msgid "Restart" -msgstr "Reinicie" +#: data/dconf/org.freedesktop.ibus.gschema.xml:48 +msgid "Embed Preedit Text in Application Window" +msgstr "Embute texto de pré-edição na janela do aplicativo" -#: ../ui/gtk/panel.py:414 -msgid "Turn off input method" -msgstr "Desligue o método de entrada" +#: data/dconf/org.freedesktop.ibus.gschema.xml:52 +msgid "Use global input method" +msgstr "Usar método de entrada global" -#: ../ui/gtk/panel.py:453 -msgid "No input window" -msgstr "Nenhuma janela de entrada" +#: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 +msgid "Share the same input method among all applications" +msgstr "Compartilha o mesmo método de entrada entre todos os aplicativos" -#: ../ui/gtk/panel.py:484 -msgid "IBus is an intelligent input bus for Linux/Unix." -msgstr "IBus é um bus de entrada inteligente para o Linux/Unix." +#: data/dconf/org.freedesktop.ibus.gschema.xml:57 +msgid "Enable input method by default" +msgstr "Habilitar método de entrada por padrão" -#: ../ui/gtk/panel.py:488 -msgid "translator-credits" -msgstr "créditos-tradutor" +#: data/dconf/org.freedesktop.ibus.gschema.xml:58 +msgid "Enable input method by default when the application gets input focus" +msgstr "" +"Habilita método de entrada por padrão quando o aplicativo obtiver o foco de " +"entradas" -#: ../ui/gtk/languagebar.py:106 -msgid "About the input method" -msgstr "Sobre o método de entrada" +#: data/dconf/org.freedesktop.ibus.gschema.xml:62 +msgid "DConf preserve name prefixes" +msgstr "Prefixos de nome de preservação do DConf" -#: ../ui/gtk/languagebar.py:214 -msgid "Switch input method" -msgstr "Altere o método de entrada" +#: data/dconf/org.freedesktop.ibus.gschema.xml:63 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "Prefixos das chaves do DConf para parar a conversão do nome" -#: ../ui/gtk/languagebar.py:357 ../ui/gtk/engineabout.py:33 -#: ../setup/engineabout.py:33 ../setup/setup.ui.h:16 -msgid "About" -msgstr "Sobre" +#: data/dconf/org.freedesktop.ibus.gschema.xml:70 +msgid "Trigger shortcut keys" +msgstr "Aciona teclas de atalho" -#: ../ui/gtk/languagebar.py:361 -msgid "About the Input Method" -msgstr "A respeito do Método de Entrada" +#: data/dconf/org.freedesktop.ibus.gschema.xml:71 +#: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 +msgid "The shortcut keys for turning input method on or off" +msgstr "As teclas de atalho para ligar ou desligar o método de entrada" -#: ../ui/gtk/engineabout.py:61 ../setup/engineabout.py:61 -#, python-format -msgid "Language: %s\n" -msgstr "Linguagem: %s\n" +#: data/dconf/org.freedesktop.ibus.gschema.xml:75 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "Acionar teclas de atalho para gtk_accelerator_parse" -#: ../ui/gtk/engineabout.py:63 ../setup/engineabout.py:63 -#, python-format -msgid "Keyboard layout: %s\n" -msgstr "Desenho do teclado: %s\n" +#: data/dconf/org.freedesktop.ibus.gschema.xml:80 +msgid "Enable shortcut keys" +msgstr "Habilitar teclas de atalho" -#: ../ui/gtk/engineabout.py:65 ../setup/engineabout.py:65 -#, python-format -msgid "Author: %s\n" -msgstr "Autor: %s\n" +#: data/dconf/org.freedesktop.ibus.gschema.xml:81 +msgid "The shortcut keys for turning input method on" +msgstr "As teclas de atalho para ligar o método de entrada" -#: ../ui/gtk/engineabout.py:67 ../setup/engineabout.py:67 -msgid "Description:\n" -msgstr "Descrição:\n" +#: data/dconf/org.freedesktop.ibus.gschema.xml:85 +msgid "Disable shortcut keys" +msgstr "Desabilitar teclas de atalho" -#: ../setup/main.py:102 -msgid "trigger" -msgstr "trigger" +#: data/dconf/org.freedesktop.ibus.gschema.xml:86 +msgid "The shortcut keys for turning input method off" +msgstr "As teclas de atalho para desligar o método de entrada" -#: ../setup/main.py:113 -msgid "enable" -msgstr "habilitar" +#: data/dconf/org.freedesktop.ibus.gschema.xml:90 +#: data/dconf/org.freedesktop.ibus.gschema.xml:95 +msgid "Next engine shortcut keys" +msgstr "Atalhos de teclado do próximo motor" -#: ../setup/main.py:124 -msgid "disable" -msgstr "desabiltar" +#: data/dconf/org.freedesktop.ibus.gschema.xml:91 +#: data/dconf/org.freedesktop.ibus.gschema.xml:96 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "" +"As teclas de atalho para alteração ao próximo método de entrada na lista" -#: ../setup/main.py:135 -msgid "next input method" -msgstr "próximo método de entrada" +#: data/dconf/org.freedesktop.ibus.gschema.xml:100 +#: data/dconf/org.freedesktop.ibus.gschema.xml:105 +msgid "Prev engine shortcut keys" +msgstr "Teclas de atalho do motor anterior" -#: ../setup/main.py:146 -msgid "previous input method" -msgstr "método de entrada anterior" +#: data/dconf/org.freedesktop.ibus.gschema.xml:101 +#: data/dconf/org.freedesktop.ibus.gschema.xml:106 +msgid "The shortcut keys for switching to the previous input method" +msgstr "Teclas de atalho para alteração ao método de entrada anterior" -#: ../setup/main.py:286 -msgid "IBus daemon is not started. Do you want to start it now?" -msgstr "O IBus daemon não foi inciado. Você deseja iniciá-lo agora?" +#: data/dconf/org.freedesktop.ibus.gschema.xml:112 +msgid "Auto hide" +msgstr "Ocultar automaticamente" -#: ../setup/main.py:301 +#: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" -"IBus has been started! If you can not use IBus, please add below lines in $HOME/.bashrc, and relogin your desktop.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" msgstr "" -"IBus has been started! If you can not use IBus, please add below lines in $HOME/.bashrc, and relogin your desktop.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +"O comportamento do painel de propriedades. 0 = Não mostrar, 1 = Ocultar " +"automaticamente, 2 = Sempre mostrar" -#: ../setup/main.py:316 -#, python-format -msgid "Select keyboard shortcut for %s" -msgstr "Selecione o atalho do teclado para %s" +#: data/dconf/org.freedesktop.ibus.gschema.xml:117 +#: data/dconf/org.freedesktop.ibus.gschema.xml:121 +msgid "Language panel position" +msgstr "Posição do painel de idioma" -#: ../setup/keyboardshortcut.py:52 -msgid "Keyboard shortcuts" -msgstr "Atalhos do teclado" +#: data/dconf/org.freedesktop.ibus.gschema.xml:125 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "Siga o cursor de entrada no caso do painel estar sendo sempre exibido" -#: ../setup/keyboardshortcut.py:63 -msgid "Key code:" -msgstr "Código de tecla:" +#: data/dconf/org.freedesktop.ibus.gschema.xml:126 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" +"Se verdadeiro, o painel seguirá o cursor de entrada no caso do painel estar " +"sendo sempre exibido. Se falso, o painel é exibido em uma localização fixa." -#: ../setup/keyboardshortcut.py:78 -msgid "Modifiers:" -msgstr "Modificadores:" +#: data/dconf/org.freedesktop.ibus.gschema.xml:130 +msgid "The milliseconds to show property panel" +msgstr "Os milissegundos para exibir as propriedades do painel" -#: ../setup/keyboardshortcut.py:231 +#: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" -"Please press a key (or a key combination).\n" -"The dialog will be closed when the key is released." +"The milliseconds to show property panel after focus-in or properties are " +"changed." msgstr "" -"Por favor pressione uma tecla (ou uma combinação de tecla).\n" -"O diálogo será encerrado quando a tecla for liberada." +"Os milissegundos para exibir as propriedades do painel após obter foco ou as " +"propriedades foram alteradas." -#: ../setup/keyboardshortcut.py:233 -msgid "Please press a key (or a key combination)" -msgstr "Por favor pressione uma tecla (ou uma combinação de tecla)" +#: data/dconf/org.freedesktop.ibus.gschema.xml:135 +msgid "Orientation of lookup table" +msgstr "Orientação da tabela de pesquisa" -#: ../setup/enginecombobox.py:120 -msgid "Select an input method" -msgstr "Selecione um método de entrada" +#: data/dconf/org.freedesktop.ibus.gschema.xml:136 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "Orientação da tabela de pesquisa. 0 = Horizontal, 1 = Vertical" -#. create im name & icon column -#: ../setup/enginetreeview.py:64 ../setup/setup.ui.h:33 -msgid "Input Method" -msgstr "Método de Entrada" +#: data/dconf/org.freedesktop.ibus.gschema.xml:140 +#: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 +#: setup/setup.ui:475 +msgid "Show icon on system tray" +msgstr "Mostrar um ícone na área de notificação" -#: ../setup/enginetreeview.py:92 -msgid "Kbd" -msgstr "Kbd" +#: data/dconf/org.freedesktop.ibus.gschema.xml:145 +msgid "Show input method name" +msgstr "Mostrar nome do método de entrada" -#: ../setup/ibus-setup.desktop.in.h:1 ../setup/setup.ui.h:32 -msgid "IBus Preferences" -msgstr "Preferências do IBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 +msgid "Show input method name on language bar" +msgstr "Mostra o nome do método de entrada na barra de idiomas" -#: ../setup/ibus-setup.desktop.in.h:2 -msgid "Set IBus Preferences" -msgstr "Definir Preferências do IBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:150 +msgid "RGBA value of XKB icon" +msgstr "Valor RGBA de um ícone XKB" -#: ../data/ibus.schemas.in.h:1 -msgid "Auto hide" -msgstr "Ocultar Automaticamente" +#: data/dconf/org.freedesktop.ibus.gschema.xml:151 +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " +"'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " +"to 255 or percentage values in the range 0% to 100%, and 'a' is a floating " +"point value in the range 0 to 1 of the alpha." +msgstr "" +"O ícone XKB exibe a cadeia de caracteres de leiaute e a cadeira de " +"caracteres é apresentada pelo valor RGBA. O valor RGBA pode ser 1. um nome " +"de cor do X11, 2. um valor hexa no formato '#rrggbb' aonde 'r', 'g' e 'b' " +"são dígitos hexa para o red (vermelho), green (verde), e blue (azul), 3. uma " +"cor RGB no formato 'rgb(r,g,b)' ou 4. Uma cor RGBA no formato " +"'rgba(r,g,b,a)' aonde 'r', 'g', e 'b' são ou inteiros entre 0 e 255 ou " +"valores em porcentagem entre 0% e 100%, e 'a' é um valor em ponto flutuante " +"entre 0 e 1 do alfa." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:155 +msgid "The milliseconds to show the panel icon for a property" +msgstr "Os milissegundos para exibir o ícone do painel para uma propriedade" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:156 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" +"Os milissegundos para exibir o ícone do painel através do ícone do motor " +"para um ícone de propriedade sempre que motores são alternados se a " +"propriedade está especificada pelo valor de icon-prop-key em IBusEngineDesc. " +"Se o valor é 0, não há tempo de espera e o ícone da propriedade será exibido " +"imediatamente." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:160 +msgid "Use custom font" +msgstr "Usar fonte personalizada" -#: ../data/ibus.schemas.in.h:2 +#: data/dconf/org.freedesktop.ibus.gschema.xml:161 +msgid "Use custom font name for language panel" +msgstr "Usa o nome de fonte personalizada para o painel de idiomas" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:165 +#: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" -msgstr "Fonte padrão" +msgstr "Fonte personalizada" -#: ../data/ibus.schemas.in.h:3 +#: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" -msgstr "Nome da fonte padrão para o painel de linguagem" +msgstr "Nome de fonte personalizada para o painel de idiomas" -#: ../data/ibus.schemas.in.h:4 -msgid "Disable shortcut keys" -msgstr "Desabilitar teclas de atalho" +#: data/dconf/org.freedesktop.ibus.gschema.xml:173 +msgid "Unicode shortcut keys for gtk_accelerator_parse" +msgstr "Teclas de atalho Unicode para gtk_accelerator_parse" -#: ../data/ibus.schemas.in.h:5 -msgid "Embed Preedit Text" -msgstr "Embutir Texto de Pré-Edição " +#: data/dconf/org.freedesktop.ibus.gschema.xml:174 +msgid "The shortcut keys for turning Unicode typing on or off" +msgstr "As teclas de talho para ligar ou desligar digitação em Unicode" -#: ../data/ibus.schemas.in.h:6 -msgid "Embed Preedit Text in Application Window" -msgstr "Embutir Texto de Pré-edição na Janela do Aplicativo" +#: data/dconf/org.freedesktop.ibus.gschema.xml:178 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "Teclas de atalho de emoji para o gtk_accelerator_parse" -#: ../data/ibus.schemas.in.h:7 -msgid "Enable input method by default" -msgstr "Habilitar método de entrada por padrão" +#: data/dconf/org.freedesktop.ibus.gschema.xml:179 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "As teclas de atalho para ligar ou desligar a digitação de emoji" -#: ../data/ibus.schemas.in.h:8 -msgid "Enable input method by default when the application gets input focus" -msgstr "" -"Habilitar método de entrada por padrão quando o aplicativo obtiver o foco de" -" entradas" +#: data/dconf/org.freedesktop.ibus.gschema.xml:184 +msgid "Custom font name for emoji characters on emoji dialog" +msgstr "Nome da fonte customizada para caracteres emoji no diálogo emoji" -#: ../data/ibus.schemas.in.h:9 -msgid "Enable shortcut keys" -msgstr "Habilitar teclas de atalho" +#: data/dconf/org.freedesktop.ibus.gschema.xml:188 +msgid "Default language for emoji dictionary" +msgstr "Idioma padrão para o dicionário emoji" -#: ../data/ibus.schemas.in.h:10 -msgid "Language panel position" -msgstr "Posição do Painel de Linguagem" +#: data/dconf/org.freedesktop.ibus.gschema.xml:189 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict ." +msgstr "" +"Escolha o idioma padrão para os dicionários emoji no diálogo emoji. O valor " +"$lang é aplicado em /usr/share/ibus/dicts/emoji-$lang.dict ." -#: ../data/ibus.schemas.in.h:11 -msgid "Next engine shortcut keys" -msgstr "Próximo mecanismo de teclas de atalho" +#: data/dconf/org.freedesktop.ibus.gschema.xml:193 +msgid "favorite emoji list on emoji dialog" +msgstr "lista de emoji favoritos no diálogo emoji" -#: ../data/ibus.schemas.in.h:12 -msgid "Orientation of lookup table" -msgstr "Orientação da tabela de pesquisa" +#: data/dconf/org.freedesktop.ibus.gschema.xml:194 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "" +"Você pode exibir os emojis favoritos na lista de emoji se essa lista tiver " +"algum caractere." -#: ../data/ibus.schemas.in.h:13 -msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" -msgstr "Orientação da Tabela de Pesquisa. 0 = Horizontal, 1 = Vertical " +#: data/dconf/org.freedesktop.ibus.gschema.xml:198 +msgid "favorite emoji annotation list on emoji dialog" +msgstr "Lista de anotações emoji favorita no diálogo emoji" -#: ../data/ibus.schemas.in.h:14 -msgid "Preload engines" -msgstr "Mecanismos de carregamento" +#: data/dconf/org.freedesktop.ibus.gschema.xml:199 +msgid "You can assign an annotation for a favorite emoji in this list." +msgstr "Você pode atribuir uma anotação para um emoji favorito nesta lista." -#: ../data/ibus.schemas.in.h:15 -msgid "Preload engines during ibus starts up" -msgstr "Mecanismos de pré-carregamento durante a inicialização do ibus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:203 +msgid "Whether emoji annotations can be match partially or not" +msgstr "Se as anotações emoji podem ser combinadas parcialmente ou não" -#: ../data/ibus.schemas.in.h:16 -msgid "Prev engine shortcut keys" -msgstr "Visualização do mecanismo das teclas de atalho " +#: data/dconf/org.freedesktop.ibus.gschema.xml:204 +msgid "" +"Whether emoji annotations can be matched with a partial string instead of " +"the exact match or not." +msgstr "" +"Se as anotações emoji podem ser correspondidas com uma string parcial em vez " +"da correspondência exata ou não." -#: ../data/ibus.schemas.in.h:17 ../setup/setup.ui.h:42 -msgid "Share the same input method among all applications" -msgstr "Compartilhar o mesmo método de entrada entre todos os aplicativos" +#: data/dconf/org.freedesktop.ibus.gschema.xml:208 +msgid "Match emoji annotations with the specified length" +msgstr "Corresponder anotações emoji com o comprimento especificado" -#: ../data/ibus.schemas.in.h:18 ../setup/setup.ui.h:43 -msgid "Show icon on system tray" -msgstr "Apresenta um ícone na bandeja do sistema" +#: data/dconf/org.freedesktop.ibus.gschema.xml:209 +msgid "" +"Match emoji annotations partially with more than the specified number of " +"characters instead of the exact match." +msgstr "" +"Combina as anotações emoji parcialmente com mais do que o número " +"especificado de caracteres, em vez da correspondência exata." -#: ../data/ibus.schemas.in.h:19 -msgid "Show input method name" -msgstr "Apresenta o nome do método de entrada" +#: data/dconf/org.freedesktop.ibus.gschema.xml:213 +msgid "Choose a condition to match emoji annotations partially" +msgstr "" +"Escolher uma condição para corresponder parcialmente às anotações de emoji" -#: ../data/ibus.schemas.in.h:20 ../setup/setup.ui.h:45 -msgid "Show input method name on language bar" -msgstr "Apresenta o nome do método de entrada na barra de linguagem" +#: data/dconf/org.freedesktop.ibus.gschema.xml:214 +msgid "" +"Choose one of the following conditions to match emoji annotations partially: " +"0 == Prefix match, 1 == Suffix match, 2 == Containing match" +msgstr "" +"Escolha uma das seguintes condições para corresponder parcialmente às " +"anotações de emoji: 0 == Correspondência de prefixo, 1 == Correspondência de " +"sufixo, 2 == Correspondência de correspondência" -#: ../data/ibus.schemas.in.h:21 +#: data/dconf/org.freedesktop.ibus.gschema.xml:218 +msgid "Load the emoji data at the time of startup" +msgstr "Carregar os dados emoji no momento da inicialização" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" -"The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = " -"Always show" +"Load the emoji data at the time of startup if true. About 10MB memory is " +"needed to load the data. Load the emoji data when open the emoji dialog at " +"the beginning if false." msgstr "" -"O comportamento do painel de linguagem. 0 = Embutido no menu, 1 = Ocultar " -"automaticamente, 2 = Apresentar sempre" +"Carrega os dados de emoji no momento da inicialização, se verdadeiro. São " +"necessários cerca de 10 MB de memória para carregar os dados. Carrega os " +"dados do emoji quando abrir a caixa de diálogo emoji no início, se falso." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:223 +msgid "Load the Unicode data at the time of startup" +msgstr "Carregar os dados Unicode no momento da inicialização" -#: ../data/ibus.schemas.in.h:22 +#: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" -"The position of the language panel. 0 = Top left corner, 1 = Top right " -"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +"Load the Unicode data at the time of startup if true. About 15MB memory is " +"needed to load the data. Load the Unicode data when open the emoji dialog at " +"the beginning if false. The Unicode data is always loaded after the emoji " +"data is loaded even if true." msgstr "" -"A posição do painel de linguagem. 0 = Canto esquerdo superior, 1 = Canto " -"direito superior, 2 = canto esquerdo inferior, 3 = canto direito inferior, 4" -" = Padrão " +"Carrega os dados Unicode no momento da inicialização, se verdadeiro. São " +"necessários cerca de 15 MB de memória para carregar os dados. Carrega os " +"dados Unicode quando abrir a caixa de diálogo emoji no início, se falso. Os " +"dados Unicode sempre são carregados após os dados emoji serem carregados, " +"mesmo que sejam verdadeiros." -#: ../data/ibus.schemas.in.h:23 -msgid "The shortcut keys for switching to the next input method in the list" +#: ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." msgstr "" -"As teclas de atalho para alteração ao próximo método de entrada na lista " +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." -#: ../data/ibus.schemas.in.h:24 -msgid "The shortcut keys for switching to the previous input method" -msgstr "Teclas de atalho para alteração ao método de entrada anterior" +#: ibus/lang.py:41 src/ibusutil.c:198 +msgid "Other" +msgstr "Outros" -#: ../data/ibus.schemas.in.h:25 -msgid "The shortcut keys for turning input method off" -msgstr "As teclas de atalho para desligar o método de entrada" +#: setup/emojilang.py:67 +msgid "Select a language" +msgstr "Selecione um idioma" -#: ../data/ibus.schemas.in.h:26 -msgid "The shortcut keys for turning input method on" -msgstr "As teclas de atalho para ligar o método de entrada" +#: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 +#: setup/main.py:560 +msgid "_Cancel" +msgstr "_Cancelar" -#: ../data/ibus.schemas.in.h:27 ../setup/setup.ui.h:51 -msgid "The shortcut keys for turning input method on or off" -msgstr "As teclas de atalho para ligar ou desligar o método de entrada" +#: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 +msgid "_OK" +msgstr "_OK" -#: ../data/ibus.schemas.in.h:28 -msgid "Trigger shortcut keys" -msgstr "Realiza o trigger nas teclas de atalho" +#: setup/emojilang.py:235 setup/enginedialog.py:205 +msgid "More…" +msgstr "Mais…" -#: ../data/ibus.schemas.in.h:29 -msgid "Use custom font" -msgstr "Usa a fonte padrão" +#: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 +msgid "About" +msgstr "Sobre" -#: ../data/ibus.schemas.in.h:30 -msgid "Use custom font name for language panel" -msgstr "Usa o nome da fonte padrão para o painel de linguagem" +#: setup/engineabout.py:40 setup/setup.ui:1401 +msgid "_Close" +msgstr "_Fechar" -#: ../data/ibus.schemas.in.h:31 -msgid "Use global input method" -msgstr "Use o método de entrada global" +#: setup/engineabout.py:72 +#, python-format +msgid "Language: %s\n" +msgstr "Idioma: %s\n" -#: ../data/ibus.schemas.in.h:32 ../setup/setup.ui.h:55 -msgid "Use system keyboard (XKB) layout" -msgstr "Usa o desenho do teclado do sistema (XKB)" +#: setup/engineabout.py:75 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "Layout do teclado: %s\n" -#: ../data/ibus.schemas.in.h:33 ../setup/setup.ui.h:56 -msgid "Use system keyboard layout" -msgstr "Usa o desenho do teclado do sistema" +#: setup/engineabout.py:78 +#, python-format +msgid "Author: %s\n" +msgstr "Autor: %s\n" -#: ../setup/setup.ui.h:1 -msgid "..." -msgstr "..." +#: setup/engineabout.py:81 +msgid "Description:\n" +msgstr "Descrição:\n" -#: ../setup/setup.ui.h:2 -msgid "Font and Style" -msgstr "Fonte e Estilo" +#: setup/enginecombobox.py:139 setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "Selecione um método de entrada" -#: ../setup/setup.ui.h:3 -msgid "Global input method settings" -msgstr "Configurações de Método de Entrada Global " +#. add button +#: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 +msgid "_Add" +msgstr "_Adicionar" -#: ../setup/setup.ui.h:4 -msgid "Keyboard Layout" -msgstr "Desenho do Teclado" +#. create im name & icon column +#: setup/enginetreeview.py:69 setup/setup.ui:838 +msgid "Input Method" +msgstr "Método de entrada" -#: ../setup/setup.ui.h:5 -msgid "Keyboard Shortcuts" -msgstr "Atalhos do Teclado" +#: setup/enginetreeview.py:96 +msgid "Kbd" +msgstr "Kbd" -#: ../setup/setup.ui.h:6 -msgid "Startup" -msgstr "Inicialização" +#: setup/ibus-setup.desktop:3 setup/setup.ui:69 +msgid "IBus Preferences" +msgstr "Preferências do IBus" + +#: setup/ibus-setup.desktop:4 +msgid "Set IBus Preferences" +msgstr "Definir Preferências do IBus" + +#: setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "Atalhos do teclado" + +#: setup/keyboardshortcut.py:67 +msgid "Key code:" +msgstr "Código de tecla:" + +#: setup/keyboardshortcut.py:82 +msgid "Modifiers:" +msgstr "Modificadores:" + +#. apply button +#: setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "_Aplicar" + +#. delete button +#: setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "_Excluir" -#: ../setup/setup.ui.h:7 +#: setup/keyboardshortcut.py:252 msgid "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." msgstr "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" +"Pressione uma tecla (ou uma combinação de teclas).\n" +"O diálogo será encerrado quando a tecla for liberada." -#: ../setup/setup.ui.h:14 -msgid "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." +#: setup/keyboardshortcut.py:255 +msgid "Please press a key (or a key combination)" +msgstr "Pressione uma tecla (ou uma combinação de teclas)" + +#: setup/main.py:121 setup/main.py:588 +msgid "Use shortcut with shift to switch to the previous input method" msgstr "" -"O método de entrada padrão é o número um da lista. Você pode usar " -"os botões para mover o cursor para cima e para baixo para alterá-" -"lo." +"Utilize o atalho com o shift para mudar para o método de entrada anterior" -#: ../setup/setup.ui.h:17 -msgid "Add the selected input method into the enabled input methods" +#: setup/main.py:515 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "O daemon IBus não está em execução. Você deseja iniciá-lo?" + +#: setup/main.py:536 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" msgstr "" -"Adicione o método de entrada selecionado nos métodos de entrada ativados" +"O IBus foi iniciado! Se você não puder utilizar o IBus, adicione as " +"seguintes linhas ao seu $HOME/.bashrc; depois autentique-se novamente no seu " +"desktop.\n" +"export GTK_IM_MODULE=ibus\n" +"export XMODIFIERS=@im=ibus\n" +"export QT_IM_MODULE=ibus" + +#. Translators: %d == 5 currently +#: setup/main.py:550 +#, python-format +msgid "IBus daemon could not be started in %d seconds." +msgstr "O daemon do IBus não pôde ser iniciado em %d segundos." -#: ../setup/setup.ui.h:18 -msgid "Advanced" -msgstr "Avançado" +#: setup/main.py:562 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "Selecione o atalho de teclado para %s" -#: ../setup/setup.ui.h:19 -msgid "Always" -msgstr "Sempre" +#. Translators: Title of the window +#: setup/main.py:564 +msgid "switching input methods" +msgstr "mudando métodos de entrada" + +#: setup/setup.ui:11 +msgid "Horizontal" +msgstr "Horizontal" -#: ../setup/setup.ui.h:20 +#: setup/setup.ui:14 +msgid "Vertical" +msgstr "Vertical" + +#: setup/setup.ui:25 +msgid "Top left corner" +msgstr "Canto superior esquerdo" + +#: setup/setup.ui:28 +msgid "Top right corner" +msgstr "Canto superior direito" + +#: setup/setup.ui:31 msgid "Bottom left corner" -msgstr "Canto esquerdo inferior" +msgstr "Canto inferior esquerdo" -#: ../setup/setup.ui.h:21 +#: setup/setup.ui:34 msgid "Bottom right corner" -msgstr "Canto direito superior" - -#: ../setup/setup.ui.h:22 -msgid "Candidates orientation:" -msgstr "Orientação dos candidatos:" +msgstr "Canto inferior direito" -#: ../setup/setup.ui.h:23 +#: setup/setup.ui:37 msgid "Custom" -msgstr "Padrão" +msgstr "Personalizado" -#: ../setup/setup.ui.h:24 -msgid "Disable:" -msgstr "Desabilitar:" +#: setup/setup.ui:48 +msgid "Do not show" +msgstr "Não mostrar" -#: ../setup/setup.ui.h:25 -msgid "Embed preedit text in application window" -msgstr "Embutir texto de pré-edição na janela do aplicativo " +#: setup/setup.ui:51 +msgid "Hide automatically" +msgstr "Ocultar automaticamente" -#: ../setup/setup.ui.h:26 -msgid "Embed the preedit text of input method in the application window" +#: setup/setup.ui:54 +msgid "Always" +msgstr "Sempre" + +#: setup/setup.ui:113 +msgid "The shortcut keys for switching to next input method in the list" msgstr "" -"Embutir o texto de pré-edição do método de entrada na janela do aplicativo" +"As teclas de atalho para alteração ao próximo método de entrada na lista" -#: ../setup/setup.ui.h:27 -msgid "Embedded in menu" -msgstr "Embutido no menu" +#: setup/setup.ui:115 +msgid "Next input method:" +msgstr "Próximo método de entrada:" -#: ../setup/setup.ui.h:28 +#: setup/setup.ui:127 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "" +"Teclas de atalho para alteração ao método de entrada anterior da lista" + +#: setup/setup.ui:129 +msgid "Previous input method:" +msgstr "Método de entrada anterior:" + +#: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 +#: setup/setup.ui:903 setup/setup.ui:957 +msgid "..." +msgstr "..." + +#: setup/setup.ui:226 msgid "Enable or disable:" msgstr "Ativa ou desativa:" -#: ../setup/setup.ui.h:29 +#: setup/setup.ui:238 msgid "Enable:" msgstr "Habilitar:" -#: ../setup/setup.ui.h:30 -msgid "General" -msgstr "Geral" +#: setup/setup.ui:291 +msgid "Disable:" +msgstr "Desabilitar:" -#: ../setup/setup.ui.h:31 -msgid "Horizontal" -msgstr "Horizontal" +#: setup/setup.ui:345 setup/setup.ui:983 +msgid "Keyboard Shortcuts" +msgstr "Atalhos de Teclado" -#: ../setup/setup.ui.h:34 +#: setup/setup.ui:374 +msgid "Set the orientation of candidates in lookup table" +msgstr "Configure a orientação dos candidatos na tabela de pesquisa" + +#: setup/setup.ui:376 +msgid "Candidates orientation:" +msgstr "Orientação dos candidatos:" + +#: setup/setup.ui:407 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "" +"Configure o comportamento do ibus para como mostrar ou ocultar a barra de " +"idiomas" + +#: setup/setup.ui:409 +msgid "Show property panel:" +msgstr "Mostrar painel de propriedades:" + +#: setup/setup.ui:423 msgid "Language panel position:" -msgstr "Posição do Painel de Linguagem:" +msgstr "Posição do painel de idiomas:" -#: ../setup/setup.ui.h:35 -msgid "Move down the selected input method in the enabled input methods" +#: setup/setup.ui:494 +msgid "Show input method's name on language bar when check the checkbox" msgstr "" -"Mova o método de entrada selecionado para baixo nos métodos de entrada " -"ativados" +"Mostra o nome do método de entrada na barra de idioma quando selecionando a " +"caixa de seleção" -#: ../setup/setup.ui.h:36 -msgid "Move up the selected input method in the enabled input methods list" +#: setup/setup.ui:508 +msgid "Embed preedit text in application window" +msgstr "Embutir texto de pré-edição na janela do aplicativo" + +#: setup/setup.ui:513 +msgid "Embed the preedit text of input method in the application window" msgstr "" -"Mova para cima o método de entrada selecionado na lista dos métodos de " -"entrada" +"Embute o texto de pré-edição do método de entrada na janela do aplicativo" -#: ../setup/setup.ui.h:37 -msgid "Next input method:" -msgstr "Próximo método de entrada:" +#: setup/setup.ui:527 +msgid "Use custom font:" +msgstr "Usar a fonte personalizada:" -#: ../setup/setup.ui.h:38 -msgid "Previous input method:" -msgstr "Método de entrada anterior:" +#: setup/setup.ui:562 setup/setup.ui:1156 +msgid "Font and Style" +msgstr "Fonte e estilo" + +#: setup/setup.ui:579 +msgid "General" +msgstr "Geral" + +#: setup/setup.ui:671 +msgid "Add the selected input method into the enabled input methods" +msgstr "" +"Adiciona o método de entrada selecionado nos métodos de entrada ativados" -#: ../setup/setup.ui.h:39 +#: setup/setup.ui:682 +msgid "_Remove" +msgstr "_Remover" + +#: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "" "Remova o método de entrada selecionado a partir dos métodos de entrada " "ativados" -#: ../setup/setup.ui.h:40 -msgid "Set the behavior of ibus how to show or hide language bar" +#: setup/setup.ui:700 +msgid "_Up" +msgstr "A_cima" + +#: setup/setup.ui:707 +msgid "Move up the selected input method in the enabled input methods list" msgstr "" -"Configure o comportamento do ibus para como demonstrar ou ocultar a barra de" -" linguagem" +"Move para cima o método de entrada selecionado na lista dos métodos de " +"entrada" -#: ../setup/setup.ui.h:41 -msgid "Set the orientation of candidates in lookup table" -msgstr "Configure a orientação dos candidatos na tabela de observação" +#: setup/setup.ui:718 +msgid "_Down" +msgstr "A_baixo" -#: ../setup/setup.ui.h:44 +#: setup/setup.ui:725 +msgid "Move down the selected input method in the enabled input methods" +msgstr "" +"Move o método de entrada selecionado para baixo nos métodos de entrada " +"ativados" + +#: setup/setup.ui:736 +msgid "_About" +msgstr "_Sobre" + +#: setup/setup.ui:743 msgid "Show information of the selected input method" -msgstr "Apresente a informação do método de entrada selecionado" +msgstr "Mostra informações do método de entrada selecionado" -#: ../setup/setup.ui.h:46 -msgid "Show input method's name on language bar when check the checkbox" +#: setup/setup.ui:754 +msgid "_Preferences" +msgstr "_Preferências" + +#: setup/setup.ui:761 +msgid "Show setup of the selected input method" +msgstr "Mostra configuração do método de entrada selecionado" + +#: setup/setup.ui:812 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" +"O método de entrada ativo pode ser alternado com os selecionados " +"na lista acima pressionando as teclas do atalho de teclado ou clicando no " +"ícone do painel." + +#: setup/setup.ui:873 +msgid "" +"The shortcut keys to enable conversions of emoji annotations or Unicode " +"names" +msgstr "" +"As teclas de atalho para habilitar as conversões das anotações emoji ou " +"nomes Unicode" + +#: setup/setup.ui:875 +msgid "Emoji annotation:" +msgstr "Anotações emoji:" + +#: setup/setup.ui:927 +msgid "The shortcut keys to enable Unicode code point conversions" msgstr "" -"Apresente o nome do método de entrada na barra de linguagem quando " -"selecionando a caixa de seleção" +"Os atalhos de teclado para habilita conversões de ponto de código Unicode" -#: ../setup/setup.ui.h:47 -msgid "Show language panel:" -msgstr "Apresente o painel de linguagem:" +#: setup/setup.ui:929 +msgid "Unicode code point:" +msgstr "Ponto de código Unicode:" -#: ../setup/setup.ui.h:48 +#: setup/setup.ui:1013 +msgid "Set a font of Unicode candidates on the emoji dialog" +msgstr "Define uma fonte de candidatos Unicode no diálogo de emojis" + +#: setup/setup.ui:1015 +msgid "Unicode font:" +msgstr "Fonte Unicode:" + +#: setup/setup.ui:1038 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "Define um idioma de anotações emoji no diálogo de emojis" + +#: setup/setup.ui:1040 +msgid "Emoji annotation language:" +msgstr "Idioma de anotação de emoji:" + +#: setup/setup.ui:1062 +msgid "" +"Match emoji annotations partially with the following condition and more than " +"the number of characters:" +msgstr "" +"Combinar as anotações de emoji parcialmente com a seguinte condição e mais " +"que o número de caracteres:" + +#: setup/setup.ui:1067 +msgid "" +"If emoji annotations can be matched with a partial string instead of the " +"exact match" +msgstr "" +"Se as anotações de emoji puderem corresponder a uma sequência parcial, em " +"vez da correspondência exata" + +#: setup/setup.ui:1101 +msgid "Prefix match" +msgstr "Correspondência de prefixo" + +#: setup/setup.ui:1115 +msgid "Suffix match" +msgstr "Correspondência de sufixo" + +#: setup/setup.ui:1130 +msgid "Containing match" +msgstr "Correspondência de conteúdo" + +#: setup/setup.ui:1176 +msgid "Emoji" +msgstr "Emoji" + +#: setup/setup.ui:1230 +msgid "Keyboard Layout" +msgstr "Layout do teclado" + +#: setup/setup.ui:1278 +msgid "Global input method settings" +msgstr "Configurações globais de método de entrada" + +#: setup/setup.ui:1298 +msgid "Advanced" +msgstr "Avançado" + +#: setup/setup.ui:1317 +msgid "" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" +msgstr "" +"IBus\n" +"O barramento de entrada inteligente\n" +"Página inicial: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" + +#: setup/setup.ui:1341 msgid "Start ibus on login" -msgstr "Inicie o ibus na conexão " +msgstr "Iniciar o ibus ao iniciar a sessão" -#: ../setup/setup.ui.h:49 -msgid "The shortcut keys for switching to next input method in the list" +#: setup/setup.ui:1358 +msgid "Startup" +msgstr "Inicialização" + +#: src/ibusemojigen.h:30 +msgid "Activities" +msgstr "Atividades" + +#: src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "Animais & natureza" + +#: src/ibusemojigen.h:32 +msgid "Component" +msgstr "Componente" + +#: src/ibusemojigen.h:33 +msgid "Flags" +msgstr "Bandeiras" + +#: src/ibusemojigen.h:34 +msgid "Food & Drink" +msgstr "Comida & bebida" + +#: src/ibusemojigen.h:35 +msgid "Objects" +msgstr "Objetos" + +#: src/ibusemojigen.h:36 +msgid "People & Body" +msgstr "Pessoa & corpo" + +#: src/ibusemojigen.h:37 +msgid "Smileys & Emotion" +msgstr "Smileys & emoticon" + +#: src/ibusemojigen.h:38 +msgid "Symbols" +msgstr "Símbolos" + +#: src/ibusemojigen.h:39 +msgid "Travel & Places" +msgstr "Viagem & lugares" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:33 +msgid "Basic Latin" +msgstr "Latim básico" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:37 +msgid "Latin-1 Supplement" +msgstr "Latim-1 suplemento" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:41 +msgid "Latin Extended-A" +msgstr "Latim estendido A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:45 +msgid "Latin Extended-B" +msgstr "Latim estendido B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:49 +msgid "IPA Extensions" +msgstr "Extensões IPA" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:53 +msgid "Spacing Modifier Letters" +msgstr "Letras modificadoras de espaçamento" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:57 +msgid "Combining Diacritical Marks" +msgstr "Marcas diacríticas combinadas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:61 +msgid "Greek and Coptic" +msgstr "Grego e Copta" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:65 +msgid "Cyrillic" +msgstr "Cirílico" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:69 +msgid "Cyrillic Supplement" +msgstr "Suplemento cirílico" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:73 +msgid "Armenian" +msgstr "Armênio" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:77 +msgid "Hebrew" +msgstr "Hebraico" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:81 +msgid "Arabic" +msgstr "Árabe" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:85 +msgid "Syriac" +msgstr "Siríaco" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:89 +msgid "Arabic Supplement" +msgstr "Suplemento árabe" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:93 +msgid "Thaana" +msgstr "Thaana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:97 +msgid "NKo" +msgstr "N'Ko" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:101 +msgid "Samaritan" +msgstr "Samaritano" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:105 +msgid "Mandaic" +msgstr "Mandaico" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:109 +msgid "Syriac Supplement" +msgstr "Suplemento siríaco" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:113 +msgid "Arabic Extended-A" +msgstr "Árabe estendido A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:117 +msgid "Devanagari" +msgstr "Devanágari" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:121 +msgid "Bengali" +msgstr "Bengalês" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:125 +msgid "Gurmukhi" +msgstr "Gurmukhi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:129 +msgid "Gujarati" +msgstr "Guzerate" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:133 +msgid "Oriya" +msgstr "Oriá" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:137 +msgid "Tamil" +msgstr "Tâmil" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:141 +msgid "Telugu" +msgstr "Télugo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:145 +msgid "Kannada" +msgstr "Canarês" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:149 +msgid "Malayalam" +msgstr "Malaiala" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:153 +msgid "Sinhala" +msgstr "Cingalês" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:157 +msgid "Thai" +msgstr "Tailandês" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:161 +msgid "Lao" +msgstr "Laosiano" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:165 +msgid "Tibetan" +msgstr "Tibetano" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:169 +msgid "Myanmar" +msgstr "Birmanês" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:173 +msgid "Georgian" +msgstr "Georgiano" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:177 +msgid "Hangul Jamo" +msgstr "Hangul Jamo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:181 +msgid "Ethiopic" +msgstr "Etíope" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:185 +msgid "Ethiopic Supplement" +msgstr "Suplemento etíope" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:189 +msgid "Cherokee" +msgstr "Cherokee" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:193 +msgid "Unified Canadian Aboriginal Syllabics" +msgstr "Sílabas unificadas dos aborígenes canadenses" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:197 +msgid "Ogham" +msgstr "Ogam" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:201 +msgid "Runic" +msgstr "Rúnico" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:205 +msgid "Tagalog" +msgstr "Tágalo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:209 +msgid "Hanunoo" +msgstr "Hanunoo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:213 +msgid "Buhid" +msgstr "Buhid" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:217 +msgid "Tagbanwa" +msgstr "Tagbanwa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:221 +msgid "Khmer" +msgstr "Khmer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:225 +msgid "Mongolian" +msgstr "Mongol" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:229 +msgid "Unified Canadian Aboriginal Syllabics Extended" +msgstr "Sílabas estendidas unificadas dos aborígenes canadenses" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:233 +msgid "Limbu" +msgstr "Limbu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:237 +msgid "Tai Le" +msgstr "Tai Lü" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:241 +msgid "New Tai Lue" +msgstr "Tai Lü Novo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:245 +msgid "Khmer Symbols" +msgstr "Símbolos Khmer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:249 +msgid "Buginese" +msgstr "Buginês" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:253 +msgid "Tai Tham" +msgstr "Tai Tham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:257 +msgid "Combining Diacritical Marks Extended" +msgstr "Marcas diacríticas combinadas estendidas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:261 +msgid "Balinese" +msgstr "Balinês" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:265 +msgid "Sundanese" +msgstr "Sundanês" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:269 +msgid "Batak" +msgstr "Batak" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:273 +msgid "Lepcha" +msgstr "Lepcha" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:277 +msgid "Ol Chiki" +msgstr "Santali" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:281 +msgid "Cyrillic Extended-C" +msgstr "Cirílico estendido C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:285 +msgid "Georgian Extended" +msgstr "Extensão georgiana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:289 +msgid "Sundanese Supplement" +msgstr "Suplemento sundanês" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:293 +msgid "Vedic Extensions" +msgstr "Extensões védicas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:297 +msgid "Phonetic Extensions" +msgstr "Extensões Fonéticas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:301 +msgid "Phonetic Extensions Supplement" +msgstr "Extensões Fonéticas Complementares" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:305 +msgid "Combining Diacritical Marks Supplement" +msgstr "Suplemento de marcas diacríticas combinadas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:309 +msgid "Latin Extended Additional" +msgstr "Latim estendido adicional" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:313 +msgid "Greek Extended" +msgstr "Grego estendido" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:317 +msgid "General Punctuation" +msgstr "Pontuação Geral" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:321 +msgid "Superscripts and Subscripts" +msgstr "Sobrescritos e subscritos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:325 +msgid "Currency Symbols" +msgstr "Símbolos de moeda" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:329 +msgid "Combining Diacritical Marks for Symbols" +msgstr "Marcas diacríticas combinadas para símbolos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:333 +msgid "Letterlike Symbols" +msgstr "Símbolos parecidos com letras" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:337 +msgid "Number Forms" +msgstr "Formulários de números" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:341 +msgid "Arrows" +msgstr "Setas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:345 +msgid "Mathematical Operators" +msgstr "Operadores matemáticos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:349 +msgid "Miscellaneous Technical" +msgstr "Técnico diversos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:353 +msgid "Control Pictures" +msgstr "Figuras de controle" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:357 +msgid "Optical Character Recognition" +msgstr "Reconhecimento óptico de caractere" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:361 +msgid "Enclosed Alphanumerics" +msgstr "Alfanuméricos contidos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:365 +msgid "Box Drawing" +msgstr "Desenhos de caixa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:369 +msgid "Block Elements" +msgstr "Elementos de bloco" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:373 +msgid "Geometric Shapes" +msgstr "Formas Geométricas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:377 +msgid "Miscellaneous Symbols" +msgstr "Símbolos Variados" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:381 +msgid "Dingbats" +msgstr "Dingbats" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:385 +msgid "Miscellaneous Mathematical Symbols-A" +msgstr "Símbolos Matemáticos Variados-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:389 +msgid "Supplemental Arrows-A" +msgstr "Setas suplementares-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:393 +msgid "Braille Patterns" +msgstr "Padrões braile" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:397 +msgid "Supplemental Arrows-B" +msgstr "Setas suplementares-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:401 +msgid "Miscellaneous Mathematical Symbols-B" +msgstr "Símbolos matemáticos variados-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:405 +msgid "Supplemental Mathematical Operators" +msgstr "Operadores matemáticos suplementares" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:409 +msgid "Miscellaneous Symbols and Arrows" +msgstr "Símbolos variados e setas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:413 +msgid "Glagolitic" +msgstr "Glagolítico" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:417 +msgid "Latin Extended-C" +msgstr "Latim estendido C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:421 +msgid "Coptic" +msgstr "Copta" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:425 +msgid "Georgian Supplement" +msgstr "Suplemento georgiano" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:429 +msgid "Tifinagh" +msgstr "Tifinagh" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:433 +msgid "Ethiopic Extended" +msgstr "Etíope estendido" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:437 +msgid "Cyrillic Extended-A" +msgstr "Cirílico estendido A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:441 +msgid "Supplemental Punctuation" +msgstr "Pontuação suplementar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:445 +msgid "CJK Radicals Supplement" +msgstr "Suplemento de radicais CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:449 +msgid "Kangxi Radicals" +msgstr "Radicais Kangxi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:453 +msgid "Ideographic Description Characters" +msgstr "Caracteres de descrição ideográfica" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:457 +msgid "CJK Symbols and Punctuation" +msgstr "Símbolos e pontuação CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:461 +msgid "Hiragana" +msgstr "Hiragana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:465 +msgid "Katakana" +msgstr "Katakana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:469 +msgid "Bopomofo" +msgstr "Bopomofo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:473 +msgid "Hangul Compatibility Jamo" +msgstr "Hangul com Jamo de compatibilidade" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:477 +msgid "Kanbun" +msgstr "Kanbun" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:481 +msgid "Bopomofo Extended" +msgstr "Bopomofo estendido" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:485 +msgid "CJK Strokes" +msgstr "Traços CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:489 +msgid "Katakana Phonetic Extensions" +msgstr "Extensões fonéticas de katakana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:493 +msgid "Enclosed CJK Letters and Months" +msgstr "Letras e meses CJK contidos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:497 +msgid "CJK Compatibility" +msgstr "Compatibilidade CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:501 +msgid "CJK Unified Ideographs Extension A" +msgstr "Ideogramas unificados CJK extensão A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:505 +msgid "Yijing Hexagram Symbols" +msgstr "Símbolos hexagramas yijing" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:509 +msgid "CJK Unified Ideographs" +msgstr "Ideogramas unificados CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:513 +msgid "Yi Syllables" +msgstr "Sílabas Yi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:517 +msgid "Yi Radicals" +msgstr "Radicais Yi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:521 +msgid "Lisu" +msgstr "Lisu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:525 +msgid "Vai" +msgstr "Vai" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:529 +msgid "Cyrillic Extended-B" +msgstr "Cirílico estendido B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:533 +msgid "Bamum" +msgstr "Bamum" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:537 +msgid "Modifier Tone Letters" +msgstr "Letras modificadoras de tom" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:541 +msgid "Latin Extended-D" +msgstr "Latim estendido D" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:545 +msgid "Syloti Nagri" +msgstr "Syloti Nagri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:549 +msgid "Common Indic Number Forms" +msgstr "Formatos numéricos índicos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:553 +msgid "Phags-pa" +msgstr "Phagspa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:557 +msgid "Saurashtra" +msgstr "Saurashtra" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:561 +msgid "Devanagari Extended" +msgstr "Devanágari estendido" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:565 +msgid "Kayah Li" +msgstr "Kayah Li" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:569 +msgid "Rejang" +msgstr "Rejang" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:573 +msgid "Hangul Jamo Extended-A" +msgstr "Hangul Jamo estendido A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:577 +msgid "Javanese" +msgstr "Javanês" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:581 +msgid "Myanmar Extended-B" +msgstr "Birmanês estendido-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:585 +msgid "Cham" +msgstr "Cham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:589 +msgid "Myanmar Extended-A" +msgstr "Birmanês estendido-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:593 +msgid "Tai Viet" +msgstr "Tailandês vietnamita" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:597 +msgid "Meetei Mayek Extensions" +msgstr "Extensões Meetei Mayek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:601 +msgid "Ethiopic Extended-A" +msgstr "Etíope estendido-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:605 +msgid "Latin Extended-E" +msgstr "Latim estendido-E" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:609 +msgid "Cherokee Supplement" +msgstr "Suplemento cherokee" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:613 +msgid "Meetei Mayek" +msgstr "Meetei Mayek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:617 +msgid "Hangul Syllables" +msgstr "Sílabas Hangul" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:621 +msgid "Hangul Jamo Extended-B" +msgstr "Hangul Jamo estendido B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:625 +msgid "High Surrogates" +msgstr "Substituições altas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:629 +msgid "High Private Use Surrogates" +msgstr "Substituições altas de uso privado" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:633 +msgid "Low Surrogates" +msgstr "Substituições baixas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:637 +msgid "Private Use Area" +msgstr "Área de uso privado" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:641 +msgid "CJK Compatibility Ideographs" +msgstr "Ideogramas de compatibilidade CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:645 +msgid "Alphabetic Presentation Forms" +msgstr "Formas de apresentação alfabética" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:649 +msgid "Arabic Presentation Forms-A" +msgstr "Formas de apresentação arábica-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:653 +msgid "Variation Selectors" +msgstr "Seletores de variação" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:657 +msgid "Vertical Forms" +msgstr "Formulários verticais" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:661 +msgid "Combining Half Marks" +msgstr "Meias marcas combinadas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:665 +msgid "CJK Compatibility Forms" +msgstr "Formas de compatibilidade CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:669 +msgid "Small Form Variants" +msgstr "Variantes de pequenas formas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:673 +msgid "Arabic Presentation Forms-B" +msgstr "Formas de apresentação arábica-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:677 +msgid "Halfwidth and Fullwidth Forms" +msgstr "Formas de meia e completa largura" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:681 +msgid "Specials" +msgstr "Especiais" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:685 +msgid "Linear B Syllabary" +msgstr "Silabário linear B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:689 +msgid "Linear B Ideograms" +msgstr "Ideogramas linear B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:693 +msgid "Aegean Numbers" +msgstr "Números Egeus" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:697 +msgid "Ancient Greek Numbers" +msgstr "Números gregos antigos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:701 +msgid "Ancient Symbols" +msgstr "Símbolos antigos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:705 +msgid "Phaistos Disc" +msgstr "Disco de Festos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:709 +msgid "Lycian" +msgstr "Lício" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:713 +msgid "Carian" +msgstr "Carian" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:717 +msgid "Coptic Epact Numbers" +msgstr "Números de cóptico epacta" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:721 +msgid "Old Italic" +msgstr "Itálico antigo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:725 +msgid "Gothic" +msgstr "Gótico" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:729 +msgid "Old Permic" +msgstr "Pérmico antigo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:733 +msgid "Ugaritic" +msgstr "Ugarítico" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:737 +msgid "Old Persian" +msgstr "Persa antigo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:741 +msgid "Deseret" +msgstr "Deseret" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:745 +msgid "Shavian" +msgstr "Shavian" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:749 +msgid "Osmanya" +msgstr "Osmanya" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:753 +msgid "Osage" +msgstr "Osage" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:757 +msgid "Elbasan" +msgstr "Elbasan" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:761 +msgid "Caucasian Albanian" +msgstr "Albanês caucasiano" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:765 +msgid "Linear A" +msgstr "Linear A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:769 +msgid "Cypriot Syllabary" +msgstr "Silabário cipriota" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:773 +msgid "Imperial Aramaic" +msgstr "Aramaico imperial" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:777 +msgid "Palmyrene" +msgstr "Palmireno" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:781 +msgid "Nabataean" +msgstr "Nabateu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:785 +msgid "Hatran" +msgstr "Hatran" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:789 +msgid "Phoenician" +msgstr "Fenício" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:793 +msgid "Lydian" +msgstr "Lídio" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:797 +msgid "Meroitic Hieroglyphs" +msgstr "Hieróglifos meroíticos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:801 +msgid "Meroitic Cursive" +msgstr "Meroítica cursiva" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:805 +msgid "Kharoshthi" +msgstr "Kharoshthi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:809 +msgid "Old South Arabian" +msgstr "Árabe do sul antigo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:813 +msgid "Old North Arabian" +msgstr "Árabe do norte antigo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:817 +msgid "Manichaean" +msgstr "Maniqueano" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:821 +msgid "Avestan" +msgstr "Avestan" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:825 +msgid "Inscriptional Parthian" +msgstr "Pártico inscrito" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:829 +msgid "Inscriptional Pahlavi" +msgstr "Pálavi inscrito" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:833 +msgid "Psalter Pahlavi" +msgstr "Pálavi psalter" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:837 +msgid "Old Turkic" +msgstr "Turco antigo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:841 +msgid "Old Hungarian" +msgstr "Húngaro antigo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:845 +msgid "Hanifi Rohingya" +msgstr "Hanifi de Rohingya" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:849 +msgid "Rumi Numeral Symbols" +msgstr "Símbolos numéricos Rumi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:853 +msgid "Old Sogdian" +msgstr "Sogdiano antigo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:857 +msgid "Sogdian" +msgstr "Sogdiano" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:861 +msgid "Elymaic" +msgstr "Elymaic" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:865 +msgid "Brahmi" +msgstr "Brahmi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:869 +msgid "Kaithi" +msgstr "Kaithi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:873 +msgid "Sora Sompeng" +msgstr "Sora Sompeng" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:877 +msgid "Chakma" +msgstr "Chakma" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:881 +msgid "Mahajani" +msgstr "Mahajani" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:885 +msgid "Sharada" +msgstr "Sharada" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:889 +msgid "Sinhala Archaic Numbers" +msgstr "Números de cingalês arcaico" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:893 +msgid "Khojki" +msgstr "Khojki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:897 +msgid "Multani" +msgstr "Multani" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:901 +msgid "Khudawadi" +msgstr "Khudawadi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:905 +msgid "Grantha" +msgstr "Grantha" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:909 +msgid "Newa" +msgstr "Newa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:913 +msgid "Tirhuta" +msgstr "Tirhuta" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:917 +msgid "Siddham" +msgstr "Siddham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:921 +msgid "Modi" +msgstr "Modi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:925 +msgid "Mongolian Supplement" +msgstr "Suplemento mongoliano" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:929 +msgid "Takri" +msgstr "Takri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:933 +msgid "Ahom" +msgstr "Ahom" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:937 +msgid "Dogra" +msgstr "Dogra" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:941 +msgid "Warang Citi" +msgstr "Warang Citi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:945 +msgid "Nandinagari" +msgstr "Nandinagari" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:949 +msgid "Zanabazar Square" +msgstr "Zanabazar Square" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:953 +msgid "Soyombo" +msgstr "Soyombo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:957 +msgid "Pau Cin Hau" +msgstr "Pau Cin Hau" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:961 +msgid "Bhaiksuki" +msgstr "Bhaiksuki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:965 +msgid "Marchen" +msgstr "Marchen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:969 +msgid "Masaram Gondi" +msgstr "Masaram Gondi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:973 +msgid "Gunjala Gondi" +msgstr "Gunjala Gondi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:977 +msgid "Makasar" +msgstr "Makassar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:981 +msgid "Tamil Supplement" +msgstr "Suplemento tamil" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:985 +msgid "Cuneiform" +msgstr "Cuneiforme" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:989 +msgid "Cuneiform Numbers and Punctuation" +msgstr "Números e Pontuação cuneiformes" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:993 +msgid "Early Dynastic Cuneiform" +msgstr "Cuneiforme pré-dinástico" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:997 +msgid "Egyptian Hieroglyphs" +msgstr "Hieróglifos egípcios" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1001 +msgid "Egyptian Hieroglyph Format Controls" +msgstr "Controles de formato de hieróglifos egípcios" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1005 +msgid "Anatolian Hieroglyphs" +msgstr "Hieróglifos da anatólia" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1009 +msgid "Bamum Supplement" +msgstr "Suplemento Bamum" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1013 +msgid "Mro" +msgstr "Mro" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1017 +msgid "Bassa Vah" +msgstr "Bassa Vah" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1021 +msgid "Pahawh Hmong" +msgstr "Pahawh Hmong" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1025 +msgid "Medefaidrin" +msgstr "Medefaidrin" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1029 +msgid "Miao" +msgstr "Miao" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1033 +msgid "Ideographic Symbols and Punctuation" +msgstr "Símbolos e pontuação ideográficos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1037 +msgid "Tangut" +msgstr "Tangut" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1041 +msgid "Tangut Components" +msgstr "Componentes tangut" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1045 +msgid "Kana Supplement" +msgstr "Suplemento kana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1049 +msgid "Kana Extended-A" +msgstr "Kana estendido-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1053 +msgid "Small Kana Extension" +msgstr "Extensão de kana pequeno" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1057 +msgid "Nushu" +msgstr "Nushu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1061 +msgid "Duployan" +msgstr "Duployé" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1065 +msgid "Shorthand Format Controls" +msgstr "Controles de formato de taquigrafia" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1069 +msgid "Byzantine Musical Symbols" +msgstr "Símbolos musicais bizantinos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1073 +msgid "Musical Symbols" +msgstr "Símbolos musicais" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1077 +msgid "Ancient Greek Musical Notation" +msgstr "Notação musical grega antiga" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1081 +msgid "Mayan Numerals" +msgstr "Numeração maia" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1085 +msgid "Tai Xuan Jing Symbols" +msgstr "Símbolos Tai Xuan Jing" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1089 +msgid "Counting Rod Numerals" +msgstr "Barras de contar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1093 +msgid "Mathematical Alphanumeric Symbols" +msgstr "Símbolos matemáticos alfanuméricos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1097 +msgid "Sutton SignWriting" +msgstr "Escrita de sinais Sutton" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1101 +msgid "Glagolitic Supplement" +msgstr "Suplemento glagolítico" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1105 +msgid "Nyiakeng Puachue Hmong" +msgstr "Nyiakeng Puachue Hmong" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1109 +msgid "Wancho" +msgstr "Wancho" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1113 +msgid "Mende Kikakui" +msgstr "Mende Kikakui" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1117 +msgid "Adlam" +msgstr "Adlam" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1121 +msgid "Indic Siyaq Numbers" +msgstr "Números de Siyaq indiano" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1125 +msgid "Ottoman Siyaq Numbers" +msgstr "Números de Siyaq otomano" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1129 +msgid "Arabic Mathematical Alphabetic Symbols" +msgstr "Símbolos alfabéticos matemáticos árabes" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1133 +msgid "Mahjong Tiles" +msgstr "Peças do Mahjong" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1137 +msgid "Domino Tiles" +msgstr "Peças de dominó" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1141 +msgid "Playing Cards" +msgstr "Jogo de cartas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1145 +msgid "Enclosed Alphanumeric Supplement" +msgstr "Suplemento alfanumérico contidos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1149 +msgid "Enclosed Ideographic Supplement" +msgstr "Suplemento ideográfico contido" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1153 +msgid "Miscellaneous Symbols and Pictographs" +msgstr "Símbolos diversos e pictogramas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1157 +msgid "Emoticons" +msgstr "Emoticons" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1161 +msgid "Ornamental Dingbats" +msgstr "Símbolos ornamentais" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1165 +msgid "Transport and Map Symbols" +msgstr "Símbolos de mapa e transporte" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1169 +msgid "Alchemical Symbols" +msgstr "Símbolos alquímicos" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1173 +msgid "Geometric Shapes Extended" +msgstr "Formas geométricas estendidas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1177 +msgid "Supplemental Arrows-C" +msgstr "Setas suplementares-C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1181 +msgid "Supplemental Symbols and Pictographs" +msgstr "Símbolos suplementares e pictogramas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1185 +msgid "Chess Symbols" +msgstr "Símbolos em xadrez" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1189 +msgid "Symbols and Pictographs Extended-A" +msgstr "Símbolos e pictogramas estendidas-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1193 +msgid "CJK Unified Ideographs Extension B" +msgstr "Ideogramas unificados CJK extensão B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1197 +msgid "CJK Unified Ideographs Extension C" +msgstr "Ideogramas unificados CJK extensão C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1201 +msgid "CJK Unified Ideographs Extension D" +msgstr "Ideogramas unificados CJK extensão D" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1205 +msgid "CJK Unified Ideographs Extension E" +msgstr "Ideogramas unificados CJK extensão E" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1209 +msgid "CJK Unified Ideographs Extension F" +msgstr "Ideogramas unificados CJK extensão F" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1213 +msgid "CJK Compatibility Ideographs Supplement" +msgstr "Suplemento de ideogramas de compatibilidade CJK" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1217 +msgid "Tags" +msgstr "Marcas" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1221 +msgid "Variation Selectors Supplement" +msgstr "Suplemento de seletores de variação" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1225 +msgid "Supplementary Private Use Area-A" +msgstr "Área de uso privado suplementar-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1229 +msgid "Supplementary Private Use Area-B" +msgstr "Área de uso privado suplementar-B" + +#: tools/main.vala:51 +msgid "List engine name only" +msgstr "Somente o Nome do motor da lista" + +#: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 +msgid "Can't connect to IBus.\n" +msgstr "Não foi possível conectar ao IBus.\n" + +#: tools/main.vala:93 +#, c-format +msgid "language: %s\n" +msgstr "idioma: %s\n" + +#: tools/main.vala:161 +msgid "No engine is set.\n" +msgstr "Nenhum motor está definido.\n" + +#: tools/main.vala:169 +msgid "Set global engine failed.\n" +msgstr "A configuração do motor global falhou.\n" + +#: tools/main.vala:174 +msgid "Get global engine failed.\n" +msgstr "A obtenção de motor global falhou.\n" + +#: tools/main.vala:217 +msgid "Read the system registry cache." +msgstr "Lê o cache de registro do sistema." + +#: tools/main.vala:219 +msgid "Read the registry cache FILE." +msgstr "Lê o ARQUIVO de cache de registro." + +#: tools/main.vala:237 tools/main.vala:242 +msgid "The registry cache is invalid.\n" +msgstr "O cache de registro é inválido.\n" + +#: tools/main.vala:257 +msgid "Write the system registry cache." +msgstr "Escreve o cache de registro do sistema." + +#: tools/main.vala:259 +msgid "Write the registry cache FILE." +msgstr "Escreve o ARQUIVO de cache de registro." + +#: tools/main.vala:295 +msgid "" +"Use engine schema paths instead of ibus core, which can be comma-separated " +"values." msgstr "" -"As teclas de atalho para alteração ao próximo método de entrada na lista" +"Usa caminhos de esquema de motores em vez do ibus core, que podem ser " +"valores separados por vírgula." -#: ../setup/setup.ui.h:50 -msgid "The shortcut keys for switching to previous input method in the list" +#: tools/main.vala:381 +msgid "Resetting…" +msgstr "Redefinindo…" + +#: tools/main.vala:399 +msgid "Done" +msgstr "Concluído" + +#: tools/main.vala:444 +msgid "Set or get engine" +msgstr "Define ou obtém o motor" + +#: tools/main.vala:445 +msgid "Exit ibus-daemon" +msgstr "Encerra o ibus-daemon" + +#: tools/main.vala:446 +msgid "Show available engines" +msgstr "Mostra os motores disponíveis" + +#: tools/main.vala:447 +msgid "(Not implemented)" +msgstr "(Não implementado)" + +#: tools/main.vala:448 +msgid "Restart ibus-daemon" +msgstr "Reinicia o ibus-daemon" + +#: tools/main.vala:449 +msgid "Show version" +msgstr "Mostra a versão" + +#: tools/main.vala:450 +msgid "Show the content of registry cache" +msgstr "Mostra o conteúdo do cache de registro" + +#: tools/main.vala:451 +msgid "Create registry cache" +msgstr "Cria um cache de registro" + +#: tools/main.vala:452 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "Imprime o endereço D-Bus do ibus-daemon" + +#: tools/main.vala:453 +msgid "Show the configuration values" +msgstr "Mostra os valores de configuração" + +#: tools/main.vala:454 +msgid "Reset the configuration values" +msgstr "Redefine os valores de configuração" + +#: tools/main.vala:456 +msgid "Save emoji on dialog to clipboard" +msgstr "Salva emoji no diálogo para a área de transferência" + +#: tools/main.vala:458 +msgid "Show this information" +msgstr "Mostra essa informação" + +#: tools/main.vala:464 +#, c-format +msgid "Usage: %s COMMAND [OPTION...]\n" +"\n" msgstr "" -"Teclas de atalho para alteração ao método de entrada anterior da lista" +"Uso: %s COMANDO [OPÇÃO...]\n" +"\n" -#: ../setup/setup.ui.h:52 -msgid "Top left corner" -msgstr "Canto esquerdo superior" +#: tools/main.vala:465 +msgid "Commands:\n" +msgstr "Comandos:\n" -#: ../setup/setup.ui.h:53 -msgid "Top right corner" -msgstr "Canto direito superior" +#: tools/main.vala:494 +#, c-format +msgid "%s is unknown command!\n" +msgstr "%s é um comando desconhecido!\n" -#: ../setup/setup.ui.h:54 -msgid "Use custom font:" -msgstr "Usa a fonte padrão:" +#: ui/gtk3/emojier.vala:233 +msgid "Favorites" +msgstr "Favoritos" -#: ../setup/setup.ui.h:57 -msgid "Vertical" -msgstr "Vertical" +#: ui/gtk3/emojier.vala:234 +msgid "Others" +msgstr "Outros" + +#: ui/gtk3/emojier.vala:235 +msgid "Open Unicode choice" +msgstr "Abrir escolha de Unicode" + +#: ui/gtk3/emojier.vala:994 +msgid "Bring back emoji choice" +msgstr "Trazer de volta escolha de emoji" + +#: ui/gtk3/emojier.vala:1096 +msgid "Page Down" +msgstr "Page Down" + +#: ui/gtk3/emojier.vala:1107 +msgid "Page Up" +msgstr "Page Up" + +#: ui/gtk3/emojier.vala:1110 +msgid "Show emoji variants" +msgstr "Mostrar variações de emoji" + +#: ui/gtk3/emojier.vala:1111 +msgid "Close" +msgstr "Fechar" + +#: ui/gtk3/emojier.vala:1117 +msgid "Menu" +msgstr "Menu" + +#: ui/gtk3/emojier.vala:1128 +msgid "Click to view a warning message" +msgstr "Clique para visualizar o aviso" + +#: ui/gtk3/emojier.vala:1172 +msgid "Loading a Unicode dictionary:" +msgstr "Carregando um dicionário Unicode:" + +#: ui/gtk3/emojier.vala:1418 +#, c-format +msgid "Code point: %s" +msgstr "Ponto de código: %s" + +#: ui/gtk3/emojier.vala:1424 +msgid "Has emoji variants" +msgstr "Possui variações de emoji" + +#: ui/gtk3/emojier.vala:1591 ui/gtk3/emojier.vala:1604 +#, c-format +msgid "Description: %s" +msgstr "Descrição: %s" + +#: ui/gtk3/emojier.vala:1591 +msgid "None" +msgstr "Nenhum" + +#: ui/gtk3/emojier.vala:1615 +#, c-format +msgid "Annotations: %s" +msgstr "Anotações: %s" + +#: ui/gtk3/emojier.vala:1641 +#, c-format +msgid "Name: %s" +msgstr "Nome: %s" + +#: ui/gtk3/emojier.vala:1649 +#, c-format +msgid "Alias: %s" +msgstr "Apelido: %s" + +#: ui/gtk3/emojier.vala:2139 ui/gtk3/ibus-extension-gtk3.desktop.in:3 +#: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 +msgid "Emoji Choice" +msgstr "Escolha do emoji" + +#: ui/gtk3/emojier.vala:2141 +msgid "Unicode Choice" +msgstr "Escolha de Unicode" + +#: ui/gtk3/emojier.vala:2429 +msgid "" +"Failed to get the current text application. Please re-focus your application." +" E.g. Press Esc key several times to release the emoji typing mode, click " +"your desktop and click your text application again." +msgstr "" +"Falha ao obter o aplicativo de texto atual. Mude o foco para seu aplicativo " +"novamente. Por exemplo, pressione a tecla Esc várias vezes para liberar o " +"modo de digitação emoji, clique na área de trabalho e clique no aplicativo " +"de texto novamente." + +#: ui/gtk3/emojierapp.vala:58 +msgid "Canceled to choose an emoji." +msgstr "Escolha de um emoji cancelada." + +#: ui/gtk3/emojierapp.vala:93 +msgid "Copied an emoji to your clipboard." +msgstr "Emoji copiado para a sua área de transferência." + +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ui/gtk3/emojierapp.vala:114 +msgid "\"FONT\" for emoji characters on emoji dialog" +msgstr "\"FONTE\" para caracteres no diálogo emoji" + +#: ui/gtk3/emojierapp.vala:115 +msgid "FONT" +msgstr "FONTE" + +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ui/gtk3/emojierapp.vala:120 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" +msgstr "\"LANG\" para anotações em diálogo emoji. Por exemplo, \"en\"" + +#: ui/gtk3/emojierapp.vala:121 +msgid "LANG" +msgstr "LANG" + +#: ui/gtk3/emojierapp.vala:123 +msgid "Emoji annotations can be match partially" +msgstr "Anotações emoji podem ser correspondidas parcialmente" + +#: ui/gtk3/emojierapp.vala:127 +msgid "Match with the length of the specified integer" +msgstr "Corresponder com o comprimento do inteiro especificado" + +#: ui/gtk3/emojierapp.vala:131 +msgid "Match with the condition of the specified integer" +msgstr "Corresponder com a condição do inteiro especificado" + +#: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 +msgid "IBus Panel" +msgstr "Painel IBus" + +#: ui/gtk3/panel.vala:1095 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus é um barramento de entrada inteligente para o Linux/Unix." + +#: ui/gtk3/panel.vala:1099 +msgid "translator-credits" +msgstr "Rafael Fontenelle " + +#: ui/gtk3/panel.vala:1118 +msgid "Preferences" +msgstr "Preferências" + +#: ui/gtk3/panel.vala:1144 +msgid "Restart" +msgstr "Reiniciar" + +#: ui/gtk3/panel.vala:1148 +msgid "Quit" +msgstr "Sair" -#: ../setup/setup.ui.h:58 -msgid "When active" -msgstr "Quando ativado" +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 +msgid "default:LTR" +msgstr "default:LTR" diff --git a/po/ru.po b/po/ru.po index a69150af3..5d8101781 100644 --- a/po/ru.po +++ b/po/ru.po @@ -1,529 +1,956 @@ -# Russian translations for IBus package. -# Copyright (C) 2009 THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. +# Russian translation of ibus. +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2021 Takao Fujiwara +# This file is distributed under the same license as the ibus package. # -# Alexey Kotlyarov , 2009. -# Yulia , 2010. +# Translators: +# Koterpillar , 2009 +# Koterpillar , 2009 +# Yulia , 2010 +# Yulia , 2013-2014 +# yuliya , 2015. #zanata +# Igor Gorbounov , 2017. #zanata +# Alexey Rubtsov , 2021. msgid "" msgstr "" -"Project-Id-Version: ru\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-12 00:41+0900\n" -"PO-Revision-Date: 2010-07-30 10:25\n" -"Last-Translator: Yulia \n" -"Language-Team: Russian\n" -"Language: \n" +"Project-Id-Version: IBus\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2017-04-18 11:47+0900\n" +"PO-Revision-Date: 2021-07-06 15:04+0000\n" +"Last-Translator: Alexey Rubtsov \n" +"Language-Team: Russian \n" +"Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\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: KBabel 1.11.4\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 4.7.1\n" -#: ../bus/ibus.desktop.in.h:1 -msgid "IBus" -msgstr "IBus" +#: ../setup/setup.ui.h:1 +msgid "Horizontal" +msgstr "Горизонтально" -#: ../bus/ibus.desktop.in.h:2 -msgid "Input Method Framework" -msgstr "Система методов ввода" +#: ../setup/setup.ui.h:2 +msgid "Vertical" +msgstr "Вертикально" -#: ../bus/ibus.desktop.in.h:3 -msgid "Start IBus Input Method Framework" -msgstr "Запустить систему методов ввода IBus" +#: ../setup/setup.ui.h:3 +msgid "Top left corner" +msgstr "Левый верхний угол" -#: ../ibus/_config.py.in:39 -msgid "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +#: ../setup/setup.ui.h:4 +msgid "Top right corner" +msgstr "Правый верхний угол" + +#: ../setup/setup.ui.h:5 +msgid "Bottom left corner" +msgstr "Левый нижний угол" + +#: ../setup/setup.ui.h:6 +msgid "Bottom right corner" +msgstr "Правый нижний угол" + +#: ../setup/setup.ui.h:7 +msgid "Custom" +msgstr "Свой" + +#: ../setup/setup.ui.h:8 +msgid "Do not show" +msgstr "Не показывать" + +#: ../setup/setup.ui.h:9 +msgid "Hide automatically" +msgstr "Автоматически скрывать" + +#: ../setup/setup.ui.h:10 +msgid "Always" +msgstr "Всегда" + +#: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 +msgid "IBus Preferences" +msgstr "Параметры IBus" + +#: ../setup/setup.ui.h:12 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "Горячие клавиши для переключения на следующий метод ввода в списке" + +#: ../setup/setup.ui.h:13 +msgid "Next input method:" +msgstr "Следующий метод ввода:" + +#: ../setup/setup.ui.h:14 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "Горячие клавиши для переключения на предыдущий метод ввода в списке" + +#: ../setup/setup.ui.h:15 +msgid "Previous input method:" +msgstr "Предыдущий метод ввода:" + +#: ../setup/setup.ui.h:16 +msgid "The shortcut keys for showing emoji dialog" +msgstr "Сочетание клавиш для вызова диалога с Емодзи" + +#: ../setup/setup.ui.h:17 +msgid "Emoji dialog:" +msgstr "Диалог Емодзи:" + +#: ../setup/setup.ui.h:18 +msgid "..." +msgstr "..." + +#: ../setup/setup.ui.h:19 ../data/ibus.schemas.in.h:16 +msgid "The shortcut keys for turning input method on or off" +msgstr "Сочетание клавиш для включения/выключения метода ввода" + +#: ../setup/setup.ui.h:20 +msgid "Enable or disable:" +msgstr "Включить или выключить:" + +#: ../setup/setup.ui.h:21 +msgid "Enable:" +msgstr "Включить:" + +#: ../setup/setup.ui.h:22 +msgid "Disable:" +msgstr "Выключить:" + +#: ../setup/setup.ui.h:23 +msgid "Keyboard Shortcuts" +msgstr "Горячие клавиши" + +#: ../setup/setup.ui.h:24 +msgid "Set the orientation of candidates in lookup table" +msgstr "Установить ориентацию кандидатов в таблице поиска" + +#: ../setup/setup.ui.h:25 +msgid "Candidates orientation:" +msgstr "Ориентация кандидатов:" + +#: ../setup/setup.ui.h:26 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "Установить поведение iBus для показа или скрытия языковой панели" + +#: ../setup/setup.ui.h:27 +msgid "Show property panel:" +msgstr "Показать панель свойств:" + +#: ../setup/setup.ui.h:28 +msgid "Language panel position:" +msgstr "Расположение языковой панели:" + +#: ../setup/setup.ui.h:29 ../data/ibus.schemas.in.h:36 +msgid "Show icon on system tray" +msgstr "Показать значок в области уведомлений" + +#: ../setup/setup.ui.h:30 ../data/ibus.schemas.in.h:38 +msgid "Show input method name on language bar" +msgstr "Показывать название метода ввода на языковой панели" + +#: ../setup/setup.ui.h:31 +msgid "Show input method's name on language bar when check the checkbox" msgstr "" -"(c) 2007-2010 Peng Huang\n" -"(c) 2007-2010 Red Hat, Inc." +"Показывать название метода ввода на языковой панели, когда пункт выбран" -#: ../ibus/lang.py:41 -msgid "Other" -msgstr "Другие" +#: ../setup/setup.ui.h:32 +msgid "Embed preedit text in application window" +msgstr "Вставить готовый текст в окно приложения" + +#: ../setup/setup.ui.h:33 +msgid "Embed the preedit text of input method in the application window" +msgstr "Вставить готовый текст метода ввода в окно приложения" + +#: ../setup/setup.ui.h:34 +msgid "Use custom font:" +msgstr "Выбрать шрифт:" + +#: ../setup/setup.ui.h:35 +msgid "Set a font of emoji candidates on the emoji dialog" +msgstr "Установить шрифт с вариантами емодзи в диалоге емодзи" + +#: ../setup/setup.ui.h:36 +msgid "Emoji font:" +msgstr "Шрифт емодзи:" + +#: ../setup/setup.ui.h:37 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "Установить язык для аннотаций емодзи в диалоге емодзи" + +#: ../setup/setup.ui.h:38 +msgid "Emoji annotation language:" +msgstr "Язык аннотаций емодзи:" + +#: ../setup/setup.ui.h:39 +msgid "Font and Style" +msgstr "Шрифт и стиль" + +#: ../setup/setup.ui.h:40 +msgid "General" +msgstr "Основные" + +#. add button +#: ../setup/setup.ui.h:41 ../setup/enginedialog.py:61 +#: ../setup/keyboardshortcut.py:124 +msgid "_Add" +msgstr "_Добавить" + +#: ../setup/setup.ui.h:42 +msgid "Add the selected input method into the enabled input methods" +msgstr "Добавить выбранный метод ввода к используемым" + +#: ../setup/setup.ui.h:43 +msgid "_Remove" +msgstr "_Удалить" + +#: ../setup/setup.ui.h:44 +msgid "Remove the selected input method from the enabled input methods" +msgstr "Удалить выбранный метод ввода из списка" + +#: ../setup/setup.ui.h:45 +msgid "_Up" +msgstr "Вв_ерх" + +#: ../setup/setup.ui.h:46 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "Переместить выбранный метод ввода вверх в списке используемых" + +#: ../setup/setup.ui.h:47 +msgid "_Down" +msgstr "В_низ" + +#: ../setup/setup.ui.h:48 +msgid "Move down the selected input method in the enabled input methods" +msgstr "Переместить выбранный метод ввода вниз в списке используемых" + +#: ../setup/setup.ui.h:49 +msgid "_About" +msgstr "_О программе" + +#: ../setup/setup.ui.h:50 +msgid "Show information of the selected input method" +msgstr "Показать информацию о выбранном методе ввода" -#: ../ui/gtk/candidatepanel.py:264 -msgid "Previous page" -msgstr "Предыдущая страница" +#: ../setup/setup.ui.h:51 +msgid "_Preferences" +msgstr "_Параметры" -#: ../ui/gtk/candidatepanel.py:269 -msgid "Next page" -msgstr "Следующая страница" +#: ../setup/setup.ui.h:52 +msgid "Show setup of the selected input method" +msgstr "Показать настройки выбранного метода ввода" -#: ../ui/gtk/main.py:55 +#: ../setup/setup.ui.h:53 msgid "" -"Some input methods have been installed, removed or updated. Please restart " -"ibus input platform." +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." msgstr "" -"Методы ввода были установлены, удалены или обновлены. Перезапустите " -"платформу ввода iBus." +"Активный метод ввода может переключаться на выбранные методы из " +"приведенного выше списка с помощью сочетаний клавиш или нажатием левой " +"кнопки мыши на значке в панели." -#: ../ui/gtk/main.py:59 -msgid "Restart Now" -msgstr "Перезапустить сейчас" +#. create im name & icon column +#: ../setup/setup.ui.h:54 ../setup/enginetreeview.py:68 +msgid "Input Method" +msgstr "Метод ввода" -#: ../ui/gtk/main.py:60 -msgid "Later" -msgstr "Позже" +#: ../setup/setup.ui.h:55 ../data/ibus.schemas.in.h:44 +msgid "Use system keyboard layout" +msgstr "Использовать системную раскладку клавиатуры" -#: ../ui/gtk/panel.py:109 -msgid "IBus input method framework" -msgstr "Система методов ввода IBus" +#: ../setup/setup.ui.h:56 ../data/ibus.schemas.in.h:45 +msgid "Use system keyboard (XKB) layout" +msgstr "Использовать системную раскладку (XKB)" -#: ../ui/gtk/panel.py:327 -msgid "Restart" -msgstr "Перезапустить" +#: ../setup/setup.ui.h:57 +msgid "Keyboard Layout" +msgstr "Раскладка клавиатуры" -#: ../ui/gtk/panel.py:414 -msgid "Turn off input method" -msgstr "Отключить метод ввода" +#: ../setup/setup.ui.h:58 ../data/ibus.schemas.in.h:60 +msgid "Share the same input method among all applications" +msgstr "Использовать один метод ввода для всех приложений" -#: ../ui/gtk/panel.py:453 -msgid "No input window" -msgstr "Нет окна ввода" +#: ../setup/setup.ui.h:59 +msgid "Global input method settings" +msgstr "Настройки глобального метода ввода" -#: ../ui/gtk/panel.py:484 -msgid "IBus is an intelligent input bus for Linux/Unix." -msgstr "IBus — интеллектуальная система ввода для Linux и Unix." +#: ../setup/setup.ui.h:60 +msgid "Advanced" +msgstr "Дополнительно" -#: ../ui/gtk/panel.py:488 -msgid "translator-credits" +#: ../setup/setup.ui.h:61 +msgid "" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" msgstr "" -"Alexey Kotlyarov , 2009.\n" -"Yulia , 2010." +"IBus\n" +"Интеллектуальная система ввода\n" +"Домашняя страница: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" -#: ../ui/gtk/languagebar.py:106 -msgid "About the input method" -msgstr "О методе ввода" +#: ../setup/setup.ui.h:68 +msgid "Start ibus on login" +msgstr "Запускать iBus при входе в систему" -#: ../ui/gtk/languagebar.py:214 -msgid "Switch input method" -msgstr "Переключить метод ввода" +#: ../setup/setup.ui.h:69 +msgid "Startup" +msgstr "Запуск" -#: ../ui/gtk/languagebar.py:357 ../ui/gtk/engineabout.py:33 -#: ../setup/engineabout.py:33 ../setup/setup.ui.h:16 +#: ../setup/setup.ui.h:70 ../setup/engineabout.py:37 ../ui/gtk3/panel.vala:1232 msgid "About" msgstr "О программе" -#: ../ui/gtk/languagebar.py:361 -msgid "About the Input Method" -msgstr "О методе ввода" +#: ../setup/setup.ui.h:71 ../setup/engineabout.py:40 +msgid "_Close" +msgstr "_Закрыть" -#: ../ui/gtk/engineabout.py:61 ../setup/engineabout.py:61 -#, python-format -msgid "Language: %s\n" -msgstr "Язык: %s\n" +#. Translators: Here “Preload” is a verb +#: ../data/ibus.schemas.in.h:2 +msgid "Preload engines" +msgstr "Предварительная загрузка методов ввода" -#: ../ui/gtk/engineabout.py:63 ../setup/engineabout.py:63 -#, python-format -msgid "Keyboard layout: %s\n" -msgstr "Раскладка клавиатуры: %s\n" +#. Translators: Tooltip for the button “Preload Engines” +#: ../data/ibus.schemas.in.h:4 +msgid "Preload engines during ibus starts up" +msgstr "Загружать методы ввода при запуске iBus" -#: ../ui/gtk/engineabout.py:65 ../setup/engineabout.py:65 -#, python-format -msgid "Author: %s\n" -msgstr "Автор: %s\n" +#: ../data/ibus.schemas.in.h:5 +msgid "Engines order" +msgstr "Порядок модулей" -#: ../ui/gtk/engineabout.py:67 ../setup/engineabout.py:67 -msgid "Description:\n" -msgstr "Описание:\n" +#: ../data/ibus.schemas.in.h:6 +msgid "Saved engines order in input method list" +msgstr "Порядок модулей в списке методов ввода" -#: ../setup/main.py:102 -msgid "trigger" -msgstr "переключатель" +#: ../data/ibus.schemas.in.h:7 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "Задержка всплывающего окна переключателя IME (в миллисекундах)" -#: ../setup/main.py:113 -msgid "enable" +#: ../data/ibus.schemas.in.h:8 +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is 400." +" 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " +"show the window and switch prev/next engines." msgstr "" +"Настройте задержку показа окна выбора метода ввода, которое по умолчанию " +"будет равно 400 мсек. Возможные значения: 0 - окно будет открыто сразу, 0 " +"< задержка в миллисекундах, 0 > окно не будет показано." + +#: ../data/ibus.schemas.in.h:9 +msgid "Saved version number" +msgstr "Сохраненный номер версии" -#: ../setup/main.py:124 -msgid "disable" +#: ../data/ibus.schemas.in.h:10 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." msgstr "" +"Сохраненный номер версии используется для сравнения предыдущей версии ibus с " +"текущей." -#: ../setup/main.py:135 -msgid "next input method" -msgstr "следующий метод ввода" +#: ../data/ibus.schemas.in.h:11 +msgid "Latin layouts which have no ASCII" +msgstr "Латинские раскладки, в которых нет ASCII" -#: ../setup/main.py:146 -msgid "previous input method" -msgstr "предыдущий метод ввода" +#: ../data/ibus.schemas.in.h:12 +msgid "US layout is appended to the latin layouts. variant can be omitted." +msgstr "" +"Раскладка США добавлена к латинским раскладкам. Вариант может быть опущен." -#: ../setup/main.py:286 -msgid "IBus daemon is not started. Do you want to start it now?" -msgstr "Служба IBus не запущена. Запустить?" +#: ../data/ibus.schemas.in.h:13 +msgid "Use xmodmap" +msgstr "Использовать xmodmap" -#: ../setup/main.py:301 +#: ../data/ibus.schemas.in.h:14 msgid "" -"IBus has been started! If you can not use IBus, please add below lines in " -"$HOME/.bashrc, and relogin your desktop.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" -"IBus запущен! Если вы не можете пользоваться IBus, добавьте приведённые " -"строки в $HOME/.bashrc и заново войдите в систему.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +"Запускать xmodmap при переключении систем ibus, если существует файл ." +"xmodmap или .Xmodmap." -#: ../setup/main.py:316 -#, python-format -msgid "Select keyboard shortcut for %s" -msgstr "Выберите комбинацию клавиш для %s" +#: ../data/ibus.schemas.in.h:15 +msgid "Trigger shortcut keys" +msgstr "Сочетание клавиш для включения/выключения" -#: ../setup/keyboardshortcut.py:52 -msgid "Keyboard shortcuts" -msgstr "Комбинации клавиш" +#: ../data/ibus.schemas.in.h:17 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "Сочетание клавиш для gtk_accelerator_parse" -#: ../setup/keyboardshortcut.py:63 -msgid "Key code:" -msgstr "Код клавиши:" +#: ../data/ibus.schemas.in.h:18 +msgid "Enable shortcut keys" +msgstr "Включить сочетания клавиш" -#: ../setup/keyboardshortcut.py:78 -msgid "Modifiers:" -msgstr "Модификаторы:" +#: ../data/ibus.schemas.in.h:19 +msgid "The shortcut keys for turning input method on" +msgstr "Сочетания для включения метода ввода" + +#: ../data/ibus.schemas.in.h:20 +msgid "Disable shortcut keys" +msgstr "Отключить сочетания клавиш" + +#: ../data/ibus.schemas.in.h:21 +msgid "The shortcut keys for turning input method off" +msgstr "Сочетание для отключения метода ввода" -#: ../setup/keyboardshortcut.py:231 +#: ../data/ibus.schemas.in.h:22 +msgid "Next engine shortcut keys" +msgstr "Клавиши для следующего метода ввода" + +#: ../data/ibus.schemas.in.h:23 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "Сочетание клавиш для переключения на следующий метод ввода в списке" + +#: ../data/ibus.schemas.in.h:24 +msgid "Prev engine shortcut keys" +msgstr "Клавиши для предыдущего метода ввода" + +#: ../data/ibus.schemas.in.h:25 +msgid "The shortcut keys for switching to the previous input method" +msgstr "Сочетание клавиш для переключения на предыдущий метод ввода в списке" + +#: ../data/ibus.schemas.in.h:26 +msgid "Auto hide" +msgstr "Автоматически скрывать" + +#: ../data/ibus.schemas.in.h:27 msgid "" -"Please press a key (or a key combination).\n" -"The dialog will be closed when the key is released." +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" msgstr "" -"Нажмите клавишу (или сочетание клавиш).\n" -"Когда клавиша будет отпущена, окно закроется." +"Режим работы панели свойств. 0 = не показывать, 1 = автоматически скрывать, " +"2 = всегда показывать" -#: ../setup/keyboardshortcut.py:233 -msgid "Please press a key (or a key combination)" -msgstr "Нажмите клавишу (или сочетание клавиш)" +#: ../data/ibus.schemas.in.h:28 +msgid "Language panel position" +msgstr "Расположение языковой панели" -#: ../setup/enginecombobox.py:120 -msgid "Select an input method" -msgstr "Выберите метод ввода" +#: ../data/ibus.schemas.in.h:29 +msgid "" +"The position of the language panel. 0 = Top left corner, 1 = Top right " +"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +msgstr "" +"Расположение языковой панели: 0 = левый верхний угол, 1 = правый верхний " +"угол, 2 = левый нижний угол, 3 = правый нижний угол, 4 = произвольное" -#. create im name & icon column -#: ../setup/enginetreeview.py:64 ../setup/setup.ui.h:33 -msgid "Input Method" -msgstr "Метод ввода" +#: ../data/ibus.schemas.in.h:30 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "Следовать за курсором ввода, если панель всегда видна" -#: ../setup/enginetreeview.py:92 -msgid "Kbd" -msgstr "Kbd" +#: ../data/ibus.schemas.in.h:31 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" +"Если «true», панель следует за курсором ввода в случае, если панель всегда " +"видна. Если «false», панель отображается в фиксированном месте." -#: ../setup/ibus-setup.desktop.in.h:1 ../setup/setup.ui.h:32 -msgid "IBus Preferences" -msgstr "Параметры IBus" +#: ../data/ibus.schemas.in.h:32 +msgid "The milliseconds to show property panel" +msgstr "Миллисекунды для отображения панели свойств" -#: ../setup/ibus-setup.desktop.in.h:2 -msgid "Set IBus Preferences" -msgstr "Настроить параметры IBus" +#: ../data/ibus.schemas.in.h:33 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" +"Миллисекунды для отображения панели свойств после смены фокуса ввода или " +"свойств." -#: ../data/ibus.schemas.in.h:1 -msgid "Auto hide" -msgstr "Автоматически скрывать" +#: ../data/ibus.schemas.in.h:34 +msgid "Orientation of lookup table" +msgstr "Ориентация таблицы поиска" + +#: ../data/ibus.schemas.in.h:35 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "Ориентация таблицы: 0 = горизонтально, 1 = вертикально" + +#: ../data/ibus.schemas.in.h:37 +msgid "Show input method name" +msgstr "Показывать название метода ввода" + +#: ../data/ibus.schemas.in.h:39 +msgid "RGBA value of XKB icon" +msgstr "RGBA-значение значка XKB" + +#: ../data/ibus.schemas.in.h:41 +#, no-c-format +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " +"'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " +"to 255 or precentage values in the range 0% to 100%, and 'a' is a floating " +"point value in the range 0 to 1 of the alpha." +msgstr "" +"Значок XKB показывает строку раскладки и она отрисована с тоном RGBA. Тон " +"RGBA может быть 1. именем цвета из X11, 2. шестнадцатеричным значением " +"формата «#rrggbb» где «r», «g» и «b» - шестнадцатеричные цифры для красного, " +"зелёного и синего, 3. цвет RGB в формате «rgb(r,g,b)» иои 4. цвет RGBA в " +"формате «rgba(r,g,b,a)», где «r», «g», и «b» - или целые в границах от 0 до " +"255 или процентные значения от 0% до 100%, и 'a - это число с плавающей " +"запятой в значении от 0 до 1, устанавливающее прозрачность." + +#: ../data/ibus.schemas.in.h:42 +msgid "The milliseconds to show the panel icon for a property" +msgstr "Количество миллисекунд для показа иконки панели для свойства" + +#: ../data/ibus.schemas.in.h:43 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" + +#: ../data/ibus.schemas.in.h:46 +msgid "Use custom font" +msgstr "Использовать свой шрифт" + +#: ../data/ibus.schemas.in.h:47 +msgid "Use custom font name for language panel" +msgstr "Использовать свой шрифт для языковой панели" + +#: ../data/ibus.schemas.in.h:48 +msgid "Custom font" +msgstr "Свой шрифт" + +#: ../data/ibus.schemas.in.h:49 +msgid "Custom font name for language panel" +msgstr "Свой шрифт для языковой панели" + +#: ../data/ibus.schemas.in.h:50 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "Сочетание клавиш емодзи для gtk_accelerator_parse" + +#: ../data/ibus.schemas.in.h:51 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "Сочетание клавиш для включения/выключения ввода емодзи" + +#: ../data/ibus.schemas.in.h:52 +msgid "Custom font name for emoji chracters on emoji dialog" +msgstr "Имя пользовательского шрифта емодзи в диалоге" + +#: ../data/ibus.schemas.in.h:53 +msgid "Default language for emoji dictionary" +msgstr "Язык по-умолчанию в словаре емодзи" -#: ../data/ibus.schemas.in.h:2 -msgid "Custom font" -msgstr "Свой шрифт" +#: ../data/ibus.schemas.in.h:54 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" +msgstr "" +"Выбрать словарь по-умолчанию для емодзи на диалоге емодзи. Значение $lang " +"применяется к /usr/share/ibus/dicts/emoji-$lang.dict" -#: ../data/ibus.schemas.in.h:3 -msgid "Custom font name for language panel" -msgstr "Свой шрифт для языковой панели" +#: ../data/ibus.schemas.in.h:55 +msgid "favorite emoji list on emoji dialog" +msgstr "список избранных емодзи в диалоге емодзи" -#: ../data/ibus.schemas.in.h:4 +#: ../data/ibus.schemas.in.h:56 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "" +"Вы можете вывести избранные емодзи в списке, если в этом списке содержит " +"какие-либо символы." + +#: ../data/ibus.schemas.in.h:57 msgid "Embed Preedit Text" msgstr "Вставить готовый текст" -#: ../data/ibus.schemas.in.h:5 +#: ../data/ibus.schemas.in.h:58 msgid "Embed Preedit Text in Application Window" msgstr "Вставить готовый текст в окно приложения" -#: ../data/ibus.schemas.in.h:6 +#: ../data/ibus.schemas.in.h:59 +msgid "Use global input method" +msgstr "Использовать глобальный метод ввода" + +#: ../data/ibus.schemas.in.h:61 msgid "Enable input method by default" msgstr "Включить метод ввода по умолчанию" -#: ../data/ibus.schemas.in.h:7 +#: ../data/ibus.schemas.in.h:62 msgid "Enable input method by default when the application gets input focus" msgstr "" "Включить метод ввода по умолчанию при получении приложением фокуса ввода" -#: ../data/ibus.schemas.in.h:8 -msgid "Language panel position" -msgstr "Расположение языковой панели" - -#: ../data/ibus.schemas.in.h:9 -msgid "Next engine shortcut keys" -msgstr "Клавиши для следующего метода ввода" - -#: ../data/ibus.schemas.in.h:10 -msgid "Orientation of lookup table" -msgstr "Ориентация таблицы поиска" - -#: ../data/ibus.schemas.in.h:11 -msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" -msgstr "Ориентация таблицы: 0 = горизонтально, 1 = вертикально." - -#: ../data/ibus.schemas.in.h:12 -msgid "Preload engines" -msgstr "Предварительная загрузка методов ввода" +#: ../data/ibus.schemas.in.h:63 +msgid "DConf preserve name prefixes" +msgstr "DConf сохраняет префиксы имен" -#: ../data/ibus.schemas.in.h:13 -msgid "Preload engines during ibus starts up" -msgstr "Загружать методы ввода при запуске iBus" +#: ../data/ibus.schemas.in.h:64 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "Префиксы ключей DConf для предотвращения преобразования имен" -#: ../data/ibus.schemas.in.h:14 -msgid "Prev engine shortcut keys" -msgstr "Клавиши для предыдущего метода ввода" +#: ../ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "(c) 2007-2010 Peng Huang\n" +"(c) 2007-2010 Red Hat, Inc." -#: ../data/ibus.schemas.in.h:15 ../setup/setup.ui.h:42 -msgid "Share the same input method among all applications" -msgstr "Использовать один метод ввода для всех приложений" +#: ../ibus/lang.py:41 ../src/ibusutil.c:158 +msgid "Other" +msgstr "Другие" -#: ../data/ibus.schemas.in.h:16 ../setup/setup.ui.h:43 -msgid "Show icon on system tray" -msgstr "Показать значок в области уведомлений" +#: ../setup/emojilang.py:67 +msgid "Select a language" +msgstr "Выберите язык" -#: ../data/ibus.schemas.in.h:17 -msgid "Show input method name" -msgstr "Показывать название метода ввода" +#: ../setup/emojilang.py:70 ../setup/enginedialog.py:60 +#: ../setup/keyboardshortcut.py:339 ../setup/main.py:457 +msgid "_Cancel" +msgstr "О_тменить" -#: ../data/ibus.schemas.in.h:18 ../setup/setup.ui.h:45 -msgid "Show input method name on language bar" -msgstr "Показывать название метода ввода на языковой панели" +#: ../setup/emojilang.py:71 ../setup/keyboardshortcut.py:340 +#: ../setup/main.py:458 +msgid "_OK" +msgstr "_OK" -#: ../data/ibus.schemas.in.h:19 -msgid "" -"The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = " -"Always show" -msgstr "" -"Поведение языковой панели: 0 = встроена в меню, 1 = автоматически скрывать, " -"2 = всегда показывать" +#: ../setup/emojilang.py:235 ../setup/enginedialog.py:205 +msgid "More…" +msgstr "Больше…" -#: ../data/ibus.schemas.in.h:20 -msgid "" -"The position of the language panel. 0 = Top left corner, 1 = Top right " -"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" -msgstr "" -"Расположение языковой панели: 0 = левый верхний угол, 1 = правый верхний " -"угол, 2 = левый нижний угол, 3 = правый нижний угол, 4 = произвольное" +#: ../setup/engineabout.py:72 +#, python-format +msgid "Language: %s\n" +msgstr "Язык: %s\n" -#: ../data/ibus.schemas.in.h:21 -msgid "The shortcut keys for switching to the next input method in the list" -msgstr "Сочетание клавиш для переключения на следующий метод ввода в списке:" +#: ../setup/engineabout.py:75 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "Раскладка: %s\n" -#: ../data/ibus.schemas.in.h:22 -msgid "The shortcut keys for switching to the previous input method" -msgstr "Сочетание клавиш для переключения на предыдущий метод ввода в списке:" +#: ../setup/engineabout.py:78 +#, python-format +msgid "Author: %s\n" +msgstr "Автор: %s\n" -#: ../data/ibus.schemas.in.h:23 ../setup/setup.ui.h:51 -msgid "The shortcut keys for turning input method on or off" -msgstr "Сочетание клавиш для включения/выключения метода ввода" +#: ../setup/engineabout.py:81 +msgid "Description:\n" +msgstr "Описание:\n" -#: ../data/ibus.schemas.in.h:24 -msgid "Trigger shortcut keys" -msgstr "Сочетание клавиш для включения/выключения" +#: ../setup/enginecombobox.py:139 ../setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "Выберите метод ввода" -#: ../data/ibus.schemas.in.h:25 -msgid "Use custom font" -msgstr "Использовать свой шрифт" +#: ../setup/enginetreeview.py:96 +msgid "Kbd" +msgstr "Kbd" -#: ../data/ibus.schemas.in.h:26 -msgid "Use custom font name for language panel" -msgstr "Использовать свой шрифт для языковой панели" +#: ../setup/ibus-setup.desktop.in.h:2 +msgid "Set IBus Preferences" +msgstr "Настроить параметры IBus" -#: ../data/ibus.schemas.in.h:27 -msgid "Use global input method" -msgstr "Использовать глобальный метод ввода" +#: ../setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "Комбинации клавиш" -#: ../data/ibus.schemas.in.h:28 ../setup/setup.ui.h:55 -msgid "Use system keyboard (XKB) layout" -msgstr "Использовать системную раскладку (XKB)" +#: ../setup/keyboardshortcut.py:67 +msgid "Key code:" +msgstr "Код клавиши:" -#: ../data/ibus.schemas.in.h:29 ../setup/setup.ui.h:56 -msgid "Use system keyboard layout" -msgstr "Использовать системную раскладку клавиатуры" +#: ../setup/keyboardshortcut.py:82 +msgid "Modifiers:" +msgstr "Модификаторы:" -#: ../setup/setup.ui.h:1 -msgid "..." -msgstr "..." +#. apply button +#: ../setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "_Применить" -#: ../setup/setup.ui.h:2 -msgid "Font and Style" -msgstr "Шрифт и стиль" +#. delete button +#: ../setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "_Удалить" -#: ../setup/setup.ui.h:3 -msgid "Global input method settings" -msgstr "Настройки глобального метода ввода" +#: ../setup/keyboardshortcut.py:252 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "" +"Нажмите клавишу (или сочетание клавиш).\n" +"Когда клавиша будет отпущена, окно закроется." -#: ../setup/setup.ui.h:4 -msgid "Keyboard Layout" -msgstr "Раскладка клавиатуры" +#: ../setup/keyboardshortcut.py:255 +msgid "Please press a key (or a key combination)" +msgstr "Нажмите клавишу (или сочетание клавиш)" -#: ../setup/setup.ui.h:5 -msgid "Keyboard Shortcuts" -msgstr "Горячие клавиши" +#: ../setup/main.py:121 ../setup/main.py:485 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "Использовать сочетание SHIFT для выбора предыдущего метода ввода" -#: ../setup/setup.ui.h:6 -msgid "Startup" -msgstr "Запуск" +#: ../setup/main.py:412 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "IBus не выполняется. Запустить?" -#: ../setup/setup.ui.h:7 +#: ../setup/main.py:433 msgid "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" msgstr "" -"IBus\n" -"Интеллектуальная система ввода\n" -"Домашняя страница: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" +"IBus запущен. Если у вас нет доступа к IBus, добавьте приведенные ниже " +"строки в $HOME/.bashrc и заново войдите в систему.\n" +"export GTK_IM_MODULE=ibus\n" +"export XMODIFIERS=@im=ibus\n" +"export QT_IM_MODULE=ibus" -#: ../setup/setup.ui.h:14 -msgid "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." -msgstr "" -"По умолчанию используется первый в списке метод ввода.\n" -"Используйте кнопки вверх/вниз для изменения." +#. Translators: %d == 5 currently +#: ../setup/main.py:447 +#, python-format +msgid "IBus daemon could not be started in %d seconds." +msgstr "Не удалось запустить IBus через %d сек." -#: ../setup/setup.ui.h:17 -msgid "Add the selected input method into the enabled input methods" -msgstr "Добавить выбранный метод ввода к используемым" +#: ../setup/main.py:459 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "Выберите комбинацию клавиш, чтобы %s" -#: ../setup/setup.ui.h:18 -msgid "Advanced" -msgstr "Дополнительно" +#. Translators: Title of the window +#: ../setup/main.py:461 +msgid "switching input methods" +msgstr "изменить метод ввода" -#: ../setup/setup.ui.h:19 -msgid "Always" -msgstr "Всегда" +#: ../tools/main.vala:51 +msgid "List engine name only" +msgstr "Показать имя модуля" -#: ../setup/setup.ui.h:20 -msgid "Bottom left corner" -msgstr "Левый нижний угол" +#: ../tools/main.vala:67 ../tools/main.vala:188 ../tools/main.vala:198 +msgid "Can't connect to IBus.\n" +msgstr "Не удалось подключиться к IBus.\n" -#: ../setup/setup.ui.h:21 -msgid "Bottom right corner" -msgstr "Правый нижний угол" +#: ../tools/main.vala:93 +#, c-format +msgid "language: %s\n" +msgstr "язык: %s\n" -#: ../setup/setup.ui.h:22 -msgid "Candidates orientation:" -msgstr "Ориентация кандидатов:" +#: ../tools/main.vala:161 +msgid "No engine is set.\n" +msgstr "Модуль не выбран.\n" -#: ../setup/setup.ui.h:23 -msgid "Custom" -msgstr "Свой" +#: ../tools/main.vala:169 +msgid "Set global engine failed.\n" +msgstr "Не удалось настроить глобальный модуль.\n" -#: ../setup/setup.ui.h:24 -msgid "Disable:" -msgstr "" +#: ../tools/main.vala:174 +msgid "Get global engine failed.\n" +msgstr "Не удалось получить глобальный модуль.\n" -#: ../setup/setup.ui.h:25 -msgid "Embed preedit text in application window" -msgstr "Вставить готовый текст в окно приложения" +#: ../tools/main.vala:213 +msgid "Read the system registry cache." +msgstr "Чтение кэша системного реестра." -#: ../setup/setup.ui.h:26 -msgid "Embed the preedit text of input method in the application window" -msgstr "Вставить готовый текст метода ввода в окно приложения" +#: ../tools/main.vala:215 +msgid "Read the registry cache FILE." +msgstr "Чтение файла кэша реестра." -#: ../setup/setup.ui.h:27 -msgid "Embedded in menu" -msgstr "Встроена в меню" +#: ../tools/main.vala:233 ../tools/main.vala:238 +msgid "The registry cache is invalid.\n" +msgstr "Недействительный кэш реестра.\n" -#: ../setup/setup.ui.h:28 -msgid "Enable or disable:" -msgstr "Включить или выключить:" +#: ../tools/main.vala:253 +msgid "Write the system registry cache." +msgstr "Запись в кэш системного реестра." -#: ../setup/setup.ui.h:29 -msgid "Enable:" -msgstr "" +#: ../tools/main.vala:255 +msgid "Write the registry cache FILE." +msgstr "Запись в файл кэша реестра." -#: ../setup/setup.ui.h:30 -msgid "General" -msgstr "Основные" +#: ../tools/main.vala:307 +msgid "Resetting…" +msgstr "Сбрасываю…" -#: ../setup/setup.ui.h:31 -msgid "Horizontal" -msgstr "Горизонтально" +#: ../tools/main.vala:321 +msgid "Done" +msgstr "Готово" -#: ../setup/setup.ui.h:34 -msgid "Language panel position:" -msgstr "Расположение языковой панели:" +#: ../tools/main.vala:366 +msgid "Set or get engine" +msgstr "Установка или получение глобального модуля" -#: ../setup/setup.ui.h:35 -msgid "Move down the selected input method in the enabled input methods" -msgstr "Переместить выбранный метод ввода вниз в списке используемых" +#: ../tools/main.vala:367 +msgid "Exit ibus-daemon" +msgstr "Остановить ibus-daemon" -#: ../setup/setup.ui.h:36 -msgid "Move up the selected input method in the enabled input methods list" -msgstr "Переместить выбранный метод ввода вверх в списке используемых" +#: ../tools/main.vala:368 +msgid "Show available engines" +msgstr "Показать доступные глобальные модули" -#: ../setup/setup.ui.h:37 -msgid "Next input method:" -msgstr "Следующий метод ввода:" +#: ../tools/main.vala:369 +msgid "(Not implemented)" +msgstr "(не реализовано)" -#: ../setup/setup.ui.h:38 -msgid "Previous input method:" -msgstr "Предыдущий метод ввода:" +#: ../tools/main.vala:370 +msgid "Restart ibus-daemon" +msgstr "Перезапустить ibus-daemon" -#: ../setup/setup.ui.h:39 -msgid "Remove the selected input method from the enabled input methods" -msgstr "Удалить выбранный метод ввода из списка" +#: ../tools/main.vala:371 +msgid "Show version" +msgstr "Показать версию" -#: ../setup/setup.ui.h:40 -msgid "Set the behavior of ibus how to show or hide language bar" -msgstr "Установить поведение iBus для показа или скрытия языковой панели" +#: ../tools/main.vala:372 +msgid "Show the content of registry cache" +msgstr "Показать содержимое кеша реестра" -#: ../setup/setup.ui.h:41 -msgid "Set the orientation of candidates in lookup table" -msgstr "Установить ориентацию кандидатов в таблице поиска" +#: ../tools/main.vala:373 +msgid "Create registry cache" +msgstr "Создать кеш реестра" -#: ../setup/setup.ui.h:44 -msgid "Show information of the selected input method" -msgstr "Показать информацию о выбранном методе ввода" +#: ../tools/main.vala:374 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "Вывести адрес D-Bus сервиса ibus-daemon" -#: ../setup/setup.ui.h:46 -msgid "Show input method's name on language bar when check the checkbox" -msgstr "" -"Показывать название метода ввода на языковой панели, когда пункт выбран" +#: ../tools/main.vala:375 +msgid "Show the configuration values" +msgstr "Показать значения параметров настройки" -#: ../setup/setup.ui.h:47 -msgid "Show language panel:" -msgstr "Показывать языковую панель:" +#: ../tools/main.vala:376 +msgid "Reset the configuration values" +msgstr "Сбросить значения параметров настройки" + +#: ../tools/main.vala:378 +msgid "Save emoji on dialog to clipboard " +msgstr "Сохранить емодзи с диалога в буфер обмена " + +#: ../tools/main.vala:380 +msgid "Show this information" +msgstr "Показать эту информацию" + +#: ../tools/main.vala:386 +#, c-format +msgid "Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "Формат: %s КОМАНДА [ПАРАМЕТР...]\n" +"\n" -#: ../setup/setup.ui.h:48 -msgid "Start ibus on login" -msgstr "Запускать iBus при входе в систему:" +#: ../tools/main.vala:387 +msgid "Commands:\n" +msgstr "Команды:\n" + +#: ../tools/main.vala:416 +#, c-format +msgid "%s is unknown command!\n" +msgstr "Неизвестная команда: %s\n" + +#: ../ui/gtk3/emojier.vala:289 ../ui/gtk3/panel.vala:1224 +msgid "Emoji Dialog" +msgstr "Диалог Емодзи" + +#: ../ui/gtk3/emojier.vala:293 +msgid "Type annotation or choose emoji" +msgstr "Введите аннотацию, чтобы выбрать емодзи" + +#: ../ui/gtk3/emojier.vala:564 ../ui/gtk3/emojier.vala:603 +msgid "Favorites" +msgstr "Избранные" + +#: ../ui/gtk3/emojier.vala:628 +msgid "Page Down" +msgstr "Стр. вниз" + +#: ../ui/gtk3/emojier.vala:639 +msgid "Page Up" +msgstr "Стр. вверх" + +#. TODO: Provide a custom description and annotation for +#. the favorite emojis. +#: ../ui/gtk3/emojier.vala:813 ../ui/gtk3/emojier.vala:827 +#, c-format +msgid "Description: %s" +msgstr "Описание: %s" + +#: ../ui/gtk3/emojier.vala:813 +msgid "None" +msgstr "Нет" + +#: ../ui/gtk3/emojier.vala:818 ../ui/gtk3/emojier.vala:857 +#, c-format +msgid "Code point: %s" +msgstr "Точка кода: %s" + +#: ../ui/gtk3/emojier.vala:838 +#, c-format +msgid "Annotations: %s" +msgstr "Аннотации: %s" + +#: ../ui/gtk3/panel.vala:271 ../ui/gtk3/panel.vala:302 +msgid "IBus Panel" +msgstr "Панель IBus" + +#: ../ui/gtk3/panel.vala:823 +msgid "IBus Update" +msgstr "Обновление IBus" + +#: ../ui/gtk3/panel.vala:824 ../ui/gtk3/panel.vala:835 +msgid "Super+space is now the default hotkey." +msgstr "Теперь горячей кнопкой служит Super+пробел." + +#: ../ui/gtk3/panel.vala:1196 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus — интеллектуальная система ввода для Linux и Unix." -#: ../setup/setup.ui.h:49 -msgid "The shortcut keys for switching to next input method in the list" -msgstr "Горячие клавиши для переключения на следующий метод ввода в списке:" +#: ../ui/gtk3/panel.vala:1200 +msgid "translator-credits" +msgstr "" +"Alexey Kotlyarov , 2009\n" +"Yulia , 2010\n" +"Alexey Rubtsov , 2021" -#: ../setup/setup.ui.h:50 -msgid "The shortcut keys for switching to previous input method in the list" -msgstr "Горячие клавиши для переключения на предыдущий метод ввода в списке:" +#: ../ui/gtk3/panel.vala:1219 +msgid "Preferences" +msgstr "Параметры" -#: ../setup/setup.ui.h:52 -msgid "Top left corner" -msgstr "Левый верхний угол" +#: ../ui/gtk3/panel.vala:1238 +msgid "Restart" +msgstr "Перезапустить" -#: ../setup/setup.ui.h:53 -msgid "Top right corner" -msgstr "Правый верхний угол" +#: ../ui/gtk3/panel.vala:1242 +msgid "Quit" +msgstr "Выход" + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ../ui/gtk3/propertypanel.vala:341 ../ui/gtk3/propertypanel.vala:349 +msgid "default:LTR" +msgstr "default:LTR" + +#: ../ui/gtk3/emojierapp.vala:45 +msgid "Canceled to choose an emoji." +msgstr "Выбор емодзи отменён." + +#: ../ui/gtk3/emojierapp.vala:52 +msgid "Copied an emoji to your clipboard." +msgstr "Емодзи скопировано в буфер обмена." + +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ../ui/gtk3/emojierapp.vala:82 +msgid "\"FONT\" for emoji chracters on emoji dialog" +msgstr "" -#: ../setup/setup.ui.h:54 -msgid "Use custom font:" -msgstr "Произвольный шрифт:" +#: ../ui/gtk3/emojierapp.vala:83 +msgid "FONT" +msgstr "ШРИФТ" -#: ../setup/setup.ui.h:57 -msgid "Vertical" -msgstr "Вертикально" +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ../ui/gtk3/emojierapp.vala:88 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" +msgstr "" -#: ../setup/setup.ui.h:58 -msgid "When active" -msgstr "Когда активно" +#: ../ui/gtk3/emojierapp.vala:89 +msgid "LANG" +msgstr "ЯЗЫК" diff --git a/po/sq.po b/po/sq.po new file mode 100644 index 000000000..8d30683d9 --- /dev/null +++ b/po/sq.po @@ -0,0 +1,933 @@ +# Albanian translation of ibus. +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2017 Takao Fujiwara +# This file is distributed under the same license as the ibus package. +# +# Sidorela Uku , 2017. #zanata +msgid "" +msgstr "" +"Project-Id-Version: IBus\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2017-04-27 12:38+0900\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2017-04-20 11:38-0400\n" +"Last-Translator: Sidorela Uku \n" +"Language-Team: Albanian\n" +"Language: sq\n" +"X-Generator: Zanata 3.9.6\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ../setup/setup.ui.h:1 +msgid "Horizontal" +msgstr "Horizontal" + +#: ../setup/setup.ui.h:2 +msgid "Vertical" +msgstr "Vertikal" + +#: ../setup/setup.ui.h:3 +msgid "Top left corner" +msgstr "Cepi lart majtas" + +#: ../setup/setup.ui.h:4 +msgid "Top right corner" +msgstr "Cepi lart djathtas" + +#: ../setup/setup.ui.h:5 +msgid "Bottom left corner" +msgstr "" + +#: ../setup/setup.ui.h:6 +msgid "Bottom right corner" +msgstr "" + +#: ../setup/setup.ui.h:7 +msgid "Custom" +msgstr "" + +#: ../setup/setup.ui.h:8 +msgid "Do not show" +msgstr "" + +#: ../setup/setup.ui.h:9 +msgid "Hide automatically" +msgstr "" + +#: ../setup/setup.ui.h:10 +msgid "Always" +msgstr "Gjithmonë" + +#: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 +msgid "IBus Preferences" +msgstr "" + +#: ../setup/setup.ui.h:12 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "" + +#: ../setup/setup.ui.h:13 +msgid "Next input method:" +msgstr "" + +#: ../setup/setup.ui.h:14 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "" + +#: ../setup/setup.ui.h:15 +msgid "Previous input method:" +msgstr "" + +#: ../setup/setup.ui.h:16 +msgid "The shortcut keys for showing emoji dialog" +msgstr "" + +#: ../setup/setup.ui.h:17 +msgid "Emoji choice:" +msgstr "" + +#: ../setup/setup.ui.h:18 +msgid "..." +msgstr "" + +#: ../setup/setup.ui.h:19 ../data/ibus.schemas.in.h:16 +msgid "The shortcut keys for turning input method on or off" +msgstr "" + +#: ../setup/setup.ui.h:20 +msgid "Enable or disable:" +msgstr "" + +#: ../setup/setup.ui.h:21 +msgid "Enable:" +msgstr "" + +#: ../setup/setup.ui.h:22 +msgid "Disable:" +msgstr "" + +#: ../setup/setup.ui.h:23 +msgid "Keyboard Shortcuts" +msgstr "" + +#: ../setup/setup.ui.h:24 +msgid "Set the orientation of candidates in lookup table" +msgstr "" + +#: ../setup/setup.ui.h:25 +msgid "Candidates orientation:" +msgstr "" + +#: ../setup/setup.ui.h:26 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "" + +#: ../setup/setup.ui.h:27 +msgid "Show property panel:" +msgstr "" + +#: ../setup/setup.ui.h:28 +msgid "Language panel position:" +msgstr "" + +#: ../setup/setup.ui.h:29 ../data/ibus.schemas.in.h:36 +msgid "Show icon on system tray" +msgstr "" + +#: ../setup/setup.ui.h:30 ../data/ibus.schemas.in.h:38 +msgid "Show input method name on language bar" +msgstr "" + +#: ../setup/setup.ui.h:31 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "" + +#: ../setup/setup.ui.h:32 +msgid "Embed preedit text in application window" +msgstr "" + +#: ../setup/setup.ui.h:33 +msgid "Embed the preedit text of input method in the application window" +msgstr "" + +#: ../setup/setup.ui.h:34 +msgid "Use custom font:" +msgstr "" + +#: ../setup/setup.ui.h:35 +msgid "Set a font of emoji candidates on the emoji dialog" +msgstr "" + +#: ../setup/setup.ui.h:36 +msgid "Emoji font:" +msgstr "" + +#: ../setup/setup.ui.h:37 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "" + +#: ../setup/setup.ui.h:38 +msgid "Emoji annotation language:" +msgstr "" + +#: ../setup/setup.ui.h:39 +msgid "Font and Style" +msgstr "" + +#: ../setup/setup.ui.h:40 +msgid "General" +msgstr "" + +#. add button +#: ../setup/setup.ui.h:41 ../setup/enginedialog.py:61 +#: ../setup/keyboardshortcut.py:124 +msgid "_Add" +msgstr "" + +#: ../setup/setup.ui.h:42 +msgid "Add the selected input method into the enabled input methods" +msgstr "" + +#: ../setup/setup.ui.h:43 +msgid "_Remove" +msgstr "" + +#: ../setup/setup.ui.h:44 +msgid "Remove the selected input method from the enabled input methods" +msgstr "" + +#: ../setup/setup.ui.h:45 +msgid "_Up" +msgstr "" + +#: ../setup/setup.ui.h:46 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "" + +#: ../setup/setup.ui.h:47 +msgid "_Down" +msgstr "" + +#: ../setup/setup.ui.h:48 +msgid "Move down the selected input method in the enabled input methods" +msgstr "" + +#: ../setup/setup.ui.h:49 +msgid "_About" +msgstr "" + +#: ../setup/setup.ui.h:50 +msgid "Show information of the selected input method" +msgstr "" + +#: ../setup/setup.ui.h:51 +msgid "_Preferences" +msgstr "" + +#: ../setup/setup.ui.h:52 +msgid "Show setup of the selected input method" +msgstr "" + +#: ../setup/setup.ui.h:53 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" + +#. create im name & icon column +#: ../setup/setup.ui.h:54 ../setup/enginetreeview.py:68 +msgid "Input Method" +msgstr "" + +#: ../setup/setup.ui.h:55 ../data/ibus.schemas.in.h:44 +msgid "Use system keyboard layout" +msgstr "" + +#: ../setup/setup.ui.h:56 ../data/ibus.schemas.in.h:45 +msgid "Use system keyboard (XKB) layout" +msgstr "" + +#: ../setup/setup.ui.h:57 +msgid "Keyboard Layout" +msgstr "" + +#: ../setup/setup.ui.h:58 ../data/ibus.schemas.in.h:60 +msgid "Share the same input method among all applications" +msgstr "" + +#: ../setup/setup.ui.h:59 +msgid "Global input method settings" +msgstr "" + +#: ../setup/setup.ui.h:60 +msgid "Advanced" +msgstr "" + +#: ../setup/setup.ui.h:61 +msgid "" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" +msgstr "" + +#: ../setup/setup.ui.h:68 +msgid "Start ibus on login" +msgstr "" + +#: ../setup/setup.ui.h:69 +msgid "Startup" +msgstr "" + +#: ../setup/setup.ui.h:70 ../setup/engineabout.py:37 ../ui/gtk3/panel.vala:1250 +msgid "About" +msgstr "" + +#: ../setup/setup.ui.h:71 ../setup/engineabout.py:40 +msgid "_Close" +msgstr "" + +#. Translators: Here “Preload” is a verb +#: ../data/ibus.schemas.in.h:2 +msgid "Preload engines" +msgstr "" + +#. Translators: Tooltip for the button “Preload Engines” +#: ../data/ibus.schemas.in.h:4 +msgid "Preload engines during ibus starts up" +msgstr "" + +#: ../data/ibus.schemas.in.h:5 +msgid "Engines order" +msgstr "" + +#: ../data/ibus.schemas.in.h:6 +msgid "Saved engines order in input method list" +msgstr "" + +#: ../data/ibus.schemas.in.h:7 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "" + +#: ../data/ibus.schemas.in.h:8 +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is 400." +" 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " +"show the window and switch prev/next engines." +msgstr "" + +#: ../data/ibus.schemas.in.h:9 +msgid "Saved version number" +msgstr "" + +#: ../data/ibus.schemas.in.h:10 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" + +#: ../data/ibus.schemas.in.h:11 +msgid "Latin layouts which have no ASCII" +msgstr "" + +#: ../data/ibus.schemas.in.h:12 +msgid "US layout is appended to the latin layouts. variant can be omitted." +msgstr "" + +#: ../data/ibus.schemas.in.h:13 +msgid "Use xmodmap" +msgstr "" + +#: ../data/ibus.schemas.in.h:14 +msgid "" +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." +msgstr "" + +#: ../data/ibus.schemas.in.h:15 +msgid "Trigger shortcut keys" +msgstr "" + +#: ../data/ibus.schemas.in.h:17 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "" + +#: ../data/ibus.schemas.in.h:18 +msgid "Enable shortcut keys" +msgstr "" + +#: ../data/ibus.schemas.in.h:19 +msgid "The shortcut keys for turning input method on" +msgstr "" + +#: ../data/ibus.schemas.in.h:20 +msgid "Disable shortcut keys" +msgstr "" + +#: ../data/ibus.schemas.in.h:21 +msgid "The shortcut keys for turning input method off" +msgstr "" + +#: ../data/ibus.schemas.in.h:22 +msgid "Next engine shortcut keys" +msgstr "" + +#: ../data/ibus.schemas.in.h:23 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "" + +#: ../data/ibus.schemas.in.h:24 +msgid "Prev engine shortcut keys" +msgstr "" + +#: ../data/ibus.schemas.in.h:25 +msgid "The shortcut keys for switching to the previous input method" +msgstr "" + +#: ../data/ibus.schemas.in.h:26 +msgid "Auto hide" +msgstr "" + +#: ../data/ibus.schemas.in.h:27 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "" + +#: ../data/ibus.schemas.in.h:28 +msgid "Language panel position" +msgstr "" + +#: ../data/ibus.schemas.in.h:29 +msgid "" +"The position of the language panel. 0 = Top left corner, 1 = Top right " +"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +msgstr "" + +#: ../data/ibus.schemas.in.h:30 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "" + +#: ../data/ibus.schemas.in.h:31 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" + +#: ../data/ibus.schemas.in.h:32 +msgid "The milliseconds to show property panel" +msgstr "" + +#: ../data/ibus.schemas.in.h:33 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" + +#: ../data/ibus.schemas.in.h:34 +msgid "Orientation of lookup table" +msgstr "" + +#: ../data/ibus.schemas.in.h:35 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "" + +#: ../data/ibus.schemas.in.h:37 +msgid "Show input method name" +msgstr "" + +#: ../data/ibus.schemas.in.h:39 +msgid "RGBA value of XKB icon" +msgstr "" + +#: ../data/ibus.schemas.in.h:41 +#, no-c-format +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " +"'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " +"to 255 or precentage values in the range 0% to 100%, and 'a' is a floating " +"point value in the range 0 to 1 of the alpha." +msgstr "" + +#: ../data/ibus.schemas.in.h:42 +msgid "The milliseconds to show the panel icon for a property" +msgstr "" + +#: ../data/ibus.schemas.in.h:43 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" + +#: ../data/ibus.schemas.in.h:46 +msgid "Use custom font" +msgstr "" + +#: ../data/ibus.schemas.in.h:47 +msgid "Use custom font name for language panel" +msgstr "" + +#: ../data/ibus.schemas.in.h:48 +msgid "Custom font" +msgstr "" + +#: ../data/ibus.schemas.in.h:49 +msgid "Custom font name for language panel" +msgstr "" + +#: ../data/ibus.schemas.in.h:50 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "" + +#: ../data/ibus.schemas.in.h:51 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "" + +#: ../data/ibus.schemas.in.h:52 +msgid "Custom font name for emoji chracters on emoji dialog" +msgstr "" + +#: ../data/ibus.schemas.in.h:53 +msgid "Default language for emoji dictionary" +msgstr "" + +#: ../data/ibus.schemas.in.h:54 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" +msgstr "" + +#: ../data/ibus.schemas.in.h:55 +msgid "favorite emoji list on emoji dialog" +msgstr "" + +#: ../data/ibus.schemas.in.h:56 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "" + +#: ../data/ibus.schemas.in.h:57 +msgid "Embed Preedit Text" +msgstr "" + +#: ../data/ibus.schemas.in.h:58 +msgid "Embed Preedit Text in Application Window" +msgstr "" + +#: ../data/ibus.schemas.in.h:59 +msgid "Use global input method" +msgstr "" + +#: ../data/ibus.schemas.in.h:61 +msgid "Enable input method by default" +msgstr "" + +#: ../data/ibus.schemas.in.h:62 +msgid "Enable input method by default when the application gets input focus" +msgstr "" + +#: ../data/ibus.schemas.in.h:63 +msgid "DConf preserve name prefixes" +msgstr "" + +#: ../data/ibus.schemas.in.h:64 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "" + +#: ../ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "" + +#: ../ibus/lang.py:41 ../src/ibusutil.c:158 +msgid "Other" +msgstr "" + +#: ../setup/emojilang.py:67 +msgid "Select a language" +msgstr "" + +#: ../setup/emojilang.py:70 ../setup/enginedialog.py:60 +#: ../setup/keyboardshortcut.py:339 ../setup/main.py:457 +msgid "_Cancel" +msgstr "" + +#: ../setup/emojilang.py:71 ../setup/keyboardshortcut.py:340 +#: ../setup/main.py:458 +msgid "_OK" +msgstr "" + +#: ../setup/emojilang.py:235 ../setup/enginedialog.py:205 +msgid "More…" +msgstr "Më shumë..." + +#: ../setup/engineabout.py:72 +#, python-format +msgid "Language: %s\n" +msgstr "Gjuhë: %s\n" + +#: ../setup/engineabout.py:75 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "" + +#: ../setup/engineabout.py:78 +#, python-format +msgid "Author: %s\n" +msgstr "Autori: %s\n" + +#: ../setup/engineabout.py:81 +msgid "Description:\n" +msgstr "Përshkrimi:\n" + +#: ../setup/enginecombobox.py:139 ../setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "" + +#: ../setup/enginetreeview.py:96 +msgid "Kbd" +msgstr "" + +#: ../setup/ibus-setup.desktop.in.h:2 +msgid "Set IBus Preferences" +msgstr "" + +#: ../setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "Shkurtimet e tastierës" + +#: ../setup/keyboardshortcut.py:67 +msgid "Key code:" +msgstr "" + +#: ../setup/keyboardshortcut.py:82 +msgid "Modifiers:" +msgstr "Modifikuesit:" + +#. apply button +#: ../setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "_Apliko" + +#. delete button +#: ../setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "_Fshi" + +#: ../setup/keyboardshortcut.py:252 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "" + +#: ../setup/keyboardshortcut.py:255 +msgid "Please press a key (or a key combination)" +msgstr "" + +#: ../setup/main.py:121 ../setup/main.py:485 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "" + +#: ../setup/main.py:412 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "" + +#: ../setup/main.py:433 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "" + +#. Translators: %d == 5 currently +#: ../setup/main.py:447 +#, python-format +msgid "IBus daemon could not be started in %d seconds" +msgstr "" + +#: ../setup/main.py:459 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "" + +#. Translators: Title of the window +#: ../setup/main.py:461 +msgid "switching input methods" +msgstr "" + +#: ../src/ibusemojigen.h:30 +msgid "Activities" +msgstr "" + +#: ../src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "" + +#: ../src/ibusemojigen.h:32 +msgid "Flags" +msgstr "" + +#: ../src/ibusemojigen.h:33 +msgid "Food & Drink" +msgstr "" + +#: ../src/ibusemojigen.h:34 +msgid "Objects" +msgstr "" + +#: ../src/ibusemojigen.h:35 +msgid "Smileys & People" +msgstr "" + +#: ../src/ibusemojigen.h:36 +msgid "Symbols" +msgstr "" + +#: ../src/ibusemojigen.h:37 +msgid "Travel & Places" +msgstr "" + +#: ../tools/main.vala:51 +msgid "List engine name only" +msgstr "" + +#: ../tools/main.vala:67 ../tools/main.vala:188 ../tools/main.vala:198 +msgid "Can't connect to IBus.\n" +msgstr "" + +#: ../tools/main.vala:93 +#, c-format +msgid "language: %s\n" +msgstr "" + +#: ../tools/main.vala:161 +msgid "No engine is set.\n" +msgstr "" + +#: ../tools/main.vala:169 +msgid "Set global engine failed.\n" +msgstr "" + +#: ../tools/main.vala:174 +msgid "Get global engine failed.\n" +msgstr "" + +#: ../tools/main.vala:213 +msgid "Read the system registry cache." +msgstr "" + +#: ../tools/main.vala:215 +msgid "Read the registry cache FILE." +msgstr "" + +#: ../tools/main.vala:233 ../tools/main.vala:238 +msgid "The registry cache is invalid.\n" +msgstr "" + +#: ../tools/main.vala:253 +msgid "Write the system registry cache." +msgstr "" + +#: ../tools/main.vala:255 +msgid "Write the registry cache FILE." +msgstr "" + +#: ../tools/main.vala:307 +msgid "Resetting…" +msgstr "" + +#: ../tools/main.vala:321 +msgid "Done" +msgstr "" + +#: ../tools/main.vala:366 +msgid "Set or get engine" +msgstr "" + +#: ../tools/main.vala:367 +msgid "Exit ibus-daemon" +msgstr "" + +#: ../tools/main.vala:368 +msgid "Show available engines" +msgstr "" + +#: ../tools/main.vala:369 +msgid "(Not implemented)" +msgstr "" + +#: ../tools/main.vala:370 +msgid "Restart ibus-daemon" +msgstr "" + +#: ../tools/main.vala:371 +msgid "Show version" +msgstr "" + +#: ../tools/main.vala:372 +msgid "Show the content of registry cache" +msgstr "" + +#: ../tools/main.vala:373 +msgid "Create registry cache" +msgstr "" + +#: ../tools/main.vala:374 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "" + +#: ../tools/main.vala:375 +msgid "Show the configuration values" +msgstr "" + +#: ../tools/main.vala:376 +msgid "Reset the configuration values" +msgstr "" + +#: ../tools/main.vala:378 +msgid "Save emoji on dialog to clipboard " +msgstr "" + +#: ../tools/main.vala:380 +msgid "Show this information" +msgstr "" + +#: ../tools/main.vala:386 +#, c-format +msgid "Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "" + +#: ../tools/main.vala:387 +msgid "Commands:\n" +msgstr "" + +#: ../tools/main.vala:416 +#, c-format +msgid "%s is unknown command!\n" +msgstr "" + +#: ../ui/gtk3/emojier.vala:170 +msgid "Others" +msgstr "" + +#: ../ui/gtk3/emojier.vala:284 ../ui/gtk3/panel.vala:1242 +msgid "Emoji Choice" +msgstr "" + +#: ../ui/gtk3/emojier.vala:290 +msgid "Type annotation or choose emoji" +msgstr "" + +#: ../ui/gtk3/emojier.vala:595 ../ui/gtk3/emojier.vala:642 +msgid "Favorites" +msgstr "" + +#: ../ui/gtk3/emojier.vala:667 +msgid "Page Down" +msgstr "" + +#: ../ui/gtk3/emojier.vala:678 +msgid "Page Up" +msgstr "" + +#. TODO: Provide a custom description and annotation for +#. the favorite emojis. +#: ../ui/gtk3/emojier.vala:849 ../ui/gtk3/emojier.vala:863 +#, c-format +msgid "Description: %s" +msgstr "" + +#: ../ui/gtk3/emojier.vala:849 +msgid "None" +msgstr "" + +#: ../ui/gtk3/emojier.vala:854 ../ui/gtk3/emojier.vala:893 +#, c-format +msgid "Code point: %s" +msgstr "" + +#: ../ui/gtk3/emojier.vala:874 +#, c-format +msgid "Annotations: %s" +msgstr "" + +#: ../ui/gtk3/emojierapp.vala:44 +msgid "Canceled to choose an emoji." +msgstr "" + +#: ../ui/gtk3/emojierapp.vala:51 +msgid "Copied an emoji to your clipboard." +msgstr "" + +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ../ui/gtk3/emojierapp.vala:71 +msgid "\"FONT\" for emoji chracters on emoji dialog" +msgstr "" + +#: ../ui/gtk3/emojierapp.vala:72 +msgid "FONT" +msgstr "" + +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ../ui/gtk3/emojierapp.vala:77 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" +msgstr "" + +#: ../ui/gtk3/emojierapp.vala:78 +msgid "LANG" +msgstr "" + +#: ../ui/gtk3/panel.vala:271 ../ui/gtk3/panel.vala:302 +msgid "IBus Panel" +msgstr "" + +#: ../ui/gtk3/panel.vala:832 +msgid "IBus Update" +msgstr "" + +#: ../ui/gtk3/panel.vala:833 ../ui/gtk3/panel.vala:844 +msgid "Super+space is now the default hotkey." +msgstr "" + +#: ../ui/gtk3/panel.vala:1214 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "" + +#: ../ui/gtk3/panel.vala:1218 +msgid "translator-credits" +msgstr "" + +#: ../ui/gtk3/panel.vala:1237 +msgid "Preferences" +msgstr "" + +#: ../ui/gtk3/panel.vala:1256 +msgid "Restart" +msgstr "" + +#: ../ui/gtk3/panel.vala:1260 +msgid "Quit" +msgstr "" + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ../ui/gtk3/propertypanel.vala:341 ../ui/gtk3/propertypanel.vala:349 +msgid "default:LTR" +msgstr "" diff --git a/po/sr.po b/po/sr.po index 02f74d2dc..1ec952ecb 100644 --- a/po/sr.po +++ b/po/sr.po @@ -1,615 +1,693 @@ -# Serbian translations for ibus -# Copyright (C) 2008 Huang Peng +# translation of ibus.pot to Serbian +# Serbian translation of ibus. +# Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. -# Miloš Komarčević , 2009. # +# Translators: +# Miloš Komarčević , 2009 msgid "" msgstr "" -"Project-Id-Version: ibus\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-12 00:41+0900\n" -"PO-Revision-Date: 2009-04-01 19:58+0100\n" +"Project-Id-Version: IBus\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2014-02-18 13:46+0900\n" +"PO-Revision-Date: 2014-02-18 05:49+0000\n" "Last-Translator: Miloš Komarčević \n" "Language-Team: Serbian \n" -"Language: sr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\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" +"Language: sr\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" -#: ../bus/ibus.desktop.in.h:1 -msgid "IBus" -msgstr "IBus" +#: ../setup/setup.ui.h:1 +msgid "Horizontal" +msgstr "" -#: ../bus/ibus.desktop.in.h:2 -#, fuzzy -msgid "Input Method Framework" -msgstr "IBus радни оквир методе уноса" +#: ../setup/setup.ui.h:2 +msgid "Vertical" +msgstr "" -#: ../bus/ibus.desktop.in.h:3 -#, fuzzy -msgid "Start IBus Input Method Framework" -msgstr "IBus радни оквир методе уноса" +#: ../setup/setup.ui.h:3 +msgid "Top left corner" +msgstr "" -#: ../ibus/_config.py.in:39 -msgid "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +#: ../setup/setup.ui.h:4 +msgid "Top right corner" msgstr "" -#: ../ibus/lang.py:41 -msgid "Other" -msgstr "Друго" +#: ../setup/setup.ui.h:5 +msgid "Bottom left corner" +msgstr "" -#: ../ui/gtk/candidatepanel.py:264 -#, fuzzy -msgid "Previous page" -msgstr "Претходна метода уноса:" +#: ../setup/setup.ui.h:6 +msgid "Bottom right corner" +msgstr "" -#: ../ui/gtk/candidatepanel.py:269 -#, fuzzy -msgid "Next page" -msgstr "следећи погон" +#: ../setup/setup.ui.h:7 +msgid "Custom" +msgstr "" -#: ../ui/gtk/main.py:55 -msgid "" -"Some input methods have been installed, removed or updated. Please restart " -"ibus input platform." +#: ../setup/setup.ui.h:8 +msgid "Do not show" msgstr "" -#: ../ui/gtk/main.py:59 -#, fuzzy -msgid "Restart Now" -msgstr "Покрени поново" +#: ../setup/setup.ui.h:9 +msgid "Hide automatically" +msgstr "" -#: ../ui/gtk/main.py:60 -#, fuzzy -msgid "Later" -msgstr "Друго" +#: ../setup/setup.ui.h:10 +msgid "Always" +msgstr "" -#: ../ui/gtk/panel.py:109 -msgid "IBus input method framework" -msgstr "IBus радни оквир методе уноса" +#: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 +msgid "IBus Preferences" +msgstr "IBus поставке" -#: ../ui/gtk/panel.py:327 -msgid "Restart" -msgstr "Покрени поново" +#: ../setup/setup.ui.h:12 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "" -#: ../ui/gtk/panel.py:414 -#, fuzzy -msgid "Turn off input method" -msgstr "Нема методе уноса" +#: ../setup/setup.ui.h:13 +msgid "Next input method:" +msgstr "Следећа метода уноса:" -#: ../ui/gtk/panel.py:453 -msgid "No input window" +#: ../setup/setup.ui.h:14 +msgid "The shortcut keys for switching to previous input method in the list" msgstr "" -#: ../ui/gtk/panel.py:484 -msgid "IBus is an intelligent input bus for Linux/Unix." -msgstr "IBus је интелигентна магистрала уноса за Linux/Unix." +#: ../setup/setup.ui.h:15 +msgid "Previous input method:" +msgstr "" -#: ../ui/gtk/panel.py:488 -msgid "translator-credits" -msgstr "Serbian " +#: ../setup/setup.ui.h:16 +msgid "..." +msgstr "..." -#: ../ui/gtk/languagebar.py:106 -#, fuzzy -msgid "About the input method" -msgstr "Методе уноса" +#: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 +msgid "The shortcut keys for turning input method on or off" +msgstr "" -#: ../ui/gtk/languagebar.py:214 -#, fuzzy -msgid "Switch input method" -msgstr "Нема методе уноса" +#: ../setup/setup.ui.h:18 +msgid "Enable or disable:" +msgstr "Укључи или искључи:" -#: ../ui/gtk/languagebar.py:357 ../ui/gtk/engineabout.py:33 -#: ../setup/engineabout.py:33 ../setup/setup.ui.h:16 -msgid "About" -msgstr "О програму" +#: ../setup/setup.ui.h:19 +msgid "Enable:" +msgstr "" -#: ../ui/gtk/languagebar.py:361 -#, fuzzy -msgid "About the Input Method" -msgstr "Методе уноса" +#: ../setup/setup.ui.h:20 +msgid "Disable:" +msgstr "" -#: ../ui/gtk/engineabout.py:61 ../setup/engineabout.py:61 -#, python-format -msgid "Language: %s\n" +#: ../setup/setup.ui.h:21 +msgid "Keyboard Shortcuts" +msgstr "Пречице тастатуре" + +#: ../setup/setup.ui.h:22 +msgid "Set the orientation of candidates in lookup table" msgstr "" -#: ../ui/gtk/engineabout.py:63 ../setup/engineabout.py:63 -#, fuzzy, python-format -msgid "Keyboard layout: %s\n" -msgstr "Пречице тастатуре" +#: ../setup/setup.ui.h:23 +msgid "Candidates orientation:" +msgstr "Оријентације кандидата:" -#: ../ui/gtk/engineabout.py:65 ../setup/engineabout.py:65 -#, python-format -msgid "Author: %s\n" +#: ../setup/setup.ui.h:24 +msgid "Set the behavior of ibus how to show or hide language bar" msgstr "" -#: ../ui/gtk/engineabout.py:67 ../setup/engineabout.py:67 -msgid "Description:\n" +#: ../setup/setup.ui.h:25 +msgid "Show property panel:" msgstr "" -#: ../setup/main.py:102 -msgid "trigger" -msgstr "окидач" +#: ../setup/setup.ui.h:26 +msgid "Language panel position:" +msgstr "" -#: ../setup/main.py:113 -msgid "enable" +#: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 +msgid "Show icon on system tray" msgstr "" -#: ../setup/main.py:124 -msgid "disable" +#: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 +msgid "Show input method name on language bar" msgstr "" -#: ../setup/main.py:135 -#, fuzzy -msgid "next input method" -msgstr "Следећа метода уноса" +#: ../setup/setup.ui.h:29 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "" -#: ../setup/main.py:146 -#, fuzzy -msgid "previous input method" -msgstr "Претходна метода уноса" +#: ../setup/setup.ui.h:30 +msgid "Embed preedit text in application window" +msgstr "" -#: ../setup/main.py:286 -msgid "IBus daemon is not started. Do you want to start it now?" -msgstr "IBus демон није покренут. Да ли желите да га сада покренете?" +#: ../setup/setup.ui.h:31 +msgid "Embed the preedit text of input method in the application window" +msgstr "" -#: ../setup/main.py:301 -msgid "" -"IBus has been started! If you can not use IBus, please add below lines in " -"$HOME/.bashrc, and relogin your desktop.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +#: ../setup/setup.ui.h:32 +msgid "Use custom font:" msgstr "" -"IBus је покренут! Ако не можете да користите IBus, додајте редове испод у " -"$HOME/.bashrc, и поново се пријавите у ваше радно окружење.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" -#: ../setup/main.py:316 -#, python-format -msgid "Select keyboard shortcut for %s" -msgstr "Изаберите пречицу тастатуре за %s" +#: ../setup/setup.ui.h:33 +msgid "Font and Style" +msgstr "Фонт и стил" -#: ../setup/keyboardshortcut.py:52 -msgid "Keyboard shortcuts" -msgstr "Пречице тастатуре" +#: ../setup/setup.ui.h:34 +msgid "General" +msgstr "Опште" -#: ../setup/keyboardshortcut.py:63 -msgid "Key code:" -msgstr "Код тастера:" +#. add button +#: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 +msgid "_Add" +msgstr "_Додај" -#: ../setup/keyboardshortcut.py:78 -msgid "Modifiers:" -msgstr "Модификатори:" +#: ../setup/setup.ui.h:36 +msgid "Add the selected input method into the enabled input methods" +msgstr "" -#: ../setup/keyboardshortcut.py:231 -msgid "" -"Please press a key (or a key combination).\n" -"The dialog will be closed when the key is released." +#: ../setup/setup.ui.h:37 +msgid "_Remove" +msgstr "_Уклони" + +#: ../setup/setup.ui.h:38 +msgid "Remove the selected input method from the enabled input methods" msgstr "" -"Притисните тастер (или комбинацију тастера).\n" -"Прозорче ће бити затворено када се тастер отпусти." -#: ../setup/keyboardshortcut.py:233 -msgid "Please press a key (or a key combination)" -msgstr "Притисните тастер (или комбинацију тастера)" +#: ../setup/setup.ui.h:39 +msgid "_Up" +msgstr "_Горе" -#: ../setup/enginecombobox.py:120 -msgid "Select an input method" -msgstr "Изаберите методу уноса" +#: ../setup/setup.ui.h:40 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "" + +#: ../setup/setup.ui.h:41 +msgid "_Down" +msgstr "_Доле" + +#: ../setup/setup.ui.h:42 +msgid "Move down the selected input method in the enabled input methods" +msgstr "" + +#: ../setup/setup.ui.h:43 +msgid "_About" +msgstr "_О програму" + +#: ../setup/setup.ui.h:44 +msgid "Show information of the selected input method" +msgstr "" + +#: ../setup/setup.ui.h:45 +msgid "_Preferences" +msgstr "Пос_тавке" + +#: ../setup/setup.ui.h:46 +msgid "Show setup of the selected input method" +msgstr "" + +#: ../setup/setup.ui.h:47 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" #. create im name & icon column -#: ../setup/enginetreeview.py:64 ../setup/setup.ui.h:33 -#, fuzzy +#: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" -msgstr "Методе уноса" +msgstr "" -#: ../setup/enginetreeview.py:92 -msgid "Kbd" +#: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 +msgid "Use system keyboard layout" msgstr "" -#: ../setup/ibus-setup.desktop.in.h:1 ../setup/setup.ui.h:32 -msgid "IBus Preferences" -msgstr "IBus поставке" +#: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 +msgid "Use system keyboard (XKB) layout" +msgstr "" -#: ../setup/ibus-setup.desktop.in.h:2 -#, fuzzy -msgid "Set IBus Preferences" -msgstr "IBus поставке" +#: ../setup/setup.ui.h:51 +msgid "Keyboard Layout" +msgstr "" + +#: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 +msgid "Share the same input method among all applications" +msgstr "" + +#: ../setup/setup.ui.h:53 +msgid "Global input method settings" +msgstr "Изаберите методу уноса" + +#: ../setup/setup.ui.h:54 +msgid "Advanced" +msgstr "" + +#: ../setup/setup.ui.h:55 +msgid "" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" +msgstr "IBus\nИнтелигентна магистрала уноса\nМатична страница: https://github.com/ibus/ibus/wiki\n\n\n\n" + +#: ../setup/setup.ui.h:62 +msgid "Start ibus on login" +msgstr "Покрени ibus при пријави" + +#: ../setup/setup.ui.h:63 +msgid "Startup" +msgstr "Покретање" + +#: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 +msgid "About" +msgstr "О програму" + +#: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 +msgid "_Close" +msgstr "_Затвори" #: ../data/ibus.schemas.in.h:1 -#, fuzzy -msgid "Auto hide" -msgstr "Самостално сакривање" +msgid "Preload engines" +msgstr "" #: ../data/ibus.schemas.in.h:2 -#, fuzzy -msgid "Custom font" -msgstr "Прилагођени фонт:" +msgid "Preload engines during ibus starts up" +msgstr "" #: ../data/ibus.schemas.in.h:3 -msgid "Custom font name for language panel" -msgstr "Назив прилагођеног фонта за језички панел" +msgid "Engines order" +msgstr "" #: ../data/ibus.schemas.in.h:4 -msgid "Embed Preedit Text" +msgid "Saved engines order in input method list" msgstr "" #: ../data/ibus.schemas.in.h:5 -msgid "Embed Preedit Text in Application Window" +msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: ../data/ibus.schemas.in.h:6 -#, fuzzy -msgid "Enable input method by default" -msgstr "Следећа метода уноса" +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is " +"400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " +"not show the window and switch prev/next engines." +msgstr "" #: ../data/ibus.schemas.in.h:7 -msgid "Enable input method by default when the application gets input focus" +msgid "Saved version number" msgstr "" #: ../data/ibus.schemas.in.h:8 -#, fuzzy -msgid "Language panel position" -msgstr "Прикажи језички панел:" +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" #: ../data/ibus.schemas.in.h:9 -#, fuzzy -msgid "Next engine shortcut keys" -msgstr "Пречица следећег погона" - -#: ../data/ibus.schemas.in.h:10 -#, fuzzy -msgid "Orientation of lookup table" -msgstr "Оријентација референтне табеле" +msgid "Trigger shortcut keys" +msgstr "" #: ../data/ibus.schemas.in.h:11 -#, fuzzy -msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" -msgstr "Оријентација референтне табеле. 0 = водоравно, 1 = усправно" +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "" #: ../data/ibus.schemas.in.h:12 -#, fuzzy -msgid "Preload engines" -msgstr "Унапред учитај погоне" +msgid "Enable shortcut keys" +msgstr "" #: ../data/ibus.schemas.in.h:13 -#, fuzzy -msgid "Preload engines during ibus starts up" -msgstr "Унапред учитај погоне током ibus покретања" +msgid "The shortcut keys for turning input method on" +msgstr "" #: ../data/ibus.schemas.in.h:14 -#, fuzzy -msgid "Prev engine shortcut keys" -msgstr "Пречица претходног погона" +msgid "Disable shortcut keys" +msgstr "" -#: ../data/ibus.schemas.in.h:15 ../setup/setup.ui.h:42 -msgid "Share the same input method among all applications" +#: ../data/ibus.schemas.in.h:15 +msgid "The shortcut keys for turning input method off" msgstr "" -#: ../data/ibus.schemas.in.h:16 ../setup/setup.ui.h:43 -msgid "Show icon on system tray" +#: ../data/ibus.schemas.in.h:16 +msgid "Next engine shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:17 -#, fuzzy -msgid "Show input method name" -msgstr "Назив прилагођеног фонта за језички панел" +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "" -#: ../data/ibus.schemas.in.h:18 ../setup/setup.ui.h:45 -#, fuzzy -msgid "Show input method name on language bar" -msgstr "Назив прилагођеног фонта за језички панел" +#: ../data/ibus.schemas.in.h:18 +msgid "Prev engine shortcut keys" +msgstr "" #: ../data/ibus.schemas.in.h:19 -#, fuzzy -msgid "" -"The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = " -"Always show" +msgid "The shortcut keys for switching to the previous input method" msgstr "" -"Понашање језичког панела. 0 = увек сакривен, 1 = самостално сакривање, 2 = " -"увек приказан" #: ../data/ibus.schemas.in.h:20 -msgid "" -"The position of the language panel. 0 = Top left corner, 1 = Top right " -"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +msgid "Auto hide" msgstr "" #: ../data/ibus.schemas.in.h:21 -#, fuzzy -msgid "The shortcut keys for switching to the next input method in the list" -msgstr "Пречица следећег погона за пребацивање на следећи погон методе уноса" +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "" #: ../data/ibus.schemas.in.h:22 -#, fuzzy -msgid "The shortcut keys for switching to the previous input method" +msgid "Language panel position" msgstr "" -"Пречица претходног погона за пребацивање на претходни погон методе уноса" -#: ../data/ibus.schemas.in.h:23 ../setup/setup.ui.h:51 -#, fuzzy -msgid "The shortcut keys for turning input method on or off" +#: ../data/ibus.schemas.in.h:23 +msgid "" +"The position of the language panel. 0 = Top left corner, 1 = Top right " +"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "" -"Пречица претходног погона за пребацивање на претходни погон методе уноса" #: ../data/ibus.schemas.in.h:24 -#, fuzzy -msgid "Trigger shortcut keys" -msgstr "Пречица окидача" +msgid "Follow the input cursor in case the panel is always shown" +msgstr "" #: ../data/ibus.schemas.in.h:25 -msgid "Use custom font" -msgstr "Употреби прилагођени фонт" +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" #: ../data/ibus.schemas.in.h:26 -msgid "Use custom font name for language panel" -msgstr "Користи прилагођени фонт за језички панел" +msgid "The milliseconds to show property panel" +msgstr "" #: ../data/ibus.schemas.in.h:27 -#, fuzzy -msgid "Use global input method" -msgstr "Изаберите методу уноса" +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" -#: ../data/ibus.schemas.in.h:28 ../setup/setup.ui.h:55 -msgid "Use system keyboard (XKB) layout" +#: ../data/ibus.schemas.in.h:28 +msgid "Orientation of lookup table" msgstr "" -#: ../data/ibus.schemas.in.h:29 ../setup/setup.ui.h:56 -msgid "Use system keyboard layout" +#: ../data/ibus.schemas.in.h:29 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "" -#: ../setup/setup.ui.h:1 -msgid "..." -msgstr "..." +#: ../data/ibus.schemas.in.h:31 +msgid "Show input method name" +msgstr "" -#: ../setup/setup.ui.h:2 -msgid "Font and Style" -msgstr "Фонт и стил" +#: ../data/ibus.schemas.in.h:35 +msgid "Use custom font" +msgstr "Употреби прилагођени фонт" -#: ../setup/setup.ui.h:3 -msgid "Global input method settings" -msgstr "Изаберите методу уноса" +#: ../data/ibus.schemas.in.h:36 +msgid "Use custom font name for language panel" +msgstr "Користи прилагођени фонт за језички панел" -#: ../setup/setup.ui.h:4 -#, fuzzy -msgid "Keyboard Layout" -msgstr "Пречице тастатуре" +#: ../data/ibus.schemas.in.h:37 +msgid "Custom font" +msgstr "" -#: ../setup/setup.ui.h:5 -msgid "Keyboard Shortcuts" -msgstr "Пречице тастатуре" +#: ../data/ibus.schemas.in.h:38 +msgid "Custom font name for language panel" +msgstr "Назив прилагођеног фонта за језички панел" -#: ../setup/setup.ui.h:6 -msgid "Startup" -msgstr "Покретање" +#: ../data/ibus.schemas.in.h:39 +msgid "Embed Preedit Text" +msgstr "" -#: ../setup/setup.ui.h:7 -msgid "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" +#: ../data/ibus.schemas.in.h:40 +msgid "Embed Preedit Text in Application Window" msgstr "" -"IBus\n" -"Интелигентна магистрала уноса\n" -"Матична страница: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" -#: ../setup/setup.ui.h:14 -msgid "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." +#: ../data/ibus.schemas.in.h:41 +msgid "Use global input method" msgstr "" -#: ../setup/setup.ui.h:17 -msgid "Add the selected input method into the enabled input methods" +#: ../data/ibus.schemas.in.h:43 +msgid "Enable input method by default" msgstr "" -#: ../setup/setup.ui.h:18 -msgid "Advanced" +#: ../data/ibus.schemas.in.h:44 +msgid "Enable input method by default when the application gets input focus" msgstr "" -#: ../setup/setup.ui.h:19 -msgid "Always" +#: ../data/ibus.schemas.in.h:45 +msgid "DConf preserve name prefixes" msgstr "" -#: ../setup/setup.ui.h:20 -msgid "Bottom left corner" +#: ../data/ibus.schemas.in.h:46 +msgid "Prefixes of DConf keys to stop name conversion" msgstr "" -#: ../setup/setup.ui.h:21 -msgid "Bottom right corner" +#: ../ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." msgstr "" -#: ../setup/setup.ui.h:22 -msgid "Candidates orientation:" -msgstr "Оријентације кандидата:" +#: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 +msgid "Other" +msgstr "Друго" -#: ../setup/setup.ui.h:23 -#, fuzzy -msgid "Custom" -msgstr "Прилагођени фонт:" +#: ../setup/engineabout.py:68 +#, python-format +msgid "Language: %s\n" +msgstr "" -#: ../setup/setup.ui.h:24 -msgid "Disable:" +#: ../setup/engineabout.py:71 +#, python-format +msgid "Keyboard layout: %s\n" msgstr "" -#: ../setup/setup.ui.h:25 -msgid "Embed preedit text in application window" +#: ../setup/engineabout.py:74 +#, python-format +msgid "Author: %s\n" msgstr "" -#: ../setup/setup.ui.h:26 -msgid "Embed the preedit text of input method in the application window" +#: ../setup/engineabout.py:77 +msgid "Description:\n" msgstr "" -#: ../setup/setup.ui.h:27 -msgid "Embedded in menu" +#: ../setup/enginecombobox.py:139 +msgid "Select an input method" +msgstr "Изаберите методу уноса" + +#: ../setup/enginetreeview.py:94 +msgid "Kbd" msgstr "" -#: ../setup/setup.ui.h:28 -msgid "Enable or disable:" -msgstr "Укључи или искључи:" +#: ../setup/ibus-setup.desktop.in.h:2 +msgid "Set IBus Preferences" +msgstr "" -#: ../setup/setup.ui.h:29 -msgid "Enable:" +#: ../setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "Пречице тастатуре" + +#: ../setup/keyboardshortcut.py:66 +msgid "Key code:" +msgstr "Код тастера:" + +#: ../setup/keyboardshortcut.py:81 +msgid "Modifiers:" +msgstr "Модификатори:" + +#. apply button +#: ../setup/keyboardshortcut.py:133 +msgid "_Apply" +msgstr "_Примени" + +#. delete button +#: ../setup/keyboardshortcut.py:139 +msgid "_Delete" +msgstr "_Обриши" + +#: ../setup/keyboardshortcut.py:254 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "Притисните тастер (или комбинацију тастера).\nПрозорче ће бити затворено када се тастер отпусти." + +#: ../setup/keyboardshortcut.py:256 +msgid "Please press a key (or a key combination)" +msgstr "Притисните тастер (или комбинацију тастера)" + +#: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 +msgid "_Cancel" +msgstr "О_дустани" + +#: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 +msgid "_OK" +msgstr "У _реду" + +#: ../setup/main.py:102 ../setup/main.py:395 +msgid "Use shortcut with shift to switch to the previous input method" msgstr "" -#: ../setup/setup.ui.h:30 -msgid "General" -msgstr "Опште" +#: ../setup/main.py:329 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "" -#: ../setup/setup.ui.h:31 -#, fuzzy -msgid "Horizontal" +#: ../setup/main.py:350 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" msgstr "" -"Водоравно\n" -"Усправно" -#: ../setup/setup.ui.h:34 -#, fuzzy -msgid "Language panel position:" -msgstr "Прикажи језички панел:" +#. Translators: %d == 5 currently +#: ../setup/main.py:364 +#, python-format +msgid "IBus daemon could not be started in %d seconds" +msgstr "" -#: ../setup/setup.ui.h:35 -msgid "Move down the selected input method in the enabled input methods" +#: ../setup/main.py:376 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "Изаберите пречицу тастатуре за %s" + +#: ../setup/main.py:377 +msgid "switching input methods" msgstr "" -#: ../setup/setup.ui.h:36 -msgid "Move up the selected input method in the enabled input methods list" +#: ../tools/main.vala:42 +msgid "List engine name only" msgstr "" -#: ../setup/setup.ui.h:37 -msgid "Next input method:" -msgstr "Следећа метода уноса:" +#: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 +#, c-format +msgid "Can't connect to IBus.\n" +msgstr "" -#: ../setup/setup.ui.h:38 -#, fuzzy -msgid "Previous input method:" -msgstr "Претходна метода уноса:" +#: ../tools/main.vala:84 +#, c-format +msgid "language: %s\n" +msgstr "" -#: ../setup/setup.ui.h:39 -msgid "Remove the selected input method from the enabled input methods" +#: ../tools/main.vala:152 +#, c-format +msgid "No engine is set.\n" msgstr "" -#: ../setup/setup.ui.h:40 -msgid "Set the behavior of ibus how to show or hide language bar" +#: ../tools/main.vala:160 +#, c-format +msgid "Set global engine failed.\n" msgstr "" -#: ../setup/setup.ui.h:41 -#, fuzzy -msgid "Set the orientation of candidates in lookup table" -msgstr "Оријентација референтне табеле" +#: ../tools/main.vala:165 +#, c-format +msgid "Get global engine failed.\n" +msgstr "" -#: ../setup/setup.ui.h:44 -msgid "Show information of the selected input method" +#: ../tools/main.vala:204 +msgid "Read the system registry cache." msgstr "" -#: ../setup/setup.ui.h:46 -#, fuzzy -msgid "Show input method's name on language bar when check the checkbox" -msgstr "Назив прилагођеног фонта за језички панел" +#: ../tools/main.vala:206 +msgid "Read the registry cache FILE." +msgstr "" -#: ../setup/setup.ui.h:47 -msgid "Show language panel:" -msgstr "Прикажи језички панел:" +#: ../tools/main.vala:224 ../tools/main.vala:229 +#, c-format +msgid "The registry cache is invalid.\n" +msgstr "" -#: ../setup/setup.ui.h:48 -msgid "Start ibus on login" -msgstr "Покрени ibus при пријави" +#: ../tools/main.vala:244 +msgid "Write the system registry cache." +msgstr "" -#: ../setup/setup.ui.h:49 -#, fuzzy -msgid "The shortcut keys for switching to next input method in the list" -msgstr "Пречица следећег погона за пребацивање на следећи погон методе уноса" +#: ../tools/main.vala:246 +msgid "Write the registry cache FILE." +msgstr "" -#: ../setup/setup.ui.h:50 -#, fuzzy -msgid "The shortcut keys for switching to previous input method in the list" +#: ../tools/main.vala:293 +msgid "Set or get engine" msgstr "" -"Пречица претходног погона за пребацивање на претходни погон методе уноса" -#: ../setup/setup.ui.h:52 -msgid "Top left corner" +#: ../tools/main.vala:294 +msgid "Exit ibus-daemon" msgstr "" -#: ../setup/setup.ui.h:53 -msgid "Top right corner" +#: ../tools/main.vala:295 +msgid "Show available engines" msgstr "" -#: ../setup/setup.ui.h:54 -#, fuzzy -msgid "Use custom font:" -msgstr "Употреби прилагођени фонт" +#: ../tools/main.vala:296 +msgid "(Not implemented)" +msgstr "" -#: ../setup/setup.ui.h:57 -msgid "Vertical" +#: ../tools/main.vala:297 +msgid "Restart ibus-daemon" msgstr "" -#: ../setup/setup.ui.h:58 -#, fuzzy -msgid "When active" +#: ../tools/main.vala:298 +msgid "Show version" msgstr "" -"Никад\n" -"Када је активно\n" -"Увек" -#, fuzzy -#~ msgid "Use global engine" -#~ msgstr "Унапред учитај погоне" +#: ../tools/main.vala:299 +msgid "Show the content of registry cache" +msgstr "" -#, fuzzy -#~ msgid "Langauge panel position" -#~ msgstr "Прикажи језички панел:" +#: ../tools/main.vala:300 +msgid "Create registry cache" +msgstr "" + +#: ../tools/main.vala:301 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "" -#~ msgid "Custom font:" -#~ msgstr "Прилагођени фонт:" +#: ../tools/main.vala:302 +msgid "Show this information" +msgstr "" -#, fuzzy -#~ msgid "Font for language bar and candidates" -#~ msgstr "Назив прилагођеног фонта за језички панел" +#: ../tools/main.vala:308 +#, c-format +msgid "" +"Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "" -#, fuzzy -#~ msgid "Use custom font for language bar and candidates" -#~ msgstr "Користи прилагођени фонт за језички панел" +#: ../tools/main.vala:309 +#, c-format +msgid "Commands:\n" +msgstr "" -#~ msgid "Custom Font" -#~ msgstr "Прилагођени фонт" +#: ../tools/main.vala:338 +#, c-format +msgid "%s is unknown command!\n" +msgstr "" -#, fuzzy -#~ msgid "Show IM name on language bar" -#~ msgstr "Назив прилагођеног фонта за језички панел" +#: ../ui/gtk3/panel.vala:425 +msgid "IBus Update" +msgstr "" -#~ msgid "Use Custom Font" -#~ msgstr "Користи прилагођени фонт" +#: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 +msgid "Super+space is now the default hotkey." +msgstr "" -#~ msgid "Next engine hotkey for switch to next input method engine" -#~ msgstr "" -#~ "Пречица следећег погона за пребацивање на следећи погон методе уноса" +#: ../ui/gtk3/panel.vala:707 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus је интелигентна магистрала уноса за Linux/Unix." -#~ msgid "Prev engine hotkey for switch to previous input method engine" -#~ msgstr "" -#~ "Пречица претходног погона за пребацивање на претходни погон методе уноса" +#: ../ui/gtk3/panel.vala:711 +msgid "translator-credits" +msgstr "Serbian " -#~ msgid "Trigger hotkey for enable or disable input context" -#~ msgstr "Пречица окидача за укључивање или искључивање контекста уноса" +#: ../ui/gtk3/panel.vala:732 +msgid "Preferences" +msgstr "Поставке" -#~ msgid "[Control+space]" -#~ msgstr "[Control+space]" +#: ../ui/gtk3/panel.vala:742 +msgid "Restart" +msgstr "Покрени поново" -#~ msgid "Switch engine" -#~ msgstr "Промени погон" +#: ../ui/gtk3/panel.vala:746 +msgid "Quit" +msgstr "Изађи" -#~ msgid "prev engine" -#~ msgstr "претходни погон" +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ../ui/gtk3/propertypanel.vala:374 +msgid "default:LTR" +msgstr "default:LTR" diff --git a/po/sr@latin.po b/po/sr@latin.po index fecaeb48b..9ffeeb4c7 100644 --- a/po/sr@latin.po +++ b/po/sr@latin.po @@ -1,615 +1,693 @@ -# Serbian(Latin) translations for ibus -# Copyright (C) 2008 Huang Peng +# translation of ibus.pot to Serbian (Latin) +# Serbian (Latin) translation of ibus. +# Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. -# Miloš Komarčević , 2009. # +# Translators: +# Miloš Komarčević , 2009 msgid "" msgstr "" -"Project-Id-Version: ibus\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-12 00:41+0900\n" -"PO-Revision-Date: 2009-04-01 19:58+0100\n" +"Project-Id-Version: IBus\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2014-02-18 13:46+0900\n" +"PO-Revision-Date: 2014-02-18 05:49+0000\n" "Last-Translator: Miloš Komarčević \n" "Language-Team: Serbian \n" -"Language: sr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\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" +"Language: sr@latin\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" -#: ../bus/ibus.desktop.in.h:1 -msgid "IBus" -msgstr "IBus" +#: ../setup/setup.ui.h:1 +msgid "Horizontal" +msgstr "" -#: ../bus/ibus.desktop.in.h:2 -#, fuzzy -msgid "Input Method Framework" -msgstr "IBus radni okvir metode unosa" +#: ../setup/setup.ui.h:2 +msgid "Vertical" +msgstr "" -#: ../bus/ibus.desktop.in.h:3 -#, fuzzy -msgid "Start IBus Input Method Framework" -msgstr "IBus radni okvir metode unosa" +#: ../setup/setup.ui.h:3 +msgid "Top left corner" +msgstr "" -#: ../ibus/_config.py.in:39 -msgid "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +#: ../setup/setup.ui.h:4 +msgid "Top right corner" msgstr "" -#: ../ibus/lang.py:41 -msgid "Other" -msgstr "Drugo" +#: ../setup/setup.ui.h:5 +msgid "Bottom left corner" +msgstr "" -#: ../ui/gtk/candidatepanel.py:264 -#, fuzzy -msgid "Previous page" -msgstr "Prethodna metoda unosa:" +#: ../setup/setup.ui.h:6 +msgid "Bottom right corner" +msgstr "" -#: ../ui/gtk/candidatepanel.py:269 -#, fuzzy -msgid "Next page" -msgstr "sledeći pogon" +#: ../setup/setup.ui.h:7 +msgid "Custom" +msgstr "" -#: ../ui/gtk/main.py:55 -msgid "" -"Some input methods have been installed, removed or updated. Please restart " -"ibus input platform." +#: ../setup/setup.ui.h:8 +msgid "Do not show" msgstr "" -#: ../ui/gtk/main.py:59 -#, fuzzy -msgid "Restart Now" -msgstr "Pokreni ponovo" +#: ../setup/setup.ui.h:9 +msgid "Hide automatically" +msgstr "" -#: ../ui/gtk/main.py:60 -#, fuzzy -msgid "Later" -msgstr "Drugo" +#: ../setup/setup.ui.h:10 +msgid "Always" +msgstr "" -#: ../ui/gtk/panel.py:109 -msgid "IBus input method framework" -msgstr "IBus radni okvir metode unosa" +#: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 +msgid "IBus Preferences" +msgstr "IBus postavke" -#: ../ui/gtk/panel.py:327 -msgid "Restart" -msgstr "Pokreni ponovo" +#: ../setup/setup.ui.h:12 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "" -#: ../ui/gtk/panel.py:414 -#, fuzzy -msgid "Turn off input method" -msgstr "Nema metode unosa" +#: ../setup/setup.ui.h:13 +msgid "Next input method:" +msgstr "Sledeća metoda unosa:" -#: ../ui/gtk/panel.py:453 -msgid "No input window" +#: ../setup/setup.ui.h:14 +msgid "The shortcut keys for switching to previous input method in the list" msgstr "" -#: ../ui/gtk/panel.py:484 -msgid "IBus is an intelligent input bus for Linux/Unix." -msgstr "IBus je inteligentna magistrala unosa za Linux/Unix." +#: ../setup/setup.ui.h:15 +msgid "Previous input method:" +msgstr "" -#: ../ui/gtk/panel.py:488 -msgid "translator-credits" -msgstr "Serbian " +#: ../setup/setup.ui.h:16 +msgid "..." +msgstr "..." -#: ../ui/gtk/languagebar.py:106 -#, fuzzy -msgid "About the input method" -msgstr "Metode unosa" +#: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 +msgid "The shortcut keys for turning input method on or off" +msgstr "" -#: ../ui/gtk/languagebar.py:214 -#, fuzzy -msgid "Switch input method" -msgstr "Nema metode unosa" +#: ../setup/setup.ui.h:18 +msgid "Enable or disable:" +msgstr "Uključi ili isključi:" -#: ../ui/gtk/languagebar.py:357 ../ui/gtk/engineabout.py:33 -#: ../setup/engineabout.py:33 ../setup/setup.ui.h:16 -msgid "About" -msgstr "O programu" +#: ../setup/setup.ui.h:19 +msgid "Enable:" +msgstr "" -#: ../ui/gtk/languagebar.py:361 -#, fuzzy -msgid "About the Input Method" -msgstr "Metode unosa" +#: ../setup/setup.ui.h:20 +msgid "Disable:" +msgstr "" -#: ../ui/gtk/engineabout.py:61 ../setup/engineabout.py:61 -#, python-format -msgid "Language: %s\n" +#: ../setup/setup.ui.h:21 +msgid "Keyboard Shortcuts" +msgstr "Prečice tastature" + +#: ../setup/setup.ui.h:22 +msgid "Set the orientation of candidates in lookup table" msgstr "" -#: ../ui/gtk/engineabout.py:63 ../setup/engineabout.py:63 -#, fuzzy, python-format -msgid "Keyboard layout: %s\n" -msgstr "Prečice tastature" +#: ../setup/setup.ui.h:23 +msgid "Candidates orientation:" +msgstr "Orijentacije kandidata:" -#: ../ui/gtk/engineabout.py:65 ../setup/engineabout.py:65 -#, python-format -msgid "Author: %s\n" +#: ../setup/setup.ui.h:24 +msgid "Set the behavior of ibus how to show or hide language bar" msgstr "" -#: ../ui/gtk/engineabout.py:67 ../setup/engineabout.py:67 -msgid "Description:\n" +#: ../setup/setup.ui.h:25 +msgid "Show property panel:" msgstr "" -#: ../setup/main.py:102 -msgid "trigger" -msgstr "okidač" +#: ../setup/setup.ui.h:26 +msgid "Language panel position:" +msgstr "" -#: ../setup/main.py:113 -msgid "enable" +#: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 +msgid "Show icon on system tray" msgstr "" -#: ../setup/main.py:124 -msgid "disable" +#: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 +msgid "Show input method name on language bar" msgstr "" -#: ../setup/main.py:135 -#, fuzzy -msgid "next input method" -msgstr "sledeća metoda unosa" +#: ../setup/setup.ui.h:29 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "" -#: ../setup/main.py:146 -#, fuzzy -msgid "previous input method" -msgstr "prethodna metoda unosa" +#: ../setup/setup.ui.h:30 +msgid "Embed preedit text in application window" +msgstr "" -#: ../setup/main.py:286 -msgid "IBus daemon is not started. Do you want to start it now?" -msgstr "IBus demon nije pokrenut. Da li želite da ga sada pokrenete?" +#: ../setup/setup.ui.h:31 +msgid "Embed the preedit text of input method in the application window" +msgstr "" -#: ../setup/main.py:301 -msgid "" -"IBus has been started! If you can not use IBus, please add below lines in " -"$HOME/.bashrc, and relogin your desktop.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +#: ../setup/setup.ui.h:32 +msgid "Use custom font:" msgstr "" -"IBus je pokrenut! Ako ne možete da koristite IBus, dodajte redove ispod u " -"$HOME/.bashrc, i ponovo se prijavite u vaše radno okruženje.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" -#: ../setup/main.py:316 -#, python-format -msgid "Select keyboard shortcut for %s" -msgstr "Izaberite prečicu tastature za %s" +#: ../setup/setup.ui.h:33 +msgid "Font and Style" +msgstr "Font i stil" -#: ../setup/keyboardshortcut.py:52 -msgid "Keyboard shortcuts" -msgstr "Prečice tastature" +#: ../setup/setup.ui.h:34 +msgid "General" +msgstr "Opšte" -#: ../setup/keyboardshortcut.py:63 -msgid "Key code:" -msgstr "Kod tastera:" +#. add button +#: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 +msgid "_Add" +msgstr "_Dodaj" -#: ../setup/keyboardshortcut.py:78 -msgid "Modifiers:" -msgstr "Modifikatori:" +#: ../setup/setup.ui.h:36 +msgid "Add the selected input method into the enabled input methods" +msgstr "" -#: ../setup/keyboardshortcut.py:231 -msgid "" -"Please press a key (or a key combination).\n" -"The dialog will be closed when the key is released." +#: ../setup/setup.ui.h:37 +msgid "_Remove" +msgstr "_Ukloni" + +#: ../setup/setup.ui.h:38 +msgid "Remove the selected input method from the enabled input methods" msgstr "" -"Pritisnite taster (ili kombinaciju tastera).\n" -"Prozorče će biti zatvoreno kada se taster otpusti." -#: ../setup/keyboardshortcut.py:233 -msgid "Please press a key (or a key combination)" -msgstr "Pritisnite taster (ili kombinaciju tastera)" +#: ../setup/setup.ui.h:39 +msgid "_Up" +msgstr "_Gore" -#: ../setup/enginecombobox.py:120 -msgid "Select an input method" -msgstr "Izaberite metodu unosa" +#: ../setup/setup.ui.h:40 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "" + +#: ../setup/setup.ui.h:41 +msgid "_Down" +msgstr "_Dole" + +#: ../setup/setup.ui.h:42 +msgid "Move down the selected input method in the enabled input methods" +msgstr "" + +#: ../setup/setup.ui.h:43 +msgid "_About" +msgstr "_O programu" + +#: ../setup/setup.ui.h:44 +msgid "Show information of the selected input method" +msgstr "" + +#: ../setup/setup.ui.h:45 +msgid "_Preferences" +msgstr "Pos_tavke" + +#: ../setup/setup.ui.h:46 +msgid "Show setup of the selected input method" +msgstr "" + +#: ../setup/setup.ui.h:47 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" #. create im name & icon column -#: ../setup/enginetreeview.py:64 ../setup/setup.ui.h:33 -#, fuzzy +#: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 msgid "Input Method" -msgstr "Metode unosa" +msgstr "" -#: ../setup/enginetreeview.py:92 -msgid "Kbd" +#: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 +msgid "Use system keyboard layout" msgstr "" -#: ../setup/ibus-setup.desktop.in.h:1 ../setup/setup.ui.h:32 -msgid "IBus Preferences" -msgstr "IBus postavke" +#: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 +msgid "Use system keyboard (XKB) layout" +msgstr "" -#: ../setup/ibus-setup.desktop.in.h:2 -#, fuzzy -msgid "Set IBus Preferences" -msgstr "IBus postavke" +#: ../setup/setup.ui.h:51 +msgid "Keyboard Layout" +msgstr "" + +#: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 +msgid "Share the same input method among all applications" +msgstr "" + +#: ../setup/setup.ui.h:53 +msgid "Global input method settings" +msgstr "Izaberite metodu unosa" + +#: ../setup/setup.ui.h:54 +msgid "Advanced" +msgstr "" + +#: ../setup/setup.ui.h:55 +msgid "" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" +msgstr "IBus\nInteligentna magistrala unosa\nMatična stranica: https://github.com/ibus/ibus/wiki\n\n\n\n" + +#: ../setup/setup.ui.h:62 +msgid "Start ibus on login" +msgstr "Pokreni ibus pri prijavi" + +#: ../setup/setup.ui.h:63 +msgid "Startup" +msgstr "Pokretanje" + +#: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 +msgid "About" +msgstr "O programu" + +#: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 +msgid "_Close" +msgstr "_Zatvori" #: ../data/ibus.schemas.in.h:1 -#, fuzzy -msgid "Auto hide" -msgstr "Samostalno sakrivanje" +msgid "Preload engines" +msgstr "" #: ../data/ibus.schemas.in.h:2 -#, fuzzy -msgid "Custom font" -msgstr "Prilagođeni font:" +msgid "Preload engines during ibus starts up" +msgstr "" #: ../data/ibus.schemas.in.h:3 -msgid "Custom font name for language panel" -msgstr "Naziv prilagođenog fonta za jezički panel" +msgid "Engines order" +msgstr "" #: ../data/ibus.schemas.in.h:4 -msgid "Embed Preedit Text" +msgid "Saved engines order in input method list" msgstr "" #: ../data/ibus.schemas.in.h:5 -msgid "Embed Preedit Text in Application Window" +msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: ../data/ibus.schemas.in.h:6 -#, fuzzy -msgid "Enable input method by default" -msgstr "sledeća metoda unosa" +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is " +"400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " +"not show the window and switch prev/next engines." +msgstr "" #: ../data/ibus.schemas.in.h:7 -msgid "Enable input method by default when the application gets input focus" +msgid "Saved version number" msgstr "" #: ../data/ibus.schemas.in.h:8 -#, fuzzy -msgid "Language panel position" -msgstr "Prikaži jezički panel:" +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" #: ../data/ibus.schemas.in.h:9 -#, fuzzy -msgid "Next engine shortcut keys" -msgstr "Prečica sledećeg pogona" - -#: ../data/ibus.schemas.in.h:10 -#, fuzzy -msgid "Orientation of lookup table" -msgstr "Orijentacija referentne tabele" +msgid "Trigger shortcut keys" +msgstr "" #: ../data/ibus.schemas.in.h:11 -#, fuzzy -msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" -msgstr "Orijentacija referentne tabele. 0 = vodoravno, 1 = uspravno" +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "" #: ../data/ibus.schemas.in.h:12 -#, fuzzy -msgid "Preload engines" -msgstr "Unapred učitaj pogone" +msgid "Enable shortcut keys" +msgstr "" #: ../data/ibus.schemas.in.h:13 -#, fuzzy -msgid "Preload engines during ibus starts up" -msgstr "Unapred učitaj pogone tokom ibus pokretanja" +msgid "The shortcut keys for turning input method on" +msgstr "" #: ../data/ibus.schemas.in.h:14 -#, fuzzy -msgid "Prev engine shortcut keys" -msgstr "Prečica prethodnog pogona" +msgid "Disable shortcut keys" +msgstr "" -#: ../data/ibus.schemas.in.h:15 ../setup/setup.ui.h:42 -msgid "Share the same input method among all applications" +#: ../data/ibus.schemas.in.h:15 +msgid "The shortcut keys for turning input method off" msgstr "" -#: ../data/ibus.schemas.in.h:16 ../setup/setup.ui.h:43 -msgid "Show icon on system tray" +#: ../data/ibus.schemas.in.h:16 +msgid "Next engine shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:17 -#, fuzzy -msgid "Show input method name" -msgstr "Naziv prilagođenog fonta za jezički panel" +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "" -#: ../data/ibus.schemas.in.h:18 ../setup/setup.ui.h:45 -#, fuzzy -msgid "Show input method name on language bar" -msgstr "Naziv prilagođenog fonta za jezički panel" +#: ../data/ibus.schemas.in.h:18 +msgid "Prev engine shortcut keys" +msgstr "" #: ../data/ibus.schemas.in.h:19 -#, fuzzy -msgid "" -"The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = " -"Always show" +msgid "The shortcut keys for switching to the previous input method" msgstr "" -"Ponašanje jezičkog panela. 0 = uvek sakriven, 1 = samostalno sakrivanje, 2 = " -"uvek prikazan" #: ../data/ibus.schemas.in.h:20 -msgid "" -"The position of the language panel. 0 = Top left corner, 1 = Top right " -"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +msgid "Auto hide" msgstr "" #: ../data/ibus.schemas.in.h:21 -#, fuzzy -msgid "The shortcut keys for switching to the next input method in the list" -msgstr "Prečica sledećeg pogona za prebacivanje na sledeći pogon metode unosa" +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "" #: ../data/ibus.schemas.in.h:22 -#, fuzzy -msgid "The shortcut keys for switching to the previous input method" +msgid "Language panel position" msgstr "" -"Prečica prethodnog pogona za prebacivanje na prethodni pogon metode unosa" -#: ../data/ibus.schemas.in.h:23 ../setup/setup.ui.h:51 -#, fuzzy -msgid "The shortcut keys for turning input method on or off" +#: ../data/ibus.schemas.in.h:23 +msgid "" +"The position of the language panel. 0 = Top left corner, 1 = Top right " +"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "" -"Prečica prethodnog pogona za prebacivanje na prethodni pogon metode unosa" #: ../data/ibus.schemas.in.h:24 -#, fuzzy -msgid "Trigger shortcut keys" -msgstr "Prečica okidača" +msgid "Follow the input cursor in case the panel is always shown" +msgstr "" #: ../data/ibus.schemas.in.h:25 -msgid "Use custom font" -msgstr "Upotrebi prilagođeni font" +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" #: ../data/ibus.schemas.in.h:26 -msgid "Use custom font name for language panel" -msgstr "Koristi prilagođeni font za jezički panel" +msgid "The milliseconds to show property panel" +msgstr "" #: ../data/ibus.schemas.in.h:27 -#, fuzzy -msgid "Use global input method" -msgstr "Izaberite metodu unosa" +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" -#: ../data/ibus.schemas.in.h:28 ../setup/setup.ui.h:55 -msgid "Use system keyboard (XKB) layout" +#: ../data/ibus.schemas.in.h:28 +msgid "Orientation of lookup table" msgstr "" -#: ../data/ibus.schemas.in.h:29 ../setup/setup.ui.h:56 -msgid "Use system keyboard layout" +#: ../data/ibus.schemas.in.h:29 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "" -#: ../setup/setup.ui.h:1 -msgid "..." -msgstr "..." +#: ../data/ibus.schemas.in.h:31 +msgid "Show input method name" +msgstr "" -#: ../setup/setup.ui.h:2 -msgid "Font and Style" -msgstr "Font i stil" +#: ../data/ibus.schemas.in.h:35 +msgid "Use custom font" +msgstr "Upotrebi prilagođeni font" -#: ../setup/setup.ui.h:3 -msgid "Global input method settings" -msgstr "Izaberite metodu unosa" +#: ../data/ibus.schemas.in.h:36 +msgid "Use custom font name for language panel" +msgstr "Koristi prilagođeni font za jezički panel" -#: ../setup/setup.ui.h:4 -#, fuzzy -msgid "Keyboard Layout" -msgstr "Prečice tastature" +#: ../data/ibus.schemas.in.h:37 +msgid "Custom font" +msgstr "" -#: ../setup/setup.ui.h:5 -msgid "Keyboard Shortcuts" -msgstr "Prečice tastature" +#: ../data/ibus.schemas.in.h:38 +msgid "Custom font name for language panel" +msgstr "Naziv prilagođenog fonta za jezički panel" -#: ../setup/setup.ui.h:6 -msgid "Startup" -msgstr "Pokretanje" +#: ../data/ibus.schemas.in.h:39 +msgid "Embed Preedit Text" +msgstr "" -#: ../setup/setup.ui.h:7 -msgid "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" +#: ../data/ibus.schemas.in.h:40 +msgid "Embed Preedit Text in Application Window" msgstr "" -"IBus\n" -"Inteligentna magistrala unosa\n" -"Matična stranica: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" -#: ../setup/setup.ui.h:14 -msgid "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." +#: ../data/ibus.schemas.in.h:41 +msgid "Use global input method" msgstr "" -#: ../setup/setup.ui.h:17 -msgid "Add the selected input method into the enabled input methods" +#: ../data/ibus.schemas.in.h:43 +msgid "Enable input method by default" msgstr "" -#: ../setup/setup.ui.h:18 -msgid "Advanced" +#: ../data/ibus.schemas.in.h:44 +msgid "Enable input method by default when the application gets input focus" msgstr "" -#: ../setup/setup.ui.h:19 -msgid "Always" +#: ../data/ibus.schemas.in.h:45 +msgid "DConf preserve name prefixes" msgstr "" -#: ../setup/setup.ui.h:20 -msgid "Bottom left corner" +#: ../data/ibus.schemas.in.h:46 +msgid "Prefixes of DConf keys to stop name conversion" msgstr "" -#: ../setup/setup.ui.h:21 -msgid "Bottom right corner" +#: ../ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." msgstr "" -#: ../setup/setup.ui.h:22 -msgid "Candidates orientation:" -msgstr "Orijentacije kandidata:" +#: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 +msgid "Other" +msgstr "Drugo" -#: ../setup/setup.ui.h:23 -#, fuzzy -msgid "Custom" -msgstr "Prilagođeni font:" +#: ../setup/engineabout.py:68 +#, python-format +msgid "Language: %s\n" +msgstr "" -#: ../setup/setup.ui.h:24 -msgid "Disable:" +#: ../setup/engineabout.py:71 +#, python-format +msgid "Keyboard layout: %s\n" msgstr "" -#: ../setup/setup.ui.h:25 -msgid "Embed preedit text in application window" +#: ../setup/engineabout.py:74 +#, python-format +msgid "Author: %s\n" msgstr "" -#: ../setup/setup.ui.h:26 -msgid "Embed the preedit text of input method in the application window" +#: ../setup/engineabout.py:77 +msgid "Description:\n" msgstr "" -#: ../setup/setup.ui.h:27 -msgid "Embedded in menu" +#: ../setup/enginecombobox.py:139 +msgid "Select an input method" +msgstr "Izaberite metodu unosa" + +#: ../setup/enginetreeview.py:94 +msgid "Kbd" msgstr "" -#: ../setup/setup.ui.h:28 -msgid "Enable or disable:" -msgstr "Uključi ili isključi:" +#: ../setup/ibus-setup.desktop.in.h:2 +msgid "Set IBus Preferences" +msgstr "" -#: ../setup/setup.ui.h:29 -msgid "Enable:" +#: ../setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "Prečice tastature" + +#: ../setup/keyboardshortcut.py:66 +msgid "Key code:" +msgstr "Kod tastera:" + +#: ../setup/keyboardshortcut.py:81 +msgid "Modifiers:" +msgstr "Modifikatori:" + +#. apply button +#: ../setup/keyboardshortcut.py:133 +msgid "_Apply" +msgstr "_Primeni" + +#. delete button +#: ../setup/keyboardshortcut.py:139 +msgid "_Delete" +msgstr "_Obriši" + +#: ../setup/keyboardshortcut.py:254 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "Pritisnite taster (ili kombinaciju tastera).\nProzorče će biti zatvoreno kada se taster otpusti." + +#: ../setup/keyboardshortcut.py:256 +msgid "Please press a key (or a key combination)" +msgstr "Pritisnite taster (ili kombinaciju tastera)" + +#: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 +msgid "_Cancel" +msgstr "O_dustani" + +#: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 +msgid "_OK" +msgstr "U _redu" + +#: ../setup/main.py:102 ../setup/main.py:395 +msgid "Use shortcut with shift to switch to the previous input method" msgstr "" -#: ../setup/setup.ui.h:30 -msgid "General" -msgstr "Opšte" +#: ../setup/main.py:329 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "" -#: ../setup/setup.ui.h:31 -#, fuzzy -msgid "Horizontal" +#: ../setup/main.py:350 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" msgstr "" -"Vodoravno\n" -"Uspravno" -#: ../setup/setup.ui.h:34 -#, fuzzy -msgid "Language panel position:" -msgstr "Prikaži jezički panel:" +#. Translators: %d == 5 currently +#: ../setup/main.py:364 +#, python-format +msgid "IBus daemon could not be started in %d seconds" +msgstr "" -#: ../setup/setup.ui.h:35 -msgid "Move down the selected input method in the enabled input methods" +#: ../setup/main.py:376 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "Izaberite prečicu tastature za %s" + +#: ../setup/main.py:377 +msgid "switching input methods" msgstr "" -#: ../setup/setup.ui.h:36 -msgid "Move up the selected input method in the enabled input methods list" +#: ../tools/main.vala:42 +msgid "List engine name only" msgstr "" -#: ../setup/setup.ui.h:37 -msgid "Next input method:" -msgstr "Sledeća metoda unosa:" +#: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 +#, c-format +msgid "Can't connect to IBus.\n" +msgstr "" -#: ../setup/setup.ui.h:38 -#, fuzzy -msgid "Previous input method:" -msgstr "Prethodna metoda unosa:" +#: ../tools/main.vala:84 +#, c-format +msgid "language: %s\n" +msgstr "" -#: ../setup/setup.ui.h:39 -msgid "Remove the selected input method from the enabled input methods" +#: ../tools/main.vala:152 +#, c-format +msgid "No engine is set.\n" msgstr "" -#: ../setup/setup.ui.h:40 -msgid "Set the behavior of ibus how to show or hide language bar" +#: ../tools/main.vala:160 +#, c-format +msgid "Set global engine failed.\n" msgstr "" -#: ../setup/setup.ui.h:41 -#, fuzzy -msgid "Set the orientation of candidates in lookup table" -msgstr "Orijentacija referentne tabele" +#: ../tools/main.vala:165 +#, c-format +msgid "Get global engine failed.\n" +msgstr "" -#: ../setup/setup.ui.h:44 -msgid "Show information of the selected input method" +#: ../tools/main.vala:204 +msgid "Read the system registry cache." msgstr "" -#: ../setup/setup.ui.h:46 -#, fuzzy -msgid "Show input method's name on language bar when check the checkbox" -msgstr "Naziv prilagođenog fonta za jezički panel" +#: ../tools/main.vala:206 +msgid "Read the registry cache FILE." +msgstr "" -#: ../setup/setup.ui.h:47 -msgid "Show language panel:" -msgstr "Prikaži jezički panel:" +#: ../tools/main.vala:224 ../tools/main.vala:229 +#, c-format +msgid "The registry cache is invalid.\n" +msgstr "" -#: ../setup/setup.ui.h:48 -msgid "Start ibus on login" -msgstr "Pokreni ibus pri prijavi" +#: ../tools/main.vala:244 +msgid "Write the system registry cache." +msgstr "" -#: ../setup/setup.ui.h:49 -#, fuzzy -msgid "The shortcut keys for switching to next input method in the list" -msgstr "Prečica sledećeg pogona za prebacivanje na sledeći pogon metode unosa" +#: ../tools/main.vala:246 +msgid "Write the registry cache FILE." +msgstr "" -#: ../setup/setup.ui.h:50 -#, fuzzy -msgid "The shortcut keys for switching to previous input method in the list" +#: ../tools/main.vala:293 +msgid "Set or get engine" msgstr "" -"Prečica prethodnog pogona za prebacivanje na prethodni pogon metode unosa" -#: ../setup/setup.ui.h:52 -msgid "Top left corner" +#: ../tools/main.vala:294 +msgid "Exit ibus-daemon" msgstr "" -#: ../setup/setup.ui.h:53 -msgid "Top right corner" +#: ../tools/main.vala:295 +msgid "Show available engines" msgstr "" -#: ../setup/setup.ui.h:54 -#, fuzzy -msgid "Use custom font:" -msgstr "Upotrebi prilagođeni font" +#: ../tools/main.vala:296 +msgid "(Not implemented)" +msgstr "" -#: ../setup/setup.ui.h:57 -msgid "Vertical" +#: ../tools/main.vala:297 +msgid "Restart ibus-daemon" msgstr "" -#: ../setup/setup.ui.h:58 -#, fuzzy -msgid "When active" +#: ../tools/main.vala:298 +msgid "Show version" msgstr "" -"Nikad\n" -"Kada je aktivno\n" -"Uvek" -#, fuzzy -#~ msgid "Use global engine" -#~ msgstr "Unapred učitaj pogone" +#: ../tools/main.vala:299 +msgid "Show the content of registry cache" +msgstr "" -#, fuzzy -#~ msgid "Langauge panel position" -#~ msgstr "Prikaži jezički panel:" +#: ../tools/main.vala:300 +msgid "Create registry cache" +msgstr "" + +#: ../tools/main.vala:301 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "" -#~ msgid "Custom font:" -#~ msgstr "Prilagođeni font:" +#: ../tools/main.vala:302 +msgid "Show this information" +msgstr "" -#, fuzzy -#~ msgid "Font for language bar and candidates" -#~ msgstr "Naziv prilagođenog fonta za jezički panel" +#: ../tools/main.vala:308 +#, c-format +msgid "" +"Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "" -#, fuzzy -#~ msgid "Use custom font for language bar and candidates" -#~ msgstr "Koristi prilagođeni font za jezički panel" +#: ../tools/main.vala:309 +#, c-format +msgid "Commands:\n" +msgstr "" -#~ msgid "Custom Font" -#~ msgstr "Prilagođeni font" +#: ../tools/main.vala:338 +#, c-format +msgid "%s is unknown command!\n" +msgstr "" -#, fuzzy -#~ msgid "Show IM name on language bar" -#~ msgstr "Naziv prilagođenog fonta za jezički panel" +#: ../ui/gtk3/panel.vala:425 +msgid "IBus Update" +msgstr "" -#~ msgid "Use Custom Font" -#~ msgstr "Koristi prilagođeni font" +#: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 +msgid "Super+space is now the default hotkey." +msgstr "" -#~ msgid "Next engine hotkey for switch to next input method engine" -#~ msgstr "" -#~ "Prečica sledećeg pogona za prebacivanje na sledeći pogon metode unosa" +#: ../ui/gtk3/panel.vala:707 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus je inteligentna magistrala unosa za Linux/Unix." -#~ msgid "Prev engine hotkey for switch to previous input method engine" -#~ msgstr "" -#~ "Prečica prethodnog pogona za prebacivanje na prethodni pogon metode unosa" +#: ../ui/gtk3/panel.vala:711 +msgid "translator-credits" +msgstr "Serbian " -#~ msgid "Trigger hotkey for enable or disable input context" -#~ msgstr "Prečica okidača za uključivanje ili isključivanje konteksta unosa" +#: ../ui/gtk3/panel.vala:732 +msgid "Preferences" +msgstr "Postavke" -#~ msgid "[Control+space]" -#~ msgstr "[Control+space]" +#: ../ui/gtk3/panel.vala:742 +msgid "Restart" +msgstr "Pokreni ponovo" -#~ msgid "Switch engine" -#~ msgstr "Promeni pogon" +#: ../ui/gtk3/panel.vala:746 +msgid "Quit" +msgstr "Izađi" -#~ msgid "prev engine" -#~ msgstr "prethodni pogon" +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ../ui/gtk3/propertypanel.vala:374 +msgid "default:LTR" +msgstr "default:LTR" diff --git a/po/sv.po b/po/sv.po new file mode 100644 index 000000000..dc9802dd7 --- /dev/null +++ b/po/sv.po @@ -0,0 +1,3392 @@ +# Swedish translation of ibus. +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2021 Takao Fujiwara +# This file is distributed under the same license as the ibus package. +# +# Translators: +# Göran Uddeborg , 2017. #zanata, 2020. +# fujiwara , 2017, 2018. #zanata +# Göran Uddeborg , 2018. #zanata, 2020. +# Göran Uddeborg , 2019. #zanata, 2020. +# Allan Nordhøy , 2020. +# Sebastian Rasmussen , 2021. +msgid "" +msgstr "" +"Project-Id-Version: ibus 1.5.20\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2020-12-11 16:21+0900\n" +"PO-Revision-Date: 2021-01-23 01:37+0000\n" +"Last-Translator: Sebastian Rasmussen \n" +"Language-Team: Swedish \n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.4.2\n" + +#. Translators: Here “Preload” is a verb +#: data/dconf/org.freedesktop.ibus.gschema.xml:11 +msgid "Preload engines" +msgstr "Förhandsladda maskiner" + +#. Translators: Tooltip for the button “Preload Engines” +#: data/dconf/org.freedesktop.ibus.gschema.xml:13 +msgid "Preload engines during ibus starts up" +msgstr "Förhandsladda maskiner när ibus startas upp" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:17 +msgid "Engines order" +msgstr "Maskinordning" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:18 +msgid "Saved engines order in input method list" +msgstr "Sparad maskinordning i listan över inmatningsmetoder" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:22 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "Fördröjning i millisekunder för pop-up-fönster för IME-byte" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:23 +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is " +"400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " +"show the window and switch prev/next engines." +msgstr "" +"Ange fördröjningen i millisekunder för att visa pop-up-fönstret för IME-" +"byte. Standard är 400. 0 = Visa fönstret omedelbart. 0 < Vänta " +"millisekunder. 0 > Visa inte fönstret och byt till föregående/nästa maskin." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:27 +msgid "Saved version number" +msgstr "Sparade versionsnummer" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:28 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" +"Sparade versionsnummer kommer användas för att kontrollera skillnaden mellan " +"versionen på den tidigare installerade ibus:en och den nuvarande ibus:en." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:32 +msgid "Latin layouts which have no ASCII" +msgstr "Latinsk layout som inte har ASCII" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:33 +msgid "US layout is appended to the Latin layouts. variant can be omitted." +msgstr "" +"USA-layout läggs till till den Latinska layouten, varianten kan utelämnas." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:37 +msgid "Use xmodmap" +msgstr "Använd xmodmap" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:38 +msgid "" +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." +msgstr "Kör xmodmap om .xmodmap eller .Xmodmap finns när ibus-maskiner byts." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 +msgid "Use system keyboard layout" +msgstr "Använd systemets tangentbordslayout" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 +msgid "Use system keyboard (XKB) layout" +msgstr "Använd systemets (XKB) tangentbordslayout" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:47 +msgid "Embed Preedit Text" +msgstr "Bädda in förredigerad text" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:48 +msgid "Embed Preedit Text in Application Window" +msgstr "Bädda in förredigerad text i programfönstret" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:52 +msgid "Use global input method" +msgstr "Använd den globala inmatningsmetoden" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 +msgid "Share the same input method among all applications" +msgstr "Dela samma inmatningsmetod mellan alla program" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:57 +msgid "Enable input method by default" +msgstr "Aktivera inmatningsmetoden som standard" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:58 +msgid "Enable input method by default when the application gets input focus" +msgstr "" +"Aktivera inmatningsmetoden som standard när programmet får inmatningsfokus" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:62 +msgid "DConf preserve name prefixes" +msgstr "DConf namnbevarandeprefix" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:63 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "Prefix av DConf-tangenter för att förhindra namnkonvertering" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:70 +msgid "Trigger shortcut keys" +msgstr "Utlös kortkommandon" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:71 +#: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 +msgid "The shortcut keys for turning input method on or off" +msgstr "Kortkommandot för att slå på och av inmatningsmetoden" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:75 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "Utlös kortkommando för gtk_accelerator_parse" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:80 +msgid "Enable shortcut keys" +msgstr "Aktivera kortkommandon" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:81 +msgid "The shortcut keys for turning input method on" +msgstr "Kortkommandot för att slå på inmatningsmetoden" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:85 +msgid "Disable shortcut keys" +msgstr "Avaktivera kortkommandon" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:86 +msgid "The shortcut keys for turning input method off" +msgstr "Kortkommandot för att slå av inmatningsmetoden" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:90 +#: data/dconf/org.freedesktop.ibus.gschema.xml:95 +msgid "Next engine shortcut keys" +msgstr "Kortkommandon för nästa maskin" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:91 +#: data/dconf/org.freedesktop.ibus.gschema.xml:96 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "Kortkommandot för att byta till nästa inmatningsmetod i listan" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:100 +#: data/dconf/org.freedesktop.ibus.gschema.xml:105 +msgid "Prev engine shortcut keys" +msgstr "Kortkommandon för föregående maskin" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:101 +#: data/dconf/org.freedesktop.ibus.gschema.xml:106 +msgid "The shortcut keys for switching to the previous input method" +msgstr "Kortkommandot för att byta till föregående inmatningsmetod" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:112 +msgid "Auto hide" +msgstr "Dölj automatiskt" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:113 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "" +"Beteendet hos egenskapspanelen. 0 = Visa inte, 1 = Dölj automatiskt 2 = Visa " +"alltid" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:117 +#: data/dconf/org.freedesktop.ibus.gschema.xml:121 +msgid "Language panel position" +msgstr "Språkpanelens position" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:125 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "Följ inmatningsmarkören i fallet när panelen alltid visas" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:126 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" +"Om sant följer panelen inmatningsmarkören i fallet när panelen alltid visas. " +"Om falskt visas panelen på en bestämd plats." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:130 +msgid "The milliseconds to show property panel" +msgstr "Antalet millisekunder att visa egenskapspanelen" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:131 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" +"Antalet millisekunder att visa egenskapspanelen efter infokusering eller att " +"egenskaperna ändrats." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:135 +msgid "Orientation of lookup table" +msgstr "Orienteringen på uppslagningstabellen" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:136 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "Orienteringen på uppslagningstabellen. 0 = horisontellt, 1 = vertikalt" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:140 +#: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 +#: setup/setup.ui:475 +msgid "Show icon on system tray" +msgstr "Visa ikonen i aktivitetsfältet" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:145 +msgid "Show input method name" +msgstr "Välj namn på inmatningsmetoden" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 +msgid "Show input method name on language bar" +msgstr "Visa inmatningsmetodens namn i språkpanelen" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:150 +msgid "RGBA value of XKB icon" +msgstr "RGBA-värde på XKB-ikonen" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:151 +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form 'rgba(r," +"g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 to 255 or " +"percentage values in the range 0% to 100%, and 'a' is a floating point value " +"in the range 0 to 1 of the alpha." +msgstr "" +"XKB-ikonen visar layout-strängen och strängen visas med RGBA-värdet. RGBA-" +"värdet kan vara 1. ett färgnamn från X11, 2. ett hexadecimalt värde på " +"formen ”#rrggbb” där ”r”, ”g” och ”b” är hexadecimala siffror för rött, " +"grönt och blått, 3. en RGB-färg på formen ”rgb(r,g,b)” eller 4. en RGBA-färg " +"på formen ”rgba(r,g,b,a)” där ”r”, ”g” och ”b” är antingen heltal i " +"intervallet 0 till 255 eller procentsatser i intervallet 0% till 100%, och " +"”a” är ett flyttalsvärde i intervallet 0 till 1 för alfa." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:155 +msgid "The milliseconds to show the panel icon for a property" +msgstr "Antalet millisekunder att visa panelikonen för en egenskap" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:156 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" +"Antalet millisekunder att visa panelikonen från maskinikonen för en " +"egenskapsikon när maskinen byts om egenskapen anges av värdet på icon-prop-" +"key i IBusEngineDesc. Om värdet är 0, ingen fördröjning och egenskapsikonen " +"visas omedelbart." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:160 +msgid "Use custom font" +msgstr "Använd anpassat typsnitt" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:161 +msgid "Use custom font name for language panel" +msgstr "Använd det anpassade typsnittsnamnet till språkpanelen" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:165 +#: data/dconf/org.freedesktop.ibus.gschema.xml:192 +msgid "Custom font" +msgstr "Anpassat typsnitt" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:166 +msgid "Custom font name for language panel" +msgstr "Anpassat typsnittsnamn till språkpanelen" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:170 setup/setup.ui:1305 +msgid "Choose glyphs with input method's language on candidate window" +msgstr "Välj glyfer med inmatningsmetodens språk på kandidatfönstret" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:171 +msgid "" +"Some code points have the different glyphs and Pango determines the glyphs " +"from the language attribute. Pango chooses glyphs from the IBus engine's " +"language if the value is true and choose them from the desktop locale if the " +"value is false." +msgstr "" +"Några kodpunkter har andra glyfer och Pango väljer glyfen från " +"språkattributet. Pango väljer glyfer från IBus-motorns språk om värdet är " +"sant och väljer dem från skrivbordslokalen om värdet är falskt." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:182 +msgid "Unicode shortcut keys for gtk_accelerator_parse" +msgstr "Unicode-kortkommandon för gtk_accelerator_parse" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:183 +msgid "The shortcut keys for turning Unicode typing on or off" +msgstr "Kortkommandot för att slå på och av Unicode-inmatning" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:187 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "Emoji-kortkommando för gtk_accelerator_parse" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:188 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "Kortkommandot för att slå på och av emoji-inmatning" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:193 +msgid "Custom font name for emoji characters on emoji dialog" +msgstr "Anpassat typsnitt för emoji-tecken i emoji-dialogen" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:197 +msgid "Default language for emoji dictionary" +msgstr "Standardspråk för emoji-ordlista" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:198 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict ." +msgstr "" +"Välj ett standardspråk med emoji-ordlistor i emoji-dialogen. Värdet $lang " +"används i /usr/share/ibus/dicts/emoji-$lang.dict ." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:202 +msgid "favorite emoji list on emoji dialog" +msgstr "favorit-emoji-lista i emoji-dialogen" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:203 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "" +"Du kan visa favorit-emoji:erna i emoji-listan om denna lista har några " +"tecken." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:207 +msgid "favorite emoji annotation list on emoji dialog" +msgstr "favorit-emoji-annoteringslista i emoji-dialogen" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:208 +msgid "You can assign an annotation for a favorite emoji in this list." +msgstr "Du kan tilldela en annotering för en favorit-emoji i denna lista." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:212 +msgid "Whether emoji annotations can be match partially or not" +msgstr "Huruvida emoji-annotationer kan matchas partiellt eller inte" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:213 +msgid "" +"Whether emoji annotations can be matched with a partial string instead of " +"the exact match or not." +msgstr "" +"Huruvida emoji-annotationer kan matchas med en partiell sträng istället för " +"den exakta matchningen eller inte." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:217 +msgid "Match emoji annotations with the specified length" +msgstr "Matcha emoji-annotationer med den angivna längden" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:218 +msgid "" +"Match emoji annotations partially with more than the specified number of " +"characters instead of the exact match." +msgstr "" +"Matcha emoji-annotationer partiellt med mer än det angivna antalet tecken " +"istället för den exakta matchningen." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:222 +msgid "Choose a condition to match emoji annotations partially" +msgstr "Välj ett villkor för att matcha emoji-annotationer partiellt" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:223 +msgid "" +"Choose one of the following conditions to match emoji annotations partially: " +"0 == Prefix match, 1 == Suffix match, 2 == Containing match" +msgstr "" +"Välj en av följande villkor för att matcha emoji-annotationer partiellt: 0 " +"== prefixmatchning, 1 == suffixmatchning, 2 == innehållsmatchning" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:227 +msgid "Load the emoji data at the time of startup" +msgstr "Läs in emoji-data vid uppstartstillfället" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:228 +msgid "" +"Load the emoji data at the time of startup if true. About 10MB memory is " +"needed to load the data. Load the emoji data when open the emoji dialog at " +"the beginning if false." +msgstr "" +"Läs in emoji-data vid uppstartstillfället om sant. Ungefär 10 MB minne " +"behövs för att läsa in datan. Läs emoji-datan när emoji-dialogen öppnas i " +"början om falskt." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:232 +msgid "Load the Unicode data at the time of startup" +msgstr "Läs in Unicode-data vid uppstartstillfället" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:233 +msgid "" +"Load the Unicode data at the time of startup if true. About 15MB memory is " +"needed to load the data. Load the Unicode data when open the emoji dialog at " +"the beginning if false. The Unicode data is always loaded after the emoji " +"data is loaded even if true." +msgstr "" +"Läs in Unicode-data vid uppstartstillfället om sant. Ungefär 15 MB minne " +"behövs för att läsa in datan. Läs Unicode-datan när emoji-dialogen öppnas i " +"början om falskt. Unicode-datan läses alltid in efter emoji-datan läses in " +"även om sant." + +#: ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "" +"Copyright © 2007-2010 Peng Huang\n" +"Copyright © 2007-2010 Red Hat, Inc." + +#: ibus/lang.py:41 src/ibusutil.c:209 +msgid "Other" +msgstr "Andra" + +#: setup/emojilang.py:67 +msgid "Select a language" +msgstr "Välj ett språk" + +#: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 +#: setup/main.py:560 +msgid "_Cancel" +msgstr "_Avbryt" + +#: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 +msgid "_OK" +msgstr "_OK" + +#: setup/emojilang.py:235 setup/enginedialog.py:205 +msgid "More…" +msgstr "Mer …" + +#: setup/engineabout.py:37 setup/setup.ui:1368 ui/gtk3/panel.vala:1184 +msgid "About" +msgstr "Om" + +#: setup/engineabout.py:40 setup/setup.ui:1391 +msgid "_Close" +msgstr "_Stäng" + +#: setup/engineabout.py:72 +#, python-format +msgid "Language: %s\n" +msgstr "Språk: %s\n" + +#: setup/engineabout.py:75 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "Tangentbordslayout: %s\n" + +#: setup/engineabout.py:78 +#, python-format +msgid "Author: %s\n" +msgstr "Upphovsman: %s\n" + +#: setup/engineabout.py:81 +msgid "Description:\n" +msgstr "Beskrivning:\n" + +#: setup/enginecombobox.py:139 setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "Välj en inmatningsmetod" + +#. add button +#: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 +msgid "_Add" +msgstr "_Lägg till" + +#. create im name & icon column +#: setup/enginetreeview.py:69 setup/setup.ui:838 +msgid "Input Method" +msgstr "Inmatningsmetod" + +#: setup/ibus-setup.desktop:3 setup/setup.ui:69 +msgid "IBus Preferences" +msgstr "IBus-inställningar" + +#: setup/ibus-setup.desktop:4 +msgid "Set IBus Preferences" +msgstr "Sätt IBus-inställningar" + +#: setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "Kortkommandon" + +#: setup/keyboardshortcut.py:67 +msgid "Key code:" +msgstr "Tangentkod:" + +#: setup/keyboardshortcut.py:82 +msgid "Modifiers:" +msgstr "Modifierare:" + +#. apply button +#: setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "_Verkställ" + +#. delete button +#: setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "_Radera" + +#: setup/keyboardshortcut.py:252 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "" +"Tryck en tangent (eller tangentkombination).\n" +"Dialogen kommer stängas när tangenten släpps." + +#: setup/keyboardshortcut.py:255 +msgid "Please press a key (or a key combination)" +msgstr "Tryck en tangent (eller tangentkombination)" + +#: setup/main.py:121 setup/main.py:588 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "" +"Använd kortkommandot med skift för att byta till föregående inmatningsmetod" + +#: setup/main.py:515 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "IBus-demonen kör inte. Vill du starta den?" + +#: setup/main.py:536 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "" +"IBus har startats! Om du inte kan använda IBus, lägg till följande rader i " +"din $HOME/.bashrc; och logga därefter in igen till ditt skrivbord.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" + +#. Translators: %d == 5 currently +#: setup/main.py:550 +#, python-format +msgid "IBus daemon could not be started in %d seconds." +msgstr "IBus-demonen kunde inte startas på %d sekunder." + +#: setup/main.py:562 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "Välj snabbkommando för %s" + +#. Translators: Title of the window +#: setup/main.py:564 +msgid "switching input methods" +msgstr "byter inmatningsmetoder" + +#: setup/setup.ui:11 +msgid "Horizontal" +msgstr "Horisontellt" + +#: setup/setup.ui:14 +msgid "Vertical" +msgstr "Vertikalt" + +#: setup/setup.ui:25 +msgid "Top left corner" +msgstr "Övre vänstra hörnet" + +#: setup/setup.ui:28 +msgid "Top right corner" +msgstr "Övre högra hörnet" + +#: setup/setup.ui:31 +msgid "Bottom left corner" +msgstr "Nedre vänstra hörnet" + +#: setup/setup.ui:34 +msgid "Bottom right corner" +msgstr "Nedre högra hörnet" + +#: setup/setup.ui:37 +msgid "Custom" +msgstr "Anpassat" + +#: setup/setup.ui:48 +msgid "Do not show" +msgstr "Visa inte" + +#: setup/setup.ui:51 +msgid "Hide automatically" +msgstr "Dölj automatiskt" + +#: setup/setup.ui:54 +msgid "Always" +msgstr "Alltid" + +#: setup/setup.ui:113 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "Kortkommandot för att byta till nästa inmatningsmetod i listan" + +#: setup/setup.ui:115 +msgid "Next input method:" +msgstr "Nästa inmatningsmetod:" + +#: setup/setup.ui:127 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "Kortkommandot för att byta till föregående inmatningsmetod i listan" + +#: setup/setup.ui:129 +msgid "Previous input method:" +msgstr "Föregående inmatningsmetod:" + +#: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 +#: setup/setup.ui:903 setup/setup.ui:957 +msgid "..." +msgstr "…" + +#: setup/setup.ui:226 +msgid "Enable or disable:" +msgstr "Aktivera eller avaktivera:" + +#: setup/setup.ui:238 +msgid "Enable:" +msgstr "Aktivera:" + +#: setup/setup.ui:291 +msgid "Disable:" +msgstr "Avaktivera:" + +#: setup/setup.ui:345 setup/setup.ui:983 +msgid "Keyboard Shortcuts" +msgstr "Kortkommandon" + +#: setup/setup.ui:374 +msgid "Set the orientation of candidates in lookup table" +msgstr "Ange ordningen av kandidater i tabelluppslagning" + +#: setup/setup.ui:376 +msgid "Candidates orientation:" +msgstr "Kandidaters riktning:" + +#: setup/setup.ui:407 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "Ange beteendet hos ibus hur den visar eller döljer språkpanelen" + +#: setup/setup.ui:409 +msgid "Show property panel:" +msgstr "Visa egenskapspanel:" + +#: setup/setup.ui:423 +msgid "Language panel position:" +msgstr "Språkpanelens position:" + +#: setup/setup.ui:494 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "Visa inmatningsmetodens namn i språkpanelen när kryssrytan är iklickad" + +#: setup/setup.ui:508 +msgid "Embed preedit text in application window" +msgstr "Bädda in förredigeringstext i programfönstret" + +#: setup/setup.ui:513 +msgid "Embed the preedit text of input method in the application window" +msgstr "Bädda in förredigeringstext för inmatningsmetoden i programfönstret" + +#: setup/setup.ui:527 +msgid "Use custom font:" +msgstr "Använd ett anpassat typsnitt:" + +#: setup/setup.ui:562 setup/setup.ui:1156 +msgid "Font and Style" +msgstr "Typsnitt och stil" + +#: setup/setup.ui:579 +msgid "General" +msgstr "Allmänt" + +#: setup/setup.ui:671 +msgid "Add the selected input method into the enabled input methods" +msgstr "" +"Lägg till den valda inmatningsmetoden till de aktiverade inmatningsmetoderna" + +#: setup/setup.ui:682 +msgid "_Remove" +msgstr "_Ta bort" + +#: setup/setup.ui:689 +msgid "Remove the selected input method from the enabled input methods" +msgstr "" +"Ta bort den valda inmatningsmetoden från de aktiverade inmatningsmetoderna" + +#: setup/setup.ui:700 +msgid "_Up" +msgstr "_Upp" + +#: setup/setup.ui:707 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "" +"Flytta upp den valda inmatningsmetoden i listan över aktiverade " +"inmatningsmetoder" + +#: setup/setup.ui:718 +msgid "_Down" +msgstr "_Ner" + +#: setup/setup.ui:725 +msgid "Move down the selected input method in the enabled input methods" +msgstr "" +"Flytta ner den valda inmatningsmetoden i listan över aktiverade " +"inmatningsmetoder" + +#: setup/setup.ui:736 +msgid "_About" +msgstr "_Om" + +#: setup/setup.ui:743 +msgid "Show information of the selected input method" +msgstr "Visa information om den valda inmatningsmetoden" + +#: setup/setup.ui:754 +msgid "_Preferences" +msgstr "_Inställningar" + +#: setup/setup.ui:761 +msgid "Show setup of the selected input method" +msgstr "Visa uppsättningen av den valda inmatningsmetoden" + +#: setup/setup.ui:812 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" +"Den aktiva inmatningsmetoden kan bytas mellan de valda i listan " +"ovan genom att trycka snabbkommandot eller klicka i panelikonen." + +#: setup/setup.ui:873 +msgid "" +"The shortcut keys to enable conversions of emoji annotations or Unicode names" +msgstr "Kortkommandot för att aktivera emoji-annoteringar eller Unicode-namn" + +#: setup/setup.ui:875 +msgid "Emoji annotation:" +msgstr "Emoji-annoteringar:" + +#: setup/setup.ui:927 +msgid "The shortcut keys to enable Unicode code point conversions" +msgstr "Kortkommandon för att aktivera konverteringar av Unicode-kodpunkter" + +#: setup/setup.ui:929 +msgid "Unicode code point:" +msgstr "Unicode-kodpunkter:" + +#: setup/setup.ui:1013 +msgid "Set a font of Unicode candidates on the emoji dialog" +msgstr "Ange ett typsnitt för Unicode-kandidater i emoji-dialogen" + +#: setup/setup.ui:1015 +msgid "Unicode font:" +msgstr "Unicode-typsnitt:" + +#: setup/setup.ui:1038 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "Ange ett språk för emoji-annotationer i emoji-dialogen" + +#: setup/setup.ui:1040 +msgid "Emoji annotation language:" +msgstr "Språk för emoji-annotationer:" + +#: setup/setup.ui:1062 +msgid "" +"Match emoji annotations partially with the following condition and more than " +"the number of characters:" +msgstr "" +"Matcha emoji-annotationer partiellt med följande villkor och mer än antalet " +"tecken:" + +#: setup/setup.ui:1067 +msgid "" +"If emoji annotations can be matched with a partial string instead of the " +"exact match" +msgstr "" +"Om emoji-annotationer kan matchas med en partiell sträng istället för en " +"exakt matchning" + +#: setup/setup.ui:1101 +msgid "Prefix match" +msgstr "Prefixmatchning" + +#: setup/setup.ui:1115 +msgid "Suffix match" +msgstr "Suffixmatchning" + +#: setup/setup.ui:1130 +msgid "Containing match" +msgstr "Innehållsmatchning" + +#: setup/setup.ui:1176 +msgid "Emoji" +msgstr "Emoji" + +#: setup/setup.ui:1230 +msgid "Keyboard Layout" +msgstr "Tangentbordslayout" + +#: setup/setup.ui:1278 +msgid "Global input method settings" +msgstr "Inställningar för global inmatningsmetod" + +#: setup/setup.ui:1310 +msgid "" +"Choose glyphs with the input method's language on the candidate window for " +"the duplicated code points" +msgstr "" +"Välj glyfer med inmatningsmetodens språk på kandidatfönstret för de " +"dubblerade kodpunkterna" + +#: setup/setup.ui:1327 +msgid "Fonts" +msgstr "Typsnitt" + +#: setup/setup.ui:1347 +msgid "Advanced" +msgstr "Avancerat" + +#: src/ibusemojigen.h:30 +msgid "Activities" +msgstr "Aktiviteter" + +#: src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "Djur & natur" + +#: src/ibusemojigen.h:32 +msgid "Component" +msgstr "Komponent" + +#: src/ibusemojigen.h:33 +msgid "Flags" +msgstr "Flaggor" + +#: src/ibusemojigen.h:34 +msgid "Food & Drink" +msgstr "Mat & dryck" + +#: src/ibusemojigen.h:35 +msgid "Objects" +msgstr "Föremål" + +#: src/ibusemojigen.h:36 +msgid "People & Body" +msgstr "Folk & kropp" + +#: src/ibusemojigen.h:37 +msgid "Smileys & Emotion" +msgstr "Smajlisar & känsla" + +#: src/ibusemojigen.h:38 +msgid "Symbols" +msgstr "Symboler" + +#: src/ibusemojigen.h:39 +msgid "Travel & Places" +msgstr "Resor & platser" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:33 +msgid "Basic Latin" +msgstr "Grundläggande latinskt" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:37 +msgid "Latin-1 Supplement" +msgstr "Latin-1-tillägg" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:41 +msgid "Latin Extended-A" +msgstr "Latin utökad-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:45 +msgid "Latin Extended-B" +msgstr "Latinskt utökad-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:49 +msgid "IPA Extensions" +msgstr "IPA-tillägg" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:53 +msgid "Spacing Modifier Letters" +msgstr "Modifieringsbokstäver för blanksteg" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:57 +msgid "Combining Diacritical Marks" +msgstr "Kombinerande diakritiska tecken" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:61 +msgid "Greek and Coptic" +msgstr "Grekiska och koptiska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:65 +msgid "Cyrillic" +msgstr "Kyrilliska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:69 +msgid "Cyrillic Supplement" +msgstr "Kyrilliska tillägg" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:73 +msgid "Armenian" +msgstr "Armeniska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:77 +msgid "Hebrew" +msgstr "Hebreiska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:81 +msgid "Arabic" +msgstr "Arabiska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:85 +msgid "Syriac" +msgstr "Syriska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:89 +msgid "Arabic Supplement" +msgstr "Arabiska tillägg" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:93 +msgid "Thaana" +msgstr "Thaana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:97 +msgid "NKo" +msgstr "N'Ko" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:101 +msgid "Samaritan" +msgstr "Samaritanska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:105 +msgid "Mandaic" +msgstr "Mandeiska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:109 +msgid "Syriac Supplement" +msgstr "Syriska tillägg" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:113 +msgid "Arabic Extended-A" +msgstr "Arabiska utökat-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:117 +msgid "Devanagari" +msgstr "Devanagari" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:121 +msgid "Bengali" +msgstr "Bengali" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:125 +msgid "Gurmukhi" +msgstr "Gurmukhi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:129 +msgid "Gujarati" +msgstr "Gujarati" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:133 +msgid "Oriya" +msgstr "Oriya" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:137 +msgid "Tamil" +msgstr "Tamilska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:141 +msgid "Telugu" +msgstr "Telugu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:145 +msgid "Kannada" +msgstr "Kannada" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:149 +msgid "Malayalam" +msgstr "Malayalam" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:153 +msgid "Sinhala" +msgstr "Sinhala" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:157 +msgid "Thai" +msgstr "Thailändska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:161 +msgid "Lao" +msgstr "Lao" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:165 +msgid "Tibetan" +msgstr "Tibetanska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:169 +msgid "Myanmar" +msgstr "Myanmar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:173 +msgid "Georgian" +msgstr "Georgiska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:177 +msgid "Hangul Jamo" +msgstr "Hangul Jamo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:181 +msgid "Ethiopic" +msgstr "Etiopiska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:185 +msgid "Ethiopic Supplement" +msgstr "Etiopiska tillägg" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:189 +msgid "Cherokee" +msgstr "Cherokesiska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:193 +msgid "Unified Canadian Aboriginal Syllabics" +msgstr "Enhetliga kanadensiska aboriginstavelser" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:197 +msgid "Ogham" +msgstr "Ogham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:201 +msgid "Runic" +msgstr "Runor" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:205 +msgid "Tagalog" +msgstr "Tagalog" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:209 +msgid "Hanunoo" +msgstr "Hanunoo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:213 +msgid "Buhid" +msgstr "Buhid" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:217 +msgid "Tagbanwa" +msgstr "Tagbanwa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:221 +msgid "Khmer" +msgstr "Khmer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:225 +msgid "Mongolian" +msgstr "Mongoliska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:229 +msgid "Unified Canadian Aboriginal Syllabics Extended" +msgstr "Enhetliga kanadensiska aboriginstavelser, utökad" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:233 +msgid "Limbu" +msgstr "Limbu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:237 +msgid "Tai Le" +msgstr "Tai le" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:241 +msgid "New Tai Lue" +msgstr "Ny tai lue" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:245 +msgid "Khmer Symbols" +msgstr "Khmer-symboler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:249 +msgid "Buginese" +msgstr "Buginesisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:253 +msgid "Tai Tham" +msgstr "Tai Tham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:257 +msgid "Combining Diacritical Marks Extended" +msgstr "Kombinerande utökade diakritiska tecken" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:261 +msgid "Balinese" +msgstr "Balinesisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:265 +msgid "Sundanese" +msgstr "Sundanesiska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:269 +msgid "Batak" +msgstr "Batak" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:273 +msgid "Lepcha" +msgstr "Lepcha" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:277 +msgid "Ol Chiki" +msgstr "Ol Chiki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:281 +msgid "Cyrillic Extended-C" +msgstr "Kyrillisk utökad-C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:285 +msgid "Georgian Extended" +msgstr "Utökad georgiska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:289 +msgid "Sundanese Supplement" +msgstr "Sundanesiska tillägg" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:293 +msgid "Vedic Extensions" +msgstr "Vediska tillägg" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:297 +msgid "Phonetic Extensions" +msgstr "Fonetiska tillägg" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:301 +msgid "Phonetic Extensions Supplement" +msgstr "Tillägg för fonetiska utökningar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:305 +msgid "Combining Diacritical Marks Supplement" +msgstr "Tillägg för kombinerande diakritiska tecken" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:309 +msgid "Latin Extended Additional" +msgstr "Ytterligare utökade latinska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:313 +msgid "Greek Extended" +msgstr "Utökade grekiska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:317 +msgid "General Punctuation" +msgstr "Allmänna skiljetecken" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:321 +msgid "Superscripts and Subscripts" +msgstr "Upphöjda och nedsänkta" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:325 +msgid "Currency Symbols" +msgstr "Valutasymboler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:329 +msgid "Combining Diacritical Marks for Symbols" +msgstr "Kombinerande diakritiska symbolmarkörer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:333 +msgid "Letterlike Symbols" +msgstr "Bokstavsliknande symboler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:337 +msgid "Number Forms" +msgstr "Talformer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:341 +msgid "Arrows" +msgstr "Pilar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:345 +msgid "Mathematical Operators" +msgstr "Matematiska operatorer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:349 +msgid "Miscellaneous Technical" +msgstr "Diverse tekniska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:353 +msgid "Control Pictures" +msgstr "Kontrollbilder" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:357 +msgid "Optical Character Recognition" +msgstr "Optisk teckenigenkänning" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:361 +msgid "Enclosed Alphanumerics" +msgstr "Inneslutna alfanumeriska tecken" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:365 +msgid "Box Drawing" +msgstr "Lådritning" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:369 +msgid "Block Elements" +msgstr "Blockelement" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:373 +msgid "Geometric Shapes" +msgstr "Geometriska former" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:377 +msgid "Miscellaneous Symbols" +msgstr "Diverse symboler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:381 +msgid "Dingbats" +msgstr "Dingbats" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:385 +msgid "Miscellaneous Mathematical Symbols-A" +msgstr "Diverse matematiska symboler-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:389 +msgid "Supplemental Arrows-A" +msgstr "Piltillägg-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:393 +msgid "Braille Patterns" +msgstr "Punktskriftsmönster" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:397 +msgid "Supplemental Arrows-B" +msgstr "Piltillägg-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:401 +msgid "Miscellaneous Mathematical Symbols-B" +msgstr "Diverse matematiska symboler-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:405 +msgid "Supplemental Mathematical Operators" +msgstr "Matematiska operatortillägg" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:409 +msgid "Miscellaneous Symbols and Arrows" +msgstr "Diverse symboler och pilar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:413 +msgid "Glagolitic" +msgstr "Glagolitisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:417 +msgid "Latin Extended-C" +msgstr "Utökat latin-C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:421 +msgid "Coptic" +msgstr "Koptisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:425 +msgid "Georgian Supplement" +msgstr "Georgiska tillägg" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:429 +msgid "Tifinagh" +msgstr "Tifinagh" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:433 +msgid "Ethiopic Extended" +msgstr "Utökad etiopisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:437 +msgid "Cyrillic Extended-A" +msgstr "Kyrillisk utökad-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:441 +msgid "Supplemental Punctuation" +msgstr "Tillägg till skiljetecken" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:445 +msgid "CJK Radicals Supplement" +msgstr "CJK-ordstamstillägg" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:449 +msgid "Kangxi Radicals" +msgstr "Kangxi-ordstammar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:453 +msgid "Ideographic Description Characters" +msgstr "Tecken för ideografisk beskrivning" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:457 +msgid "CJK Symbols and Punctuation" +msgstr "CJK-symboler och skiljetecken" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:461 +msgid "Hiragana" +msgstr "Hiragana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:465 +msgid "Katakana" +msgstr "Katakana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:469 +msgid "Bopomofo" +msgstr "Bopomofo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:473 +msgid "Hangul Compatibility Jamo" +msgstr "Hangul-kompatibilitet Jamo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:477 +msgid "Kanbun" +msgstr "Kanbun" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:481 +msgid "Bopomofo Extended" +msgstr "Utökad bopomofo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:485 +msgid "CJK Strokes" +msgstr "CJK-streck" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:489 +msgid "Katakana Phonetic Extensions" +msgstr "Fonetiska katakana-tillägg" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:493 +msgid "Enclosed CJK Letters and Months" +msgstr "Inneslutna CJK-bokstäver och -månader" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:497 +msgid "CJK Compatibility" +msgstr "CJK-kompatibilitet" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:501 +msgid "CJK Unified Ideographs Extension A" +msgstr "Enhetliga CJK-ideograftillägg A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:505 +msgid "Yijing Hexagram Symbols" +msgstr "Yijing-hexagramsymboler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:509 +msgid "CJK Unified Ideographs" +msgstr "Enhetliga CJK-ideografer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:513 +msgid "Yi Syllables" +msgstr "Yi-stavelser" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:517 +msgid "Yi Radicals" +msgstr "Yi-ordstammar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:521 +msgid "Lisu" +msgstr "Lisu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:525 +msgid "Vai" +msgstr "Vai" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:529 +msgid "Cyrillic Extended-B" +msgstr "Kyrillisk utökad-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:533 +msgid "Bamum" +msgstr "Bamum" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:537 +msgid "Modifier Tone Letters" +msgstr "Modifieringsbokstäver för toner" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:541 +msgid "Latin Extended-D" +msgstr "Utökat latin-D" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:545 +msgid "Syloti Nagri" +msgstr "Syloti Nagri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:549 +msgid "Common Indic Number Forms" +msgstr "Vanliga indiska talformer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:553 +msgid "Phags-pa" +msgstr "Phags-pa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:557 +msgid "Saurashtra" +msgstr "Saurashtra" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:561 +msgid "Devanagari Extended" +msgstr "Devanagari utökad" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:565 +msgid "Kayah Li" +msgstr "Kayah Li" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:569 +msgid "Rejang" +msgstr "Rejang" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:573 +msgid "Hangul Jamo Extended-A" +msgstr "Utökad Hangul Jamo-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:577 +msgid "Javanese" +msgstr "Javanesiska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:581 +msgid "Myanmar Extended-B" +msgstr "Utökad Myanmar-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:585 +msgid "Cham" +msgstr "Cham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:589 +msgid "Myanmar Extended-A" +msgstr "Utökad Myanmar-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:593 +msgid "Tai Viet" +msgstr "Tai Viet" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:597 +msgid "Meetei Mayek Extensions" +msgstr "Meetei Mayek-tillägg" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:601 +msgid "Ethiopic Extended-A" +msgstr "Utökad etiopisk-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:605 +msgid "Latin Extended-E" +msgstr "Utökat latin-E" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:609 +msgid "Cherokee Supplement" +msgstr "Cherokesiska tillägg" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:613 +msgid "Meetei Mayek" +msgstr "Meetei Mayek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:617 +msgid "Hangul Syllables" +msgstr "Hangul-stavelser" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:621 +msgid "Hangul Jamo Extended-B" +msgstr "Utökad Hangul Jamo-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:625 +msgid "High Surrogates" +msgstr "Höga surrogat" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:629 +msgid "High Private Use Surrogates" +msgstr "Höga surrogat för privat användning" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:633 +msgid "Low Surrogates" +msgstr "Låga surrogat" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:637 +msgid "Private Use Area" +msgstr "Område för privat användning" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:641 +msgid "CJK Compatibility Ideographs" +msgstr "CJK-kompatibilitetsideografer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:645 +msgid "Alphabetic Presentation Forms" +msgstr "Alfabetiska presentationsformer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:649 +msgid "Arabic Presentation Forms-A" +msgstr "Arabiska presentationsformer-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:653 +msgid "Variation Selectors" +msgstr "Variationsväljare" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:657 +msgid "Vertical Forms" +msgstr "Vertikala former" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:661 +msgid "Combining Half Marks" +msgstr "Kombineringshalvmarkörer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:665 +msgid "CJK Compatibility Forms" +msgstr "CJK-kompatibilitetsformer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:669 +msgid "Small Form Variants" +msgstr "Små formvarianter" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:673 +msgid "Arabic Presentation Forms-B" +msgstr "Arabiska presentationsformer-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:677 +msgid "Halfwidth and Fullwidth Forms" +msgstr "Halvbredds- och helbreddsformer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:681 +msgid "Specials" +msgstr "Specialtecken" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:685 +msgid "Linear B Syllabary" +msgstr "Linjär B-stavelser" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:689 +msgid "Linear B Ideograms" +msgstr "Linjär B-ideogram" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:693 +msgid "Aegean Numbers" +msgstr "Egeiska tal" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:697 +msgid "Ancient Greek Numbers" +msgstr "Gammalgrekiska tal" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:701 +msgid "Ancient Symbols" +msgstr "Antika symboler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:705 +msgid "Phaistos Disc" +msgstr "Phaistos-skiva" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:709 +msgid "Lycian" +msgstr "Lykiska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:713 +msgid "Carian" +msgstr "Kariska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:717 +msgid "Coptic Epact Numbers" +msgstr "Koptiska epact-nummer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:721 +msgid "Old Italic" +msgstr "Fornitaliska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:725 +msgid "Gothic" +msgstr "Gotiska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:729 +msgid "Old Permic" +msgstr "Fornpermiska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:733 +msgid "Ugaritic" +msgstr "Ugaritiska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:737 +msgid "Old Persian" +msgstr "Gammalpersiska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:741 +msgid "Deseret" +msgstr "Deseret" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:745 +msgid "Shavian" +msgstr "Shaviska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:749 +msgid "Osmanya" +msgstr "Osmaniska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:753 +msgid "Osage" +msgstr "Osage" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:757 +msgid "Elbasan" +msgstr "Elbasan" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:761 +msgid "Caucasian Albanian" +msgstr "Kaukasisk albanska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:765 +msgid "Linear A" +msgstr "Linjär A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:769 +msgid "Cypriot Syllabary" +msgstr "Cypriotiska stavelser" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:773 +msgid "Imperial Aramaic" +msgstr "Senarameiska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:777 +msgid "Palmyrene" +msgstr "Palmyrenska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:781 +msgid "Nabataean" +msgstr "Nabatéiska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:785 +msgid "Hatran" +msgstr "Hatranska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:789 +msgid "Phoenician" +msgstr "Phoenicisk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:793 +msgid "Lydian" +msgstr "Lydian" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:797 +msgid "Meroitic Hieroglyphs" +msgstr "Meroitiska hieroglyfer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:801 +msgid "Meroitic Cursive" +msgstr "Meroitiska kursiv" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:805 +msgid "Kharoshthi" +msgstr "Kharoshthi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:809 +msgid "Old South Arabian" +msgstr "Fornsydarabiska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:813 +msgid "Old North Arabian" +msgstr "Fornnordarabiska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:817 +msgid "Manichaean" +msgstr "Manikeiska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:821 +msgid "Avestan" +msgstr "Avestan" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:825 +msgid "Inscriptional Parthian" +msgstr "Inskriptionell parthiska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:829 +msgid "Inscriptional Pahlavi" +msgstr "Inskriptionell pahlavi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:833 +msgid "Psalter Pahlavi" +msgstr "Psaltaren-pahlavi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:837 +msgid "Old Turkic" +msgstr "Fornturkiska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:841 +msgid "Old Hungarian" +msgstr "Fornungerska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:845 +msgid "Hanifi Rohingya" +msgstr "Hanifi Rohingya" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:849 +msgid "Rumi Numeral Symbols" +msgstr "Numeriska Rumi-symboler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:853 +msgid "Yezidi" +msgstr "Ezdiki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:857 +msgid "Old Sogdian" +msgstr "Gammalsogdiska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:861 +msgid "Sogdian" +msgstr "Sogdiska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:865 +msgid "Chorasmian" +msgstr "Khwarezmiska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:869 +msgid "Elymaic" +msgstr "Elymaic" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:873 +msgid "Brahmi" +msgstr "Brahmi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:877 +msgid "Kaithi" +msgstr "Kaithi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:881 +msgid "Sora Sompeng" +msgstr "Sora Sompeng" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:885 +msgid "Chakma" +msgstr "Chakma" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:889 +msgid "Mahajani" +msgstr "Mahajani" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:893 +msgid "Sharada" +msgstr "Sharada" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:897 +msgid "Sinhala Archaic Numbers" +msgstr "Singalesiska arkaiska nummer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:901 +msgid "Khojki" +msgstr "Khojkiska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:905 +msgid "Multani" +msgstr "Multani" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:909 +msgid "Khudawadi" +msgstr "Sindhiska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:913 +msgid "Grantha" +msgstr "Grantha" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:917 +msgid "Newa" +msgstr "Newa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:921 +msgid "Tirhuta" +msgstr "Tirhuta" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:925 +msgid "Siddham" +msgstr "Siddham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:929 +msgid "Modi" +msgstr "Modi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:933 +msgid "Mongolian Supplement" +msgstr "Mongoliska tillägg" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:937 +msgid "Takri" +msgstr "Takri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:941 +msgid "Ahom" +msgstr "Ahom" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:945 +msgid "Dogra" +msgstr "Dogra" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:949 +msgid "Warang Citi" +msgstr "Warang Citi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:953 +msgid "Dives Akuru" +msgstr "Dhives Akuruiska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:957 +msgid "Nandinagari" +msgstr "Nandinagari" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:961 +msgid "Zanabazar Square" +msgstr "Zanabazar-kvadratskrift" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:965 +msgid "Soyombo" +msgstr "Soyombo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:969 +msgid "Pau Cin Hau" +msgstr "Pau Cin Hau" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:973 +msgid "Bhaiksuki" +msgstr "Bhaiksuki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:977 +msgid "Marchen" +msgstr "Marchen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:981 +msgid "Masaram Gondi" +msgstr "Masaram Gondi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:985 +msgid "Gunjala Gondi" +msgstr "Gunjala Gondi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:989 +msgid "Makasar" +msgstr "Makassariska" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:993 +msgid "Lisu Supplement" +msgstr "Lisu-tillägg" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:997 +msgid "Tamil Supplement" +msgstr "Tillägg för tamil" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1001 +msgid "Cuneiform" +msgstr "Kilskrift" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1005 +msgid "Cuneiform Numbers and Punctuation" +msgstr "Kilskrift-tal och skiljetecken" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1009 +msgid "Early Dynastic Cuneiform" +msgstr "Tidig dynastisk kilskrift" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1013 +msgid "Egyptian Hieroglyphs" +msgstr "Egyptiska hieroglyfer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1017 +msgid "Egyptian Hieroglyph Format Controls" +msgstr "Formatstyrning för egyptiska hieroglyfer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1021 +msgid "Anatolian Hieroglyphs" +msgstr "Anatoliska hieroglyfer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1025 +msgid "Bamum Supplement" +msgstr "Bamum-tillägg" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1029 +msgid "Mro" +msgstr "Mru" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1033 +msgid "Bassa Vah" +msgstr "Bassaiska vah" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1037 +msgid "Pahawh Hmong" +msgstr "Pahaw mong" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1041 +msgid "Medefaidrin" +msgstr "Medefaidrin" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1045 +msgid "Miao" +msgstr "Miao" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1049 +msgid "Ideographic Symbols and Punctuation" +msgstr "Ideografiska symboler och skiljetecken" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1053 +msgid "Tangut" +msgstr "Tangut" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1057 +msgid "Tangut Components" +msgstr "Tangut-komponenter" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1061 +msgid "Khitan Small Script" +msgstr "Khitansk liten skrift" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1065 +msgid "Tangut Supplement" +msgstr "Tangut-tillägg" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1069 +msgid "Kana Supplement" +msgstr "Kana-tillägg" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1073 +msgid "Kana Extended-A" +msgstr "Utökad Kana-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1077 +msgid "Small Kana Extension" +msgstr "Utökning för små kanasymboler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1081 +msgid "Nushu" +msgstr "Nushu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1085 +msgid "Duployan" +msgstr "Duployé" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1089 +msgid "Shorthand Format Controls" +msgstr "Formateringskontroll för Stenografi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1093 +msgid "Byzantine Musical Symbols" +msgstr "Bysantinska musiksymboler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1097 +msgid "Musical Symbols" +msgstr "Musiksymboler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1101 +msgid "Ancient Greek Musical Notation" +msgstr "Gammalgrekisk musiknotation" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1105 +msgid "Mayan Numerals" +msgstr "Mayasiffror" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1109 +msgid "Tai Xuan Jing Symbols" +msgstr "Tai Xuan Jing-symboler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1113 +msgid "Counting Rod Numerals" +msgstr "Talstav" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1117 +msgid "Mathematical Alphanumeric Symbols" +msgstr "Matematiska alfanumeriska symboler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1121 +msgid "Sutton SignWriting" +msgstr "Suttons teckningsskrift" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1125 +msgid "Glagolitic Supplement" +msgstr "Glagolitiska tillägg" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1129 +msgid "Nyiakeng Puachue Hmong" +msgstr "Nyiakeng Puachue Hmong" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1133 +msgid "Wancho" +msgstr "Wancho" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1137 +msgid "Mende Kikakui" +msgstr "Mende Kikakui" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1141 +msgid "Adlam" +msgstr "Adlam" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1145 +msgid "Indic Siyaq Numbers" +msgstr "Indiska siyaq-siffror" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1149 +msgid "Ottoman Siyaq Numbers" +msgstr "Ottomanska siyaq-siffror" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1153 +msgid "Arabic Mathematical Alphabetic Symbols" +msgstr "Arabiska matematiska alfabetiska symboler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1157 +msgid "Mahjong Tiles" +msgstr "Mahjong-brickor" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1161 +msgid "Domino Tiles" +msgstr "Domino-brickor" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1165 +msgid "Playing Cards" +msgstr "Spelkort" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1169 +msgid "Enclosed Alphanumeric Supplement" +msgstr "Inneslutna alfanumeriska utökningar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1173 +msgid "Enclosed Ideographic Supplement" +msgstr "Inneslutna ideografiska utökningar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1177 +msgid "Miscellaneous Symbols and Pictographs" +msgstr "Diverse symboler och piktogram" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1181 +msgid "Emoticons" +msgstr "Humörsymboler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1185 +msgid "Ornamental Dingbats" +msgstr "Dekorativa Dingbats" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1189 +msgid "Transport and Map Symbols" +msgstr "Transport- och kartsymboler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1193 +msgid "Alchemical Symbols" +msgstr "Alkemiska symboler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1197 +msgid "Geometric Shapes Extended" +msgstr "Utökade geometriska former" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1201 +msgid "Supplemental Arrows-C" +msgstr "Piltillägg-C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1205 +msgid "Supplemental Symbols and Pictographs" +msgstr "Symbol- och piktogramtillägg" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1209 +msgid "Chess Symbols" +msgstr "Schacksymboler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1213 +msgid "Symbols and Pictographs Extended-A" +msgstr "Symboler och piktogram tillägg-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1217 +msgid "Symbols for Legacy Computing" +msgstr "Symboler för föråldrade databeräkningar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1221 +msgid "CJK Unified Ideographs Extension B" +msgstr "Enhetliga CJK-ideograftillägg B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1225 +msgid "CJK Unified Ideographs Extension C" +msgstr "Enhetliga CJK-ideograftillägg C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1229 +msgid "CJK Unified Ideographs Extension D" +msgstr "Enhetliga CJK-ideograftillägg D" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1233 +msgid "CJK Unified Ideographs Extension E" +msgstr "Enhetliga CJK-ideograftillägg E" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1237 +msgid "CJK Unified Ideographs Extension F" +msgstr "Enhetliga CJK-ideograftillägg F" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1241 +msgid "CJK Compatibility Ideographs Supplement" +msgstr "CJK-kompatibilitetideografstillägg" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1245 +msgid "CJK Unified Ideographs Extension G" +msgstr "Enhetliga CJK-ideograftillägg G" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1249 +msgid "Tags" +msgstr "Taggar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1253 +msgid "Variation Selectors Supplement" +msgstr "Variationsväljartillägg" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1257 +msgid "Supplementary Private Use Area-A" +msgstr "Tillägg till privat användningsområde-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1261 +msgid "Supplementary Private Use Area-B" +msgstr "Tillägg till privat användningsområde-B" + +#: tools/main.vala:51 +msgid "List engine name only" +msgstr "Lista endast maskinnamn" + +#: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 +msgid "Can't connect to IBus.\n" +msgstr "Kan inte ansluta till IBus.\n" + +#: tools/main.vala:93 +#, c-format +msgid "language: %s\n" +msgstr "språk: %s\n" + +#: tools/main.vala:161 +msgid "No engine is set.\n" +msgstr "Ingen maskin är satt.\n" + +#: tools/main.vala:169 +msgid "Set global engine failed.\n" +msgstr "Att sätta den globala maskinen misslyckades.\n" + +#: tools/main.vala:174 +msgid "Get global engine failed.\n" +msgstr "Att hämta den globala maskinen misslyckades.\n" + +#: tools/main.vala:217 +msgid "Read the system registry cache." +msgstr "Läs systemregistercachen." + +#: tools/main.vala:219 +msgid "Read the registry cache FILE." +msgstr "Läs registercachen i FIL." + +#: tools/main.vala:237 tools/main.vala:242 +msgid "The registry cache is invalid.\n" +msgstr "Registercachen är felaktig.\n" + +#: tools/main.vala:257 +msgid "Write the system registry cache." +msgstr "Skriv systemregistercachen." + +#: tools/main.vala:259 +msgid "Write the registry cache FILE." +msgstr "Skriv registercachen till FIL." + +#: tools/main.vala:295 +msgid "" +"Use engine schema paths instead of ibus core, which can be comma-separated " +"values." +msgstr "" +"Använd motorschemasökvägar istället för ibus-kärnan, vilket kan vara " +"kommaseparerade värden." + +#: tools/main.vala:381 +msgid "Resetting…" +msgstr "Återställer …" + +#: tools/main.vala:399 +msgid "Done" +msgstr "Klart" + +#: tools/main.vala:444 +msgid "Set or get engine" +msgstr "Sätt eller hämta maskin" + +#: tools/main.vala:445 +msgid "Exit ibus-daemon" +msgstr "Avsluta ibus-demonen" + +#: tools/main.vala:446 +msgid "Show available engines" +msgstr "Visa tillgängliga maskiner" + +#: tools/main.vala:447 +msgid "(Not implemented)" +msgstr "(Inte implementerat)" + +#: tools/main.vala:448 +msgid "Restart ibus-daemon" +msgstr "Starta om ibus-demonen" + +#: tools/main.vala:449 +msgid "Show version" +msgstr "Visa versionen" + +#: tools/main.vala:450 +msgid "Show the content of registry cache" +msgstr "Vissa innehållet i registercachen" + +#: tools/main.vala:451 +msgid "Create registry cache" +msgstr "Skapa en registercache" + +#: tools/main.vala:452 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "Skriv ut D-Bus-adressen till ibus-demonen" + +#: tools/main.vala:453 +msgid "Show the configuration values" +msgstr "Visa konfigurationsvärdena" + +#: tools/main.vala:454 +msgid "Reset the configuration values" +msgstr "Återställ konfigurationsvärdena" + +#: tools/main.vala:456 +msgid "Save emoji on dialog to clipboard" +msgstr "Spara emoji i dialogen till urklipp" + +#: tools/main.vala:458 +msgid "Show this information" +msgstr "Visa denna information" + +#: tools/main.vala:464 +#, c-format +msgid "" +"Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "" +"Användning: %s KOMMANDO [FLAGGA …]\n" +"\n" + +#: tools/main.vala:465 +msgid "Commands:\n" +msgstr "Kommandon:\n" + +#: tools/main.vala:494 +#, c-format +msgid "%s is unknown command!\n" +msgstr "%s är ett okänt kommando!\n" + +#: ui/gtk3/emojier.vala:233 +msgid "Favorites" +msgstr "Favoriter" + +#: ui/gtk3/emojier.vala:234 +msgid "Others" +msgstr "Annat" + +#: ui/gtk3/emojier.vala:235 +msgid "Open Unicode choice" +msgstr "Öppna Unicode-val" + +#: ui/gtk3/emojier.vala:995 +msgid "Bring back emoji choice" +msgstr "Ta tillbaks emoji-val" + +#: ui/gtk3/emojier.vala:1097 +msgid "Page Down" +msgstr "Bläddra ned" + +#: ui/gtk3/emojier.vala:1108 +msgid "Page Up" +msgstr "Bläddra upp" + +#: ui/gtk3/emojier.vala:1111 +msgid "Show emoji variants" +msgstr "Visa emoji-varianter" + +#: ui/gtk3/emojier.vala:1112 +msgid "Close" +msgstr "Stäng" + +#: ui/gtk3/emojier.vala:1118 +msgid "Menu" +msgstr "Meny" + +#: ui/gtk3/emojier.vala:1129 +msgid "Click to view a warning message" +msgstr "Klicka för att visa ett varningsmeddelande" + +#: ui/gtk3/emojier.vala:1173 +msgid "Loading a Unicode dictionary:" +msgstr "Laddar en Unicode-ordbok:" + +#: ui/gtk3/emojier.vala:1419 +#, c-format +msgid "Code point: %s" +msgstr "Kodpunkt: %s" + +#: ui/gtk3/emojier.vala:1425 +msgid "Has emoji variants" +msgstr "Har emoji-varianter" + +#: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 +#, c-format +msgid "Description: %s" +msgstr "Beskrivning: %s" + +#: ui/gtk3/emojier.vala:1592 +msgid "None" +msgstr "Ingen" + +#: ui/gtk3/emojier.vala:1616 +#, c-format +msgid "Annotations: %s" +msgstr "Annotationer: %s" + +#: ui/gtk3/emojier.vala:1642 +#, c-format +msgid "Name: %s" +msgstr "Namn: %s" + +#: ui/gtk3/emojier.vala:1650 +#, c-format +msgid "Alias: %s" +msgstr "Alias: %s" + +#: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 +#: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1169 +msgid "Emoji Choice" +msgstr "Emoji-val" + +#: ui/gtk3/emojier.vala:2142 +msgid "Unicode Choice" +msgstr "Unicode-val" + +#: ui/gtk3/emojier.vala:2432 +msgid "" +"Failed to get the current text application. Please re-focus your " +"application. E.g. Press Esc key several times to release the emoji typing " +"mode, click your desktop and click your text application again." +msgstr "" +"Misslyckades att få det aktuella textprogrammet. Fokusera om ditt program. T." +"ex. tryck Esc-tangenten flera gånger för att släppa emoji-inskrivningsläget, " +"klicka på ditt skrivbord och klicka på ditt textprogram igen." + +#: ui/gtk3/emojierapp.vala:47 +msgid "Canceled to choose an emoji." +msgstr "Avbröt att välja en emoji." + +#: ui/gtk3/emojierapp.vala:67 +msgid "Copied an emoji to your clipboard." +msgstr "Kopierade en emoji till ditt urklipp." + +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ui/gtk3/emojierapp.vala:126 +msgid "\"FONT\" for emoji characters on emoji dialog" +msgstr "”TYPSNITT” för emoji-tecken i emoji-dialogen" + +#: ui/gtk3/emojierapp.vala:127 +msgid "FONT" +msgstr "TYPSNITT" + +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ui/gtk3/emojierapp.vala:132 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" +msgstr "”SPRÅK” för annotationer i emoji-dialogen. T.ex. ”sv”" + +#: ui/gtk3/emojierapp.vala:133 +msgid "LANG" +msgstr "SPRÅK" + +#: ui/gtk3/emojierapp.vala:135 +msgid "Emoji annotations can be match partially" +msgstr "Emoji-annotationer kan matcha partiellt" + +#: ui/gtk3/emojierapp.vala:139 +msgid "Match with the length of the specified integer" +msgstr "Matcha med längden på det angivna heltalet" + +#: ui/gtk3/emojierapp.vala:143 +msgid "Match with the condition of the specified integer" +msgstr "Matcha med villkoret för det angivna heltalet" + +#: ui/gtk3/panel.vala:292 ui/gtk3/panel.vala:323 +msgid "IBus Panel" +msgstr "IBus-panel" + +#: ui/gtk3/panel.vala:975 +#, c-format +msgid "" +"Your configured input method %s does not exist in IBus input methods so \"US" +"\" layout was configured instead of your input method." +msgstr "" +"Din konfigurerade inmatningsmetod %s existerar inte bland IBus " +"inmatningsbetoder så ”US”-layouten konfigurerades istället för din " +"inmatningsmetod." + +#: ui/gtk3/panel.vala:980 +msgid "" +"At least one of your configured input methods does not exist in IBus input " +"methods." +msgstr "" +"Åtminstone en av dina konfigurerade inmatningsmetode existerar inte bland " +"IBus inmatningsmetoder." + +#: ui/gtk3/panel.vala:983 +msgid "" +"Please run `ibus-setup` command, open \"Input Method\" tab, and configure " +"your input methods again." +msgstr "" +"Kör kommandot ”ibus-setup”, öppna fliken ”Inmatningsmetod” och konfigurera " +"dina inmatningsmetoder igen." + +#: ui/gtk3/panel.vala:1141 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus är en intelligent inmatningsbuss för Linux/Unix." + +#: ui/gtk3/panel.vala:1145 +msgid "translator-credits" +msgstr "Göran Uddeborg " + +#: ui/gtk3/panel.vala:1164 +msgid "Preferences" +msgstr "Inställningar" + +#: ui/gtk3/panel.vala:1190 +msgid "Restart" +msgstr "Starta om" + +#: ui/gtk3/panel.vala:1194 +msgid "Quit" +msgstr "Avsluta" + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 +msgid "default:LTR" +msgstr "default:LTR" + +#~ msgid "" +#~ "IBus\n" +#~ "The intelligent input bus\n" +#~ "Homepage: https://github.com/ibus/ibus/wiki\n" +#~ "\n" +#~ "\n" +#~ "\n" +#~ msgstr "" +#~ "IBus\n" +#~ "Den intelligenta inmatningsbussen\n" +#~ "Hemsida: https://github.com/ibus/ibus/wiki\n" +#~ "\n" +#~ "\n" +#~ "\n" + +#~ msgid "Start ibus on login" +#~ msgstr "Starta ibus vid inloggning" + +#~ msgid "Startup" +#~ msgstr "Uppstart" diff --git a/po/ta.po b/po/ta.po index 88d8eb9e4..664fab5b3 100644 --- a/po/ta.po +++ b/po/ta.po @@ -1,550 +1,3080 @@ -# translation of ibus.master.ta.po to Tamil # Tamil translation of ibus. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2018 Takao Fujiwara # This file is distributed under the same license as the ibus package. # -# I. Felix , 2009. -# I Felix , 2010. -# ifelix , 2011. +# Translators: +# Arun Prakash , 2012 +# Arun Prakash , 2012 +# Felix I , 2011 +# Felix I , 2011 +# I Felix , 2010 +# I. Felix , 2009 +# shkumar , 2012 +# shkumar , 2012,2014 +# fujiwara , 2015. #zanata +# deadrat , 2017. #zanata +# fujiwara , 2018. #zanata msgid "" msgstr "" -"Project-Id-Version: ibus.master.ta\n" -"Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/list\n" -"POT-Creation-Date: 2011-03-08 12:32+0900\n" -"PO-Revision-Date: 2011-03-22 15:23+0000\n" -"Last-Translator: ifelix \n" -"Language-Team: Tamil \n" -"Language: ta\n" +"Project-Id-Version: IBus\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2018-02-20 17:31+0900\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Lokalize 1.0\n" +"PO-Revision-Date: 2018-02-20 04:23-0500\n" +"Last-Translator: Copied by Zanata \n" +"Language-Team: Tamil \n" +"Language: ta\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Zanata 3.9.6\n" +#: ../setup/setup.ui.h:1 +msgid "Horizontal" +msgstr "கிடைமட்டம்" -#: ../bus/ibus.desktop.in.h:1 -msgid "IBus" -msgstr "IBus" +#: ../setup/setup.ui.h:2 +msgid "Vertical" +msgstr "செங்குத்து" -#: ../bus/ibus.desktop.in.h:2 -msgid "Input Method Framework" -msgstr "உள்ளீடு முறை ஃபிரேம்வொர்க்" +#: ../setup/setup.ui.h:3 +msgid "Top left corner" +msgstr "மேல் இடது மூலை" -#: ../bus/ibus.desktop.in.h:3 -msgid "Start IBus Input Method Framework" -msgstr "IBus உள்ளீடு முறை ஃபிரேம்வொர்க்கை துவக்கு" +#: ../setup/setup.ui.h:4 +msgid "Top right corner" +msgstr "மேல் வலது மூலை" -#: ../ibus/_config.py.in:39 -msgid "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +#: ../setup/setup.ui.h:5 +msgid "Bottom left corner" +msgstr "கீழ் இடது மூலை" + +#: ../setup/setup.ui.h:6 +msgid "Bottom right corner" +msgstr "கீழ் வலது மூலை" + +#: ../setup/setup.ui.h:7 +msgid "Custom" +msgstr "தனிப்பயன்" + +#: ../setup/setup.ui.h:8 +msgid "Do not show" +msgstr "காண்பிக்க வேண்டாம்" + +#: ../setup/setup.ui.h:9 +msgid "Hide automatically" +msgstr "தானாக மறை" + +#: ../setup/setup.ui.h:10 +msgid "Always" +msgstr "எப்போதும்" + +#: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 +msgid "IBus Preferences" +msgstr "IBus விருப்பங்கள்" + +#: ../setup/setup.ui.h:12 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "பட்டியலில் அடுத்த உள்ளீடு முறைக்கு மாறுவதற்கான குறுக்குவழி விசைகள்" + +#: ../setup/setup.ui.h:13 +msgid "Next input method:" +msgstr "அடுத்த உள்ளீடு முறை:" + +#: ../setup/setup.ui.h:14 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "பட்டியலில் முந்தைய உள்ளீடு முறைக்கு மாறுவதற்கான குறுக்குவழி விசைகள்" + +#: ../setup/setup.ui.h:15 +msgid "Previous input method:" +msgstr "முந்தைய உள்ளீடு முறை:" + +#: ../setup/setup.ui.h:16 +msgid "..." +msgstr "..." + +#: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:16 +msgid "The shortcut keys for turning input method on or off" +msgstr "உள்ளீடு முறைமையை துவக்கவும் நிறுத்தவும் குறுக்குவிசைகள்" + +#: ../setup/setup.ui.h:18 +msgid "Enable or disable:" +msgstr "செயல்படுத்து அல்லது முடக்கு:" + +#: ../setup/setup.ui.h:19 +msgid "Enable:" +msgstr "செயல்படுத்து:" + +#: ../setup/setup.ui.h:20 +msgid "Disable:" +msgstr "முடக்கு:" + +#: ../setup/setup.ui.h:21 +msgid "Keyboard Shortcuts" +msgstr "விசைப்பலகை குறுக்குவழிகள்" + +#: ../setup/setup.ui.h:22 +msgid "Set the orientation of candidates in lookup table" +msgstr "காணும் அட்டவணையில் நபர்களின் திசையமைப்பை அமை" + +#: ../setup/setup.ui.h:23 +msgid "Candidates orientation:" +msgstr "கேண்டிடேட் சார்ந்து:" + +#: ../setup/setup.ui.h:24 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "மொழி பட்டையை எவ்வாறு காட்ட அல்லது மறைக்க வேண்டும் என ibus பண்பினை அமை" + +#: ../setup/setup.ui.h:25 +msgid "Show property panel:" +msgstr "பண்புகள் பலகத்தைக் காட்டு:" + +#: ../setup/setup.ui.h:26 +msgid "Language panel position:" +msgstr "மொழி பேனல் படம்:" + +#: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:36 +msgid "Show icon on system tray" +msgstr "கணினி தட்டில் சின்னத்தை காட்டு" + +#: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:38 +msgid "Show input method name on language bar" +msgstr "மொழி பட்டையில் உள்ளீடு முறையின் பெயரை காட்டு" + +#: ../setup/setup.ui.h:29 +msgid "Show input method's name on language bar when check the checkbox" msgstr "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +"சோதனை பெட்டியை சோதிக்கும் போது உள்ளீடு முறை பெயரை மொழி பட்டையில் காட்டு " -#: ../ibus/lang.py:41 -msgid "Other" -msgstr "வேறு" +#: ../setup/setup.ui.h:30 +msgid "Embed preedit text in application window" +msgstr "பயன்பாடு சாளரத்தில் உட்பொதியப்பட்ட preedit உரை" -#: ../ui/gtk/candidatepanel.py:264 -msgid "Previous page" -msgstr "முந்தைய பக்கம்" +#: ../setup/setup.ui.h:31 +msgid "Embed the preedit text of input method in the application window" +msgstr "பயன்பாட்டு சாளரத்தில் preedit உரையின் உள்ளீடு முறையை உட்பொதியவும்" -#: ../ui/gtk/candidatepanel.py:269 -msgid "Next page" -msgstr "அடுத்த பக்கம்" +#: ../setup/setup.ui.h:32 +msgid "Use custom font:" +msgstr "தனிப்பயன் எழுத்துருவை பயன்படுத்து:" -#: ../ui/gtk/main.py:55 -msgid "" -"Some input methods have been installed, removed or updated. Please restart " -"ibus input platform." +#: ../setup/setup.ui.h:33 +msgid "Font and Style" +msgstr "எழுத்துரு மற்றும் தோற்றம்" + +#: ../setup/setup.ui.h:34 +msgid "General" +msgstr "பொது" + +#. add button +#: ../setup/setup.ui.h:35 ../setup/enginedialog.py:61 +#: ../setup/keyboardshortcut.py:124 +msgid "_Add" +msgstr "சேர் (_A)" + +#: ../setup/setup.ui.h:36 +msgid "Add the selected input method into the enabled input methods" msgstr "" -"சில உள்ளீடு முறைகள் நிறுவப்பட்டுள்ளது, நீக்கப்பட்டுள்ளது அல்லது " -"மேம்படுத்தப்பட்டுள்ளது. ibus உள்ளீட்டை மறுதுவக்கவும்." +"செயல்படுத்தப்பட்ட உள்ளீடு முறைகளில் தேர்ந்தெடுக்கப்பட்ட உள்ளீடு முறையை சேர்" -#: ../ui/gtk/main.py:59 -msgid "Restart Now" -msgstr "இப்போது மறுதுவக்கு" +#: ../setup/setup.ui.h:37 +msgid "_Remove" +msgstr "நீக்கு (_R)" -#: ../ui/gtk/main.py:60 -msgid "Later" -msgstr "பின்னர்" +#: ../setup/setup.ui.h:38 +msgid "Remove the selected input method from the enabled input methods" +msgstr "" +"செயல்படுத்தப்பட்ட உள்ளீடு முறைகளிலிருந்து தேர்ந்தெடுக்கப்பட்ட உள்ளீடு முறையை " +"நீக்கு" -#: ../ui/gtk/panel.py:109 -msgid "IBus input method framework" -msgstr "IBus உள்ளீடு முறை ஃபிரேம்வொர்க்" +#: ../setup/setup.ui.h:39 +msgid "_Up" +msgstr "மேலே (_U)" -#: ../ui/gtk/panel.py:327 -msgid "Restart" -msgstr "மறுதுவக்கம்" +#: ../setup/setup.ui.h:40 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "" +"செயல்படுத்தப்பட்ட உள்ளீடு முறைகள் பட்டியலில் தேர்ந்தெடுக்கப்பட்ட உள்ளீடு " +"முறையை மேலே நகர்த்து" + +#: ../setup/setup.ui.h:41 +msgid "_Down" +msgstr "கீழே (_D)" -#: ../ui/gtk/panel.py:414 -msgid "Turn off input method" -msgstr "உள்ளீடு முறையை நிறுத்து" +#: ../setup/setup.ui.h:42 +msgid "Move down the selected input method in the enabled input methods" +msgstr "" +"செயல்படுத்தப்பட்ட உள்ளீடு முறைகளில் தேர்ந்தெடுக்கப்பட்ட உள்ளீடு முறையை கீழே " +"நகர்த்து" -#: ../ui/gtk/panel.py:453 -msgid "No input window" -msgstr "உள்ளீடு சாளரம் இல்லை" +#: ../setup/setup.ui.h:43 +msgid "_About" +msgstr "பற்றி (_A)" -#: ../ui/gtk/panel.py:484 -msgid "IBus is an intelligent input bus for Linux/Unix." -msgstr "IBus Linux/Unixக்கான உள்ளிடு பஸ்." +#: ../setup/setup.ui.h:44 +msgid "Show information of the selected input method" +msgstr "தேர்ந்தெடுக்கப்பட்ட உள்ளீடு முறையின் தகவலை காட்டு" -#: ../ui/gtk/panel.py:488 -msgid "translator-credits" -msgstr "I. Felix " +#: ../setup/setup.ui.h:45 +msgid "_Preferences" +msgstr "முன்னுரிமைகள் (_P)" -#: ../ui/gtk/languagebar.py:106 -msgid "About the input method" -msgstr "உள்ளீடு முறை பற்றி" +#: ../setup/setup.ui.h:46 +msgid "Show setup of the selected input method" +msgstr "தேர்ந்தெடுத்த உள்ளிட்டு முறையின் அமைப்பை காட்டு" -#: ../ui/gtk/languagebar.py:214 -msgid "Switch input method" -msgstr "உள்ளீடு முறையை மாற்று" +#: ../setup/setup.ui.h:47 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" +"மேலே உள்ள பட்டியலில் விசைப்பலகைக் குறுக்குவழி விசைகளை அழுத்துவதன் " +"மூலம் அல்லது பலகம் சின்னத்தை சொடுக்குவதன் மூலம், செயலில் உள்ள உள்ளீட்டு " +"முறையை தேர்ந்தெடுத்துள்ள ஒன்றிலிருந்து வேறொன்றுக்கு மாற்ற முடியும்." -#: ../ui/gtk/languagebar.py:357 ../ui/gtk/engineabout.py:33 -#: ../setup/engineabout.py:33 ../setup/setup.ui.h:16 -msgid "About" -msgstr "பற்றி" +#. create im name & icon column +#: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:68 +msgid "Input Method" +msgstr "உள்ளீடு முறை" -#: ../ui/gtk/languagebar.py:361 -msgid "About the Input Method" -msgstr "உள்ளீடு முறை பற்றி" +#: ../setup/setup.ui.h:49 +msgid "The shortcut keys for showing emoji dialog" +msgstr "" -#: ../ui/gtk/engineabout.py:61 ../setup/engineabout.py:61 -#, python-format -msgid "Language: %s\n" -msgstr "மொழி: %s\n" +#: ../setup/setup.ui.h:50 +msgid "Emoji choice:" +msgstr "" -#: ../ui/gtk/engineabout.py:63 ../setup/engineabout.py:63 -#, python-format -msgid "Keyboard layout: %s\n" -msgstr "விசைப்பலகை அமைப்பு: %s\n" +#: ../setup/setup.ui.h:51 +msgid "Set a font of emoji candidates on the emoji dialog" +msgstr "" -#: ../ui/gtk/engineabout.py:65 ../setup/engineabout.py:65 -#, python-format -msgid "Author: %s\n" -msgstr "ஆசிரியர்: %s\n" +#: ../setup/setup.ui.h:52 +msgid "Emoji font:" +msgstr "" -#: ../ui/gtk/engineabout.py:67 ../setup/engineabout.py:67 -msgid "Description:\n" -msgstr "விளக்கம்:\n" +#: ../setup/setup.ui.h:53 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "" + +#: ../setup/setup.ui.h:54 +msgid "Emoji annotation language:" +msgstr "" + +#: ../setup/setup.ui.h:55 +msgid "" +"Match emoji annotations partially with the following condition and more than " +"the number of characters:" +msgstr "" + +#: ../setup/setup.ui.h:56 +msgid "" +"If emoji annotations can be matched with a partial string instead of the " +"exact match" +msgstr "" -#: ../setup/main.py:102 -msgid "trigger" -msgstr "ட்ரிகர்" +#: ../setup/setup.ui.h:57 +msgid "Prefix match" +msgstr "" + +#: ../setup/setup.ui.h:58 +msgid "Suffix match" +msgstr "" + +#: ../setup/setup.ui.h:59 +msgid "Containing match" +msgstr "" + +#: ../setup/setup.ui.h:60 +msgid "Emoji" +msgstr "" + +#: ../setup/setup.ui.h:61 ../data/ibus.schemas.in.h:44 +msgid "Use system keyboard layout" +msgstr "கணினி விசைப்பலகை அமைப்பை பயன்படுத்து" -#: ../setup/main.py:113 -msgid "enable" -msgstr "செயல்படுத்து" +#: ../setup/setup.ui.h:62 ../data/ibus.schemas.in.h:45 +msgid "Use system keyboard (XKB) layout" +msgstr "கணினி விசைப்பலகை (XKB) அமைப்பை பயன்படுத்து" -#: ../setup/main.py:124 -msgid "disable" -msgstr "செயல்நீக்கு" +#: ../setup/setup.ui.h:63 +msgid "Keyboard Layout" +msgstr "விசைப்பலகை அமைப்பு" -#: ../setup/main.py:135 -msgid "next input method" -msgstr "அடுத்த உள்ளீடு முறை" +#: ../setup/setup.ui.h:64 ../data/ibus.schemas.in.h:68 +msgid "Share the same input method among all applications" +msgstr "அனைத்து பயன்பாடுகளிலும் சில உள்ளீடு முறையை பகிரவும்" -#: ../setup/main.py:146 -msgid "previous input method" -msgstr "முந்தைய உள்ளீடு முறை" +#: ../setup/setup.ui.h:65 +msgid "Global input method settings" +msgstr "ஒரு உள்ளீடு முறையை தேர்ந்தெடு" -#: ../setup/main.py:286 -msgid "IBus daemon is not started. Do you want to start it now?" -msgstr "IBus daemon துவக்கப்படவில்லை. இப்போது துவக்க வேண்டுமா?" +#: ../setup/setup.ui.h:66 +msgid "Advanced" +msgstr "கூடுதல்" -#: ../setup/main.py:301 +#: ../setup/setup.ui.h:67 msgid "" -"IBus has been started! If you can not use IBus, please add below lines in $HOME/.bashrc, and relogin your desktop.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" msgstr "" -"IBus துவக்கப்பட்டது! உங்களால் IBusஐ பயன்படுத்த முடியவில்லையெனில், பின்வரும் வரியை சேர்த்து $HOME/.bashrc, உங்கள் பணிமேடையை மறுதுவக்கவும்.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +"IBus\n" +"The intelligent input bus\n" +"முதன்மை பக்கம்: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" -#: ../setup/main.py:316 -#, python-format -msgid "Select keyboard shortcut for %s" -msgstr "%sக்கான விசைப்பலகை குறுக்குவழியை தேர்ந்தெடு" +#: ../setup/setup.ui.h:74 +msgid "Start ibus on login" +msgstr "புகுபதிவில் ibusஐ துவக்கு" -#: ../setup/keyboardshortcut.py:52 -msgid "Keyboard shortcuts" -msgstr "விசைப்பலகை குறுக்குவழிகள்" +#: ../setup/setup.ui.h:75 +msgid "Startup" +msgstr "துவக்கம்" -#: ../setup/keyboardshortcut.py:63 -msgid "Key code:" -msgstr "விசை குறியீடு:" +#: ../setup/setup.ui.h:76 ../setup/engineabout.py:37 ../ui/gtk3/panel.vala:1175 +msgid "About" +msgstr "பற்றி" -#: ../setup/keyboardshortcut.py:78 -msgid "Modifiers:" -msgstr "மாற்றிகள்;" +#: ../setup/setup.ui.h:77 ../setup/engineabout.py:40 +msgid "_Close" +msgstr "மூடு (_C)" + +#. Translators: Here “Preload” is a verb +#: ../data/ibus.schemas.in.h:2 +msgid "Preload engines" +msgstr "முன்ஏற்றல் இயந்திரங்கள்" + +#. Translators: Tooltip for the button “Preload Engines” +#: ../data/ibus.schemas.in.h:4 +msgid "Preload engines during ibus starts up" +msgstr "ibus துவங்கும் போது முன்னேற்றப்பட்ட எந்திரங்கள் " + +#: ../data/ibus.schemas.in.h:5 +msgid "Engines order" +msgstr "எஞ்சின்கள் வரிசை" + +#: ../data/ibus.schemas.in.h:6 +msgid "Saved engines order in input method list" +msgstr "உள்ளீடு முறை பட்டியலில் எஞ்சின்கள் வரிசை சேமிக்கப்பட்டது" -#: ../setup/keyboardshortcut.py:231 +#: ../data/ibus.schemas.in.h:7 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "IME மாற்ற சாளரத்திற்கான பாப்-அப் தாமத மில்லிசெகன்ட்" + +#: ../data/ibus.schemas.in.h:8 msgid "" -"Please press a key (or a key combination).\n" -"The dialog will be closed when the key is released." +"Set popup delay milliseconds to show IME switcher window. The default is 400." +" 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " +"show the window and switch prev/next engines." msgstr "" -"ஒரு விசையை அழுத்தவும் (அல்லது விசை கலவையை).\n" -"விசையை விடுத்தால் உரையாடல் மூடப்படும்." +"IME மாற்ற சாளரத்தைக் காண்பிக்க, பாப்-அப் தாமத மில்லிசெகன்டை அமைக்கவும். " +"முன்னிருப்பு மதிப்பு400 ஆகும். 0 = உடனடியாக சாளரத்தைக் காண்பிக்க. 0 < " +"தாமத மில்லிசெகன்ட். 0 > சாளரத்தைக் காண்பிக்காமல் முந்தைய/அடுத்த " +"எஞ்சின்களுக்கு மாற்ற." -#: ../setup/keyboardshortcut.py:233 -msgid "Please press a key (or a key combination)" -msgstr "ஒரு விசையை அழுத்தவும் (அல்லது ஒரு விசை கலவையை)" +#: ../data/ibus.schemas.in.h:9 +msgid "Saved version number" +msgstr "சேமிக்கப்பட்ட பதிப்பு எண்" -#: ../setup/enginecombobox.py:120 -msgid "Select an input method" -msgstr "ஒரு உள்ளீடு முறையை தேர்ந்தெடு" +#: ../data/ibus.schemas.in.h:10 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" +"சேமிக்கப்பட்ட பதிப்பு எண்ணானது முன்னர் நிறுவப்பட்ட ibus மற்றும் தற்போதுள்ள " +"ibus இல் ஒன்று ஆகியவற்றுக்கு இடையே உள்ள வேறுபாட்டைக் கண்டறியப் பயன்படும்." -#. create im name & icon column -#: ../setup/enginetreeview.py:64 ../setup/setup.ui.h:33 -msgid "Input Method" -msgstr "உள்ளீடு முறை" +#: ../data/ibus.schemas.in.h:11 +msgid "Latin layouts which have no ASCII" +msgstr "ASCII கொண்டில்லாத இலத்தீன் லேயவுட்டுகள்" + +#: ../data/ibus.schemas.in.h:12 +msgid "US layout is appended to the Latin layouts. variant can be omitted." +msgstr "" +"அமெரிக்க லேயவுட் இலத்தீன் லேயவுட்டுகளுடன் இணைக்கப்படுகிறது. இதன் மாற்று " +"வகையை புறக்கணிக்கலாம்." + +#: ../data/ibus.schemas.in.h:13 +msgid "Use xmodmap" +msgstr "xmodmap ஐப் பயன்படுத்து" + +#: ../data/ibus.schemas.in.h:14 +msgid "" +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." +msgstr "" +"ibus எஞ்சின்கள் மாற்றப்படும் போது .xmodmap அல்லது .Xmodmap வெளியேறினால் " +"xmodmap ஐ இயக்கு." + +#: ../data/ibus.schemas.in.h:15 +msgid "Trigger shortcut keys" +msgstr "குறுக்குவிசைகளை செயல்படுத்து" + +#: ../data/ibus.schemas.in.h:17 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "gtk_accelerator_parse க்கான குறுக்கு விசைகளை இயக்கு" + +#: ../data/ibus.schemas.in.h:18 +msgid "Enable shortcut keys" +msgstr "குறுக்குவிசைக்களை செயல்படுத்து" + +#: ../data/ibus.schemas.in.h:19 +msgid "The shortcut keys for turning input method on" +msgstr "உள்ளீடு முறையை இயக்கும் குறுக்குவிசைகள்" + +#: ../data/ibus.schemas.in.h:20 +msgid "Disable shortcut keys" +msgstr "குறுக்குவிசைகளை செயல்நீக்கு" + +#: ../data/ibus.schemas.in.h:21 +msgid "The shortcut keys for turning input method off" +msgstr "உள்ளீடு முறையை நிறுத்தும் குறுக்குவிசைகள்" + +#: ../data/ibus.schemas.in.h:22 +msgid "Next engine shortcut keys" +msgstr "அடுத்த இயந்திர குறுக்குவிசை" + +#: ../data/ibus.schemas.in.h:23 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "பட்டியலில் அடுத்த உள்ளீடு முறைக்கு மாற்றுவதற்கான குறுக்குவழி விசைகள்" + +#: ../data/ibus.schemas.in.h:24 +msgid "Prev engine shortcut keys" +msgstr "முந்தைய இயந்திர குறுக்குவிசைகள்" + +#: ../data/ibus.schemas.in.h:25 +msgid "The shortcut keys for switching to the previous input method" +msgstr "முந்தைய உள்ளீடு முறைக்கு மாற்றுவதற்கான குறுக்குவழி விசைகள்" + +#: ../data/ibus.schemas.in.h:26 +msgid "Auto hide" +msgstr "தானாக மறை" + +#: ../data/ibus.schemas.in.h:27 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "" +"பண்புகள் பலகத்தின் நடத்தை. 0 = காண்பிக்க வேண்டாம், 1 = தானாக மறை, 2 = " +"எப்போதும் காண்பி" + +#: ../data/ibus.schemas.in.h:28 +msgid "Language panel position" +msgstr "மொழி பேனல் இடம்" + +#: ../data/ibus.schemas.in.h:29 +msgid "" +"The position of the language panel. 0 = Top left corner, 1 = Top right " +"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +msgstr "" +"மொழி பேனலின் இடம். 0 = மேல் இடது ஓரம், 1 = மேல் வலது ஓரம், 2 = கீழ் இடது " +"ஓரம், 3 = கீழ் வலது ஓரம், 4 = தனிபயன்" + +#: ../data/ibus.schemas.in.h:30 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "" +"பலகம் எப்போதும் காண்பிக்கப்பட்டால் உள்ளீட்டுச் சுட்டியைப் பின் தொடரவும்" + +#: ../data/ibus.schemas.in.h:31 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" +"ஆம் என அமைக்கப்பட்டால், பலகம் எப்போதும் காண்பிக்கப்பட்டால் உள்ளீட்டுச் " +"சுட்டியைப் பின் தொடரும். இல்லை என்று அமைக்கப்பட்டால் பலகம் ஒரு குறிப்பிட்ட " +"இடத்திலேயே இருக்கும்." + +#: ../data/ibus.schemas.in.h:32 +msgid "The milliseconds to show property panel" +msgstr "பண்புகள் பலகத்தை காட்ட வேண்டிய மில்லிசெக்கன்ட்" + +#: ../data/ibus.schemas.in.h:33 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" +"பண்புகள் பலகத்தில் கவனம் செலுத்திய பிறகு அல்லது பண்புகளை மாற்றிய பிறகு " +"பலகத்தைக் காட்ட வேண்டிய மில்லிசெக்கன்ட்." + +#: ../data/ibus.schemas.in.h:34 +msgid "Orientation of lookup table" +msgstr "காணும் அட்டவணையின் திசை" + +#: ../data/ibus.schemas.in.h:35 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "காணும் அட்டவணையின் திசை. 0 = கிடைமட்டம், 1 = செங்குத்து" + +#: ../data/ibus.schemas.in.h:37 +msgid "Show input method name" +msgstr "உள்ளீடு முறையின் பெயரை காட்டு" + +#: ../data/ibus.schemas.in.h:39 +msgid "RGBA value of XKB icon" +msgstr "XKB சின்னத்தின் RGBA மதிப்பு" + +#: ../data/ibus.schemas.in.h:41 +#, no-c-format +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " +"'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " +"to 255 or percentage values in the range 0% to 100%, and 'a' is a floating " +"point value in the range 0 to 1 of the alpha." +msgstr "" +"XKB சின்னம் லேயவுட் சரத்தைக் காண்பிக்கிறது, அந்தச் சரமானது RGBA மதிப்புட்ன " +"காட்சியாக்கப்படுகிறது. RGBA மதிப்பு 1. X11 இலிருந்து ஒரு நிறத்தின் பெயராகவோ, " +"2. '#rrggbb' என்ற வடிவத்தில் ஹெக்ஸ் மதிப்பாகவோ (இங்கு 'r', 'g' மற்றும் 'b' " +"ஆகியவை சிவப்பு, பச்சை மற்றும் நீலத்தின் ஹெக்ஸ் மதிபுகள்), 3. 'rgb(r,g,b)' " +"என்ற வடிவத்தில் ஒரு நிறத்தின் RGB நிறமாகவோ அல்லது 4. 'rgba(r,g,b,a)' என்ற " +"வடிவத்தில் (இங்கு 'r', 'g' மற்றும் 'b' ஆகியவை 0 முதல் 255 க்கு இடைப்பட்ட " +"வரம்பிலான முழு எண்கள் அல்லது 0% முதல் 100% க்கு இடைப்பட்ட வரம்பிலான " +"சதவீதங்களாகும், 'a' என்பது 0 முதல் 1 ஆல்ஃபா வரையிலான வரம்பிலமைந்த " +"ஃப்ளோட்டிங் பாயின்ட் எண்ணாகும்) ஒரு RGBA நிறமாகவோ இருக்கலாம்." + +#: ../data/ibus.schemas.in.h:42 +msgid "The milliseconds to show the panel icon for a property" +msgstr "" + +#: ../data/ibus.schemas.in.h:43 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" + +#: ../data/ibus.schemas.in.h:46 +msgid "Use custom font" +msgstr "தனிப்பயன் எழுத்துருவை பயன்படுத்து" + +#: ../data/ibus.schemas.in.h:47 +msgid "Use custom font name for language panel" +msgstr "மொழி பலகத்தில் தனிபயன் எழுத்துரு பெயர்" + +#: ../data/ibus.schemas.in.h:48 +msgid "Custom font" +msgstr "தனிப்பயன் எழுத்துரு" + +#: ../data/ibus.schemas.in.h:49 +msgid "Custom font name for language panel" +msgstr "மொழி பலகத்துக்கான தனிப்பயன் எழுத்துரு பெயர்" + +#: ../data/ibus.schemas.in.h:50 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "" + +#: ../data/ibus.schemas.in.h:51 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "" + +#: ../data/ibus.schemas.in.h:52 +msgid "Custom font name for emoji characters on emoji dialog" +msgstr "" + +#: ../data/ibus.schemas.in.h:53 +msgid "Default language for emoji dictionary" +msgstr "" + +#: ../data/ibus.schemas.in.h:54 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" +msgstr "" + +#: ../data/ibus.schemas.in.h:55 +msgid "favorite emoji list on emoji dialog" +msgstr "" + +#: ../data/ibus.schemas.in.h:56 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "" + +#: ../data/ibus.schemas.in.h:57 +msgid "favorite emoji annotation list on emoji dialog" +msgstr "" + +#: ../data/ibus.schemas.in.h:58 +msgid "You can assign an annotation for a favorite emoji in this list." +msgstr "" + +#: ../data/ibus.schemas.in.h:59 +msgid "Whether emoji annotations can be match partially or not" +msgstr "" + +#: ../data/ibus.schemas.in.h:60 +msgid "" +"Whether emoji annotations can be matched with a partial string instead of " +"the exact match or not." +msgstr "" + +#: ../data/ibus.schemas.in.h:61 +msgid "Match emoji annotations with the specified length" +msgstr "" + +#: ../data/ibus.schemas.in.h:62 +msgid "" +"Match emoji annotations partially with more than the specified number of " +"characters instead of the exact match." +msgstr "" + +#: ../data/ibus.schemas.in.h:63 +msgid "Choose a condition to match emoji annotations partially" +msgstr "" + +#: ../data/ibus.schemas.in.h:64 +msgid "" +"Choose one of the following conditions to match emoji annotations partially: " +"0 == Prefix match, 1 == Suffix match, 2 == Containing match" +msgstr "" + +#: ../data/ibus.schemas.in.h:65 +msgid "Embed Preedit Text" +msgstr "உட்பொதியப்பட்ட Preedit உரை" + +#: ../data/ibus.schemas.in.h:66 +msgid "Embed Preedit Text in Application Window" +msgstr "பயன்பாடு சாளரத்தில் உட்பொதியப்பட்ட Preedit உரை" + +#: ../data/ibus.schemas.in.h:67 +msgid "Use global input method" +msgstr "பொது உள்ளீடு முறையை பயன்படுத்து" + +#: ../data/ibus.schemas.in.h:69 +msgid "Enable input method by default" +msgstr "முன்னிருப்பாக உள்ளீடு முறையை செயல்படுத்து" + +#: ../data/ibus.schemas.in.h:70 +msgid "Enable input method by default when the application gets input focus" +msgstr "" +"பயன்பாடு உள்ளீடுக்கு உட்படும்போது முன்னிருப்பாக உள்ளீடு முறையை செயல்படுத்து" + +#: ../data/ibus.schemas.in.h:71 +msgid "DConf preserve name prefixes" +msgstr "DConf ஆனது பெயர் முன்னொட்டுகளைப் பாதுகாத்து வைக்கிறது" + +#: ../data/ibus.schemas.in.h:72 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "பெயர் மரபை நிறுத்த DConf விசைகளின் முன்னொட்டுகள்" + +#: ../ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "" +"பதிப்புரிமை (c) 2007-2010 Peng Huang\n" +"பதிப்புரிமை (c) 2007-2010 Red Hat, Inc." + +#: ../ibus/lang.py:41 ../src/ibusutil.c:158 +msgid "Other" +msgstr "வேறு" + +#: ../setup/emojilang.py:67 +msgid "Select a language" +msgstr "" + +#: ../setup/emojilang.py:70 ../setup/enginedialog.py:60 +#: ../setup/keyboardshortcut.py:339 ../setup/main.py:552 +msgid "_Cancel" +msgstr "ரத்து (_C)" + +#: ../setup/emojilang.py:71 ../setup/keyboardshortcut.py:340 +#: ../setup/main.py:553 +msgid "_OK" +msgstr "சரி (_O)" + +#: ../setup/emojilang.py:235 ../setup/enginedialog.py:205 +msgid "More…" +msgstr "மேலும்…" + +#: ../setup/engineabout.py:72 +#, python-format +msgid "Language: %s\n" +msgstr "மொழி: %s\n" + +#: ../setup/engineabout.py:75 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "விசைப்பலகை அமைப்பு: %s\n" + +#: ../setup/engineabout.py:78 +#, python-format +msgid "Author: %s\n" +msgstr "ஆசிரியர்: %s\n" + +#: ../setup/engineabout.py:81 +msgid "Description:\n" +msgstr "விளக்கம்:\n" + +#: ../setup/enginecombobox.py:139 ../setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "ஒரு உள்ளீடு முறையை தேர்ந்தெடு" + +#: ../setup/enginetreeview.py:96 +msgid "Kbd" +msgstr "Kbd" + +#: ../setup/ibus-setup.desktop.in.h:2 +msgid "Set IBus Preferences" +msgstr "IBus முன்னுரிமைகளை அமை" + +#: ../setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "விசைப்பலகை குறுக்குவழிகள்" + +#: ../setup/keyboardshortcut.py:67 +msgid "Key code:" +msgstr "விசை குறியீடு:" + +#: ../setup/keyboardshortcut.py:82 +msgid "Modifiers:" +msgstr "மாற்றிகள்;" + +#. apply button +#: ../setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "செயல்படுத்து (_A)" + +#. delete button +#: ../setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "அழி (_D)" + +#: ../setup/keyboardshortcut.py:252 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "" +"ஒரு விசையை அழுத்தவும் (அல்லது விசை கலவையை).\n" +"விசையை விடுத்தால் உரையாடல் மூடப்படும்." + +#: ../setup/keyboardshortcut.py:255 +msgid "Please press a key (or a key combination)" +msgstr "ஒரு விசையை அழுத்தவும் (அல்லது ஒரு விசை கலவையை)" + +#: ../setup/main.py:121 ../setup/main.py:580 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "" +"முந்தைய உள்ளீட்டு முறைக்கு மாற குறுக்குவழியை ஷிஃப்ட் விசையுடன் " +"பயன்படுத்தவும்" + +#: ../setup/main.py:507 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "IBus டெமான் இயங்கவில்லை. அதைத் தொடங்க வேண்டுமா?" + +#: ../setup/main.py:528 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "" +"IBus தொடங்கப்பட்டது! உங்களால் IBus ஐப் பயன்படுத்த முடியாவிட்டால், உங்கள் " +"$HOME/.bashrc; இல் பின்வரும் வரிகளைச் சேர்த்து உங்கள் டெஸ்க்டாப்பில் " +"மீண்டும் புகுபதிவு செய்யவும்.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" + +#. Translators: %d == 5 currently +#: ../setup/main.py:542 +#, python-format +msgid "IBus daemon could not be started in %d seconds." +msgstr "%d வினாடிகளில் IBus டெமானைத் தொடக்க முடியவில்லை." + +#: ../setup/main.py:554 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "%sக்கான விசைப்பலகை குறுக்குவழியை தேர்ந்தெடு" + +#. Translators: Title of the window +#: ../setup/main.py:556 +msgid "switching input methods" +msgstr "உள்ளீட்டு முறைகளை மாற்றுதல்" + +#: ../src/ibusemojigen.h:30 +msgid "Activities" +msgstr "" + +#: ../src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "" + +#: ../src/ibusemojigen.h:32 +msgid "Flags" +msgstr "" + +#: ../src/ibusemojigen.h:33 +msgid "Food & Drink" +msgstr "" + +#: ../src/ibusemojigen.h:34 +msgid "Objects" +msgstr "" + +#: ../src/ibusemojigen.h:35 +msgid "Smileys & People" +msgstr "" + +#: ../src/ibusemojigen.h:36 +msgid "Symbols" +msgstr "" + +#: ../src/ibusemojigen.h:37 +msgid "Travel & Places" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:33 +msgid "Basic Latin" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:37 +msgid "Latin-1 Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:41 +msgid "Latin Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:45 +msgid "Latin Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:49 +msgid "IPA Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:53 +msgid "Spacing Modifier Letters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:57 +msgid "Combining Diacritical Marks" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:61 +msgid "Greek and Coptic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:65 +msgid "Cyrillic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:69 +msgid "Cyrillic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:73 +msgid "Armenian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:77 +msgid "Hebrew" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:81 +msgid "Arabic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:85 +msgid "Syriac" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:89 +msgid "Arabic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:93 +msgid "Thaana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:97 +msgid "NKo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:101 +msgid "Samaritan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:105 +msgid "Mandaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:109 +msgid "Syriac Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:113 +msgid "Arabic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:117 +msgid "Devanagari" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:121 +msgid "Bengali" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:125 +msgid "Gurmukhi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:129 +msgid "Gujarati" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:133 +msgid "Oriya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:137 +msgid "Tamil" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:141 +msgid "Telugu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:145 +msgid "Kannada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:149 +msgid "Malayalam" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:153 +msgid "Sinhala" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:157 +msgid "Thai" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:161 +msgid "Lao" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:165 +msgid "Tibetan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:169 +msgid "Myanmar" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:173 +msgid "Georgian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:177 +msgid "Hangul Jamo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:181 +msgid "Ethiopic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:185 +msgid "Ethiopic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:189 +msgid "Cherokee" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:193 +msgid "Unified Canadian Aboriginal Syllabics" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:197 +msgid "Ogham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:201 +msgid "Runic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:205 +msgid "Tagalog" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:209 +msgid "Hanunoo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:213 +msgid "Buhid" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:217 +msgid "Tagbanwa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:221 +msgid "Khmer" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:225 +msgid "Mongolian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:229 +msgid "Unified Canadian Aboriginal Syllabics Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:233 +msgid "Limbu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:237 +msgid "Tai Le" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:241 +msgid "New Tai Lue" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:245 +msgid "Khmer Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:249 +msgid "Buginese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:253 +msgid "Tai Tham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:257 +msgid "Combining Diacritical Marks Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:261 +msgid "Balinese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:265 +msgid "Sundanese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:269 +msgid "Batak" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:273 +msgid "Lepcha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:277 +msgid "Ol Chiki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:281 +msgid "Cyrillic Extended-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:285 +msgid "Sundanese Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:289 +msgid "Vedic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:293 +msgid "Phonetic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:297 +msgid "Phonetic Extensions Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:301 +msgid "Combining Diacritical Marks Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:305 +msgid "Latin Extended Additional" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:309 +msgid "Greek Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:313 +msgid "General Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:317 +msgid "Superscripts and Subscripts" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:321 +msgid "Currency Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:325 +msgid "Combining Diacritical Marks for Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:329 +msgid "Letterlike Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:333 +msgid "Number Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:337 +msgid "Arrows" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:341 +msgid "Mathematical Operators" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:345 +msgid "Miscellaneous Technical" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:349 +msgid "Control Pictures" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:353 +msgid "Optical Character Recognition" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:357 +msgid "Enclosed Alphanumerics" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:361 +msgid "Box Drawing" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:365 +msgid "Block Elements" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:369 +msgid "Geometric Shapes" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:373 +msgid "Miscellaneous Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:377 +msgid "Dingbats" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:381 +msgid "Miscellaneous Mathematical Symbols-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:385 +msgid "Supplemental Arrows-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:389 +msgid "Braille Patterns" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:393 +msgid "Supplemental Arrows-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:397 +msgid "Miscellaneous Mathematical Symbols-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:401 +msgid "Supplemental Mathematical Operators" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:405 +msgid "Miscellaneous Symbols and Arrows" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:409 +msgid "Glagolitic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:413 +msgid "Latin Extended-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:417 +msgid "Coptic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:421 +msgid "Georgian Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:425 +msgid "Tifinagh" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:429 +msgid "Ethiopic Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:433 +msgid "Cyrillic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:437 +msgid "Supplemental Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:441 +msgid "CJK Radicals Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:445 +msgid "Kangxi Radicals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:449 +msgid "Ideographic Description Characters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:453 +msgid "CJK Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:457 +msgid "Hiragana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:461 +msgid "Katakana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:465 +msgid "Bopomofo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:469 +msgid "Hangul Compatibility Jamo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:473 +msgid "Kanbun" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:477 +msgid "Bopomofo Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:481 +msgid "CJK Strokes" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:485 +msgid "Katakana Phonetic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:489 +msgid "Enclosed CJK Letters and Months" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:493 +msgid "CJK Compatibility" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:497 +msgid "CJK Unified Ideographs Extension A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:501 +msgid "Yijing Hexagram Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:505 +msgid "CJK Unified Ideographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:509 +msgid "Yi Syllables" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:513 +msgid "Yi Radicals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:517 +msgid "Lisu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:521 +msgid "Vai" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:525 +msgid "Cyrillic Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:529 +msgid "Bamum" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:533 +msgid "Modifier Tone Letters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:537 +msgid "Latin Extended-D" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:541 +msgid "Syloti Nagri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:545 +msgid "Common Indic Number Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:549 +msgid "Phags-pa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:553 +msgid "Saurashtra" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:557 +msgid "Devanagari Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:561 +msgid "Kayah Li" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:565 +msgid "Rejang" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:569 +msgid "Hangul Jamo Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:573 +msgid "Javanese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:577 +msgid "Myanmar Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:581 +msgid "Cham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:585 +msgid "Myanmar Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:589 +msgid "Tai Viet" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:593 +msgid "Meetei Mayek Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:597 +msgid "Ethiopic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:601 +msgid "Latin Extended-E" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:605 +msgid "Cherokee Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:609 +msgid "Meetei Mayek" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:613 +msgid "Hangul Syllables" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:617 +msgid "Hangul Jamo Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:621 +msgid "High Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:625 +msgid "High Private Use Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:629 +msgid "Low Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:633 +msgid "Private Use Area" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:637 +msgid "CJK Compatibility Ideographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:641 +msgid "Alphabetic Presentation Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:645 +msgid "Arabic Presentation Forms-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:649 +msgid "Variation Selectors" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:653 +msgid "Vertical Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:657 +msgid "Combining Half Marks" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:661 +msgid "CJK Compatibility Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:665 +msgid "Small Form Variants" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:669 +msgid "Arabic Presentation Forms-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:673 +msgid "Halfwidth and Fullwidth Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:677 +msgid "Specials" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:681 +msgid "Linear B Syllabary" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:685 +msgid "Linear B Ideograms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:689 +msgid "Aegean Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:693 +msgid "Ancient Greek Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:697 +msgid "Ancient Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:701 +msgid "Phaistos Disc" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:705 +msgid "Lycian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:709 +msgid "Carian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:713 +msgid "Coptic Epact Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:717 +msgid "Old Italic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:721 +msgid "Gothic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:725 +msgid "Old Permic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:729 +msgid "Ugaritic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:733 +msgid "Old Persian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:737 +msgid "Deseret" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:741 +msgid "Shavian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:745 +msgid "Osmanya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:749 +msgid "Osage" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:753 +msgid "Elbasan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:757 +msgid "Caucasian Albanian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:761 +msgid "Linear A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:765 +msgid "Cypriot Syllabary" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:769 +msgid "Imperial Aramaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:773 +msgid "Palmyrene" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:777 +msgid "Nabataean" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:781 +msgid "Hatran" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:785 +msgid "Phoenician" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:789 +msgid "Lydian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:793 +msgid "Meroitic Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:797 +msgid "Meroitic Cursive" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:801 +msgid "Kharoshthi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:805 +msgid "Old South Arabian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:809 +msgid "Old North Arabian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:813 +msgid "Manichaean" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:817 +msgid "Avestan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:821 +msgid "Inscriptional Parthian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:825 +msgid "Inscriptional Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:829 +msgid "Psalter Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:833 +msgid "Old Turkic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:837 +msgid "Old Hungarian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:841 +msgid "Rumi Numeral Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:845 +msgid "Brahmi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:849 +msgid "Kaithi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:853 +msgid "Sora Sompeng" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:857 +msgid "Chakma" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:861 +msgid "Mahajani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:865 +msgid "Sharada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:869 +msgid "Sinhala Archaic Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:873 +msgid "Khojki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:877 +msgid "Multani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:881 +msgid "Khudawadi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:885 +msgid "Grantha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:889 +msgid "Newa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:893 +msgid "Tirhuta" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:897 +msgid "Siddham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:901 +msgid "Modi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:905 +msgid "Mongolian Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:909 +msgid "Takri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:913 +msgid "Ahom" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:917 +msgid "Warang Citi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:921 +msgid "Zanabazar Square" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:925 +msgid "Soyombo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:929 +msgid "Pau Cin Hau" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:933 +msgid "Bhaiksuki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:937 +msgid "Marchen" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:941 +msgid "Masaram Gondi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:945 +msgid "Cuneiform" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:949 +msgid "Cuneiform Numbers and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:953 +msgid "Early Dynastic Cuneiform" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:957 +msgid "Egyptian Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:961 +msgid "Anatolian Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:965 +msgid "Bamum Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:969 +msgid "Mro" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:973 +msgid "Bassa Vah" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:977 +msgid "Pahawh Hmong" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:981 +msgid "Miao" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:985 +msgid "Ideographic Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:989 +msgid "Tangut" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:993 +msgid "Tangut Components" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:997 +msgid "Kana Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1001 +msgid "Kana Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1005 +msgid "Nushu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1009 +msgid "Duployan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1013 +msgid "Shorthand Format Controls" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1017 +msgid "Byzantine Musical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1021 +msgid "Musical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1025 +msgid "Ancient Greek Musical Notation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1029 +msgid "Tai Xuan Jing Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1033 +msgid "Counting Rod Numerals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1037 +msgid "Mathematical Alphanumeric Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1041 +msgid "Sutton SignWriting" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1045 +msgid "Glagolitic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1049 +msgid "Mende Kikakui" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1053 +msgid "Adlam" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1057 +msgid "Arabic Mathematical Alphabetic Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1061 +msgid "Mahjong Tiles" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1065 +msgid "Domino Tiles" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1069 +msgid "Playing Cards" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1073 +msgid "Enclosed Alphanumeric Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1077 +msgid "Enclosed Ideographic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1081 +msgid "Miscellaneous Symbols and Pictographs" +msgstr "" -#: ../setup/enginetreeview.py:92 -msgid "Kbd" -msgstr "Kbd" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1085 +msgid "Emoticons" +msgstr "" -#: ../setup/ibus-setup.desktop.in.h:1 ../setup/setup.ui.h:32 -msgid "IBus Preferences" -msgstr "IBus முன்னுரிமைகள்" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1089 +msgid "Ornamental Dingbats" +msgstr "" -#: ../setup/ibus-setup.desktop.in.h:2 -msgid "Set IBus Preferences" -msgstr "IBus முன்னுரிமைகளை அமை" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1093 +msgid "Transport and Map Symbols" +msgstr "" -#: ../data/ibus.schemas.in.h:1 -msgid "Auto hide" -msgstr "தானாக மறை" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1097 +msgid "Alchemical Symbols" +msgstr "" -#: ../data/ibus.schemas.in.h:2 -msgid "Custom font" -msgstr "தனிபயன் எழுத்துரு" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1101 +msgid "Geometric Shapes Extended" +msgstr "" -#: ../data/ibus.schemas.in.h:3 -msgid "Custom font name for language panel" -msgstr "தனிபயன் எழுத்துரு பெயர் மொழி பலகத்துக்கு" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1105 +msgid "Supplemental Arrows-C" +msgstr "" -#: ../data/ibus.schemas.in.h:4 -msgid "Disable shortcut keys" -msgstr "குறுக்குவிசைகளை செயல்நீக்கு" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1109 +msgid "Supplemental Symbols and Pictographs" +msgstr "" -#: ../data/ibus.schemas.in.h:5 -msgid "Embed Preedit Text" -msgstr "உட்பொதியப்பட்ட Preedit உரை" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1113 +msgid "CJK Unified Ideographs Extension B" +msgstr "" -#: ../data/ibus.schemas.in.h:6 -msgid "Embed Preedit Text in Application Window" -msgstr "பயன்பாடு சாளரத்தில் உட்பொதியப்பட்ட Preedit உரை" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1117 +msgid "CJK Unified Ideographs Extension C" +msgstr "" -#: ../data/ibus.schemas.in.h:7 -msgid "Enable input method by default" -msgstr "முன்னிருப்பாக உள்ளீடு முறையை செயல்படுத்து" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1121 +msgid "CJK Unified Ideographs Extension D" +msgstr "" -#: ../data/ibus.schemas.in.h:8 -msgid "Enable input method by default when the application gets input focus" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1125 +msgid "CJK Unified Ideographs Extension E" msgstr "" -"பயன்பாடு உள்ளீடுக்கு உட்படும்போது முன்னிருப்பாக உள்ளீடு முறையை செயல்படுத்து" -#: ../data/ibus.schemas.in.h:9 -msgid "Enable shortcut keys" -msgstr "குறுக்குவிசைக்களை செயல்படுத்து" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1129 +msgid "CJK Unified Ideographs Extension F" +msgstr "" -#: ../data/ibus.schemas.in.h:10 -msgid "Language panel position" -msgstr "மொழி பேனல் இடம்" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1133 +msgid "CJK Compatibility Ideographs Supplement" +msgstr "" -#: ../data/ibus.schemas.in.h:11 -msgid "Next engine shortcut keys" -msgstr "அடுத்த இயந்திர குறுக்குவிசை" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1137 +msgid "Tags" +msgstr "" -#: ../data/ibus.schemas.in.h:12 -msgid "Orientation of lookup table" -msgstr "காணும் அட்டவணையின் திசை" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1141 +msgid "Variation Selectors Supplement" +msgstr "" -#: ../data/ibus.schemas.in.h:13 -msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" -msgstr "காணும் அட்டவணையின் திசை. 0 = கிடைமட்டம், 1 = செங்குத்து" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1145 +msgid "Supplementary Private Use Area-A" +msgstr "" -#: ../data/ibus.schemas.in.h:14 -msgid "Preload engines" -msgstr "முன்ஏற்றப்பட்ட இயந்திரங்கள்" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1149 +msgid "Supplementary Private Use Area-B" +msgstr "" -#: ../data/ibus.schemas.in.h:15 -msgid "Preload engines during ibus starts up" -msgstr "ibus துவங்கும் போது முன்னேற்றப்பட்ட எந்திரங்கள் " +#: ../tools/main.vala:54 +msgid "List engine name only" +msgstr "எஞ்சின் பெயரை மட்டும் பட்டியலிடு" -#: ../data/ibus.schemas.in.h:16 -msgid "Prev engine shortcut keys" -msgstr "முந்தைய இயந்திர குறுக்குவிசைகள்" +#: ../tools/main.vala:70 ../tools/main.vala:195 ../tools/main.vala:205 +msgid "Can't connect to IBus.\n" +msgstr "IBus உடன் இணைக்க முடியாது.\n" -#: ../data/ibus.schemas.in.h:17 ../setup/setup.ui.h:42 -msgid "Share the same input method among all applications" -msgstr "அனைத்து பயன்பாடுகளிலும் சில உள்ளீடு முறையை பகிரவும்" +#: ../tools/main.vala:96 +#, c-format +msgid "language: %s\n" +msgstr "மொழி: %s\n" -#: ../data/ibus.schemas.in.h:18 ../setup/setup.ui.h:43 -msgid "Show icon on system tray" -msgstr "கணினி தட்டில் சின்னத்தை காட்டு" +#: ../tools/main.vala:164 +msgid "No engine is set.\n" +msgstr "எஞ்சின் அமைக்கப்படவில்லை.\n" -#: ../data/ibus.schemas.in.h:19 -msgid "Show input method name" -msgstr "உள்ளீடு முறையின் பெயரை காட்டு" +#: ../tools/main.vala:172 +msgid "Set global engine failed.\n" +msgstr "முழுமைக்குமான எஞ்சினை அமைத்தல் தோல்வி.\n" -#: ../data/ibus.schemas.in.h:20 ../setup/setup.ui.h:45 -msgid "Show input method name on language bar" -msgstr "மொழி பட்டையில் உள்ளீடு முறையின் பெயரை காட்டு" +#: ../tools/main.vala:177 +msgid "Get global engine failed.\n" +msgstr "முழுமைக்குமான எஞ்சினை பெறுதல் தோல்வி.\n" -#: ../data/ibus.schemas.in.h:21 -msgid "" -"The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = " -"Always show" -msgstr "" -"மொழி பலகத்தின் பண்புகள். 0 = மெனுவில் உட்பொதியப்பட்டது, 1 = தானாக மறை, 2 = " -"எப்போதும் காட்டு" +#: ../tools/main.vala:220 +msgid "Read the system registry cache." +msgstr "கணினி பதிவக தேக்ககத்தை வாசி." -#: ../data/ibus.schemas.in.h:22 -msgid "" -"The position of the language panel. 0 = Top left corner, 1 = Top right " -"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" -msgstr "" -"மொழி பேனலின் இடம். 0 = மேல் இடது ஓரம், 1 = மேல் வலது ஓரம், 2 = கீழ் இடது " -"ஓரம், 3 = கீழ் வலது ஓரம், 4 = தனிபயன்" +#: ../tools/main.vala:222 +msgid "Read the registry cache FILE." +msgstr "பதிவக தேக்கக FILE ஐ வாசி." -#: ../data/ibus.schemas.in.h:23 -msgid "The shortcut keys for switching to the next input method in the list" -msgstr "பட்டியலில் அடுத்த உள்ளீடு முறைக்கு மாற்றுவதற்கான குறுக்குவழி விசைகள்" +#: ../tools/main.vala:240 ../tools/main.vala:245 +msgid "The registry cache is invalid.\n" +msgstr "பதிவக தேக்ககம் செல்லுபடியாகாதது.\n" -#: ../data/ibus.schemas.in.h:24 -msgid "The shortcut keys for switching to the previous input method" -msgstr "முந்தைய உள்ளீடு முறைக்கு மாற்றுவதற்கான குறுக்குவழி விசைகள்" +#: ../tools/main.vala:260 +msgid "Write the system registry cache." +msgstr "கணினி பதிவக தேக்ககத்தில் எழுது." -#: ../data/ibus.schemas.in.h:25 -msgid "The shortcut keys for turning input method off" -msgstr "உள்ளீடு முறையை நிறுத்தும் குறுக்குவிசைகள்" +#: ../tools/main.vala:262 +msgid "Write the registry cache FILE." +msgstr "பதிவக தேக்கக FILE இல் எழுது." -#: ../data/ibus.schemas.in.h:26 -msgid "The shortcut keys for turning input method on" -msgstr "உள்ளீடு முறையை இயக்கும் குறுக்குவிசைகள்" +#: ../tools/main.vala:314 +msgid "Resetting…" +msgstr "மீட்டமைக்கிறது…" -#: ../data/ibus.schemas.in.h:27 ../setup/setup.ui.h:51 -msgid "The shortcut keys for turning input method on or off" -msgstr "உள்ளீடு முறைமை துவக்க அல்லது நிறுத்த குறுக்குவிசைகளை அமை" +#: ../tools/main.vala:328 +msgid "Done" +msgstr "முடிந்தது" -#: ../data/ibus.schemas.in.h:28 -msgid "Trigger shortcut keys" -msgstr "ட்ரிகர் குறுக்குவிசை" +#: ../tools/main.vala:373 +msgid "Set or get engine" +msgstr "எஞ்சினை அமை அல்லது பெறு" -#: ../data/ibus.schemas.in.h:29 -msgid "Use custom font" -msgstr "தனிபயன் எழுத்துருவை பயன்படுத்து" +#: ../tools/main.vala:374 +msgid "Exit ibus-daemon" +msgstr "ibus-daemon இலிருந்து வெளியேறு" -#: ../data/ibus.schemas.in.h:30 -msgid "Use custom font name for language panel" -msgstr "மொழி பலகத்தில் தனிபயன் எழுத்துரு பெயர்" +#: ../tools/main.vala:375 +msgid "Show available engines" +msgstr "இருக்கும் எஞ்சின்களைக் காட்டு" -#: ../data/ibus.schemas.in.h:31 -msgid "Use global input method" -msgstr "பொது உள்ளீடு முறையை பயன்படுத்து" +#: ../tools/main.vala:376 +msgid "(Not implemented)" +msgstr "(செயல்படுத்தப்படவில்லை)" -#: ../data/ibus.schemas.in.h:32 ../setup/setup.ui.h:55 -msgid "Use system keyboard (XKB) layout" -msgstr "கணினி விசைப்பலகை (XKB) அமைப்பை பயன்படுத்து" +#: ../tools/main.vala:377 +msgid "Restart ibus-daemon" +msgstr "ibus-daemon ஐ மறுதுவக்கு" -#: ../data/ibus.schemas.in.h:33 ../setup/setup.ui.h:56 -msgid "Use system keyboard layout" -msgstr "கணினி விசைப்பலகை அமைப்பை பயன்படுத்து" +#: ../tools/main.vala:378 +msgid "Show version" +msgstr "பதிப்பைக் காட்டு" -#: ../setup/setup.ui.h:1 -msgid "..." -msgstr "..." +#: ../tools/main.vala:379 +msgid "Show the content of registry cache" +msgstr "பதிவக தேக்கக உள்ளடக்கத்தைக் காண்பி" -#: ../setup/setup.ui.h:2 -msgid "Font and Style" -msgstr "எழுத்துரு மற்றும் தோற்றம்" +#: ../tools/main.vala:380 +msgid "Create registry cache" +msgstr "பதிவக தேக்ககத்தை உருவாக்கு" -#: ../setup/setup.ui.h:3 -msgid "Global input method settings" -msgstr "ஒரு உள்ளீடு முறையை தேர்ந்தெடு" +#: ../tools/main.vala:381 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "ibus-daemon இன் D-Bus முகவரியை அச்சிடு" -#: ../setup/setup.ui.h:4 -msgid "Keyboard Layout" -msgstr "விசைப்பலகை அமைப்பு" +#: ../tools/main.vala:382 +msgid "Show the configuration values" +msgstr "அமைவாக்க மதிப்புகளைக் காண்பி" -#: ../setup/setup.ui.h:5 -msgid "Keyboard Shortcuts" -msgstr "விசைப்பலகை குறுக்குவழிகள்" +#: ../tools/main.vala:383 +msgid "Reset the configuration values" +msgstr "அமைவாக்க மதிப்புகளை மீட்டமை" -#: ../setup/setup.ui.h:6 -msgid "Startup" -msgstr "துவக்கம்" +#: ../tools/main.vala:385 +msgid "Save emoji on dialog to clipboard " +msgstr "" -#: ../setup/setup.ui.h:7 -msgid "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" +#: ../tools/main.vala:387 +msgid "Show this information" +msgstr "இந்தத் தகவலைக் காட்டு" + +#: ../tools/main.vala:393 +#, c-format +msgid "Usage: %s COMMAND [OPTION...]\n" "\n" +msgstr "பயன்பாடு: %s COMMAND [OPTION...]\n" "\n" + +#: ../tools/main.vala:394 +msgid "Commands:\n" +msgstr "கட்டளைகள் :\n" + +#: ../tools/main.vala:423 +#, c-format +msgid "%s is unknown command!\n" +msgstr "%s என்பது தெரியாத கட்டளை!\n" + +#: ../ui/gtk3/emojier.vala:245 +msgid "Show emoji variants" msgstr "" -"IBus\n" -"The intelligent input bus\n" -"முதன்மை பக்கம்: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" -#: ../setup/setup.ui.h:14 -msgid "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." +#: ../ui/gtk3/emojier.vala:250 +msgid "Menu" msgstr "" -"பட்டியலில் முன்னிருப்பு உள்ளீடு முறை மேலே இருக்கும்.\n" -"மேல்/கீழ் பொத்தானை பயன்படுத்தி அதனை மாற்றவும்." -#: ../setup/setup.ui.h:17 -msgid "Add the selected input method into the enabled input methods" +#: ../ui/gtk3/emojier.vala:273 +msgid "Favorites" msgstr "" -"செயல்படுத்தப்பட்ட உள்ளீடு முறைகளில் தேர்ந்தெடுக்கப்பட்ட உள்ளீடு முறையை சேர்" -#: ../setup/setup.ui.h:18 -msgid "Advanced" -msgstr "கூடுதல்" +#: ../ui/gtk3/emojier.vala:274 +msgid "Others" +msgstr "" -#: ../setup/setup.ui.h:19 -msgid "Always" -msgstr "எப்போதும்" +#: ../ui/gtk3/emojier.vala:275 +msgid "Open Unicode choice" +msgstr "" -#: ../setup/setup.ui.h:20 -msgid "Bottom left corner" -msgstr "கீழ் இடது ஓரம்" +#: ../ui/gtk3/emojier.vala:445 ../ui/gtk3/emojier.vala:826 +#: ../ui/gtk3/panel.vala:1149 +msgid "Emoji Choice" +msgstr "" -#: ../setup/setup.ui.h:21 -msgid "Bottom right corner" -msgstr "கீழ் வலது ஓரம்" +#: ../ui/gtk3/emojier.vala:451 +msgid "Type annotation or choose emoji" +msgstr "" -#: ../setup/setup.ui.h:22 -msgid "Candidates orientation:" -msgstr "கேண்டிடேட் சார்ந்து:" +#: ../ui/gtk3/emojier.vala:948 +msgid "Unicode Choice" +msgstr "" -#: ../setup/setup.ui.h:23 -msgid "Custom" -msgstr "தனிபயன்" +#: ../ui/gtk3/emojier.vala:950 +msgid "Bring back emoji choice" +msgstr "" -#: ../setup/setup.ui.h:24 -msgid "Disable:" -msgstr "செயல்நீக்கு:" +#: ../ui/gtk3/emojier.vala:1016 +msgid "Loading a Unicode dictionary:" +msgstr "" -#: ../setup/setup.ui.h:25 -msgid "Embed preedit text in application window" -msgstr "பயன்பாடு சாளரத்தில் உட்பொதியப்பட்ட preedit உரை" +#: ../ui/gtk3/emojier.vala:1071 +msgid "Page Down" +msgstr "" -#: ../setup/setup.ui.h:26 -msgid "Embed the preedit text of input method in the application window" -msgstr "பயன்பாட்டு சாளரத்தில் preedit உரையின் உள்ளீடு முறையை உட்பொதியவும்" +#: ../ui/gtk3/emojier.vala:1082 +msgid "Page Up" +msgstr "" -#: ../setup/setup.ui.h:27 -msgid "Embedded in menu" -msgstr "மெனுவில் உட்பொதியப்பட்டது" +#: ../ui/gtk3/emojier.vala:1236 +#, c-format +msgid "Code point: %s" +msgstr "" -#: ../setup/setup.ui.h:28 -msgid "Enable or disable:" -msgstr "செயல்படுத்து அல்லது செயல்நீக்கு:" +#: ../ui/gtk3/emojier.vala:1242 +msgid "Has emoji variants" +msgstr "" -#: ../setup/setup.ui.h:29 -msgid "Enable:" -msgstr "செயல்படுத்து:" +#: ../ui/gtk3/emojier.vala:1377 ../ui/gtk3/emojier.vala:1391 +#, c-format +msgid "Description: %s" +msgstr "" -#: ../setup/setup.ui.h:30 -msgid "General" -msgstr "பொது" +#: ../ui/gtk3/emojier.vala:1377 +msgid "None" +msgstr "" -#: ../setup/setup.ui.h:31 -msgid "Horizontal" -msgstr "கிடைமட்டம்" +#: ../ui/gtk3/emojier.vala:1402 +#, c-format +msgid "Annotations: %s" +msgstr "" -#: ../setup/setup.ui.h:34 -msgid "Language panel position:" -msgstr "மொழி பேனல் படம்:" +#: ../ui/gtk3/emojier.vala:1428 +#, c-format +msgid "Name: %s" +msgstr "" -#: ../setup/setup.ui.h:35 -msgid "Move down the selected input method in the enabled input methods" +#: ../ui/gtk3/emojier.vala:1436 +#, c-format +msgid "Alias: %s" msgstr "" -"செயல்படுத்தப்பட்ட உள்ளீடு முறைகளில் தேர்ந்தெடுக்கப்பட்ட உள்ளீடு முறையை கீழே " -"நகர்த்து" -#: ../setup/setup.ui.h:36 -msgid "Move up the selected input method in the enabled input methods list" +#: ../ui/gtk3/emojierapp.vala:56 +msgid "Canceled to choose an emoji." msgstr "" -"செயல்படுத்தப்பட்ட உள்ளீடு முறைகள் பட்டியலில் தேர்ந்தெடுக்கப்பட்ட உள்ளீடு " -"முறையை மேலே நகர்த்து" -#: ../setup/setup.ui.h:37 -msgid "Next input method:" -msgstr "அடுத்த உள்ளீடு முறை:" +#: ../ui/gtk3/emojierapp.vala:77 +msgid "Copied an emoji to your clipboard." +msgstr "" -#: ../setup/setup.ui.h:38 -msgid "Previous input method:" -msgstr "முந்தைய உள்ளீடு முறை:" +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ../ui/gtk3/emojierapp.vala:97 +msgid "\"FONT\" for emoji characters on emoji dialog" +msgstr "" -#: ../setup/setup.ui.h:39 -msgid "Remove the selected input method from the enabled input methods" +#: ../ui/gtk3/emojierapp.vala:98 +msgid "FONT" msgstr "" -"செயல்படுத்தப்பட்ட உள்ளீடு முறைகளிலிருந்து தேர்ந்தெடுக்கப்பட்ட உள்ளீடு முறையை" -" நீக்கு" -#: ../setup/setup.ui.h:40 -msgid "Set the behavior of ibus how to show or hide language bar" -msgstr "மொழி பட்டையை எவ்வாறு காட்ட அல்லது மறைக்க வேண்டும் என ibus பண்பினை அமை" +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ../ui/gtk3/emojierapp.vala:103 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" +msgstr "" -#: ../setup/setup.ui.h:41 -msgid "Set the orientation of candidates in lookup table" -msgstr "காணும் அட்டவணையில் நபர்களின் திசையமைப்பை அமை" +#: ../ui/gtk3/emojierapp.vala:104 +msgid "LANG" +msgstr "" -#: ../setup/setup.ui.h:44 -msgid "Show information of the selected input method" -msgstr "தேர்ந்தெடுக்கப்பட்ட உள்ளீடு முறையின் தகவலை காட்டு" +#: ../ui/gtk3/emojierapp.vala:106 +msgid "Emoji annotations can be match partially" +msgstr "" -#: ../setup/setup.ui.h:46 -msgid "Show input method's name on language bar when check the checkbox" +#: ../ui/gtk3/emojierapp.vala:110 +msgid "Match with the length of the specified integer" msgstr "" -"சோதனை பெட்டியை சோதிக்கும் போது உள்ளீடு முறை பெயரை மொழி பட்டையில் காட்டு " -#: ../setup/setup.ui.h:47 -msgid "Show language panel:" -msgstr "மொழி பலகத்தை காட்டு:" +#: ../ui/gtk3/emojierapp.vala:114 +msgid "Match with the condition of the specified integer" +msgstr "" -#: ../setup/setup.ui.h:48 -msgid "Start ibus on login" -msgstr "புகுபதிவில் ibusஐ துவக்கு" +#: ../ui/gtk3/panel.vala:282 ../ui/gtk3/panel.vala:313 +msgid "IBus Panel" +msgstr "" -#: ../setup/setup.ui.h:49 -msgid "The shortcut keys for switching to next input method in the list" -msgstr "பட்டியலில் அடுத்த உள்ளீடு முறையை மாற்றுவதற்கான குறுக்குவழி விசைகள்" +#: ../ui/gtk3/panel.vala:710 +msgid "IBus Update" +msgstr "IBus புதுப்பிப்பு" -#: ../setup/setup.ui.h:50 -msgid "The shortcut keys for switching to previous input method in the list" -msgstr "பட்டியலில் முந்தைய உள்ளீடு முறையை மாற்றுவதற்கான குறுக்குவழி விசைகள்" +#: ../ui/gtk3/panel.vala:711 ../ui/gtk3/panel.vala:722 +msgid "Super+space is now the default hotkey." +msgstr "இப்போது Super+space என்பது முன்னிருப்பு குறுக்குவிசையாகும்." -#: ../setup/setup.ui.h:52 -msgid "Top left corner" -msgstr "மேல் இடது ஓரம்" +#: ../ui/gtk3/panel.vala:1121 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus Linux/Unixக்கான உள்ளீடு பஸ்." -#: ../setup/setup.ui.h:53 -msgid "Top right corner" -msgstr "மேல் வலது ஓரம்" +#: ../ui/gtk3/panel.vala:1125 +msgid "translator-credits" +msgstr "I. Felix " -#: ../setup/setup.ui.h:54 -msgid "Use custom font:" -msgstr "தனிபயன் எழுத்துருவை பயன்படுத்து:" +#: ../ui/gtk3/panel.vala:1144 +msgid "Preferences" +msgstr "முன்னுரிமைகள் " -#: ../setup/setup.ui.h:57 -msgid "Vertical" -msgstr "செங்குத்து" +#: ../ui/gtk3/panel.vala:1181 +msgid "Restart" +msgstr "மறுதுவக்கம்" -#: ../setup/setup.ui.h:58 -msgid "When active" -msgstr "செயலிலிருக்கும் போது" +#: ../ui/gtk3/panel.vala:1185 +msgid "Quit" +msgstr "வெளியேறு " + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ../ui/gtk3/propertypanel.vala:368 ../ui/gtk3/propertypanel.vala:376 +msgid "default:LTR" +msgstr "default:LTR" diff --git a/po/te.po b/po/te.po index 6dc78a7b0..93973b82a 100644 --- a/po/te.po +++ b/po/te.po @@ -1,555 +1,3065 @@ -# translation of ibus.pot to Telugu # Telugu translation of ibus. -# Copyright (C) 2008 Peng Huang +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2018 Takao Fujiwara # This file is distributed under the same license as the ibus package. -# +# # Translators: -# Krishna Babu K , 2009. -# ప్రవీణ్ యిళ్ళ , 2011. +# Krishnababu Krothapalli , 2009 +# Krishnababu Krothapalli , 2009 +# Krishnababu Krothapalli , 2012-2013 +# Krishnababu Krothapalli , 2014 +# ప్రవీణ్ ఇళ్ళ , 2011,2014 +# ప్రవీణ్ ఇళ్ళ , 2011 +# fujiwara , 2015. #zanata +# fujiwara , 2018. #zanata msgid "" msgstr "" "Project-Id-Version: IBus\n" -"Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/list\n" -"POT-Creation-Date: 2011-05-13 11:21+0900\n" -"PO-Revision-Date: 2011-10-27 17:27+0000\n" -"Last-Translator: Praveen_Illa \n" -"Language-Team: Telugu (http://www.transifex.net/projects/p/fedora/team/te/)\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2018-02-20 17:31+0900\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2018-02-20 04:23-0500\n" +"Last-Translator: Copied by Zanata \n" +"Language-Team: Telugu \n" "Language: te\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: KBabel 1.11.4\n" +"X-Generator: Zanata 3.9.6\n" -#: ../bus/ibus.desktop.in.h:1 -msgid "IBus" -msgstr "IBus" +#: ../setup/setup.ui.h:1 +msgid "Horizontal" +msgstr "అడ్డము" + +#: ../setup/setup.ui.h:2 +msgid "Vertical" +msgstr "నిలువు" + +#: ../setup/setup.ui.h:3 +msgid "Top left corner" +msgstr "పై ఎడమ మూల" + +#: ../setup/setup.ui.h:4 +msgid "Top right corner" +msgstr "పై కుడి మూల" + +#: ../setup/setup.ui.h:5 +msgid "Bottom left corner" +msgstr "క్రింది ఎడమ మూల" + +#: ../setup/setup.ui.h:6 +msgid "Bottom right corner" +msgstr "క్రింది కుడి మూల" + +#: ../setup/setup.ui.h:7 +msgid "Custom" +msgstr "అనురూపితం" + +#: ../setup/setup.ui.h:8 +msgid "Do not show" +msgstr "చూపించవద్దు" + +#: ../setup/setup.ui.h:9 +msgid "Hide automatically" +msgstr "స్వయంచాలకంగా దాయి" + +#: ../setup/setup.ui.h:10 +msgid "Always" +msgstr "ఎల్లప్పుడు" + +#: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 +msgid "IBus Preferences" +msgstr "ఐబస్ ప్రాధాన్యతలు" + +#: ../setup/setup.ui.h:12 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "జాబితాలో ఉన్న తరువాతి ఇన్‌పుట్ పద్ధతినకు మారుటకు అడ్డదారి మీటలు" + +#: ../setup/setup.ui.h:13 +msgid "Next input method:" +msgstr "తరువాతి ఇన్‌పుట్ పద్ధతి:" + +#: ../setup/setup.ui.h:14 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "జాబితానందలి ముందరి ఇన్‌పుట్ పద్ధతినకు మారుటకు అడ్డదారి మీటలు" + +#: ../setup/setup.ui.h:15 +msgid "Previous input method:" +msgstr "మునుపటి ఇన్‌పుట్ పద్ధతి:" + +#: ../setup/setup.ui.h:16 +msgid "..." +msgstr "..." + +#: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:16 +msgid "The shortcut keys for turning input method on or off" +msgstr "ఇన్‌పుట్ పద్ధతిని చేతనించుటకు లేదా అచేతనించుటకు అడ్డదారి మీటలు" + +#: ../setup/setup.ui.h:18 +msgid "Enable or disable:" +msgstr "చేతనించు లేదా అచేతనించు:" + +#: ../setup/setup.ui.h:19 +msgid "Enable:" +msgstr "చేతనించు:" + +#: ../setup/setup.ui.h:20 +msgid "Disable:" +msgstr "అచేతనపరుచు:" + +#: ../setup/setup.ui.h:21 +msgid "Keyboard Shortcuts" +msgstr "కీబోర్డు అడ్డదార్లు" + +#: ../setup/setup.ui.h:22 +msgid "Set the orientation of candidates in lookup table" +msgstr "లుకప్ పట్టికనందు కాండిడేట్ల సర్దుబాటును అమర్చండి" + +#: ../setup/setup.ui.h:23 +msgid "Candidates orientation:" +msgstr "సభ్యుల దృక్పథం:" + +#: ../setup/setup.ui.h:24 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "" +"భాషా పట్టీని ఎలా చూపాలి మరియు దాయాలి అనేదానికి ఐబస్ ప్రవర్తనను అమర్చండి" + +#: ../setup/setup.ui.h:25 +msgid "Show property panel:" +msgstr "ప్రాపర్టీ ప్యానలును చూపించు:" + +#: ../setup/setup.ui.h:26 +msgid "Language panel position:" +msgstr "భాషా ప్యానల్ స్థానం:" + +#: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:36 +msgid "Show icon on system tray" +msgstr "వ్యవస్థ పళ్లెము పై ప్రతీకను చూపించు" + +#: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:38 +msgid "Show input method name on language bar" +msgstr "భాషా పట్టీపై ఇన్‌పుట్ పద్ధతి పేరును చూపించు" + +#: ../setup/setup.ui.h:29 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "" +"చెక్‌బాక్సు చెక్ చేసినప్పుడు భాషా పట్టీపై ఇన్‌పుట్ పద్ధతి పేరును చూపించు" + +#: ../setup/setup.ui.h:30 +msgid "Embed preedit text in application window" +msgstr "అనువర్తనము కిటికీ నందు ముందుగా సరికూర్చిన పాఠ్యాన్ని ఎంబెడెడ్ చేయి" + +#: ../setup/setup.ui.h:31 +msgid "Embed the preedit text of input method in the application window" +msgstr "" +"అనువర్తనము కిటికీ నందు ఇన్‌పుట్ పద్ధతి యొక్క ముందుగా సరికూర్చిన పాఠమును " +"ఎంబెడెడ్ చేయి" + +#: ../setup/setup.ui.h:32 +msgid "Use custom font:" +msgstr "అనురూపిత ఖతిని ఉపయోగించు:" + +#: ../setup/setup.ui.h:33 +msgid "Font and Style" +msgstr "ఖతి మరియు శైలి" -#: ../bus/ibus.desktop.in.h:2 -msgid "Input Method Framework" -msgstr "ఇన్‌పుట్ పద్ధతి ఫ్రేమ్‌వర్క్" +#: ../setup/setup.ui.h:34 +msgid "General" +msgstr "సాధారణం" + +#. add button +#: ../setup/setup.ui.h:35 ../setup/enginedialog.py:61 +#: ../setup/keyboardshortcut.py:124 +msgid "_Add" +msgstr "జతచేయి (_A)" + +#: ../setup/setup.ui.h:36 +msgid "Add the selected input method into the enabled input methods" +msgstr "ఎంచుకున్న ఇన్‌పుట్ పద్ధతిని చేతనమైన ఇన్‌పుట్ పద్ధతులలోనికి జతచేయి" + +#: ../setup/setup.ui.h:37 +msgid "_Remove" +msgstr "తీసివేయి (_R)" + +#: ../setup/setup.ui.h:38 +msgid "Remove the selected input method from the enabled input methods" +msgstr "చేతనమైన ఇన్‌పుట్ పద్ధతుల నుంచి ఎంపికచేసిన ఇన్‌పుట్ పద్ధతిని తొలగించు" + +#: ../setup/setup.ui.h:39 +msgid "_Up" +msgstr "పైన (_U)" + +#: ../setup/setup.ui.h:40 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "" +"చేతనమైన ఇన్‌పుట్ పద్ధతుల జాబితాలో ఎంచుకున్న ఇన్‌పుట్ పద్ధతిని పైకి కదుపు" + +#: ../setup/setup.ui.h:41 +msgid "_Down" +msgstr "క్రింద (_D)" + +#: ../setup/setup.ui.h:42 +msgid "Move down the selected input method in the enabled input methods" +msgstr "చేతనమైన ఇన్‌పుట్ పద్ధతులలో ఎంచుకున్న ఇన్‌పుట్ పద్ధతిని క్రిందకి కదుపు" + +#: ../setup/setup.ui.h:43 +msgid "_About" +msgstr "గురించి (_A)" + +#: ../setup/setup.ui.h:44 +msgid "Show information of the selected input method" +msgstr "ఎంచుకున్న ఇన్‌పుట్ పద్ధతి యొక్క సమాచారాన్ని చూపించు" + +#: ../setup/setup.ui.h:45 +msgid "_Preferences" +msgstr "ప్రాధాన్యతలు (_P)" -#: ../bus/ibus.desktop.in.h:3 -msgid "Start IBus Input Method Framework" -msgstr "IBus ఇన్‌పుట్ పద్ధతి ఫ్రేమ్‌వర్కును ప్రారంభించు" +#: ../setup/setup.ui.h:46 +msgid "Show setup of the selected input method" +msgstr "ఎంపికచేసిన ఇన్పుట్ పద్ధతి యొక్క అమర్పును చూపించు" -#: ../ibus/_config.py.in:40 +#: ../setup/setup.ui.h:47 msgid "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." msgstr "" -"నకలుహక్కు (c) 2007-2010 Peng Huang\n" -"నకలుహక్కు (c) 2007-2010 Red Hat, Inc." +"పై జాబితాలోని ఇన్పుట్ పద్దతిని కీబోర్డ్ షార్ట్‌కట్ కీలతో గాని లేదా " +"పానల్ ఐకాన్ నొక్కిగాని ఎంపికచేసి, ఏక్టివ్ ఇన్పుట్ పద్దతిని దానికి మార్చవచ్చు." +"" -#: ../ibus/lang.py:41 -msgid "Other" -msgstr "ఇతర" +#. create im name & icon column +#: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:68 +msgid "Input Method" +msgstr "ఇన్‌పుట్ పద్ధతి" + +#: ../setup/setup.ui.h:49 +msgid "The shortcut keys for showing emoji dialog" +msgstr "" + +#: ../setup/setup.ui.h:50 +msgid "Emoji choice:" +msgstr "" + +#: ../setup/setup.ui.h:51 +msgid "Set a font of emoji candidates on the emoji dialog" +msgstr "" + +#: ../setup/setup.ui.h:52 +msgid "Emoji font:" +msgstr "" -#: ../ui/gtk/candidatepanel.py:264 -msgid "Previous page" -msgstr "మునుపటి పేజి" +#: ../setup/setup.ui.h:53 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "" -#: ../ui/gtk/candidatepanel.py:269 -msgid "Next page" -msgstr "తరువాతి పేజి" +#: ../setup/setup.ui.h:54 +msgid "Emoji annotation language:" +msgstr "" -#: ../ui/gtk/main.py:62 +#: ../setup/setup.ui.h:55 msgid "" -"Some input methods have been installed, removed or updated. Please restart " -"ibus input platform." +"Match emoji annotations partially with the following condition and more than " +"the number of characters:" msgstr "" -"కొన్ని ఇన్‌పుట్ విధానములు సంస్థాపించబడెను, తీసివేయబడెను, లేదా నవీకరించబడెను." -" దయచేసి ibus ఇన్‌పుట్ ప్లాట్‌ఫాంను పునఃప్రారంభించుము." -#: ../ui/gtk/main.py:66 -msgid "Restart Now" -msgstr "ఇప్పుడు పునఃప్రారంభించుము" +#: ../setup/setup.ui.h:56 +msgid "" +"If emoji annotations can be matched with a partial string instead of the " +"exact match" +msgstr "" -#: ../ui/gtk/main.py:67 -msgid "Later" -msgstr "తరువాత" +#: ../setup/setup.ui.h:57 +msgid "Prefix match" +msgstr "" -#: ../ui/gtk/panel.py:116 -msgid "IBus Panel" -msgstr "IBus ప్యానల్" +#: ../setup/setup.ui.h:58 +msgid "Suffix match" +msgstr "" -#: ../ui/gtk/panel.py:122 -msgid "IBus input method framework" -msgstr "IBus ఇన్‌పుట్ పద్ధతి ఆకృతి" +#: ../setup/setup.ui.h:59 +msgid "Containing match" +msgstr "" -#: ../ui/gtk/panel.py:352 -msgid "Restart" -msgstr "పునఃప్రారంభించు" +#: ../setup/setup.ui.h:60 +msgid "Emoji" +msgstr "" -#: ../ui/gtk/panel.py:439 -msgid "Turn off input method" -msgstr "ఇన్‌పుట్ పద్ధతి ఆపు" +#: ../setup/setup.ui.h:61 ../data/ibus.schemas.in.h:44 +msgid "Use system keyboard layout" +msgstr "వ్యవస్థ కీబోర్డు నమూనా ఉపయోగించు" -#: ../ui/gtk/panel.py:478 -msgid "No input window" -msgstr "ఇన్‌పుట్ విండో లేదు" +#: ../setup/setup.ui.h:62 ../data/ibus.schemas.in.h:45 +msgid "Use system keyboard (XKB) layout" +msgstr "వ్యవస్థ కీబోర్డు (XKB) నమూనా ఉపయోగించు" -#: ../ui/gtk/panel.py:509 -msgid "IBus is an intelligent input bus for Linux/Unix." -msgstr "IBus అనునది Linux/Unix కొరకు తెలివైన ఇన్‌పుట్ బస్." +#: ../setup/setup.ui.h:63 +msgid "Keyboard Layout" +msgstr "కీబోర్డు నమూనా" -#: ../ui/gtk/panel.py:513 -msgid "translator-credits" +#: ../setup/setup.ui.h:64 ../data/ibus.schemas.in.h:68 +msgid "Share the same input method among all applications" +msgstr "అన్ని అనువర్తనాలలోనూ ఇన్పుట్ పద్దతిని పంచుకొను" + +#: ../setup/setup.ui.h:65 +msgid "Global input method settings" +msgstr "సార్వత్రిక ఇన్‌పుట్ పద్ధతి అమరికలు" + +#: ../setup/setup.ui.h:66 +msgid "Advanced" +msgstr "అధునాతనం" + +#: ../setup/setup.ui.h:67 +msgid "" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" msgstr "" -"కృష్ణబాబు కె 2009.\n" -"ప్రవీణ్ యిళ్ళ 2010-11." +"ఐబస్\n" +"తెలివైన ఇన్‌పుట్ బస్\n" +"నివాసపుట: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" -#: ../ui/gtk/languagebar.py:106 -msgid "About the input method" -msgstr "ఇన్‌పుట్ పద్ధతి గురించి" +#: ../setup/setup.ui.h:74 +msgid "Start ibus on login" +msgstr "ప్రవేశించేప్పుడు ఐబస్‌ను ప్రారంభించు" -#: ../ui/gtk/languagebar.py:214 -msgid "Switch input method" -msgstr "ఇన్‌పుట్ పద్ధతిని మార్చు" +#: ../setup/setup.ui.h:75 +msgid "Startup" +msgstr "ప్రారంభము" -#: ../ui/gtk/languagebar.py:357 ../ui/gtk/engineabout.py:33 -#: ../setup/engineabout.py:33 ../setup/setup.ui.h:16 +#: ../setup/setup.ui.h:76 ../setup/engineabout.py:37 ../ui/gtk3/panel.vala:1175 msgid "About" msgstr "గురించి" -#: ../ui/gtk/languagebar.py:361 -msgid "About the Input Method" -msgstr "ఇన్‌పుట్ పద్ధతి గురించి" +#: ../setup/setup.ui.h:77 ../setup/engineabout.py:40 +msgid "_Close" +msgstr "మూసివేయి (_C)" -#: ../ui/gtk/engineabout.py:61 ../setup/engineabout.py:61 -#, python-format -msgid "Language: %s\n" -msgstr "భాష: %s\n" +#. Translators: Here “Preload” is a verb +#: ../data/ibus.schemas.in.h:2 +msgid "Preload engines" +msgstr "ముందుగా లోడైన యంత్రాలు" -#: ../ui/gtk/engineabout.py:63 ../setup/engineabout.py:63 -#, python-format -msgid "Keyboard layout: %s\n" -msgstr "కీబోర్డు నమూనా: %s\n" +#. Translators: Tooltip for the button “Preload Engines” +#: ../data/ibus.schemas.in.h:4 +msgid "Preload engines during ibus starts up" +msgstr "ఐబస్ ప్రారంభము నందు యంత్రాలను ముందుగా లోడుచేయి" -#: ../ui/gtk/engineabout.py:65 ../setup/engineabout.py:65 -#, python-format -msgid "Author: %s\n" -msgstr "మూలకర్త: %s\n" +#: ../data/ibus.schemas.in.h:5 +msgid "Engines order" +msgstr "యంత్రాల క్రమం" -#: ../ui/gtk/engineabout.py:67 ../setup/engineabout.py:67 -msgid "Description:\n" -msgstr "వివరణ:\n" +#: ../data/ibus.schemas.in.h:6 +msgid "Saved engines order in input method list" +msgstr "ఇన్పుట్ పద్ధతి జాబితా నందు భద్రపరచిన యంత్రాల క్రమం" + +#: ../data/ibus.schemas.in.h:7 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "IME స్విచర్ విండో కొరకు పాపప్ ఆలస్యం మిల్లీసెకన్లలో" + +#: ../data/ibus.schemas.in.h:8 +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is 400." +" 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " +"show the window and switch prev/next engines." +msgstr "" +"IME స్విజర్ విండోను చూపుటకు పాపప్ ఆలస్యాన్ని మిల్లీసెకన్లలో అమర్చు. అప్రమేయం " +"400. 0 = విండోను తక్షణమే చూపును. 0 < ఆలస్యం మిల్లీసెకన్లలో. 0 > " +"విండోను చూపదు మరియు క్రితం/తరువాతి యింజన్లకు మారును." + +#: ../data/ibus.schemas.in.h:9 +msgid "Saved version number" +msgstr "భద్రపరచిన రూపాంతరం సంఖ్య" + +#: ../data/ibus.schemas.in.h:10 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" +"భద్రపరచిన రూపాంతరం సంఖ్య అనునది గతంలో స్థాపించిన ఐబస్ రూపాంతరానికి మరియు " +"ప్రస్తుత ఐబస్ రూపాంతరానికి మధ్యని తేడాను పరిశీలించుటకు ఉపయోగించును." + +#: ../data/ibus.schemas.in.h:11 +msgid "Latin layouts which have no ASCII" +msgstr "ASCII లేని లాటిన్ నమూనాలు" + +#: ../data/ibus.schemas.in.h:12 +msgid "US layout is appended to the Latin layouts. variant can be omitted." +msgstr "US నమూనా లాటిన్ నమూనాలకు కలుపబడెను. వేరియంట్‌ను విస్మరించవచ్చు." + +#: ../data/ibus.schemas.in.h:13 +msgid "Use xmodmap" +msgstr "xmodmap ఉపయోగించు" + +#: ../data/ibus.schemas.in.h:14 +msgid "" +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." +msgstr "" +"ibus ఇంజన్లు మార్చినప్పుడు .xmodmap లేదా .Xmodmap ఉంటే గనుక xmodmap నడుపుము." + +#: ../data/ibus.schemas.in.h:15 +msgid "Trigger shortcut keys" +msgstr "అడ్డదారి మీటలను నొక్కండి" + +#: ../data/ibus.schemas.in.h:17 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "gtk_accelerator_parse కొరకు ట్రిగ్గర్ అడ్డదారి మీటలు" + +#: ../data/ibus.schemas.in.h:18 +msgid "Enable shortcut keys" +msgstr "అడ్డదారి మీటలను చేతనించు" + +#: ../data/ibus.schemas.in.h:19 +msgid "The shortcut keys for turning input method on" +msgstr "ఇన్‌పుట్ పద్ధతి చేతనించుటకు అడ్డదారి మీటలు" + +#: ../data/ibus.schemas.in.h:20 +msgid "Disable shortcut keys" +msgstr "అడ్డదారి మీటలను అచేతనించు" -#: ../setup/main.py:102 -msgid "trigger" -msgstr "ట్రిగ్గర్" +#: ../data/ibus.schemas.in.h:21 +msgid "The shortcut keys for turning input method off" +msgstr "ఇన్‌పుట్ పద్ధతి అచేతనించుటకు అడ్డదారి మీటలు" + +#: ../data/ibus.schemas.in.h:22 +msgid "Next engine shortcut keys" +msgstr "తరువాతి యంత్రానికి అడ్డదార్లు" + +#: ../data/ibus.schemas.in.h:23 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "జాబితాలోని తరువాతి ఇన్పుట్ పద్ధతినకు మారుటకు అడ్డదారి మీటలు" + +#: ../data/ibus.schemas.in.h:24 +msgid "Prev engine shortcut keys" +msgstr "మునుపటి యంత్ర అడ్డదారి మీటలు" + +#: ../data/ibus.schemas.in.h:25 +msgid "The shortcut keys for switching to the previous input method" +msgstr "జాబితాలోని మునుపటి ఇన్‌పుట్ పద్ధతినకు మారుటకు అడ్డదారి మీటలు" + +#: ../data/ibus.schemas.in.h:26 +msgid "Auto hide" +msgstr "స్వయంగా దాగు" + +#: ../data/ibus.schemas.in.h:27 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "" +"ప్రోపర్టీ పానల్ యొక్క ప్రవర్తన. 0 = చూపవద్దు, 1 = స్వయంచాలకంగా దాచివేయి, 2 = " +"ఎల్లప్పుడూ చూపు" + +#: ../data/ibus.schemas.in.h:28 +msgid "Language panel position" +msgstr "భాషా ప్యానల్ స్థానం" + +#: ../data/ibus.schemas.in.h:29 +msgid "" +"The position of the language panel. 0 = Top left corner, 1 = Top right " +"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +msgstr "" +"భాషా ప్యానల్ యొక్క స్థానము. 0 = పై ఎడమ మూల, 1 = పై కుడి మూల, 2 = క్రింది ఎడమ " +"మూల, 3 = క్రింది కుడి మూల, 4 = అనురూపితం" + +#: ../data/ibus.schemas.in.h:30 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "పానల్ గనుక ఎల్లప్పుడూ చూపబడుతూంటే ఇన్పుప్ కర్సర్‌ను అనుసరించుము" + +#: ../data/ibus.schemas.in.h:31 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" +"true అయితే, పానల్ ఎల్లప్పుడూ చూపబడుతూన్న సందర్బంలో ఇన్పుప్ కర్సర్‌ను " +"అనుసరించును. false అయితే, పానల్ ఒక స్థిరమైన స్థానంలో చూపబడును." + +#: ../data/ibus.schemas.in.h:32 +msgid "The milliseconds to show property panel" +msgstr "ప్రోపర్టీ పానల్ చూపుటకు మిల్లీసెకన్లు" + +#: ../data/ibus.schemas.in.h:33 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" +"దృష్టిసారించిన తరువాత లేదా లక్షణాలు మార్చిన తరువాత ప్రోపర్టీ పానల్ చూపుటకు " +"మిల్లీసెకన్లు." + +#: ../data/ibus.schemas.in.h:34 +msgid "Orientation of lookup table" +msgstr "లుకప్ పట్టిక సర్దుబాటు" + +#: ../data/ibus.schemas.in.h:35 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "లుకప్ పట్టిక సర్దుబాటు. 0 = అడ్డము, 1 = నిలువు" + +#: ../data/ibus.schemas.in.h:37 +msgid "Show input method name" +msgstr "ఇన్‌పుట్ పద్ధతి పేరును చూపించు" + +#: ../data/ibus.schemas.in.h:39 +msgid "RGBA value of XKB icon" +msgstr "XKB ప్రతిమ యొక్క RGBA విలువ" + +#: ../data/ibus.schemas.in.h:41 +#, no-c-format +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " +"'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " +"to 255 or percentage values in the range 0% to 100%, and 'a' is a floating " +"point value in the range 0 to 1 of the alpha." +msgstr "" +"XKB ప్రతిమ అనేది నమూనా స్ట్రింగ్ చూపును మరియు ఆ స్ట్రింగ్ RGBA విలువతో " +"రెండర్ అగును. RGBA విలువ ఇలా ఉండగలదు 1. X11 నుండి ఒక రంగు, 2. '#rrggbb' " +"నుండి హెక్స్ విలువ ఇచట 'r', 'g' మరియు 'b' లు ఎరుపు, పచ్చ, మరియు నీలం యొక్క " +"హెక్స్ అంకెలు, 3. RGB రంగు 'rgb(r,g,b)' నుండి లేదా 4. RGBA రంగు " +"'rgba(r,g,b,a)' రూపంలో ఇచట 'r', 'g', మరియు 'b' లు 0 నుండి 255 వరకు " +"పూర్ణాంకాలు గాని లేదా 0% నుండి 100% విస్తృతిలో శాతపు విలువలు గాని అవుతాయి, " +"మరియు 'a' అనేది అల్ఫా యొక్క 0 నుండి 1 విస్తృతిలో ఫ్లోటింగ్ పాయింట్ విలువ " +"అవుతుంది." + +#: ../data/ibus.schemas.in.h:42 +msgid "The milliseconds to show the panel icon for a property" +msgstr "" + +#: ../data/ibus.schemas.in.h:43 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" + +#: ../data/ibus.schemas.in.h:46 +msgid "Use custom font" +msgstr "అనురూపిత ఖతిని ఉపయోగించు" + +#: ../data/ibus.schemas.in.h:47 +msgid "Use custom font name for language panel" +msgstr "భాషా ప్యానల్ కొరకు అనురూపిత ఖతి పేరును ఉపయోగించు" + +#: ../data/ibus.schemas.in.h:48 +msgid "Custom font" +msgstr "అనురూపిత ఖతి" + +#: ../data/ibus.schemas.in.h:49 +msgid "Custom font name for language panel" +msgstr "భాష ప్యానల్ కొరకు అనురూపించిన ఖతి పేరు" + +#: ../data/ibus.schemas.in.h:50 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "" + +#: ../data/ibus.schemas.in.h:51 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "" + +#: ../data/ibus.schemas.in.h:52 +msgid "Custom font name for emoji characters on emoji dialog" +msgstr "" + +#: ../data/ibus.schemas.in.h:53 +msgid "Default language for emoji dictionary" +msgstr "" + +#: ../data/ibus.schemas.in.h:54 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" +msgstr "" + +#: ../data/ibus.schemas.in.h:55 +msgid "favorite emoji list on emoji dialog" +msgstr "" + +#: ../data/ibus.schemas.in.h:56 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "" + +#: ../data/ibus.schemas.in.h:57 +msgid "favorite emoji annotation list on emoji dialog" +msgstr "" + +#: ../data/ibus.schemas.in.h:58 +msgid "You can assign an annotation for a favorite emoji in this list." +msgstr "" + +#: ../data/ibus.schemas.in.h:59 +msgid "Whether emoji annotations can be match partially or not" +msgstr "" + +#: ../data/ibus.schemas.in.h:60 +msgid "" +"Whether emoji annotations can be matched with a partial string instead of " +"the exact match or not." +msgstr "" + +#: ../data/ibus.schemas.in.h:61 +msgid "Match emoji annotations with the specified length" +msgstr "" + +#: ../data/ibus.schemas.in.h:62 +msgid "" +"Match emoji annotations partially with more than the specified number of " +"characters instead of the exact match." +msgstr "" + +#: ../data/ibus.schemas.in.h:63 +msgid "Choose a condition to match emoji annotations partially" +msgstr "" + +#: ../data/ibus.schemas.in.h:64 +msgid "" +"Choose one of the following conditions to match emoji annotations partially: " +"0 == Prefix match, 1 == Suffix match, 2 == Containing match" +msgstr "" + +#: ../data/ibus.schemas.in.h:65 +msgid "Embed Preedit Text" +msgstr "ఎంబెడెడ్ ప్రిఎడిట్ పాఠ్యం" + +#: ../data/ibus.schemas.in.h:66 +msgid "Embed Preedit Text in Application Window" +msgstr "అనువర్తన కిటికీ నందు ఎంబెడెడ్ ప్రిఎడిట్ పాఠ్యం" + +#: ../data/ibus.schemas.in.h:67 +msgid "Use global input method" +msgstr "సార్వత్రిక ఇన్‌పుట్ పద్ధతిని ఉపయోగించు" + +#: ../data/ibus.schemas.in.h:69 +msgid "Enable input method by default" +msgstr "ఇన్‌పుట్ పద్ధతిని అప్రమేయంగా చేతనించు" + +#: ../data/ibus.schemas.in.h:70 +msgid "Enable input method by default when the application gets input focus" +msgstr "" +"అనువర్తనము ఇన్‌పుట్ ఫోకస్‌ను పొందగానే ఇన్‌పుట్ పద్ధతిని అప్రమేయంగా చేతనించు" + +#: ../data/ibus.schemas.in.h:71 +msgid "DConf preserve name prefixes" +msgstr "DConf వుంచిన పేరు ప్రిఫిక్సెస్" + +#: ../data/ibus.schemas.in.h:72 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "పేరు మార్పును ఆపుటకు DConf మీటల ప్రిఫిక్సులు" + +#: ../ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "" +"నకలుహక్కు (c) 2007-2010 Peng Huang\n" +"నకలుహక్కు (c) 2007-2010 Red Hat, Inc." + +#: ../ibus/lang.py:41 ../src/ibusutil.c:158 +msgid "Other" +msgstr "ఇతర" + +#: ../setup/emojilang.py:67 +msgid "Select a language" +msgstr "" + +#: ../setup/emojilang.py:70 ../setup/enginedialog.py:60 +#: ../setup/keyboardshortcut.py:339 ../setup/main.py:552 +msgid "_Cancel" +msgstr "రద్దుచేయి (_C)" + +#: ../setup/emojilang.py:71 ../setup/keyboardshortcut.py:340 +#: ../setup/main.py:553 +msgid "_OK" +msgstr "సరే (_O)" + +#: ../setup/emojilang.py:235 ../setup/enginedialog.py:205 +msgid "More…" +msgstr "మరిన్ని..." + +#: ../setup/engineabout.py:72 +#, python-format +msgid "Language: %s\n" +msgstr "భాష: %s\n" + +#: ../setup/engineabout.py:75 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "కీబోర్డు నమూనా: %s\n" + +#: ../setup/engineabout.py:78 +#, python-format +msgid "Author: %s\n" +msgstr "మూలకర్త: %s\n" + +#: ../setup/engineabout.py:81 +msgid "Description:\n" +msgstr "వివరణ:\n" + +#: ../setup/enginecombobox.py:139 ../setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "ఒక ఇన్‌పుట్ పద్ధతిని ఎంచుకోండి" + +#: ../setup/enginetreeview.py:96 +msgid "Kbd" +msgstr "Kbd" + +#: ../setup/ibus-setup.desktop.in.h:2 +msgid "Set IBus Preferences" +msgstr "ఐబస్ ప్రాధాన్యతలను అమర్చు" + +#: ../setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "కీబోర్డు అడ్డదార్లు" + +#: ../setup/keyboardshortcut.py:67 +msgid "Key code:" +msgstr "మీట సంకేతం:" + +#: ../setup/keyboardshortcut.py:82 +msgid "Modifiers:" +msgstr "సవరణిలు:" + +#. apply button +#: ../setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "అనువర్తించు (_A)" + +#. delete button +#: ../setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "తొలగించు (_D)" + +#: ../setup/keyboardshortcut.py:252 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "" +"దయచేసి వొక కీను వత్తండి (లేదా కీ మిశ్రమాన్ని).\n" +"కీ వదిలినప్పుడు డైలాగు మూయబడుతుంది." + +#: ../setup/keyboardshortcut.py:255 +msgid "Please press a key (or a key combination)" +msgstr "దయచేసి మీటను వత్తండి (లేదా మీటల సమ్మేళనం)" + +#: ../setup/main.py:121 ../setup/main.py:580 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "మునుపటి ఇన్పుట్ పద్దతికి మారుటకు అడ్డదారిని shift తో ఉపయోగించు" + +#: ../setup/main.py:507 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "ఐబస్ డెమోన్ నడుచుటలేదు. మీరు ప్రారంభించాలని అనుకొనుచున్నారా?" + +#: ../setup/main.py:528 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "" +"ఐబస్ ప్రారంభమైంది! మీరు ఐబస్ ఉపయోగించలేకుంటే, మీ $HOME/.bashrc కు కింది " +"పంక్తులను జతచేయండి; అప్పుడు తిరిగి డెస్కుటాప్‌కు ప్రవేశించండి.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" + +#. Translators: %d == 5 currently +#: ../setup/main.py:542 +#, python-format +msgid "IBus daemon could not be started in %d seconds." +msgstr "ఐబస్ డీమన్ %d క్షణాలలో ప్రారంభం కాలేకపోయింది." + +#: ../setup/main.py:554 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "%s కొరకు కీబోర్డు లఘువును ఎంచుకోండి" + +#. Translators: Title of the window +#: ../setup/main.py:556 +msgid "switching input methods" +msgstr "ఇన్పుట్ పద్దతులు మార్చుట" + +#: ../src/ibusemojigen.h:30 +msgid "Activities" +msgstr "" + +#: ../src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "" + +#: ../src/ibusemojigen.h:32 +msgid "Flags" +msgstr "" + +#: ../src/ibusemojigen.h:33 +msgid "Food & Drink" +msgstr "" + +#: ../src/ibusemojigen.h:34 +msgid "Objects" +msgstr "" + +#: ../src/ibusemojigen.h:35 +msgid "Smileys & People" +msgstr "" + +#: ../src/ibusemojigen.h:36 +msgid "Symbols" +msgstr "" + +#: ../src/ibusemojigen.h:37 +msgid "Travel & Places" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:33 +msgid "Basic Latin" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:37 +msgid "Latin-1 Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:41 +msgid "Latin Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:45 +msgid "Latin Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:49 +msgid "IPA Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:53 +msgid "Spacing Modifier Letters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:57 +msgid "Combining Diacritical Marks" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:61 +msgid "Greek and Coptic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:65 +msgid "Cyrillic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:69 +msgid "Cyrillic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:73 +msgid "Armenian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:77 +msgid "Hebrew" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:81 +msgid "Arabic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:85 +msgid "Syriac" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:89 +msgid "Arabic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:93 +msgid "Thaana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:97 +msgid "NKo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:101 +msgid "Samaritan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:105 +msgid "Mandaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:109 +msgid "Syriac Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:113 +msgid "Arabic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:117 +msgid "Devanagari" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:121 +msgid "Bengali" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:125 +msgid "Gurmukhi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:129 +msgid "Gujarati" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:133 +msgid "Oriya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:137 +msgid "Tamil" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:141 +msgid "Telugu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:145 +msgid "Kannada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:149 +msgid "Malayalam" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:153 +msgid "Sinhala" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:157 +msgid "Thai" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:161 +msgid "Lao" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:165 +msgid "Tibetan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:169 +msgid "Myanmar" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:173 +msgid "Georgian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:177 +msgid "Hangul Jamo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:181 +msgid "Ethiopic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:185 +msgid "Ethiopic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:189 +msgid "Cherokee" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:193 +msgid "Unified Canadian Aboriginal Syllabics" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:197 +msgid "Ogham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:201 +msgid "Runic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:205 +msgid "Tagalog" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:209 +msgid "Hanunoo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:213 +msgid "Buhid" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:217 +msgid "Tagbanwa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:221 +msgid "Khmer" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:225 +msgid "Mongolian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:229 +msgid "Unified Canadian Aboriginal Syllabics Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:233 +msgid "Limbu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:237 +msgid "Tai Le" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:241 +msgid "New Tai Lue" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:245 +msgid "Khmer Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:249 +msgid "Buginese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:253 +msgid "Tai Tham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:257 +msgid "Combining Diacritical Marks Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:261 +msgid "Balinese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:265 +msgid "Sundanese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:269 +msgid "Batak" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:273 +msgid "Lepcha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:277 +msgid "Ol Chiki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:281 +msgid "Cyrillic Extended-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:285 +msgid "Sundanese Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:289 +msgid "Vedic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:293 +msgid "Phonetic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:297 +msgid "Phonetic Extensions Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:301 +msgid "Combining Diacritical Marks Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:305 +msgid "Latin Extended Additional" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:309 +msgid "Greek Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:313 +msgid "General Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:317 +msgid "Superscripts and Subscripts" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:321 +msgid "Currency Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:325 +msgid "Combining Diacritical Marks for Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:329 +msgid "Letterlike Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:333 +msgid "Number Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:337 +msgid "Arrows" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:341 +msgid "Mathematical Operators" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:345 +msgid "Miscellaneous Technical" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:349 +msgid "Control Pictures" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:353 +msgid "Optical Character Recognition" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:357 +msgid "Enclosed Alphanumerics" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:361 +msgid "Box Drawing" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:365 +msgid "Block Elements" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:369 +msgid "Geometric Shapes" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:373 +msgid "Miscellaneous Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:377 +msgid "Dingbats" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:381 +msgid "Miscellaneous Mathematical Symbols-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:385 +msgid "Supplemental Arrows-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:389 +msgid "Braille Patterns" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:393 +msgid "Supplemental Arrows-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:397 +msgid "Miscellaneous Mathematical Symbols-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:401 +msgid "Supplemental Mathematical Operators" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:405 +msgid "Miscellaneous Symbols and Arrows" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:409 +msgid "Glagolitic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:413 +msgid "Latin Extended-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:417 +msgid "Coptic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:421 +msgid "Georgian Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:425 +msgid "Tifinagh" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:429 +msgid "Ethiopic Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:433 +msgid "Cyrillic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:437 +msgid "Supplemental Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:441 +msgid "CJK Radicals Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:445 +msgid "Kangxi Radicals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:449 +msgid "Ideographic Description Characters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:453 +msgid "CJK Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:457 +msgid "Hiragana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:461 +msgid "Katakana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:465 +msgid "Bopomofo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:469 +msgid "Hangul Compatibility Jamo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:473 +msgid "Kanbun" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:477 +msgid "Bopomofo Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:481 +msgid "CJK Strokes" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:485 +msgid "Katakana Phonetic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:489 +msgid "Enclosed CJK Letters and Months" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:493 +msgid "CJK Compatibility" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:497 +msgid "CJK Unified Ideographs Extension A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:501 +msgid "Yijing Hexagram Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:505 +msgid "CJK Unified Ideographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:509 +msgid "Yi Syllables" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:513 +msgid "Yi Radicals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:517 +msgid "Lisu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:521 +msgid "Vai" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:525 +msgid "Cyrillic Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:529 +msgid "Bamum" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:533 +msgid "Modifier Tone Letters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:537 +msgid "Latin Extended-D" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:541 +msgid "Syloti Nagri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:545 +msgid "Common Indic Number Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:549 +msgid "Phags-pa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:553 +msgid "Saurashtra" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:557 +msgid "Devanagari Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:561 +msgid "Kayah Li" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:565 +msgid "Rejang" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:569 +msgid "Hangul Jamo Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:573 +msgid "Javanese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:577 +msgid "Myanmar Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:581 +msgid "Cham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:585 +msgid "Myanmar Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:589 +msgid "Tai Viet" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:593 +msgid "Meetei Mayek Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:597 +msgid "Ethiopic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:601 +msgid "Latin Extended-E" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:605 +msgid "Cherokee Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:609 +msgid "Meetei Mayek" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:613 +msgid "Hangul Syllables" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:617 +msgid "Hangul Jamo Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:621 +msgid "High Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:625 +msgid "High Private Use Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:629 +msgid "Low Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:633 +msgid "Private Use Area" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:637 +msgid "CJK Compatibility Ideographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:641 +msgid "Alphabetic Presentation Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:645 +msgid "Arabic Presentation Forms-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:649 +msgid "Variation Selectors" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:653 +msgid "Vertical Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:657 +msgid "Combining Half Marks" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:661 +msgid "CJK Compatibility Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:665 +msgid "Small Form Variants" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:669 +msgid "Arabic Presentation Forms-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:673 +msgid "Halfwidth and Fullwidth Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:677 +msgid "Specials" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:681 +msgid "Linear B Syllabary" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:685 +msgid "Linear B Ideograms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:689 +msgid "Aegean Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:693 +msgid "Ancient Greek Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:697 +msgid "Ancient Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:701 +msgid "Phaistos Disc" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:705 +msgid "Lycian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:709 +msgid "Carian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:713 +msgid "Coptic Epact Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:717 +msgid "Old Italic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:721 +msgid "Gothic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:725 +msgid "Old Permic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:729 +msgid "Ugaritic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:733 +msgid "Old Persian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:737 +msgid "Deseret" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:741 +msgid "Shavian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:745 +msgid "Osmanya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:749 +msgid "Osage" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:753 +msgid "Elbasan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:757 +msgid "Caucasian Albanian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:761 +msgid "Linear A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:765 +msgid "Cypriot Syllabary" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:769 +msgid "Imperial Aramaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:773 +msgid "Palmyrene" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:777 +msgid "Nabataean" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:781 +msgid "Hatran" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:785 +msgid "Phoenician" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:789 +msgid "Lydian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:793 +msgid "Meroitic Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:797 +msgid "Meroitic Cursive" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:801 +msgid "Kharoshthi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:805 +msgid "Old South Arabian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:809 +msgid "Old North Arabian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:813 +msgid "Manichaean" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:817 +msgid "Avestan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:821 +msgid "Inscriptional Parthian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:825 +msgid "Inscriptional Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:829 +msgid "Psalter Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:833 +msgid "Old Turkic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:837 +msgid "Old Hungarian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:841 +msgid "Rumi Numeral Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:845 +msgid "Brahmi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:849 +msgid "Kaithi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:853 +msgid "Sora Sompeng" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:857 +msgid "Chakma" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:861 +msgid "Mahajani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:865 +msgid "Sharada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:869 +msgid "Sinhala Archaic Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:873 +msgid "Khojki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:877 +msgid "Multani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:881 +msgid "Khudawadi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:885 +msgid "Grantha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:889 +msgid "Newa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:893 +msgid "Tirhuta" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:897 +msgid "Siddham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:901 +msgid "Modi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:905 +msgid "Mongolian Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:909 +msgid "Takri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:913 +msgid "Ahom" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:917 +msgid "Warang Citi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:921 +msgid "Zanabazar Square" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:925 +msgid "Soyombo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:929 +msgid "Pau Cin Hau" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:933 +msgid "Bhaiksuki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:937 +msgid "Marchen" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:941 +msgid "Masaram Gondi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:945 +msgid "Cuneiform" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:949 +msgid "Cuneiform Numbers and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:953 +msgid "Early Dynastic Cuneiform" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:957 +msgid "Egyptian Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:961 +msgid "Anatolian Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:965 +msgid "Bamum Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:969 +msgid "Mro" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:973 +msgid "Bassa Vah" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:977 +msgid "Pahawh Hmong" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:981 +msgid "Miao" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:985 +msgid "Ideographic Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:989 +msgid "Tangut" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:993 +msgid "Tangut Components" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:997 +msgid "Kana Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1001 +msgid "Kana Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1005 +msgid "Nushu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1009 +msgid "Duployan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1013 +msgid "Shorthand Format Controls" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1017 +msgid "Byzantine Musical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1021 +msgid "Musical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1025 +msgid "Ancient Greek Musical Notation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1029 +msgid "Tai Xuan Jing Symbols" +msgstr "" -#: ../setup/main.py:113 -msgid "enable" -msgstr "చేతనపరుచు" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1033 +msgid "Counting Rod Numerals" +msgstr "" -#: ../setup/main.py:124 -msgid "disable" -msgstr "అచేతనపరుచు" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1037 +msgid "Mathematical Alphanumeric Symbols" +msgstr "" -#: ../setup/main.py:135 -msgid "next input method" -msgstr "తరువాతి ఇన్‌పుట్ పద్ధతి" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1041 +msgid "Sutton SignWriting" +msgstr "" -#: ../setup/main.py:146 -msgid "previous input method" -msgstr "మునుపటి ఇన్‌పుట్ పద్ధతి" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1045 +msgid "Glagolitic Supplement" +msgstr "" -#: ../setup/main.py:286 -msgid "IBus daemon is not started. Do you want to start it now?" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1049 +msgid "Mende Kikakui" msgstr "" -"IBus డెమోన్ ప్రారంభమవలేదు. మీరు దానిని ప్రారంభించాలని అనుకొనుచున్నారా?" -#: ../setup/main.py:301 -msgid "" -"IBus has been started! If you can not use IBus, please add below lines in $HOME/.bashrc, and relogin your desktop.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1053 +msgid "Adlam" msgstr "" -"IBus ప్రారంభమైంది! మీరు IBus ఉపయోగించలేక పోతే, క్రింది వాటిని $HOME/.bashrc నందు జతచేయుము, మరియు మీ డెస్కుటాపునకు తిరిగి లాగిన్ అవ్వుము.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" -#: ../setup/main.py:316 -#, python-format -msgid "Select keyboard shortcut for %s" -msgstr "%s కొరకు కీబోర్డు లఘువును ఎంచుకోండి" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1057 +msgid "Arabic Mathematical Alphabetic Symbols" +msgstr "" -#: ../setup/keyboardshortcut.py:52 -msgid "Keyboard shortcuts" -msgstr "కీబోర్డు లఘువులు" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1061 +msgid "Mahjong Tiles" +msgstr "" -#: ../setup/keyboardshortcut.py:63 -msgid "Key code:" -msgstr "కీ కోడ్:" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1065 +msgid "Domino Tiles" +msgstr "" -#: ../setup/keyboardshortcut.py:78 -msgid "Modifiers:" -msgstr "సవరణిలు:" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1069 +msgid "Playing Cards" +msgstr "" -#: ../setup/keyboardshortcut.py:231 -msgid "" -"Please press a key (or a key combination).\n" -"The dialog will be closed when the key is released." +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1073 +msgid "Enclosed Alphanumeric Supplement" msgstr "" -"దయచేసి వొక కీను వత్తండి (లేదా కీ మిశ్రమాన్ని).\n" -"కీ వదిలినప్పుడు డైలాగు మూయబడుతుంది." -#: ../setup/keyboardshortcut.py:233 -msgid "Please press a key (or a key combination)" -msgstr "దయచేసి కీను వత్తండి (లేదా కీ మిశ్రమాన్ని)" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1077 +msgid "Enclosed Ideographic Supplement" +msgstr "" -#: ../setup/enginecombobox.py:120 -msgid "Select an input method" -msgstr "ఒక ఇన్‌పుట్ పద్ధతిని ఎంచుకోండి" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1081 +msgid "Miscellaneous Symbols and Pictographs" +msgstr "" -#. create im name & icon column -#: ../setup/enginetreeview.py:64 ../setup/setup.ui.h:33 -msgid "Input Method" -msgstr "ఇన్‌పుట్ పద్ధతి" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1085 +msgid "Emoticons" +msgstr "" -#: ../setup/enginetreeview.py:92 -msgid "Kbd" -msgstr "Kbd" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1089 +msgid "Ornamental Dingbats" +msgstr "" -#: ../setup/ibus-setup.desktop.in.h:1 ../setup/setup.ui.h:32 -msgid "IBus Preferences" -msgstr "IBus ప్రాధాన్యతలు" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1093 +msgid "Transport and Map Symbols" +msgstr "" -#: ../setup/ibus-setup.desktop.in.h:2 -msgid "Set IBus Preferences" -msgstr "IBus ప్రాధాన్యతలను అమర్చు" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1097 +msgid "Alchemical Symbols" +msgstr "" -#: ../data/ibus.schemas.in.h:1 -msgid "Auto hide" -msgstr "స్వయంచాలకంగా దాగిఉండు" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1101 +msgid "Geometric Shapes Extended" +msgstr "" -#: ../data/ibus.schemas.in.h:2 -msgid "Custom font" -msgstr "అనురూపిత ఫాంటు" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1105 +msgid "Supplemental Arrows-C" +msgstr "" -#: ../data/ibus.schemas.in.h:3 -msgid "Custom font name for language panel" -msgstr "భాష ప్యానల్ కొరకు మలచుకొనిన ఫాంటు పేరు" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1109 +msgid "Supplemental Symbols and Pictographs" +msgstr "" -#: ../data/ibus.schemas.in.h:4 -msgid "Disable shortcut keys" -msgstr "అడ్డదారి కీలను అచేతనంచేయి" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1113 +msgid "CJK Unified Ideographs Extension B" +msgstr "" -#: ../data/ibus.schemas.in.h:5 -msgid "Embed Preedit Text" -msgstr "ఎంబెడెడ్ ప్రిఎడిట్ పాఠము" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1117 +msgid "CJK Unified Ideographs Extension C" +msgstr "" -#: ../data/ibus.schemas.in.h:6 -msgid "Embed Preedit Text in Application Window" -msgstr "అనువర్తన విండోనందు ఎంబెడెడ్ ప్రిఎడిట్ పాఠము" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1121 +msgid "CJK Unified Ideographs Extension D" +msgstr "" -#: ../data/ibus.schemas.in.h:7 -msgid "Enable input method by default" -msgstr "ఇన్‌పుట్ పద్ధతిని అప్రమేయంగా చేతనముచేయుము" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1125 +msgid "CJK Unified Ideographs Extension E" +msgstr "" -#: ../data/ibus.schemas.in.h:8 -msgid "Enable input method by default when the application gets input focus" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1129 +msgid "CJK Unified Ideographs Extension F" msgstr "" -"అనువర్తనము ఇన్‌పుట్ ఫోకస్‌ను పొందగానే ఇన్‌పుట్ పద్ధతిని అప్రమేయంగా చేతనము " -"చేయుము" -#: ../data/ibus.schemas.in.h:9 -msgid "Enable shortcut keys" -msgstr "లఘు కీ లను చేతనంచేయి" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1133 +msgid "CJK Compatibility Ideographs Supplement" +msgstr "" -#: ../data/ibus.schemas.in.h:10 -msgid "Language panel position" -msgstr "భాషా ప్యానల్ స్థానము" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1137 +msgid "Tags" +msgstr "" -#: ../data/ibus.schemas.in.h:11 -msgid "Next engine shortcut keys" -msgstr "తరువాతి ఇంజన్‌కు లఘువులు" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1141 +msgid "Variation Selectors Supplement" +msgstr "" -#: ../data/ibus.schemas.in.h:12 -msgid "Orientation of lookup table" -msgstr "లుకప్ పట్టిక సర్దుబాటు" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1145 +msgid "Supplementary Private Use Area-A" +msgstr "" -#: ../data/ibus.schemas.in.h:13 -msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" -msgstr "లుకప్ పట్టిక సర్దుబాటు. 0 = చదరముగా, 1 = నిలువుగా" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1149 +msgid "Supplementary Private Use Area-B" +msgstr "" -#: ../data/ibus.schemas.in.h:14 -msgid "Preload engines" -msgstr "ముందుగా లోడైన ఇంజన్లు" +#: ../tools/main.vala:54 +msgid "List engine name only" +msgstr "యంత్రం పేరు మాత్రమే జాబితాచేయి" -#: ../data/ibus.schemas.in.h:15 -msgid "Preload engines during ibus starts up" -msgstr "ibus ప్రారంభమునందు ఇంజన్లు ముందుగా లోడుచేయి" +#: ../tools/main.vala:70 ../tools/main.vala:195 ../tools/main.vala:205 +msgid "Can't connect to IBus.\n" +msgstr "ఐబస్‌కు అనుసంధానం కాలేదు.\n" -#: ../data/ibus.schemas.in.h:16 -msgid "Prev engine shortcut keys" -msgstr "మునుపటి ఇంజన్ లఘువులు" +#: ../tools/main.vala:96 +#, c-format +msgid "language: %s\n" +msgstr "భాష: %s\n" -#: ../data/ibus.schemas.in.h:17 ../setup/setup.ui.h:42 -msgid "Share the same input method among all applications" -msgstr "అన్ని అనువర్తనములనందు యిన్పుట్ పద్దతిని భాగస్వామ్యపరచుము" +#: ../tools/main.vala:164 +msgid "No engine is set.\n" +msgstr "ఏ యంత్రము అమర్చలేదు.\n" -#: ../data/ibus.schemas.in.h:18 ../setup/setup.ui.h:43 -msgid "Show icon on system tray" -msgstr "సిస్టమ్ ట్రే నందు ప్రతీకను చూపించు" +#: ../tools/main.vala:172 +msgid "Set global engine failed.\n" +msgstr "సార్వత్రిక యంత్రం అమర్చుట విఫలమైంది.\n" -#: ../data/ibus.schemas.in.h:19 -msgid "Show input method name" -msgstr "ఇన్‌పుట్ పద్ధతి పేరును చూపించు" +#: ../tools/main.vala:177 +msgid "Get global engine failed.\n" +msgstr "సార్వత్రిక యంత్రం పొందుట విఫలమైంది.\n" -#: ../data/ibus.schemas.in.h:20 ../setup/setup.ui.h:45 -msgid "Show input method name on language bar" -msgstr "భాషా పట్టీపై ఇన్‌పుట్ పద్ధతి పేరును చూపించు" +#: ../tools/main.vala:220 +msgid "Read the system registry cache." +msgstr "వ్యవస్థ రిజిస్ట్రీ క్యాచీ చదువు." -#: ../data/ibus.schemas.in.h:21 -msgid "" -"The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = " -"Always show" -msgstr "" -"భాషా ప్యానల్ యొక్క ప్రవర్తన. 0 = మెనూనందు యెంబెడ్‌చేయి, 1 = స్వయంచాలకంగా " -"మరుగునవుంచు, 2 = ఎల్లప్పుడూ చూపించు" +#: ../tools/main.vala:222 +msgid "Read the registry cache FILE." +msgstr "రిజిస్ట్రీ క్యాచీ FILE చదువు." -#: ../data/ibus.schemas.in.h:22 -msgid "" -"The position of the language panel. 0 = Top left corner, 1 = Top right " -"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" -msgstr "" -"భాషా ప్యానల్ యొక్క స్థానము. 0 = పై ఎడమ మూల, 1 = పై కుడి మూల, 2 = క్రింది ఎడమ" -" మూల, 3 = క్రింది కుడి మూల, 4 = మలచుకొనిన" +#: ../tools/main.vala:240 ../tools/main.vala:245 +msgid "The registry cache is invalid.\n" +msgstr "రిజిస్ట్రీ క్యాచీ చెల్లనిది.\n" -#: ../data/ibus.schemas.in.h:23 -msgid "The shortcut keys for switching to the next input method in the list" -msgstr "జాబితానందలి తరువాతి ఇన్పుట్ పద్ధతినకు మారుటకు లఘువులు" +#: ../tools/main.vala:260 +msgid "Write the system registry cache." +msgstr "వ్యవస్థ రిజిస్ట్రీ క్యాచీ వ్రాయి." -#: ../data/ibus.schemas.in.h:24 -msgid "The shortcut keys for switching to the previous input method" -msgstr "జాబితానందలి ముందరి ఇన్‌పుట్ పద్ధతినకు మారుటకు లఘువులు" +#: ../tools/main.vala:262 +msgid "Write the registry cache FILE." +msgstr "రిజిస్ట్రీ క్యాచీ FILE వ్రాయి." -#: ../data/ibus.schemas.in.h:25 -msgid "The shortcut keys for turning input method off" -msgstr "ఇన్‌పుట్ పద్ధతి ఆపుటకు కీ లఘువులు" +#: ../tools/main.vala:314 +msgid "Resetting…" +msgstr "తిరిగివుంచుతోంది..." -#: ../data/ibus.schemas.in.h:26 -msgid "The shortcut keys for turning input method on" -msgstr "ఇన్‌పుట్ పద్ధతి ఆన్ చేయుటకు కీ లఘువులు" +#: ../tools/main.vala:328 +msgid "Done" +msgstr "అయినది" -#: ../data/ibus.schemas.in.h:27 ../setup/setup.ui.h:51 -msgid "The shortcut keys for turning input method on or off" -msgstr "ఇన్‌పుట్ పద్ధతిని ఆన్ చేయుటకు లేదా ఆఫ్ చేయుటకు లఘువులు" +#: ../tools/main.vala:373 +msgid "Set or get engine" +msgstr "యంత్రాన్ని అమర్చు లేదా పొందు" -#: ../data/ibus.schemas.in.h:28 -msgid "Trigger shortcut keys" -msgstr "లఘవులను నొక్కుము" +#: ../tools/main.vala:374 +msgid "Exit ibus-daemon" +msgstr "ibus-daemon నిష్క్రమించు" -#: ../data/ibus.schemas.in.h:29 -msgid "Use custom font" -msgstr "మలచుకొనిన ఫాంటు ఉపయోగించు" +#: ../tools/main.vala:375 +msgid "Show available engines" +msgstr "అందుబాటులోని యంత్రాలను చూపించు" -#: ../data/ibus.schemas.in.h:30 -msgid "Use custom font name for language panel" -msgstr "భాషా ప్యానల్ కొరకు మలచుకొనిన ఫాంట్ నామము వుపయోగించుము" +#: ../tools/main.vala:376 +msgid "(Not implemented)" +msgstr "(అమలు చేయలేదు)" -#: ../data/ibus.schemas.in.h:31 -msgid "Use global input method" -msgstr "గ్లోబల్ ఇన్‌పుట్ పద్ధతిని ఉపయోగించు" +#: ../tools/main.vala:377 +msgid "Restart ibus-daemon" +msgstr "ibus-daemon పునఃప్రారంభించు" -#: ../data/ibus.schemas.in.h:32 ../setup/setup.ui.h:55 -msgid "Use system keyboard (XKB) layout" -msgstr "వ్యవస్థ కీబోర్డు (XKB) నమూనా ఉపయోగించు" +#: ../tools/main.vala:378 +msgid "Show version" +msgstr "రూపాంతరాన్ని చూపించు" -#: ../data/ibus.schemas.in.h:33 ../setup/setup.ui.h:56 -msgid "Use system keyboard layout" -msgstr "వ్యవస్థ కీబోర్డు నమూనా ఉపయోగించు" +#: ../tools/main.vala:379 +msgid "Show the content of registry cache" +msgstr "రిజిస్ట్రీ క్యాచీ యొక్క కాంటెంట్ చూపు" -#: ../setup/setup.ui.h:1 -msgid "..." -msgstr "..." +#: ../tools/main.vala:380 +msgid "Create registry cache" +msgstr "రిజిస్ట్రీ క్యాచీ సృష్టించు" -#: ../setup/setup.ui.h:2 -msgid "Font and Style" -msgstr "ఫాంటు మరియు శైలి" +#: ../tools/main.vala:381 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "ibus-daemon యొక్క D-Bus చిరునామా ముద్రించు" -#: ../setup/setup.ui.h:3 -msgid "Global input method settings" -msgstr "గ్లోబల్ ఇన్‌పుట్ పద్ధతి అమరికలు" +#: ../tools/main.vala:382 +msgid "Show the configuration values" +msgstr "ఆకృతీకరణ విలువలను చూపుము" -#: ../setup/setup.ui.h:4 -msgid "Keyboard Layout" -msgstr "కీబోర్డు నమూనా" +#: ../tools/main.vala:383 +msgid "Reset the configuration values" +msgstr "ఆకృతీకరణ విలువలను తిరిగివుంచుము" -#: ../setup/setup.ui.h:5 -msgid "Keyboard Shortcuts" -msgstr "కీబోర్డు లఘువులు" +#: ../tools/main.vala:385 +msgid "Save emoji on dialog to clipboard " +msgstr "" -#: ../setup/setup.ui.h:6 -msgid "Startup" -msgstr "ప్రారంభము" +#: ../tools/main.vala:387 +msgid "Show this information" +msgstr "ఈ సమాచారం చూపించు" -#: ../setup/setup.ui.h:7 -msgid "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" +#: ../tools/main.vala:393 +#, c-format +msgid "Usage: %s COMMAND [OPTION...]\n" "\n" +msgstr "వాడుక: %s COMMAND [OPTION...]\n" "\n" + +#: ../tools/main.vala:394 +msgid "Commands:\n" +msgstr "ఆదేశాలు:\n" + +#: ../tools/main.vala:423 +#, c-format +msgid "%s is unknown command!\n" +msgstr "%s తెలియని ఆదేశం!\n" + +#: ../ui/gtk3/emojier.vala:245 +msgid "Show emoji variants" msgstr "" -"IBus\n" -"తెలివైన ఇన్‌పుట్ బస్\n" -"నివాసపుట: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" -#: ../setup/setup.ui.h:14 -msgid "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." +#: ../ui/gtk3/emojier.vala:250 +msgid "Menu" msgstr "" -"జాబితాలో పైన వున్నది అప్రమేయ ఇన్‌పుట్ విధానం అవుతుంది.\n" -"దానిని మార్చుటకు మీరు పైకి/క్రిందకు బటన్సును వుపయోగించవచ్చు." -#: ../setup/setup.ui.h:17 -msgid "Add the selected input method into the enabled input methods" -msgstr "ఎంచుకున్న ఇన్‌పుట్ పద్ధతిని చేతనమైన ఇన్పుట్ పద్ధతులలోనికి జతచేయుము" +#: ../ui/gtk3/emojier.vala:273 +msgid "Favorites" +msgstr "" -#: ../setup/setup.ui.h:18 -msgid "Advanced" -msgstr "అధునాతన" +#: ../ui/gtk3/emojier.vala:274 +msgid "Others" +msgstr "" -#: ../setup/setup.ui.h:19 -msgid "Always" -msgstr "ఎల్లప్పుడు" +#: ../ui/gtk3/emojier.vala:275 +msgid "Open Unicode choice" +msgstr "" -#: ../setup/setup.ui.h:20 -msgid "Bottom left corner" -msgstr "క్రింది ఎడమ మూల" +#: ../ui/gtk3/emojier.vala:445 ../ui/gtk3/emojier.vala:826 +#: ../ui/gtk3/panel.vala:1149 +msgid "Emoji Choice" +msgstr "" -#: ../setup/setup.ui.h:21 -msgid "Bottom right corner" -msgstr "క్రింది కుడి మూల" +#: ../ui/gtk3/emojier.vala:451 +msgid "Type annotation or choose emoji" +msgstr "" -#: ../setup/setup.ui.h:22 -msgid "Candidates orientation:" -msgstr "సభ్యుల దృక్పధము:" +#: ../ui/gtk3/emojier.vala:948 +msgid "Unicode Choice" +msgstr "" -#: ../setup/setup.ui.h:23 -msgid "Custom" -msgstr "మలచుకొనిన" +#: ../ui/gtk3/emojier.vala:950 +msgid "Bring back emoji choice" +msgstr "" -#: ../setup/setup.ui.h:24 -msgid "Disable:" -msgstr "అచేతనపరుచు:" +#: ../ui/gtk3/emojier.vala:1016 +msgid "Loading a Unicode dictionary:" +msgstr "" -#: ../setup/setup.ui.h:25 -msgid "Embed preedit text in application window" -msgstr "అనువర్తనము విండో నందు ముందుగాసరికూర్చిన పాఠమును ఎంబెడెడ్ చేయుము" +#: ../ui/gtk3/emojier.vala:1071 +msgid "Page Down" +msgstr "" -#: ../setup/setup.ui.h:26 -msgid "Embed the preedit text of input method in the application window" +#: ../ui/gtk3/emojier.vala:1082 +msgid "Page Up" msgstr "" -"అనువర్తనము విండోనందు ఇన్‌పుట్ పద్ధతి యొక్క ముందుగా సరికూర్చిన పాఠమును " -"ఎంబెడెడ్ చేయుము" -#: ../setup/setup.ui.h:27 -msgid "Embedded in menu" -msgstr "మెనూనందు ఎంబెడెడ్ చేయబడెను" +#: ../ui/gtk3/emojier.vala:1236 +#, c-format +msgid "Code point: %s" +msgstr "" -#: ../setup/setup.ui.h:28 -msgid "Enable or disable:" -msgstr "చేతనముచేయి లేదా అచేతనముచేయి:" +#: ../ui/gtk3/emojier.vala:1242 +msgid "Has emoji variants" +msgstr "" -#: ../setup/setup.ui.h:29 -msgid "Enable:" -msgstr "చేతనపరుచు" +#: ../ui/gtk3/emojier.vala:1377 ../ui/gtk3/emojier.vala:1391 +#, c-format +msgid "Description: %s" +msgstr "" -#: ../setup/setup.ui.h:30 -msgid "General" -msgstr "సాధారణ" +#: ../ui/gtk3/emojier.vala:1377 +msgid "None" +msgstr "" -#: ../setup/setup.ui.h:31 -msgid "Horizontal" -msgstr "అడ్డముగా" +#: ../ui/gtk3/emojier.vala:1402 +#, c-format +msgid "Annotations: %s" +msgstr "" -#: ../setup/setup.ui.h:34 -msgid "Language panel position:" -msgstr "భాషా ప్యానల్ స్థానము:" +#: ../ui/gtk3/emojier.vala:1428 +#, c-format +msgid "Name: %s" +msgstr "" -#: ../setup/setup.ui.h:35 -msgid "Move down the selected input method in the enabled input methods" +#: ../ui/gtk3/emojier.vala:1436 +#, c-format +msgid "Alias: %s" msgstr "" -"చేతనమైన ఇన్‌పుట్ పద్ధతులలో ఎంచుకున్న ఇన్‌పుట్ పద్ధతిని క్రిందకి కదుపుము" -#: ../setup/setup.ui.h:36 -msgid "Move up the selected input method in the enabled input methods list" +#: ../ui/gtk3/emojierapp.vala:56 +msgid "Canceled to choose an emoji." msgstr "" -"చేతనమైన ఇన్‌పుట్ పద్ధతుల జాబితాలో ఎంచుకున్న ఇన్‌పుట్ పద్ధతిని పైకి కదుపుము" -#: ../setup/setup.ui.h:37 -msgid "Next input method:" -msgstr "తరువాతి ఇన్‌పుట్ పద్ధతి:" +#: ../ui/gtk3/emojierapp.vala:77 +msgid "Copied an emoji to your clipboard." +msgstr "" -#: ../setup/setup.ui.h:38 -msgid "Previous input method:" -msgstr "మునుపటి ఇన్‌పుట్ పద్ధతి:" +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ../ui/gtk3/emojierapp.vala:97 +msgid "\"FONT\" for emoji characters on emoji dialog" +msgstr "" -#: ../setup/setup.ui.h:39 -msgid "Remove the selected input method from the enabled input methods" -msgstr "చేతనమైన ఇన్‌పుట్ పద్ధతుల నుంచి ఎంపికచేసిన ఇన్‌పుట్ పద్ధతిని తొలగించు" +#: ../ui/gtk3/emojierapp.vala:98 +msgid "FONT" +msgstr "" -#: ../setup/setup.ui.h:40 -msgid "Set the behavior of ibus how to show or hide language bar" +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ../ui/gtk3/emojierapp.vala:103 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" -"భాషా పట్టీని ఎలా చూపాలి మరియు దాయాలి అనేదానికి ibus ప్రవర్తనను అమర్చుము" -#: ../setup/setup.ui.h:41 -msgid "Set the orientation of candidates in lookup table" -msgstr "లుకప్ పట్టికనందు కాండిడేట్ల సర్దుబాటును అమర్చుము" +#: ../ui/gtk3/emojierapp.vala:104 +msgid "LANG" +msgstr "" -#: ../setup/setup.ui.h:44 -msgid "Show information of the selected input method" -msgstr "ఎంచుకున్న ఇన్‌పుట్ పద్ధతి యొక్క సమాచారాన్ని చూపించు" +#: ../ui/gtk3/emojierapp.vala:106 +msgid "Emoji annotations can be match partially" +msgstr "" -#: ../setup/setup.ui.h:46 -msgid "Show input method's name on language bar when check the checkbox" +#: ../ui/gtk3/emojierapp.vala:110 +msgid "Match with the length of the specified integer" msgstr "" -"చెక్‌బాక్సు చెక్ చేసినప్పుడు భాషా పట్టీపై ఇన్‌పుట్ పద్ధతి పేరును చూపించు" -#: ../setup/setup.ui.h:47 -msgid "Show language panel:" -msgstr "భాషా ప్యానల్ చూపించు:" +#: ../ui/gtk3/emojierapp.vala:114 +msgid "Match with the condition of the specified integer" +msgstr "" -#: ../setup/setup.ui.h:48 -msgid "Start ibus on login" -msgstr "లాగిన్‌నందు ibus ప్రారంభించుము" +#: ../ui/gtk3/panel.vala:282 ../ui/gtk3/panel.vala:313 +msgid "IBus Panel" +msgstr "" -#: ../setup/setup.ui.h:49 -msgid "The shortcut keys for switching to next input method in the list" -msgstr "జాబితాలో ఉన్న తరువాతి ఇన్‌పుట్ పద్ధతినకు మారుటకు లఘువులు" +#: ../ui/gtk3/panel.vala:710 +msgid "IBus Update" +msgstr "ఐబస్ నవీకరణ" -#: ../setup/setup.ui.h:50 -msgid "The shortcut keys for switching to previous input method in the list" -msgstr "జాబితానందలి ముందరి ఇన్‌పుట్ పద్ధతినకు మారుటకు లఘువులు" +#: ../ui/gtk3/panel.vala:711 ../ui/gtk3/panel.vala:722 +msgid "Super+space is now the default hotkey." +msgstr "ఇప్పుడు Super+space అప్రమేయ హాట్‌కీ." -#: ../setup/setup.ui.h:52 -msgid "Top left corner" -msgstr "పై ఎడమ మూల" +#: ../ui/gtk3/panel.vala:1121 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus అనునది Linux/Unix కొరకు తెలివైన ఇన్‌పుట్ బస్." -#: ../setup/setup.ui.h:53 -msgid "Top right corner" -msgstr "పై కుడి మూల" +#: ../ui/gtk3/panel.vala:1125 +msgid "translator-credits" +msgstr "" +"కృష్ణబాబు కె 2009.\n" +"ప్రవీణ్ యిళ్ళ 2010-14." -#: ../setup/setup.ui.h:54 -msgid "Use custom font:" -msgstr "మలచుకొనిన ఫాంటు ఉపయోగించుము:" +#: ../ui/gtk3/panel.vala:1144 +msgid "Preferences" +msgstr "ప్రాధాన్యతలు " -#: ../setup/setup.ui.h:57 -msgid "Vertical" -msgstr "నిలువుగా" +#: ../ui/gtk3/panel.vala:1181 +msgid "Restart" +msgstr "పునఃప్రారంభించు" -#: ../setup/setup.ui.h:58 -msgid "When active" -msgstr "క్రియాశీలముగా ఉన్నప్పుడు" +#: ../ui/gtk3/panel.vala:1185 +msgid "Quit" +msgstr "నిష్క్రమించు " + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ../ui/gtk3/propertypanel.vala:368 ../ui/gtk3/propertypanel.vala:376 +msgid "default:LTR" +msgstr "default:LTR" diff --git a/po/tg.po b/po/tg.po index d2584846e..2fc4655bf 100644 --- a/po/tg.po +++ b/po/tg.po @@ -1,522 +1,694 @@ # translation of ibus.pot to Tajik # Tajik translation of ibus. -# Copyright (C) 2008 Peng Huang +# Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. -# +# # Translators: -# tajikfedora , 2011. +# Victor Ibragimov , 2011 +# Victor Ibragimov , 2011 msgid "" msgstr "" "Project-Id-Version: IBus\n" -"Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/list\n" -"POT-Creation-Date: 2011-05-13 11:21+0900\n" -"PO-Revision-Date: 2011-12-09 09:55+0000\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2014-02-18 13:46+0900\n" +"PO-Revision-Date: 2014-02-18 05:49+0000\n" "Last-Translator: tajikfedora \n" -"Language-Team: Tajik (http://www.transifex.net/projects/p/fedora/team/tg/)\n" +"Language-Team: Tajik \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: tg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ../bus/ibus.desktop.in.h:1 -msgid "IBus" +#: ../setup/setup.ui.h:1 +msgid "Horizontal" +msgstr "Уфуқӣ" + +#: ../setup/setup.ui.h:2 +msgid "Vertical" +msgstr "Амудӣ" + +#: ../setup/setup.ui.h:3 +msgid "Top left corner" msgstr "" -#: ../bus/ibus.desktop.in.h:2 -msgid "Input Method Framework" +#: ../setup/setup.ui.h:4 +msgid "Top right corner" msgstr "" -#: ../bus/ibus.desktop.in.h:3 -msgid "Start IBus Input Method Framework" +#: ../setup/setup.ui.h:5 +msgid "Bottom left corner" msgstr "" -#: ../ibus/_config.py.in:40 -msgid "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +#: ../setup/setup.ui.h:6 +msgid "Bottom right corner" msgstr "" -#: ../ibus/lang.py:41 -msgid "Other" -msgstr "Дигар" +#: ../setup/setup.ui.h:7 +msgid "Custom" +msgstr "Танзимот" + +#: ../setup/setup.ui.h:8 +msgid "Do not show" +msgstr "" -#: ../ui/gtk/candidatepanel.py:264 -msgid "Previous page" -msgstr "Саҳифаи пешина" +#: ../setup/setup.ui.h:9 +msgid "Hide automatically" +msgstr "" -#: ../ui/gtk/candidatepanel.py:269 -msgid "Next page" -msgstr "Саҳифаи навбатӣ" +#: ../setup/setup.ui.h:10 +msgid "Always" +msgstr "Ҳамеша" -#: ../ui/gtk/main.py:62 -msgid "" -"Some input methods have been installed, removed or updated. Please restart " -"ibus input platform." +#: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 +msgid "IBus Preferences" msgstr "" -#: ../ui/gtk/main.py:66 -msgid "Restart Now" +#: ../setup/setup.ui.h:12 +msgid "The shortcut keys for switching to next input method in the list" msgstr "" -#: ../ui/gtk/main.py:67 -msgid "Later" -msgstr "Баъдтар" +#: ../setup/setup.ui.h:13 +msgid "Next input method:" +msgstr "" -#: ../ui/gtk/panel.py:116 -msgid "IBus Panel" -msgstr "Лавҳаи IBus" +#: ../setup/setup.ui.h:14 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "" -#: ../ui/gtk/panel.py:122 -msgid "IBus input method framework" +#: ../setup/setup.ui.h:15 +msgid "Previous input method:" msgstr "" -#: ../ui/gtk/panel.py:352 -msgid "Restart" -msgstr "Бозоғозӣ" +#: ../setup/setup.ui.h:16 +msgid "..." +msgstr "..." -#: ../ui/gtk/panel.py:439 -msgid "Turn off input method" +#: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:10 +msgid "The shortcut keys for turning input method on or off" msgstr "" -#: ../ui/gtk/panel.py:478 -msgid "No input window" +#: ../setup/setup.ui.h:18 +msgid "Enable or disable:" msgstr "" -#: ../ui/gtk/panel.py:509 -msgid "IBus is an intelligent input bus for Linux/Unix." -msgstr "" +#: ../setup/setup.ui.h:19 +msgid "Enable:" +msgstr "Фаъолсозӣ:" -#: ../ui/gtk/panel.py:513 -msgid "translator-credits" +#: ../setup/setup.ui.h:20 +msgid "Disable:" +msgstr "Хомӯшкунӣ:" + +#: ../setup/setup.ui.h:21 +msgid "Keyboard Shortcuts" msgstr "" -#: ../ui/gtk/languagebar.py:106 -msgid "About the input method" +#: ../setup/setup.ui.h:22 +msgid "Set the orientation of candidates in lookup table" msgstr "" -#: ../ui/gtk/languagebar.py:214 -msgid "Switch input method" +#: ../setup/setup.ui.h:23 +msgid "Candidates orientation:" msgstr "" -#: ../ui/gtk/languagebar.py:357 ../ui/gtk/engineabout.py:33 -#: ../setup/engineabout.py:33 ../setup/setup.ui.h:16 -msgid "About" -msgstr "Дар бораи" +#: ../setup/setup.ui.h:24 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "" -#: ../ui/gtk/languagebar.py:361 -msgid "About the Input Method" +#: ../setup/setup.ui.h:25 +msgid "Show property panel:" msgstr "" -#: ../ui/gtk/engineabout.py:61 ../setup/engineabout.py:61 -#, python-format -msgid "Language: %s\n" -msgstr "Забон: %s\n" +#: ../setup/setup.ui.h:26 +msgid "Language panel position:" +msgstr "" -#: ../ui/gtk/engineabout.py:63 ../setup/engineabout.py:63 -#, python-format -msgid "Keyboard layout: %s\n" +#: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:30 +msgid "Show icon on system tray" msgstr "" -#: ../ui/gtk/engineabout.py:65 ../setup/engineabout.py:65 -#, python-format -msgid "Author: %s\n" -msgstr "Муаллиф: %s\n" +#: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:32 +msgid "Show input method name on language bar" +msgstr "" -#: ../ui/gtk/engineabout.py:67 ../setup/engineabout.py:67 -msgid "Description:\n" -msgstr "Шарҳ:\n" +#: ../setup/setup.ui.h:29 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "" -#: ../setup/main.py:102 -msgid "trigger" -msgstr "оғоздиҳӣ" +#: ../setup/setup.ui.h:30 +msgid "Embed preedit text in application window" +msgstr "" -#: ../setup/main.py:113 -msgid "enable" -msgstr "фаъол" +#: ../setup/setup.ui.h:31 +msgid "Embed the preedit text of input method in the application window" +msgstr "" -#: ../setup/main.py:124 -msgid "disable" -msgstr "ғайрифаъол" +#: ../setup/setup.ui.h:32 +msgid "Use custom font:" +msgstr "" -#: ../setup/main.py:135 -msgid "next input method" +#: ../setup/setup.ui.h:33 +msgid "Font and Style" msgstr "" -#: ../setup/main.py:146 -msgid "previous input method" +#: ../setup/setup.ui.h:34 +msgid "General" +msgstr "Умумӣ" + +#. add button +#: ../setup/setup.ui.h:35 ../setup/keyboardshortcut.py:127 +msgid "_Add" +msgstr "_Илова кардан" + +#: ../setup/setup.ui.h:36 +msgid "Add the selected input method into the enabled input methods" msgstr "" -#: ../setup/main.py:286 -msgid "IBus daemon is not started. Do you want to start it now?" +#: ../setup/setup.ui.h:37 +msgid "_Remove" +msgstr "_Тоза кардан" + +#: ../setup/setup.ui.h:38 +msgid "Remove the selected input method from the enabled input methods" msgstr "" -#: ../setup/main.py:301 -msgid "" -"IBus has been started! If you can not use IBus, please add below lines in $HOME/.bashrc, and relogin your desktop.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +#: ../setup/setup.ui.h:39 +msgid "_Up" +msgstr "_Боло" + +#: ../setup/setup.ui.h:40 +msgid "Move up the selected input method in the enabled input methods list" msgstr "" -#: ../setup/main.py:316 -#, python-format -msgid "Select keyboard shortcut for %s" +#: ../setup/setup.ui.h:41 +msgid "_Down" +msgstr "_Поён" + +#: ../setup/setup.ui.h:42 +msgid "Move down the selected input method in the enabled input methods" msgstr "" -#: ../setup/keyboardshortcut.py:52 -msgid "Keyboard shortcuts" -msgstr "Миёнбурҳои клавиатура" +#: ../setup/setup.ui.h:43 +msgid "_About" +msgstr "_Дар бораи барнома" -#: ../setup/keyboardshortcut.py:63 -msgid "Key code:" -msgstr "Рамзи тугма:" +#: ../setup/setup.ui.h:44 +msgid "Show information of the selected input method" +msgstr "" -#: ../setup/keyboardshortcut.py:78 -msgid "Modifiers:" +#: ../setup/setup.ui.h:45 +msgid "_Preferences" +msgstr "_Хусусиятҳо" + +#: ../setup/setup.ui.h:46 +msgid "Show setup of the selected input method" msgstr "" -#: ../setup/keyboardshortcut.py:231 +#: ../setup/setup.ui.h:47 msgid "" -"Please press a key (or a key combination).\n" -"The dialog will be closed when the key is released." +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." msgstr "" -#: ../setup/keyboardshortcut.py:233 -msgid "Please press a key (or a key combination)" +#. create im name & icon column +#: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:66 +msgid "Input Method" msgstr "" -#: ../setup/enginecombobox.py:120 -msgid "Select an input method" +#: ../setup/setup.ui.h:49 ../data/ibus.schemas.in.h:33 +msgid "Use system keyboard layout" msgstr "" -#. create im name & icon column -#: ../setup/enginetreeview.py:64 ../setup/setup.ui.h:33 -msgid "Input Method" +#: ../setup/setup.ui.h:50 ../data/ibus.schemas.in.h:34 +msgid "Use system keyboard (XKB) layout" msgstr "" -#: ../setup/enginetreeview.py:92 -msgid "Kbd" -msgstr "Kbd" +#: ../setup/setup.ui.h:51 +msgid "Keyboard Layout" +msgstr "" -#: ../setup/ibus-setup.desktop.in.h:1 ../setup/setup.ui.h:32 -msgid "IBus Preferences" +#: ../setup/setup.ui.h:52 ../data/ibus.schemas.in.h:42 +msgid "Share the same input method among all applications" msgstr "" -#: ../setup/ibus-setup.desktop.in.h:2 -msgid "Set IBus Preferences" +#: ../setup/setup.ui.h:53 +msgid "Global input method settings" msgstr "" +#: ../setup/setup.ui.h:54 +msgid "Advanced" +msgstr "" + +#: ../setup/setup.ui.h:55 +msgid "" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" +msgstr "" + +#: ../setup/setup.ui.h:62 +msgid "Start ibus on login" +msgstr "" + +#: ../setup/setup.ui.h:63 +msgid "Startup" +msgstr "" + +#: ../setup/setup.ui.h:64 ../setup/engineabout.py:34 ../ui/gtk3/panel.vala:736 +msgid "About" +msgstr "Дар бораи" + +#: ../setup/setup.ui.h:65 ../setup/engineabout.py:36 +msgid "_Close" +msgstr "_Пӯшидан" + #: ../data/ibus.schemas.in.h:1 -msgid "Auto hide" -msgstr "Пинҳонкунии худкор" +msgid "Preload engines" +msgstr "" #: ../data/ibus.schemas.in.h:2 -msgid "Custom font" +msgid "Preload engines during ibus starts up" msgstr "" #: ../data/ibus.schemas.in.h:3 -msgid "Custom font name for language panel" +msgid "Engines order" msgstr "" #: ../data/ibus.schemas.in.h:4 -msgid "Disable shortcut keys" +msgid "Saved engines order in input method list" msgstr "" #: ../data/ibus.schemas.in.h:5 -msgid "Embed Preedit Text" +msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: ../data/ibus.schemas.in.h:6 -msgid "Embed Preedit Text in Application Window" +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is " +"400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do " +"not show the window and switch prev/next engines." msgstr "" #: ../data/ibus.schemas.in.h:7 -msgid "Enable input method by default" +msgid "Saved version number" msgstr "" #: ../data/ibus.schemas.in.h:8 -msgid "Enable input method by default when the application gets input focus" +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." msgstr "" #: ../data/ibus.schemas.in.h:9 -msgid "Enable shortcut keys" -msgstr "" - -#: ../data/ibus.schemas.in.h:10 -msgid "Language panel position" +msgid "Trigger shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:11 -msgid "Next engine shortcut keys" +msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: ../data/ibus.schemas.in.h:12 -msgid "Orientation of lookup table" +msgid "Enable shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:13 -msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgid "The shortcut keys for turning input method on" msgstr "" #: ../data/ibus.schemas.in.h:14 -msgid "Preload engines" +msgid "Disable shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:15 -msgid "Preload engines during ibus starts up" +msgid "The shortcut keys for turning input method off" msgstr "" #: ../data/ibus.schemas.in.h:16 -msgid "Prev engine shortcut keys" +msgid "Next engine shortcut keys" msgstr "" -#: ../data/ibus.schemas.in.h:17 ../setup/setup.ui.h:42 -msgid "Share the same input method among all applications" +#: ../data/ibus.schemas.in.h:17 +msgid "The shortcut keys for switching to the next input method in the list" msgstr "" -#: ../data/ibus.schemas.in.h:18 ../setup/setup.ui.h:43 -msgid "Show icon on system tray" +#: ../data/ibus.schemas.in.h:18 +msgid "Prev engine shortcut keys" msgstr "" #: ../data/ibus.schemas.in.h:19 -msgid "Show input method name" +msgid "The shortcut keys for switching to the previous input method" msgstr "" -#: ../data/ibus.schemas.in.h:20 ../setup/setup.ui.h:45 -msgid "Show input method name on language bar" -msgstr "" +#: ../data/ibus.schemas.in.h:20 +msgid "Auto hide" +msgstr "Пинҳонкунии худкор" #: ../data/ibus.schemas.in.h:21 msgid "" -"The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = " -"Always show" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" msgstr "" #: ../data/ibus.schemas.in.h:22 -msgid "" -"The position of the language panel. 0 = Top left corner, 1 = Top right " -"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +msgid "Language panel position" msgstr "" #: ../data/ibus.schemas.in.h:23 -msgid "The shortcut keys for switching to the next input method in the list" +msgid "" +"The position of the language panel. 0 = Top left corner, 1 = Top right " +"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" msgstr "" #: ../data/ibus.schemas.in.h:24 -msgid "The shortcut keys for switching to the previous input method" +msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: ../data/ibus.schemas.in.h:25 -msgid "The shortcut keys for turning input method off" +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." msgstr "" #: ../data/ibus.schemas.in.h:26 -msgid "The shortcut keys for turning input method on" +msgid "The milliseconds to show property panel" msgstr "" -#: ../data/ibus.schemas.in.h:27 ../setup/setup.ui.h:51 -msgid "The shortcut keys for turning input method on or off" +#: ../data/ibus.schemas.in.h:27 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." msgstr "" #: ../data/ibus.schemas.in.h:28 -msgid "Trigger shortcut keys" +msgid "Orientation of lookup table" msgstr "" #: ../data/ibus.schemas.in.h:29 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "" + +#: ../data/ibus.schemas.in.h:31 +msgid "Show input method name" +msgstr "" + +#: ../data/ibus.schemas.in.h:35 msgid "Use custom font" msgstr "" -#: ../data/ibus.schemas.in.h:30 +#: ../data/ibus.schemas.in.h:36 msgid "Use custom font name for language panel" msgstr "" -#: ../data/ibus.schemas.in.h:31 -msgid "Use global input method" +#: ../data/ibus.schemas.in.h:37 +msgid "Custom font" msgstr "" -#: ../data/ibus.schemas.in.h:32 ../setup/setup.ui.h:55 -msgid "Use system keyboard (XKB) layout" +#: ../data/ibus.schemas.in.h:38 +msgid "Custom font name for language panel" msgstr "" -#: ../data/ibus.schemas.in.h:33 ../setup/setup.ui.h:56 -msgid "Use system keyboard layout" +#: ../data/ibus.schemas.in.h:39 +msgid "Embed Preedit Text" msgstr "" -#: ../setup/setup.ui.h:1 -msgid "..." -msgstr "..." +#: ../data/ibus.schemas.in.h:40 +msgid "Embed Preedit Text in Application Window" +msgstr "" -#: ../setup/setup.ui.h:2 -msgid "Font and Style" +#: ../data/ibus.schemas.in.h:41 +msgid "Use global input method" msgstr "" -#: ../setup/setup.ui.h:3 -msgid "Global input method settings" +#: ../data/ibus.schemas.in.h:43 +msgid "Enable input method by default" msgstr "" -#: ../setup/setup.ui.h:4 -msgid "Keyboard Layout" +#: ../data/ibus.schemas.in.h:44 +msgid "Enable input method by default when the application gets input focus" msgstr "" -#: ../setup/setup.ui.h:5 -msgid "Keyboard Shortcuts" +#: ../data/ibus.schemas.in.h:45 +msgid "DConf preserve name prefixes" msgstr "" -#: ../setup/setup.ui.h:6 -msgid "Startup" +#: ../data/ibus.schemas.in.h:46 +msgid "Prefixes of DConf keys to stop name conversion" msgstr "" -#: ../setup/setup.ui.h:7 +#: ../ibus/_config.py.in:41 msgid "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." msgstr "" -#: ../setup/setup.ui.h:14 +#: ../ibus/lang.py:41 ../src/ibusutil.c:150 ../src/ibusutil.c:152 +msgid "Other" +msgstr "Дигар" + +#: ../setup/engineabout.py:68 +#, python-format +msgid "Language: %s\n" +msgstr "Забон: %s\n" + +#: ../setup/engineabout.py:71 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "" + +#: ../setup/engineabout.py:74 +#, python-format +msgid "Author: %s\n" +msgstr "Муаллиф: %s\n" + +#: ../setup/engineabout.py:77 +msgid "Description:\n" +msgstr "Шарҳ:\n" + +#: ../setup/enginecombobox.py:139 +msgid "Select an input method" +msgstr "" + +#: ../setup/enginetreeview.py:94 +msgid "Kbd" +msgstr "Kbd" + +#: ../setup/ibus-setup.desktop.in.h:2 +msgid "Set IBus Preferences" +msgstr "" + +#: ../setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "Миёнбурҳои клавиатура" + +#: ../setup/keyboardshortcut.py:66 +msgid "Key code:" +msgstr "Рамзи тугма:" + +#: ../setup/keyboardshortcut.py:81 +msgid "Modifiers:" +msgstr "" + +#. apply button +#: ../setup/keyboardshortcut.py:133 +msgid "_Apply" +msgstr "_Татбиқ кардан" + +#. delete button +#: ../setup/keyboardshortcut.py:139 +msgid "_Delete" +msgstr "_Нест кардан" + +#: ../setup/keyboardshortcut.py:254 msgid "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." msgstr "" -#: ../setup/setup.ui.h:17 -msgid "Add the selected input method into the enabled input methods" +#: ../setup/keyboardshortcut.py:256 +msgid "Please press a key (or a key combination)" msgstr "" -#: ../setup/setup.ui.h:18 -msgid "Advanced" +#: ../setup/keyboardshortcut.py:338 ../setup/main.py:374 +msgid "_Cancel" +msgstr "_Бекор кардан" + +#: ../setup/keyboardshortcut.py:339 ../setup/main.py:375 +msgid "_OK" +msgstr "_OK" + +#: ../setup/main.py:102 ../setup/main.py:395 +msgid "Use shortcut with shift to switch to the previous input method" msgstr "" -#: ../setup/setup.ui.h:19 -msgid "Always" -msgstr "Ҳамеша" +#: ../setup/main.py:329 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "" -#: ../setup/setup.ui.h:20 -msgid "Bottom left corner" +#: ../setup/main.py:350 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" msgstr "" -#: ../setup/setup.ui.h:21 -msgid "Bottom right corner" +#. Translators: %d == 5 currently +#: ../setup/main.py:364 +#, python-format +msgid "IBus daemon could not be started in %d seconds" msgstr "" -#: ../setup/setup.ui.h:22 -msgid "Candidates orientation:" +#: ../setup/main.py:376 +#, python-format +msgid "Select keyboard shortcut for %s" msgstr "" -#: ../setup/setup.ui.h:23 -msgid "Custom" -msgstr "Танзимот" +#: ../setup/main.py:377 +msgid "switching input methods" +msgstr "" -#: ../setup/setup.ui.h:24 -msgid "Disable:" -msgstr "Хомӯшкунӣ:" +#: ../tools/main.vala:42 +msgid "List engine name only" +msgstr "" -#: ../setup/setup.ui.h:25 -msgid "Embed preedit text in application window" +#: ../tools/main.vala:58 ../tools/main.vala:179 ../tools/main.vala:189 +#, c-format +msgid "Can't connect to IBus.\n" msgstr "" -#: ../setup/setup.ui.h:26 -msgid "Embed the preedit text of input method in the application window" +#: ../tools/main.vala:84 +#, c-format +msgid "language: %s\n" msgstr "" -#: ../setup/setup.ui.h:27 -msgid "Embedded in menu" +#: ../tools/main.vala:152 +#, c-format +msgid "No engine is set.\n" msgstr "" -#: ../setup/setup.ui.h:28 -msgid "Enable or disable:" +#: ../tools/main.vala:160 +#, c-format +msgid "Set global engine failed.\n" msgstr "" -#: ../setup/setup.ui.h:29 -msgid "Enable:" -msgstr "Фаъолсозӣ:" +#: ../tools/main.vala:165 +#, c-format +msgid "Get global engine failed.\n" +msgstr "" -#: ../setup/setup.ui.h:30 -msgid "General" -msgstr "Умумӣ" +#: ../tools/main.vala:204 +msgid "Read the system registry cache." +msgstr "" -#: ../setup/setup.ui.h:31 -msgid "Horizontal" -msgstr "Уфуқӣ" +#: ../tools/main.vala:206 +msgid "Read the registry cache FILE." +msgstr "" -#: ../setup/setup.ui.h:34 -msgid "Language panel position:" +#: ../tools/main.vala:224 ../tools/main.vala:229 +#, c-format +msgid "The registry cache is invalid.\n" msgstr "" -#: ../setup/setup.ui.h:35 -msgid "Move down the selected input method in the enabled input methods" +#: ../tools/main.vala:244 +msgid "Write the system registry cache." msgstr "" -#: ../setup/setup.ui.h:36 -msgid "Move up the selected input method in the enabled input methods list" +#: ../tools/main.vala:246 +msgid "Write the registry cache FILE." msgstr "" -#: ../setup/setup.ui.h:37 -msgid "Next input method:" +#: ../tools/main.vala:293 +msgid "Set or get engine" msgstr "" -#: ../setup/setup.ui.h:38 -msgid "Previous input method:" +#: ../tools/main.vala:294 +msgid "Exit ibus-daemon" msgstr "" -#: ../setup/setup.ui.h:39 -msgid "Remove the selected input method from the enabled input methods" +#: ../tools/main.vala:295 +msgid "Show available engines" msgstr "" -#: ../setup/setup.ui.h:40 -msgid "Set the behavior of ibus how to show or hide language bar" +#: ../tools/main.vala:296 +msgid "(Not implemented)" msgstr "" -#: ../setup/setup.ui.h:41 -msgid "Set the orientation of candidates in lookup table" +#: ../tools/main.vala:297 +msgid "Restart ibus-daemon" msgstr "" -#: ../setup/setup.ui.h:44 -msgid "Show information of the selected input method" +#: ../tools/main.vala:298 +msgid "Show version" msgstr "" -#: ../setup/setup.ui.h:46 -msgid "Show input method's name on language bar when check the checkbox" +#: ../tools/main.vala:299 +msgid "Show the content of registry cache" msgstr "" -#: ../setup/setup.ui.h:47 -msgid "Show language panel:" +#: ../tools/main.vala:300 +msgid "Create registry cache" msgstr "" -#: ../setup/setup.ui.h:48 -msgid "Start ibus on login" +#: ../tools/main.vala:301 +msgid "Print the D-Bus address of ibus-daemon" msgstr "" -#: ../setup/setup.ui.h:49 -msgid "The shortcut keys for switching to next input method in the list" +#: ../tools/main.vala:302 +msgid "Show this information" msgstr "" -#: ../setup/setup.ui.h:50 -msgid "The shortcut keys for switching to previous input method in the list" +#: ../tools/main.vala:308 +#, c-format +msgid "" +"Usage: %s COMMAND [OPTION...]\n" +"\n" msgstr "" -#: ../setup/setup.ui.h:52 -msgid "Top left corner" +#: ../tools/main.vala:309 +#, c-format +msgid "Commands:\n" msgstr "" -#: ../setup/setup.ui.h:53 -msgid "Top right corner" +#: ../tools/main.vala:338 +#, c-format +msgid "%s is unknown command!\n" msgstr "" -#: ../setup/setup.ui.h:54 -msgid "Use custom font:" +#: ../ui/gtk3/panel.vala:425 +msgid "IBus Update" msgstr "" -#: ../setup/setup.ui.h:57 -msgid "Vertical" -msgstr "Амудӣ" +#: ../ui/gtk3/panel.vala:426 ../ui/gtk3/panel.vala:437 +msgid "Super+space is now the default hotkey." +msgstr "" + +#: ../ui/gtk3/panel.vala:707 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "" -#: ../setup/setup.ui.h:58 -msgid "When active" +#: ../ui/gtk3/panel.vala:711 +msgid "translator-credits" msgstr "" +#: ../ui/gtk3/panel.vala:732 +msgid "Preferences" +msgstr "Хусусиятҳо" + +#: ../ui/gtk3/panel.vala:742 +msgid "Restart" +msgstr "Бозоғозӣ" + +#: ../ui/gtk3/panel.vala:746 +msgid "Quit" +msgstr "Хуруҷ" +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ../ui/gtk3/propertypanel.vala:374 +msgid "default:LTR" +msgstr "default:LTR" diff --git a/po/tr.po b/po/tr.po new file mode 100644 index 000000000..142202e0e --- /dev/null +++ b/po/tr.po @@ -0,0 +1,3387 @@ +# Turkish translation of ibus. +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2022 Takao Fujiwara +# This file is distributed under the same license as the ibus package. +# +# Serdar Sağlam , 2019. #zanata +# Oğuz Ersen , 2019, 2020, 2021. +msgid "" +msgstr "" +"Project-Id-Version: ibus 1.5.20\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2020-12-11 16:21+0900\n" +"PO-Revision-Date: 2021-09-19 16:04+0000\n" +"Last-Translator: Oğuz Ersen \n" +"Language-Team: Turkish \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n>1);\n" +"X-Generator: Weblate 4.8\n" + +#. Translators: Here “Preload” is a verb +#: data/dconf/org.freedesktop.ibus.gschema.xml:11 +msgid "Preload engines" +msgstr "Motorları önceden yükle" + +#. Translators: Tooltip for the button “Preload Engines” +#: data/dconf/org.freedesktop.ibus.gschema.xml:13 +msgid "Preload engines during ibus starts up" +msgstr "Ibus başlatılırken motorları önceden yükle" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:17 +msgid "Engines order" +msgstr "Motor sırası" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:18 +msgid "Saved engines order in input method list" +msgstr "Giriş yöntemi listesinde kayıtlı motor sırası" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:22 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "IME değiştirici penceresi için açılır pencere gecikme milisaniyesi" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:23 +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is " +"400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " +"show the window and switch prev/next engines." +msgstr "" +"IME değiştirici penceresini gösterecek açılır pencere gecikmesini milisaniye " +"olarak ayarlayın. Öntanımlı değer 400'dür. 0 = Pencereyi hemen göster. 0 < " +"Milisaniye cinsinden gecikme. 0 > Pencereyi gösterme ve önceki/sonraki " +"motorlara geçiş yap." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:27 +msgid "Saved version number" +msgstr "Kaydedilen sürüm numarası" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:28 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" +"Kaydedilen sürüm numarası, daha önce kurulmuş olan ibus ile mevcut ibus'un " +"biri arasındaki farkı denetlemek için kullanılacaktır." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:32 +msgid "Latin layouts which have no ASCII" +msgstr "ASCII içermeyen Latin düzenleri" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:33 +msgid "US layout is appended to the Latin layouts. variant can be omitted." +msgstr "ABD düzeni Latin düzenlerine eklenir. varyant göz ardı edilebilir." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:37 +msgid "Use xmodmap" +msgstr "xmodmap kullan" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:38 +msgid "" +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." +msgstr "" +"İbus motorları değiştirildiğinde .xmodmap veya .Xmodmap mevcutsa xmodmap " +"komutunu çalıştır." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 +msgid "Use system keyboard layout" +msgstr "Sistem klavye düzenini kullan" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 +msgid "Use system keyboard (XKB) layout" +msgstr "Sistem klavye (XKB) düzenini kullan" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:47 +msgid "Embed Preedit Text" +msgstr "Ön-Düzenleme Metnini Ekle" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:48 +msgid "Embed Preedit Text in Application Window" +msgstr "Uygulama Penceresinde Ön-Düzenleme Metnini Ekle" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:52 +msgid "Use global input method" +msgstr "Global giriş yöntemini kullan" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 +msgid "Share the same input method among all applications" +msgstr "Tüm uygulamalar ile aynı giriş yöntemini paylaş" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:57 +msgid "Enable input method by default" +msgstr "Öntanımlı olarak giriş yöntemini etkinleştir" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:58 +msgid "Enable input method by default when the application gets input focus" +msgstr "" +"Uygulama giriş odağı aldığında öntanımlı olarak giriş yöntemini etkinleştir" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:62 +msgid "DConf preserve name prefixes" +msgstr "DConf isim koruma önekleri" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:63 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "İsim dönüştürmeyi durdurmak için DConf anahtarlarının önekleri" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:70 +msgid "Trigger shortcut keys" +msgstr "Tetikleme kısayol tuşları" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:71 +#: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 +msgid "The shortcut keys for turning input method on or off" +msgstr "Giriş yöntemini açmak veya kapatmak için kısayol tuşları" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:75 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "gtk_accelerator_parse için tetikleme kısayol tuşları" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:80 +msgid "Enable shortcut keys" +msgstr "Etkinleştirme kısayol tuşları" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:81 +msgid "The shortcut keys for turning input method on" +msgstr "Giriş yöntemini açmak için kısayol tuşları" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:85 +msgid "Disable shortcut keys" +msgstr "Devre dışı bırakma kısayol tuşları" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:86 +msgid "The shortcut keys for turning input method off" +msgstr "Giriş yöntemini kapatmak için kısayol tuşları" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:90 +#: data/dconf/org.freedesktop.ibus.gschema.xml:95 +msgid "Next engine shortcut keys" +msgstr "Sonraki motor kısayol tuşları" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:91 +#: data/dconf/org.freedesktop.ibus.gschema.xml:96 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "Listedeki bir sonraki giriş yöntemine geçmek için kısayol tuşları" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:100 +#: data/dconf/org.freedesktop.ibus.gschema.xml:105 +msgid "Prev engine shortcut keys" +msgstr "Önceki motor kısayol tuşları" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:101 +#: data/dconf/org.freedesktop.ibus.gschema.xml:106 +msgid "The shortcut keys for switching to the previous input method" +msgstr "Listedeki bir önceki giriş yöntemine geçmek için kısayol tuşları" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:112 +msgid "Auto hide" +msgstr "Otomatik gizle" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:113 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "" +"Özellik panelinin davranışı. 0 = Gösterme, 1 = Otomatik gizle, 2 = Her zaman " +"göster" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:117 +#: data/dconf/org.freedesktop.ibus.gschema.xml:121 +msgid "Language panel position" +msgstr "Dil panelinin konumu" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:125 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "Panelin her zaman gösterilmesi durumunda giriş imlecini takip et" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:126 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" +"Değer doğruysa, panelin her zaman gösterilmesi durumunda panel giriş " +"imlecini izler. Yanlışsa, panel sabit bir yerde gösterilir." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:130 +msgid "The milliseconds to show property panel" +msgstr "Özellik panelinin gösterileceği milisaniye süresi" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:131 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" +"Odaklanıldığında veya özellikler değiştirildiğinde özellik panelinin " +"gösterileceği milisaniye süresi." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:135 +msgid "Orientation of lookup table" +msgstr "Arama tablosunun yönü" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:136 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "Arama tablosunun yönü: 0 = Yatay, 1 = Dikey" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:140 +#: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 +#: setup/setup.ui:475 +msgid "Show icon on system tray" +msgstr "Simgeyi sistem tepsisinde göster" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:145 +msgid "Show input method name" +msgstr "Giriş yöntemi adını göster" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 +msgid "Show input method name on language bar" +msgstr "Giriş yöntemi adını dil çubuğunda göster" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:150 +msgid "RGBA value of XKB icon" +msgstr "XKB simgesinin RGBA değeri" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:151 +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form 'rgba(r," +"g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 to 255 or " +"percentage values in the range 0% to 100%, and 'a' is a floating point value " +"in the range 0 to 1 of the alpha." +msgstr "" +"XKB simgesi yerleşim dizgesini gösterir ve dizge RGBA değeri ile " +"oluşturulur. RGBA değeri; 1. X11'den bir renk adı, 2. 'r', 'g' ve 'b' " +"kırmızı, yeşil ve mavinin onaltılık basamakları olmak üzere '#rrggbb' " +"şeklinde bir onaltılık değer, 3. 'rgb(r,g,b)' biçimindeki bir RGB rengi veya " +"4. 'r', 'g' ve 'b' 0 ila 255 aralığındaki tam sayılar veya %0 ile %100 " +"aralığındaki yüzde değerleri ve 'a', alfa'nın 0 ile 1 aralığındaki bir " +"ondalık sayı değeri olmak üzere 'rgba(r,g,b,a)' biçimindeki bir RGBA rengi " +"olabilir." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:155 +msgid "The milliseconds to show the panel icon for a property" +msgstr "Bir özellik için panel simgesinin gösterileceği milisaniye süresi" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:156 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" +"Özellik, IBusEngineDesc'deki icon-prop-key değeri ile belirtilirse, motorlar " +"her değiştirildiğinde, panel simgesini motor simgesinden bir özellik " +"simgesine göstermek için milisaniye süresi. Değer 0 ise, gecikme süresi " +"yoktur ve hemen özellik simgesi gösterilir." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:160 +msgid "Use custom font" +msgstr "Özel yazı tipi kullan" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:161 +msgid "Use custom font name for language panel" +msgstr "Dil paneli için özel yazı tipi ismi kullan" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:165 +#: data/dconf/org.freedesktop.ibus.gschema.xml:192 +msgid "Custom font" +msgstr "Özel yazı tipi" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:166 +msgid "Custom font name for language panel" +msgstr "Dil paneli için özel yazı tipi ismi" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:170 setup/setup.ui:1305 +msgid "Choose glyphs with input method's language on candidate window" +msgstr "Aday penceresinde glifleri giriş yönteminin dilinde seçin" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:171 +msgid "" +"Some code points have the different glyphs and Pango determines the glyphs " +"from the language attribute. Pango chooses glyphs from the IBus engine's " +"language if the value is true and choose them from the desktop locale if the " +"value is false." +msgstr "" +"Bazı karakter kodlarının farklı glifleri vardır ve Pango glifleri dil " +"özelliğinden belirlemektedir. Pango, bu değer doğruysa IBus motorunun " +"dilinden, yanlışsa masaüstü yerel ayarından glifleri seçer." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:182 +msgid "Unicode shortcut keys for gtk_accelerator_parse" +msgstr "gtk_accelerator_parse için Unicode kısayol tuşları" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:183 +msgid "The shortcut keys for turning Unicode typing on or off" +msgstr "Unicode yazmayı açmak veya kapatmak için kısayol tuşları" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:187 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "gtk_accelerator_parse için emoji kısayol tuşları" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:188 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "Emoji yazmayı açmak veya kapatmak için kısayol tuşları" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:193 +msgid "Custom font name for emoji characters on emoji dialog" +msgstr "Emoji iletişim kutusundaki emoji karakterleri için özel yazı tipi adı" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:197 +msgid "Default language for emoji dictionary" +msgstr "Emoji sözlüğü için öntanımlı dil" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:198 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict ." +msgstr "" +"Emoji iletişim kutusunda öntanımlı bir emoji sözlük dili seçin. $lang " +"değeri /usr/share/ibus/dicts/emoji-$lang.dict ögesine uygulanır." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:202 +msgid "favorite emoji list on emoji dialog" +msgstr "emoji iletişim kutusundaki favori emoji listesi" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:203 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "" +"Bu listede herhangi bir karakter varsa, favori emojileri emoji listesinde " +"gösterebilirsiniz." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:207 +msgid "favorite emoji annotation list on emoji dialog" +msgstr "emoji iletişim kutusundaki favori emoji ek açıklama listesi" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:208 +msgid "You can assign an annotation for a favorite emoji in this list." +msgstr "Bu listeden favori bir emoji için bir açıklama atayabilirsiniz." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:212 +msgid "Whether emoji annotations can be match partially or not" +msgstr "Emoji ek açıklamalarının kısmen eşleşip eşleşemeyeceği" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:213 +msgid "" +"Whether emoji annotations can be matched with a partial string instead of " +"the exact match or not." +msgstr "" +"Emoji ek açıklamalarının tam eşleme yerine kısmi bir dizge ile eşleşip " +"eşleşemeyeceği." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:217 +msgid "Match emoji annotations with the specified length" +msgstr "Belirtilen uzunluktaki emoji ek açıklamalarıyla eşleştir" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:218 +msgid "" +"Match emoji annotations partially with more than the specified number of " +"characters instead of the exact match." +msgstr "" +"Emoji ek açıklamalarını, tam eşleşme yerine belirtilen sayıda karakterden " +"fazlasıyla kısmen eşleştir." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:222 +msgid "Choose a condition to match emoji annotations partially" +msgstr "Emoji ek açıklamalarını kısmen eşleştirmek için bir koşul seçin" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:223 +msgid "" +"Choose one of the following conditions to match emoji annotations partially: " +"0 == Prefix match, 1 == Suffix match, 2 == Containing match" +msgstr "" +"Emoji ek açıklamalarını kısmen eşleştirmek için aşağıdaki koşullardan birini " +"seçin: 0 == Önek eşlemesi, 1 == Sonek eşleşmesi, 2 == İçerilen eşleşme" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:227 +msgid "Load the emoji data at the time of startup" +msgstr "Emoji verilerini başlatma anında yükle" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:228 +msgid "" +"Load the emoji data at the time of startup if true. About 10MB memory is " +"needed to load the data. Load the emoji data when open the emoji dialog at " +"the beginning if false." +msgstr "" +"Değer doğruysa, emoji verilerini başlatma anında yükle. Verileri yüklemek " +"için yaklaşık 10 MB bellek gerekmektedir. Yanlışsa, emoji verilerini " +"başlangıçta emoji iletişim kutusunu açarken yükle." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:232 +msgid "Load the Unicode data at the time of startup" +msgstr "Unicode verilerini başlatma anında yükle" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:233 +msgid "" +"Load the Unicode data at the time of startup if true. About 15MB memory is " +"needed to load the data. Load the Unicode data when open the emoji dialog at " +"the beginning if false. The Unicode data is always loaded after the emoji " +"data is loaded even if true." +msgstr "" +"Değer doğruysa, Unicode verilerini başlatma anında yükle. Verileri yüklemek " +"için yaklaşık 15 MB bellek gerekmektedir. Yanlışsa, Unicode verilerini " +"başlangıçta emoji iletişim kutusunu açarken yükle. Doğru olsa bile, Unicode " +"verileri, emoji verileri yüklendikten sonra her zaman yüklenir." + +#: ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "" +"Telif Hakkı (c) 2007-2010 Peng Huang\n" +"Telif Hakkı (c) 2007-2010 Red Hat, Inc." + +#: ibus/lang.py:41 src/ibusutil.c:209 +msgid "Other" +msgstr "Diğer" + +#: setup/emojilang.py:67 +msgid "Select a language" +msgstr "Bir dil seç" + +#: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 +#: setup/main.py:560 +msgid "_Cancel" +msgstr "_İptal" + +#: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 +msgid "_OK" +msgstr "_Tamam" + +#: setup/emojilang.py:235 setup/enginedialog.py:205 +msgid "More…" +msgstr "Daha fazla…" + +#: setup/engineabout.py:37 setup/setup.ui:1368 ui/gtk3/panel.vala:1184 +msgid "About" +msgstr "Hakkında" + +#: setup/engineabout.py:40 setup/setup.ui:1391 +msgid "_Close" +msgstr "_Kapat" + +#: setup/engineabout.py:72 +#, python-format +msgid "Language: %s\n" +msgstr "Dil: %s\n" + +#: setup/engineabout.py:75 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "Klavye düzeni: %s\n" + +#: setup/engineabout.py:78 +#, python-format +msgid "Author: %s\n" +msgstr "Yazar: %s\n" + +#: setup/engineabout.py:81 +msgid "Description:\n" +msgstr "Açıklama:\n" + +#: setup/enginecombobox.py:139 setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "Bir giriş yöntemi seç" + +#. add button +#: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 +msgid "_Add" +msgstr "_Ekle" + +#. create im name & icon column +#: setup/enginetreeview.py:69 setup/setup.ui:838 +msgid "Input Method" +msgstr "Giriş Yöntemi" + +#: setup/ibus-setup.desktop:3 setup/setup.ui:69 +msgid "IBus Preferences" +msgstr "IBus Tercihleri" + +#: setup/ibus-setup.desktop:4 +msgid "Set IBus Preferences" +msgstr "IBus Tercihlerini Ayarla" + +#: setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "Klavye kısayolları" + +#: setup/keyboardshortcut.py:67 +msgid "Key code:" +msgstr "Tuş kodu:" + +#: setup/keyboardshortcut.py:82 +msgid "Modifiers:" +msgstr "Değiştiriciler:" + +#. apply button +#: setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "_Uygula" + +#. delete button +#: setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "_Sil" + +#: setup/keyboardshortcut.py:252 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "" +"Lütfen bir tuşa (veya tuş dizisine) basın.\n" +"Tuş serbest bırakıldığında iletişim kutusu kapatılacaktır." + +#: setup/keyboardshortcut.py:255 +msgid "Please press a key (or a key combination)" +msgstr "Lütfen bir tuşa (veya bir tuş dizisine) basın" + +#: setup/main.py:121 setup/main.py:588 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "Önceki giriş yöntemine geçmek için kısayol ile shift tuşunu kullanın" + +#: setup/main.py:515 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "IBus arka plan programı çalışmıyor. Başlatmak ister misiniz?" + +#: setup/main.py:536 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "" +"IBus başlatıldı! IBus'ı kullanamıyorsanız, $HOME/.bashrc dosyanıza aşağıdaki " +"satırları ekleyin; ardından masaüstünüze yeniden giriş yapın.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" + +#. Translators: %d == 5 currently +#: setup/main.py:550 +#, python-format +msgid "IBus daemon could not be started in %d seconds." +msgstr "IBus arka plan programı %d saniye içinde başlatılamadı." + +#: setup/main.py:562 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "%s için klavye kısayolunu seçin" + +#. Translators: Title of the window +#: setup/main.py:564 +msgid "switching input methods" +msgstr "giriş yöntemlerini değiştirme" + +#: setup/setup.ui:11 +msgid "Horizontal" +msgstr "Yatay" + +#: setup/setup.ui:14 +msgid "Vertical" +msgstr "Dikey" + +#: setup/setup.ui:25 +msgid "Top left corner" +msgstr "Sol üst köşe" + +#: setup/setup.ui:28 +msgid "Top right corner" +msgstr "Sağ üst köşe" + +#: setup/setup.ui:31 +msgid "Bottom left corner" +msgstr "Sol alt köşe" + +#: setup/setup.ui:34 +msgid "Bottom right corner" +msgstr "Sağ alt köşe" + +#: setup/setup.ui:37 +msgid "Custom" +msgstr "Özel" + +#: setup/setup.ui:48 +msgid "Do not show" +msgstr "Gösterme" + +#: setup/setup.ui:51 +msgid "Hide automatically" +msgstr "Otomatik gizle" + +#: setup/setup.ui:54 +msgid "Always" +msgstr "Her zaman" + +#: setup/setup.ui:113 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "Listedeki bir sonraki giriş yöntemine geçmek için kısayol tuşları" + +#: setup/setup.ui:115 +msgid "Next input method:" +msgstr "Sonraki giriş yöntemi:" + +#: setup/setup.ui:127 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "Listedeki bir önceki giriş yöntemine geçmek için kısayol tuşları" + +#: setup/setup.ui:129 +msgid "Previous input method:" +msgstr "Önceki giriş yöntemi:" + +#: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 +#: setup/setup.ui:903 setup/setup.ui:957 +msgid "..." +msgstr "..." + +#: setup/setup.ui:226 +msgid "Enable or disable:" +msgstr "Etkinleştir veya devre dışı bırak:" + +#: setup/setup.ui:238 +msgid "Enable:" +msgstr "Etkinleştir:" + +#: setup/setup.ui:291 +msgid "Disable:" +msgstr "Devre dışı bırak:" + +#: setup/setup.ui:345 setup/setup.ui:983 +msgid "Keyboard Shortcuts" +msgstr "Klavye Kısayolları" + +#: setup/setup.ui:374 +msgid "Set the orientation of candidates in lookup table" +msgstr "Arama tablosunda adayların yönünü ayarla" + +#: setup/setup.ui:376 +msgid "Candidates orientation:" +msgstr "Adayların yönü:" + +#: setup/setup.ui:407 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "Ibus'un dil çubuğunun nasıl gösterileceğini veya gizleneceğini ayarla" + +#: setup/setup.ui:409 +msgid "Show property panel:" +msgstr "Özellik panelini göster:" + +#: setup/setup.ui:423 +msgid "Language panel position:" +msgstr "Dil panelinin konumu:" + +#: setup/setup.ui:494 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "Onay kutusunu işaretlerken giriş yönteminin adını dil çubuğunda göster" + +#: setup/setup.ui:508 +msgid "Embed preedit text in application window" +msgstr "Uygulama penceresinde ön-düzenleme metnini ekle" + +#: setup/setup.ui:513 +msgid "Embed the preedit text of input method in the application window" +msgstr "Uygulama penceresinde, giriş yönteminin ön-düzenleme metnini ekle" + +#: setup/setup.ui:527 +msgid "Use custom font:" +msgstr "Özel yazı tipi kullan:" + +#: setup/setup.ui:562 setup/setup.ui:1156 +msgid "Font and Style" +msgstr "Yazı Tipi ve Stil" + +#: setup/setup.ui:579 +msgid "General" +msgstr "Genel" + +#: setup/setup.ui:671 +msgid "Add the selected input method into the enabled input methods" +msgstr "Seçilen giriş yöntemini etkin giriş yöntemlerine ekle" + +#: setup/setup.ui:682 +msgid "_Remove" +msgstr "_Kaldır" + +#: setup/setup.ui:689 +msgid "Remove the selected input method from the enabled input methods" +msgstr "Seçilen giriş yöntemini etkin giriş yöntemlerinden kaldır" + +#: setup/setup.ui:700 +msgid "_Up" +msgstr "_Yukarı" + +#: setup/setup.ui:707 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "Seçilen giriş yöntemini etkin giriş yöntemleri listesinde yukarı taşı" + +#: setup/setup.ui:718 +msgid "_Down" +msgstr "_Aşağı" + +#: setup/setup.ui:725 +msgid "Move down the selected input method in the enabled input methods" +msgstr "Seçilen giriş yöntemini etkin giriş yöntemleri listesinde aşağı taşı" + +#: setup/setup.ui:736 +msgid "_About" +msgstr "_Hakkında" + +#: setup/setup.ui:743 +msgid "Show information of the selected input method" +msgstr "Seçilen giriş yönteminin bilgilerini göster" + +#: setup/setup.ui:754 +msgid "_Preferences" +msgstr "_Tercihler" + +#: setup/setup.ui:761 +msgid "Show setup of the selected input method" +msgstr "Seçilen giriş yönteminin ayarlarını göster" + +#: setup/setup.ui:812 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" +"Etkin giriş yöntemi, klavye kısayol tuşlarına basarak veya panel " +"simgesine tıklayarak yukarıdaki listede seçilenler arasında değiştirilebilir." +"" + +#: setup/setup.ui:873 +msgid "" +"The shortcut keys to enable conversions of emoji annotations or Unicode names" +msgstr "" +"Emoji ek açıklamalarının veya Unicode isimlerinin dönüşümlerini " +"etkinleştirmek için kısayol tuşları" + +#: setup/setup.ui:875 +msgid "Emoji annotation:" +msgstr "Emoji ek açıklaması:" + +#: setup/setup.ui:927 +msgid "The shortcut keys to enable Unicode code point conversions" +msgstr "Unicode kod noktası dönüşümlerini etkinleştirmek için kısayol tuşları" + +#: setup/setup.ui:929 +msgid "Unicode code point:" +msgstr "Unicode kod noktası:" + +#: setup/setup.ui:1013 +msgid "Set a font of Unicode candidates on the emoji dialog" +msgstr "Emoji iletişim kutusunda Unicode adaylarının yazı tipini ayarla" + +#: setup/setup.ui:1015 +msgid "Unicode font:" +msgstr "Unicode yazı tipi:" + +#: setup/setup.ui:1038 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "Emoji iletişim kutusunda emoji ek açıklamalarının dilini ayarla" + +#: setup/setup.ui:1040 +msgid "Emoji annotation language:" +msgstr "Emoji ek açıklaması dili:" + +#: setup/setup.ui:1062 +msgid "" +"Match emoji annotations partially with the following condition and more than " +"the number of characters:" +msgstr "" +"Emoji ek açıklamalarını kısmen aşağıdaki koşulla ve karakter sayısından daha " +"fazlasıyla eşleştir:" + +#: setup/setup.ui:1067 +msgid "" +"If emoji annotations can be matched with a partial string instead of the " +"exact match" +msgstr "" +"Emoji ek açıklamalarının tam eşleşme yerine kısmi bir dizge ile eşleşip " +"eşleşemeyeceği" + +#: setup/setup.ui:1101 +msgid "Prefix match" +msgstr "Önek eşleşmesi" + +#: setup/setup.ui:1115 +msgid "Suffix match" +msgstr "Sonek eşleşmesi" + +#: setup/setup.ui:1130 +msgid "Containing match" +msgstr "Eşleşme içeren" + +#: setup/setup.ui:1176 +msgid "Emoji" +msgstr "Emoji" + +#: setup/setup.ui:1230 +msgid "Keyboard Layout" +msgstr "Klavye Düzeni" + +#: setup/setup.ui:1278 +msgid "Global input method settings" +msgstr "Global giriş yöntemi ayarları" + +#: setup/setup.ui:1310 +msgid "" +"Choose glyphs with the input method's language on the candidate window for " +"the duplicated code points" +msgstr "" +"Yinelenen karakter kodları için aday penceresinde glifleri giriş yönteminin " +"dilinde seçin" + +#: setup/setup.ui:1327 +msgid "Fonts" +msgstr "Yazı Tipleri" + +#: setup/setup.ui:1347 +msgid "Advanced" +msgstr "Gelişmiş" + +#: src/ibusemojigen.h:30 +msgid "Activities" +msgstr "Aktiviteler" + +#: src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "Hayvanlar & Doğa" + +#: src/ibusemojigen.h:32 +msgid "Component" +msgstr "Bileşen" + +#: src/ibusemojigen.h:33 +msgid "Flags" +msgstr "Bayraklar" + +#: src/ibusemojigen.h:34 +msgid "Food & Drink" +msgstr "Yiyecek & İçecek" + +#: src/ibusemojigen.h:35 +msgid "Objects" +msgstr "Nesneler" + +#: src/ibusemojigen.h:36 +msgid "People & Body" +msgstr "İnsanlar & Vücut" + +#: src/ibusemojigen.h:37 +msgid "Smileys & Emotion" +msgstr "Gülüşler & Duygular" + +#: src/ibusemojigen.h:38 +msgid "Symbols" +msgstr "Semboller" + +#: src/ibusemojigen.h:39 +msgid "Travel & Places" +msgstr "Seyahat & Yerler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:33 +msgid "Basic Latin" +msgstr "Temel Latin" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:37 +msgid "Latin-1 Supplement" +msgstr "Latin-1 İlave" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:41 +msgid "Latin Extended-A" +msgstr "Latin Genişletilmiş-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:45 +msgid "Latin Extended-B" +msgstr "Latin Genişletilmiş-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:49 +msgid "IPA Extensions" +msgstr "IPA Uzantıları" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:53 +msgid "Spacing Modifier Letters" +msgstr "Boşluk Değiştirici Harfler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:57 +msgid "Combining Diacritical Marks" +msgstr "Birleşik Aksan İşaretleri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:61 +msgid "Greek and Coptic" +msgstr "Yunan ve Kıpti" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:65 +msgid "Cyrillic" +msgstr "Kiril" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:69 +msgid "Cyrillic Supplement" +msgstr "Kiril İlave" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:73 +msgid "Armenian" +msgstr "Ermeni" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:77 +msgid "Hebrew" +msgstr "İbrani" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:81 +msgid "Arabic" +msgstr "Arap" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:85 +msgid "Syriac" +msgstr "Süryani" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:89 +msgid "Arabic Supplement" +msgstr "Arap İlave" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:93 +msgid "Thaana" +msgstr "Thaana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:97 +msgid "NKo" +msgstr "NKo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:101 +msgid "Samaritan" +msgstr "Samiriyeli" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:105 +msgid "Mandaic" +msgstr "Mandaik" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:109 +msgid "Syriac Supplement" +msgstr "Süryani İlave" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:113 +msgid "Arabic Extended-A" +msgstr "Arap Genişletilmiş-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:117 +msgid "Devanagari" +msgstr "Devanagari" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:121 +msgid "Bengali" +msgstr "Bengal" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:125 +msgid "Gurmukhi" +msgstr "Gurmuki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:129 +msgid "Gujarati" +msgstr "Gujarati" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:133 +msgid "Oriya" +msgstr "Oriya" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:137 +msgid "Tamil" +msgstr "Tamil" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:141 +msgid "Telugu" +msgstr "Telugu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:145 +msgid "Kannada" +msgstr "Kannada" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:149 +msgid "Malayalam" +msgstr "Malayalam" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:153 +msgid "Sinhala" +msgstr "Sinhala" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:157 +msgid "Thai" +msgstr "Tayland" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:161 +msgid "Lao" +msgstr "Lao" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:165 +msgid "Tibetan" +msgstr "Tibet" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:169 +msgid "Myanmar" +msgstr "Myanmar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:173 +msgid "Georgian" +msgstr "Gürcü" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:177 +msgid "Hangul Jamo" +msgstr "Hangul Jamo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:181 +msgid "Ethiopic" +msgstr "Etiyopya" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:185 +msgid "Ethiopic Supplement" +msgstr "Etiyopya İlave" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:189 +msgid "Cherokee" +msgstr "Cherokee" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:193 +msgid "Unified Canadian Aboriginal Syllabics" +msgstr "Birleşik Kanada Yerli Heceleri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:197 +msgid "Ogham" +msgstr "Ogham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:201 +msgid "Runic" +msgstr "Runik" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:205 +msgid "Tagalog" +msgstr "Tagalog" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:209 +msgid "Hanunoo" +msgstr "Hanunoo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:213 +msgid "Buhid" +msgstr "Buhid" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:217 +msgid "Tagbanwa" +msgstr "Tagbanwa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:221 +msgid "Khmer" +msgstr "Kmer" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:225 +msgid "Mongolian" +msgstr "Moğol" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:229 +msgid "Unified Canadian Aboriginal Syllabics Extended" +msgstr "Birleşik Kanada Yerli Heceleri Genişletilmiş" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:233 +msgid "Limbu" +msgstr "Limbu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:237 +msgid "Tai Le" +msgstr "Tai Le" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:241 +msgid "New Tai Lue" +msgstr "Yeni Tai Lue" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:245 +msgid "Khmer Symbols" +msgstr "Kmer Sembolleri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:249 +msgid "Buginese" +msgstr "Bugis" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:253 +msgid "Tai Tham" +msgstr "Tai Tham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:257 +msgid "Combining Diacritical Marks Extended" +msgstr "Birleşik Aksan İşaretleri Genişletilmiş" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:261 +msgid "Balinese" +msgstr "Bali" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:265 +msgid "Sundanese" +msgstr "Sunda" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:269 +msgid "Batak" +msgstr "Batak" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:273 +msgid "Lepcha" +msgstr "Lepcha" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:277 +msgid "Ol Chiki" +msgstr "Ol Chiki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:281 +msgid "Cyrillic Extended-C" +msgstr "Kiril Genişletilmiş-C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:285 +msgid "Georgian Extended" +msgstr "Gürcü Genişletilmiş" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:289 +msgid "Sundanese Supplement" +msgstr "Sunda İlave" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:293 +msgid "Vedic Extensions" +msgstr "Vedik Uzantılar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:297 +msgid "Phonetic Extensions" +msgstr "Fonetik Uzantılar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:301 +msgid "Phonetic Extensions Supplement" +msgstr "Fonetik Uzantılar İlave" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:305 +msgid "Combining Diacritical Marks Supplement" +msgstr "Birleşik Aksan İşaretleri İlave" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:309 +msgid "Latin Extended Additional" +msgstr "Latin Genişletilmiş Ek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:313 +msgid "Greek Extended" +msgstr "Yunan Genişletilmiş" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:317 +msgid "General Punctuation" +msgstr "Genel Noktalama İşaretleri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:321 +msgid "Superscripts and Subscripts" +msgstr "Üst Simgeler ve Alt Simgeler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:325 +msgid "Currency Symbols" +msgstr "Para Birimi Sembolleri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:329 +msgid "Combining Diacritical Marks for Symbols" +msgstr "Semboller için Birleşik Aksan İşaretleri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:333 +msgid "Letterlike Symbols" +msgstr "Harf Benzeri Semboller" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:337 +msgid "Number Forms" +msgstr "Sayı Biçimleri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:341 +msgid "Arrows" +msgstr "Oklar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:345 +msgid "Mathematical Operators" +msgstr "Matematiksel Operatörler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:349 +msgid "Miscellaneous Technical" +msgstr "Çeşitli Teknik" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:353 +msgid "Control Pictures" +msgstr "Denetim Resimleri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:357 +msgid "Optical Character Recognition" +msgstr "Optik Karakter Tanıma" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:361 +msgid "Enclosed Alphanumerics" +msgstr "Kapalı Alfasayısal" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:365 +msgid "Box Drawing" +msgstr "Kutu Çizimi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:369 +msgid "Block Elements" +msgstr "Blok Elemanları" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:373 +msgid "Geometric Shapes" +msgstr "Geometrik Şekiller" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:377 +msgid "Miscellaneous Symbols" +msgstr "Çeşitli Semboller" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:381 +msgid "Dingbats" +msgstr "Dingbat'ler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:385 +msgid "Miscellaneous Mathematical Symbols-A" +msgstr "Çeşitli Matematiksel Semboller-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:389 +msgid "Supplemental Arrows-A" +msgstr "İlave Oklar-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:393 +msgid "Braille Patterns" +msgstr "Braille Desenleri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:397 +msgid "Supplemental Arrows-B" +msgstr "İlave Oklar-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:401 +msgid "Miscellaneous Mathematical Symbols-B" +msgstr "Çeşitli Matematiksel Semboller-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:405 +msgid "Supplemental Mathematical Operators" +msgstr "İlave Matematiksel Operatörler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:409 +msgid "Miscellaneous Symbols and Arrows" +msgstr "Çeşitli Semboller ve Oklar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:413 +msgid "Glagolitic" +msgstr "Glagolitik" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:417 +msgid "Latin Extended-C" +msgstr "Latin Genişletilmiş-C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:421 +msgid "Coptic" +msgstr "Kıpti" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:425 +msgid "Georgian Supplement" +msgstr "Gürcü İlave" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:429 +msgid "Tifinagh" +msgstr "Tifinagh" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:433 +msgid "Ethiopic Extended" +msgstr "Etiyopya Genişletilmiş" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:437 +msgid "Cyrillic Extended-A" +msgstr "Kiril Genişletilmiş-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:441 +msgid "Supplemental Punctuation" +msgstr "İlave Noktalama İşaretleri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:445 +msgid "CJK Radicals Supplement" +msgstr "CJK Radikaller İlave" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:449 +msgid "Kangxi Radicals" +msgstr "Kangxi Radikaller" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:453 +msgid "Ideographic Description Characters" +msgstr "İdeografik Açıklama Karakterleri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:457 +msgid "CJK Symbols and Punctuation" +msgstr "CJK Sembolleri ve Noktalama İşaretleri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:461 +msgid "Hiragana" +msgstr "Hiragana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:465 +msgid "Katakana" +msgstr "Katakana" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:469 +msgid "Bopomofo" +msgstr "Bopomofo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:473 +msgid "Hangul Compatibility Jamo" +msgstr "Hangul Uyumlu Jamo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:477 +msgid "Kanbun" +msgstr "Kanbun" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:481 +msgid "Bopomofo Extended" +msgstr "Bopomofo Genişletilmiş" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:485 +msgid "CJK Strokes" +msgstr "CJK Çizgileri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:489 +msgid "Katakana Phonetic Extensions" +msgstr "Katakana Fonetik Uzantılar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:493 +msgid "Enclosed CJK Letters and Months" +msgstr "Kapalı CJK Harfleri ve Ayları" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:497 +msgid "CJK Compatibility" +msgstr "CJK Uyumluluğu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:501 +msgid "CJK Unified Ideographs Extension A" +msgstr "CJK Birleşik İdeograflar Uzantı A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:505 +msgid "Yijing Hexagram Symbols" +msgstr "Yijing Altıgen Sembolleri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:509 +msgid "CJK Unified Ideographs" +msgstr "CJK Birleşik İdeograflar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:513 +msgid "Yi Syllables" +msgstr "Yi Heceleri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:517 +msgid "Yi Radicals" +msgstr "Yi Radikaller" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:521 +msgid "Lisu" +msgstr "Lisu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:525 +msgid "Vai" +msgstr "Vai" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:529 +msgid "Cyrillic Extended-B" +msgstr "Kiril Genişletilmiş-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:533 +msgid "Bamum" +msgstr "Bamum" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:537 +msgid "Modifier Tone Letters" +msgstr "Değiştirici Ton Harfleri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:541 +msgid "Latin Extended-D" +msgstr "Latin Genişletilmiş-D" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:545 +msgid "Syloti Nagri" +msgstr "Syloti Nagri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:549 +msgid "Common Indic Number Forms" +msgstr "Ortak Hint Sayı Biçimleri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:553 +msgid "Phags-pa" +msgstr "Phags-pa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:557 +msgid "Saurashtra" +msgstr "Saurashtra" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:561 +msgid "Devanagari Extended" +msgstr "Devanagari Genişletilmiş" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:565 +msgid "Kayah Li" +msgstr "Kayah Li" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:569 +msgid "Rejang" +msgstr "Rejang" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:573 +msgid "Hangul Jamo Extended-A" +msgstr "Hangul Jamo Genişletilmiş-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:577 +msgid "Javanese" +msgstr "Cava" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:581 +msgid "Myanmar Extended-B" +msgstr "Myanmar Genişletilmiş-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:585 +msgid "Cham" +msgstr "Cham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:589 +msgid "Myanmar Extended-A" +msgstr "Myanmar Genişletilmiş-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:593 +msgid "Tai Viet" +msgstr "Tai Viet" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:597 +msgid "Meetei Mayek Extensions" +msgstr "Meetei Mayek Uzantılar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:601 +msgid "Ethiopic Extended-A" +msgstr "Etiyopya Genişletilmiş-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:605 +msgid "Latin Extended-E" +msgstr "Latin Genişletilmiş-E" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:609 +msgid "Cherokee Supplement" +msgstr "Cherokee İlave" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:613 +msgid "Meetei Mayek" +msgstr "Meetei Mayek" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:617 +msgid "Hangul Syllables" +msgstr "Hangul Heceleri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:621 +msgid "Hangul Jamo Extended-B" +msgstr "Hangul Jamo Genişletilmiş-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:625 +msgid "High Surrogates" +msgstr "Yüksek Temsilciler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:629 +msgid "High Private Use Surrogates" +msgstr "Yüksek Özel Kullanımlı Temsilciler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:633 +msgid "Low Surrogates" +msgstr "Düşük Temsilciler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:637 +msgid "Private Use Area" +msgstr "Özel Kullanım Alanı" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:641 +msgid "CJK Compatibility Ideographs" +msgstr "CJK Uyumluluk İdeografları" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:645 +msgid "Alphabetic Presentation Forms" +msgstr "Alfabetik Sunum Biçimleri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:649 +msgid "Arabic Presentation Forms-A" +msgstr "Arapça Sunum Biçimleri-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:653 +msgid "Variation Selectors" +msgstr "Varyasyon Seçiciler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:657 +msgid "Vertical Forms" +msgstr "Dikey Biçimler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:661 +msgid "Combining Half Marks" +msgstr "Birleşik Yarım İşaretler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:665 +msgid "CJK Compatibility Forms" +msgstr "CJK Uyumluluk Biçimleri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:669 +msgid "Small Form Variants" +msgstr "Küçük Biçimli Çeşitleri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:673 +msgid "Arabic Presentation Forms-B" +msgstr "Arapça Sunum Biçimleri-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:677 +msgid "Halfwidth and Fullwidth Forms" +msgstr "Yarım ve Tam Genişlik Biçimleri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:681 +msgid "Specials" +msgstr "Özel Karakterler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:685 +msgid "Linear B Syllabary" +msgstr "Doğrusal B Heceler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:689 +msgid "Linear B Ideograms" +msgstr "Doğrusal B İdeogramlar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:693 +msgid "Aegean Numbers" +msgstr "Ege Sayıları" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:697 +msgid "Ancient Greek Numbers" +msgstr "Antik Yunan Sayıları" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:701 +msgid "Ancient Symbols" +msgstr "Antik Semboller" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:705 +msgid "Phaistos Disc" +msgstr "Phaistos Diski" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:709 +msgid "Lycian" +msgstr "Likya" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:713 +msgid "Carian" +msgstr "Karya" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:717 +msgid "Coptic Epact Numbers" +msgstr "Kıpti Epakt Sayıları" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:721 +msgid "Old Italic" +msgstr "Eski İtalik" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:725 +msgid "Gothic" +msgstr "Gotik" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:729 +msgid "Old Permic" +msgstr "Eski Permik" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:733 +msgid "Ugaritic" +msgstr "Ugarit" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:737 +msgid "Old Persian" +msgstr "Eski Fars" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:741 +msgid "Deseret" +msgstr "Deseret" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:745 +msgid "Shavian" +msgstr "Shavian" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:749 +msgid "Osmanya" +msgstr "Osmanya" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:753 +msgid "Osage" +msgstr "Osage" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:757 +msgid "Elbasan" +msgstr "Elbasan" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:761 +msgid "Caucasian Albanian" +msgstr "Kafkas Arnavut" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:765 +msgid "Linear A" +msgstr "Doğrusal A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:769 +msgid "Cypriot Syllabary" +msgstr "Kıbrıs Heceler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:773 +msgid "Imperial Aramaic" +msgstr "İmparatorluk Aramice" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:777 +msgid "Palmyrene" +msgstr "Palmira" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:781 +msgid "Nabataean" +msgstr "Nebati" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:785 +msgid "Hatran" +msgstr "Hatran" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:789 +msgid "Phoenician" +msgstr "Fenike" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:793 +msgid "Lydian" +msgstr "Lidya" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:797 +msgid "Meroitic Hieroglyphs" +msgstr "Meroitik Hiyeroglifler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:801 +msgid "Meroitic Cursive" +msgstr "Meroitik El Yazısı" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:805 +msgid "Kharoshthi" +msgstr "Kharoshthi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:809 +msgid "Old South Arabian" +msgstr "Eski Güney Arap" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:813 +msgid "Old North Arabian" +msgstr "Eski Kuzey Arap" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:817 +msgid "Manichaean" +msgstr "Mani" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:821 +msgid "Avestan" +msgstr "Avestan" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:825 +msgid "Inscriptional Parthian" +msgstr "Kitabe Parthia" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:829 +msgid "Inscriptional Pahlavi" +msgstr "Kitabe Pehlevi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:833 +msgid "Psalter Pahlavi" +msgstr "Mezmur Pehlevi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:837 +msgid "Old Turkic" +msgstr "Eski Türk" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:841 +msgid "Old Hungarian" +msgstr "Eski Macar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:845 +msgid "Hanifi Rohingya" +msgstr "Hanifi Rohingya" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:849 +msgid "Rumi Numeral Symbols" +msgstr "Rumi Sayısal Semboller" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:853 +msgid "Yezidi" +msgstr "Yezidi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:857 +msgid "Old Sogdian" +msgstr "Eski Soğd" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:861 +msgid "Sogdian" +msgstr "Soğd" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:865 +msgid "Chorasmian" +msgstr "Harezmce" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:869 +msgid "Elymaic" +msgstr "Elam" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:873 +msgid "Brahmi" +msgstr "Brahmi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:877 +msgid "Kaithi" +msgstr "Kaithi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:881 +msgid "Sora Sompeng" +msgstr "Sora Sompeng" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:885 +msgid "Chakma" +msgstr "Chakma" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:889 +msgid "Mahajani" +msgstr "Mahajani" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:893 +msgid "Sharada" +msgstr "Sharada" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:897 +msgid "Sinhala Archaic Numbers" +msgstr "Sinhala Arkaik Sayıları" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:901 +msgid "Khojki" +msgstr "Khojki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:905 +msgid "Multani" +msgstr "Multani" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:909 +msgid "Khudawadi" +msgstr "Khudawadi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:913 +msgid "Grantha" +msgstr "Grantha" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:917 +msgid "Newa" +msgstr "Newa" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:921 +msgid "Tirhuta" +msgstr "Tirhuta" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:925 +msgid "Siddham" +msgstr "Siddham" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:929 +msgid "Modi" +msgstr "Modi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:933 +msgid "Mongolian Supplement" +msgstr "Moğol İlave" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:937 +msgid "Takri" +msgstr "Takri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:941 +msgid "Ahom" +msgstr "Ahom" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:945 +msgid "Dogra" +msgstr "Dogra" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:949 +msgid "Warang Citi" +msgstr "Warang Citi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:953 +msgid "Dives Akuru" +msgstr "Dives Akuru" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:957 +msgid "Nandinagari" +msgstr "Nandinagari" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:961 +msgid "Zanabazar Square" +msgstr "Zanabazar Kare" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:965 +msgid "Soyombo" +msgstr "Soyombo" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:969 +msgid "Pau Cin Hau" +msgstr "Pau Cin Hau" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:973 +msgid "Bhaiksuki" +msgstr "Bhaiksuki" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:977 +msgid "Marchen" +msgstr "Marchen" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:981 +msgid "Masaram Gondi" +msgstr "Masaram Gondi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:985 +msgid "Gunjala Gondi" +msgstr "Gunjala Gondi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:989 +msgid "Makasar" +msgstr "Makasar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:993 +msgid "Lisu Supplement" +msgstr "Lisu İlave" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:997 +msgid "Tamil Supplement" +msgstr "Tamil İlave" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1001 +msgid "Cuneiform" +msgstr "Çivi Yazısı" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1005 +msgid "Cuneiform Numbers and Punctuation" +msgstr "Çivi Yazısı Sayılar ve Noktalama İşaretleri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1009 +msgid "Early Dynastic Cuneiform" +msgstr "Erken Hanedan Çivi Yazısı" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1013 +msgid "Egyptian Hieroglyphs" +msgstr "Mısır Hiyeroglifleri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1017 +msgid "Egyptian Hieroglyph Format Controls" +msgstr "Mısır Hiyeroglif Biçim Denetimleri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1021 +msgid "Anatolian Hieroglyphs" +msgstr "Anadolu Hiyeroglifleri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1025 +msgid "Bamum Supplement" +msgstr "Bamum İlave" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1029 +msgid "Mro" +msgstr "Mro" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1033 +msgid "Bassa Vah" +msgstr "Bassa Vah" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1037 +msgid "Pahawh Hmong" +msgstr "Pahawh Hmong" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1041 +msgid "Medefaidrin" +msgstr "Medefaidrin" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1045 +msgid "Miao" +msgstr "Miao" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1049 +msgid "Ideographic Symbols and Punctuation" +msgstr "İdeografik Semboller ve Noktalama İşaretleri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1053 +msgid "Tangut" +msgstr "Tangut" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1057 +msgid "Tangut Components" +msgstr "Tangut Bileşenler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1061 +msgid "Khitan Small Script" +msgstr "Küçük Hitay Alfabesi" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1065 +msgid "Tangut Supplement" +msgstr "Tangut İlave" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1069 +msgid "Kana Supplement" +msgstr "Kana İlave" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1073 +msgid "Kana Extended-A" +msgstr "Kana Genişletilmiş-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1077 +msgid "Small Kana Extension" +msgstr "Küçük Kana Uzantı" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1081 +msgid "Nushu" +msgstr "Nushu" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1085 +msgid "Duployan" +msgstr "Duployan" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1089 +msgid "Shorthand Format Controls" +msgstr "Steno Biçim Denetimleri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1093 +msgid "Byzantine Musical Symbols" +msgstr "Bizans Müzik Sembolleri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1097 +msgid "Musical Symbols" +msgstr "Müzik Sembolleri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1101 +msgid "Ancient Greek Musical Notation" +msgstr "Antik Yunan Müzik Notaları" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1105 +msgid "Mayan Numerals" +msgstr "Maya Rakamları" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1109 +msgid "Tai Xuan Jing Symbols" +msgstr "Tai Xuan Jing Sembolleri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1113 +msgid "Counting Rod Numerals" +msgstr "Sayma Çubuğu Sayıları" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1117 +msgid "Mathematical Alphanumeric Symbols" +msgstr "Matematiksel Alfasayısal Semboller" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1121 +msgid "Sutton SignWriting" +msgstr "Sutton İşaret Yazısı" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1125 +msgid "Glagolitic Supplement" +msgstr "Glagolitik İlave" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1129 +msgid "Nyiakeng Puachue Hmong" +msgstr "Nyiakeng Puachue Hmong" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1133 +msgid "Wancho" +msgstr "Wancho" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1137 +msgid "Mende Kikakui" +msgstr "Mende Kikakui" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1141 +msgid "Adlam" +msgstr "Adlam" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1145 +msgid "Indic Siyaq Numbers" +msgstr "Hint Siyaq Sayıları" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1149 +msgid "Ottoman Siyaq Numbers" +msgstr "Osmanlı Siyaq Sayıları" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1153 +msgid "Arabic Mathematical Alphabetic Symbols" +msgstr "Arapça Matematiksel Alfabetik Semboller" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1157 +msgid "Mahjong Tiles" +msgstr "Mahjong Taşları" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1161 +msgid "Domino Tiles" +msgstr "Domino Taşları" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1165 +msgid "Playing Cards" +msgstr "İskambil Kağıtları" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1169 +msgid "Enclosed Alphanumeric Supplement" +msgstr "Kapalı Alfasayısal İlave" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1173 +msgid "Enclosed Ideographic Supplement" +msgstr "Kapalı İdeografik İlave" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1177 +msgid "Miscellaneous Symbols and Pictographs" +msgstr "Çeşitli Semboller ve Piktograflar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1181 +msgid "Emoticons" +msgstr "İfadeler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1185 +msgid "Ornamental Dingbats" +msgstr "Süsleme Dingbat'leri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1189 +msgid "Transport and Map Symbols" +msgstr "Ulaşım ve Harita Sembolleri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1193 +msgid "Alchemical Symbols" +msgstr "Simya Sembolleri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1197 +msgid "Geometric Shapes Extended" +msgstr "Geometrik Şekiller Genişletilmiş" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1201 +msgid "Supplemental Arrows-C" +msgstr "İlave Oklar-C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1205 +msgid "Supplemental Symbols and Pictographs" +msgstr "İlave Semboller ve Piktograflar" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1209 +msgid "Chess Symbols" +msgstr "Satranç Sembolleri" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1213 +msgid "Symbols and Pictographs Extended-A" +msgstr "Semboller ve Piktograflar Genişletilmiş-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1217 +msgid "Symbols for Legacy Computing" +msgstr "Eski Bilgisayarlar için Semboller" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1221 +msgid "CJK Unified Ideographs Extension B" +msgstr "CJK Birleşik İdeograflar Uzantı B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1225 +msgid "CJK Unified Ideographs Extension C" +msgstr "CJK Birleşik İdeograflar Uzantı C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1229 +msgid "CJK Unified Ideographs Extension D" +msgstr "CJK Birleşik İdeograflar Uzantı D" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1233 +msgid "CJK Unified Ideographs Extension E" +msgstr "CJK Birleşik İdeograflar Uzantı E" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1237 +msgid "CJK Unified Ideographs Extension F" +msgstr "CJK Birleşik İdeograflar Uzantı F" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1241 +msgid "CJK Compatibility Ideographs Supplement" +msgstr "CJK Uyumluluk İdeografları İlave" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1245 +msgid "CJK Unified Ideographs Extension G" +msgstr "CJK Birleşik İdeograflar Uzantı G" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1249 +msgid "Tags" +msgstr "Etiketler" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1253 +msgid "Variation Selectors Supplement" +msgstr "Varyasyon Seçiciler İlave" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1257 +msgid "Supplementary Private Use Area-A" +msgstr "İlave Özel Kullanım Alanı-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1261 +msgid "Supplementary Private Use Area-B" +msgstr "İlave Özel Kullanım Alanı-B" + +#: tools/main.vala:51 +msgid "List engine name only" +msgstr "Sadece motor adını listele" + +#: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 +msgid "Can't connect to IBus.\n" +msgstr "IBus'a bağlanılamıyor.\n" + +#: tools/main.vala:93 +#, c-format +msgid "language: %s\n" +msgstr "dil: %s\n" + +#: tools/main.vala:161 +msgid "No engine is set.\n" +msgstr "Motor ayarlanmadı.\n" + +#: tools/main.vala:169 +msgid "Set global engine failed.\n" +msgstr "Global motor ayarlanamadı.\n" + +#: tools/main.vala:174 +msgid "Get global engine failed.\n" +msgstr "Global motor alınamadı.\n" + +#: tools/main.vala:217 +msgid "Read the system registry cache." +msgstr "Sistem kayıt önbelleğini oku." + +#: tools/main.vala:219 +msgid "Read the registry cache FILE." +msgstr "Kayıt önbellek DOSYASI'nı oku." + +#: tools/main.vala:237 tools/main.vala:242 +msgid "The registry cache is invalid.\n" +msgstr "Kayıt önbelleği geçersiz.\n" + +#: tools/main.vala:257 +msgid "Write the system registry cache." +msgstr "Sistem kayıt önbelleğini yaz." + +#: tools/main.vala:259 +msgid "Write the registry cache FILE." +msgstr "Kayıt önbelleği DOSYASI'nı yaz." + +#: tools/main.vala:295 +msgid "" +"Use engine schema paths instead of ibus core, which can be comma-separated " +"values." +msgstr "" +"Ibus çekirdeği yerine, virgülle ayrılmış değerler olabilecek motor şema " +"yollarını kullan." + +#: tools/main.vala:381 +msgid "Resetting…" +msgstr "Sıfırlanıyor…" + +#: tools/main.vala:399 +msgid "Done" +msgstr "Bitti" + +#: tools/main.vala:444 +msgid "Set or get engine" +msgstr "Motoru ayarla veya al" + +#: tools/main.vala:445 +msgid "Exit ibus-daemon" +msgstr "ibus-daemon'dan çık" + +#: tools/main.vala:446 +msgid "Show available engines" +msgstr "Kullanılabilir motorları göster" + +#: tools/main.vala:447 +msgid "(Not implemented)" +msgstr "(Uygulanmadı)" + +#: tools/main.vala:448 +msgid "Restart ibus-daemon" +msgstr "ibus-daemon'u yeniden başlat" + +#: tools/main.vala:449 +msgid "Show version" +msgstr "Sürümü göster" + +#: tools/main.vala:450 +msgid "Show the content of registry cache" +msgstr "Kayıt önbelleğinin içeriğini göster" + +#: tools/main.vala:451 +msgid "Create registry cache" +msgstr "Kayıt önbelleği oluştur" + +#: tools/main.vala:452 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "ibus-daemon'un D-Bus adresini yazdır" + +#: tools/main.vala:453 +msgid "Show the configuration values" +msgstr "Yapılandırma değerlerini göster" + +#: tools/main.vala:454 +msgid "Reset the configuration values" +msgstr "Yapılandırma değerlerini sıfırla" + +#: tools/main.vala:456 +msgid "Save emoji on dialog to clipboard" +msgstr "İletişim kutusundaki emojiyi panoya kaydet" + +#: tools/main.vala:458 +msgid "Show this information" +msgstr "Bu bilgiyi göster" + +#: tools/main.vala:464 +#, c-format +msgid "" +"Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "" +"Kullanım: %s KOMUT [SEÇENEK...]\n" +"\n" + +#: tools/main.vala:465 +msgid "Commands:\n" +msgstr "Komutlar:\n" + +#: tools/main.vala:494 +#, c-format +msgid "%s is unknown command!\n" +msgstr "%s, bilinmeyen komut!\n" + +#: ui/gtk3/emojier.vala:233 +msgid "Favorites" +msgstr "Favoriler" + +#: ui/gtk3/emojier.vala:234 +msgid "Others" +msgstr "Diğer" + +#: ui/gtk3/emojier.vala:235 +msgid "Open Unicode choice" +msgstr "Unicode seçimini aç" + +#: ui/gtk3/emojier.vala:995 +msgid "Bring back emoji choice" +msgstr "Emoji seçimini geri getir" + +#: ui/gtk3/emojier.vala:1097 +msgid "Page Down" +msgstr "Sayfa Aşağı" + +#: ui/gtk3/emojier.vala:1108 +msgid "Page Up" +msgstr "Sayfa Yukarı" + +#: ui/gtk3/emojier.vala:1111 +msgid "Show emoji variants" +msgstr "Emoji çeşitlerini göster" + +#: ui/gtk3/emojier.vala:1112 +msgid "Close" +msgstr "Kapat" + +#: ui/gtk3/emojier.vala:1118 +msgid "Menu" +msgstr "Menü" + +#: ui/gtk3/emojier.vala:1129 +msgid "Click to view a warning message" +msgstr "Bir uyarı mesajı görmek için tıklayın" + +#: ui/gtk3/emojier.vala:1173 +msgid "Loading a Unicode dictionary:" +msgstr "Unicode sözlük yükleme:" + +#: ui/gtk3/emojier.vala:1419 +#, c-format +msgid "Code point: %s" +msgstr "Kod noktası: %s" + +#: ui/gtk3/emojier.vala:1425 +msgid "Has emoji variants" +msgstr "Emoji çeşitleri var" + +#: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 +#, c-format +msgid "Description: %s" +msgstr "Açıklama: %s" + +#: ui/gtk3/emojier.vala:1592 +msgid "None" +msgstr "Hiçbiri" + +#: ui/gtk3/emojier.vala:1616 +#, c-format +msgid "Annotations: %s" +msgstr "Ek açıklamalar: %s" + +#: ui/gtk3/emojier.vala:1642 +#, c-format +msgid "Name: %s" +msgstr "İsim: %s" + +#: ui/gtk3/emojier.vala:1650 +#, c-format +msgid "Alias: %s" +msgstr "Takma ad: %s" + +#: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 +#: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1169 +msgid "Emoji Choice" +msgstr "Emoji Seçimi" + +#: ui/gtk3/emojier.vala:2142 +msgid "Unicode Choice" +msgstr "Unicode Seçimi" + +#: ui/gtk3/emojier.vala:2432 +msgid "" +"Failed to get the current text application. Please re-focus your " +"application. E.g. Press Esc key several times to release the emoji typing " +"mode, click your desktop and click your text application again." +msgstr "" +"Mevcut metin uygulaması alınamadı. Lütfen uygulamanızı yeniden odaklayın. " +"Örn. emoji yazma modunu bırakmak için Esc tuşuna birkaç kez basın, " +"masaüstünüze ve metin uygulamanıza tekrar tıklayın." + +#: ui/gtk3/emojierapp.vala:47 +msgid "Canceled to choose an emoji." +msgstr "Bir emoji seçmek için iptal edildi." + +#: ui/gtk3/emojierapp.vala:67 +msgid "Copied an emoji to your clipboard." +msgstr "Bir emoji panonuza kopyalandı." + +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ui/gtk3/emojierapp.vala:126 +msgid "\"FONT\" for emoji characters on emoji dialog" +msgstr "Emoji iletişim kutusundaki emoji karakterleri için \"YAZI TİPİ\"" + +#: ui/gtk3/emojierapp.vala:127 +msgid "FONT" +msgstr "YAZI TİPİ" + +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ui/gtk3/emojierapp.vala:132 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" +msgstr "Emoji iletişim kutusundaki ek açıklamalar için \"DİL\". Örn. \"tr\"" + +#: ui/gtk3/emojierapp.vala:133 +msgid "LANG" +msgstr "DİL" + +#: ui/gtk3/emojierapp.vala:135 +msgid "Emoji annotations can be match partially" +msgstr "Emoji ek açıklamaları kısmen eşleşebilir" + +#: ui/gtk3/emojierapp.vala:139 +msgid "Match with the length of the specified integer" +msgstr "Belirtilen tamsayı uzunluğuyla eşleştir" + +#: ui/gtk3/emojierapp.vala:143 +msgid "Match with the condition of the specified integer" +msgstr "Belirtilen tamsayı koşuluyla eşleştir" + +#: ui/gtk3/panel.vala:292 ui/gtk3/panel.vala:323 +msgid "IBus Panel" +msgstr "IBus Paneli" + +#: ui/gtk3/panel.vala:975 +#, c-format +msgid "" +"Your configured input method %s does not exist in IBus input methods so \"US" +"\" layout was configured instead of your input method." +msgstr "" +"Yapılandırılan giriş yönteminiz %s IBus giriş yöntemlerinde mevcut değil, bu " +"nedenle giriş yönteminiz yerine \"US\" düzeni yapılandırıldı." + +#: ui/gtk3/panel.vala:980 +msgid "" +"At least one of your configured input methods does not exist in IBus input " +"methods." +msgstr "" +"Yapılandırılan giriş yöntemlerinizden en az biri IBus giriş yöntemlerinde " +"mevcut değil." + +#: ui/gtk3/panel.vala:983 +msgid "" +"Please run `ibus-setup` command, open \"Input Method\" tab, and configure " +"your input methods again." +msgstr "" +"Lütfen `ibus-setup` komutunu çalıştırın, \"Giriş Yöntemi\" sekmesini açın ve " +"giriş yöntemlerinizi yeniden yapılandırın." + +#: ui/gtk3/panel.vala:1141 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus, Linux/Unix için akıllı bir giriş veri yoludur." + +#: ui/gtk3/panel.vala:1145 +msgid "translator-credits" +msgstr "" +"Serdar Sağlam \n" +"Oğuz Ersen " + +#: ui/gtk3/panel.vala:1164 +msgid "Preferences" +msgstr "Tercihler" + +#: ui/gtk3/panel.vala:1190 +msgid "Restart" +msgstr "Yeniden başlat" + +#: ui/gtk3/panel.vala:1194 +msgid "Quit" +msgstr "Çık" + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 +msgid "default:LTR" +msgstr "öntanımlı olarak:LTR (soldan sağa)" + +#~ msgid "" +#~ "IBus\n" +#~ "The intelligent input bus\n" +#~ "Homepage: https://github.com/ibus/ibus/wiki\n" +#~ "\n" +#~ "\n" +#~ "\n" +#~ msgstr "" +#~ "IBus\n" +#~ "Akıllı giriş veri yolu\n" +#~ "Ana sayfa: https://github.com/ibus/ibus/wiki\n" +#~ "\n" +#~ "\n" +#~ "\n" + +#~ msgid "Start ibus on login" +#~ msgstr "Girişte ibus'ı başlat" + +#~ msgid "Startup" +#~ msgstr "Başlangıç" diff --git a/po/uk.po b/po/uk.po index aa53b710b..fcf48b29e 100644 --- a/po/uk.po +++ b/po/uk.po @@ -1,188 +1,543 @@ -# translation of uk.po to Ukrainian # Ukrainian translation of ibus. +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2022 Takao Fujiwara # This file is distributed under the same license as the ibus package. # -# Yuri Chornoivan , 2011. +# Translators: +# Yuri Chornoivan , 2011-2015, 2017-2020, 2021, 2022. +# fujiwara , 2015, 2017. #zanata msgid "" msgstr "" -"Project-Id-Version: IBus\n" -"Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/list\n" -"POT-Creation-Date: 2011-05-13 11:21+0900\n" -"PO-Revision-Date: 2011-05-13 05:04+0000\n" -"Last-Translator: yurchor \n" -"Language-Team: Ukrainian \n" +"Project-Id-Version: ibus 1.5.20\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2022-04-29 18:05+0900\n" +"PO-Revision-Date: 2022-05-04 11:02+0000\n" +"Last-Translator: Yuri Chornoivan \n" +"Language-Team: Ukrainian \n" +"Language: uk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: uk\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" +"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 4.12.1\n" + +#. Translators: Here “Preload” is a verb +#: data/dconf/org.freedesktop.ibus.gschema.xml:11 +msgid "Preload engines" +msgstr "Попередньо завантажувати рушії" + +#. Translators: Tooltip for the button “Preload Engines” +#: data/dconf/org.freedesktop.ibus.gschema.xml:13 +msgid "Preload engines during ibus starts up" +msgstr "Попередньо завантажувати рушії під час запуску ibus" -#: ../bus/ibus.desktop.in.h:1 -msgid "IBus" -msgstr "IBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:17 +msgid "Engines order" +msgstr "Порядок рушіїв" -#: ../bus/ibus.desktop.in.h:2 -msgid "Input Method Framework" -msgstr "Оболонка способів введення" +#: data/dconf/org.freedesktop.ibus.gschema.xml:18 +msgid "Saved engines order in input method list" +msgstr "Збережений порядок рушіїв у списку способів введення" -#: ../bus/ibus.desktop.in.h:3 -msgid "Start IBus Input Method Framework" -msgstr "Запуск оболонки способів введення IBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:22 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "Затримка появи контекстного вікна для перемикача способів введення" -#: ../ibus/_config.py.in:40 +#: data/dconf/org.freedesktop.ibus.gschema.xml:23 msgid "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +"Set popup delay milliseconds to show IME switcher window. The default is " +"400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " +"show the window and switch prev/next engines." msgstr "" -"© Peng Huang, 2007–2010\n" -"© Red Hat, Inc., 2007–2010" +"Встановити затримку появи контекстного вікна перемикача способів введення у " +"мілісекундах. Типовою є 400. 0 = показувати вікно негайно. 0 < — затримка у " +"мілісекундах. 0 > — не показувати вікно і перемикатися на попередній або " +"наступний рушій." -#: ../ibus/lang.py:41 -msgid "Other" -msgstr "Інше" +#: data/dconf/org.freedesktop.ibus.gschema.xml:27 +msgid "Saved version number" +msgstr "Збережений номер версії" -#: ../ui/gtk/candidatepanel.py:264 -msgid "Previous page" -msgstr "Попередня сторінка" +#: data/dconf/org.freedesktop.ibus.gschema.xml:28 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" +"Збережений номер версії буде використано для визначення відмінностей між " +"попередньою встановленою версією ibus та поточною версією ibus." -#: ../ui/gtk/candidatepanel.py:269 -msgid "Next page" -msgstr "Наступна сторінка" +#: data/dconf/org.freedesktop.ibus.gschema.xml:32 +msgid "Latin layouts which have no ASCII" +msgstr "Розкладки латиниці, у яких немає символів ASCII" -#: ../ui/gtk/main.py:62 +#: data/dconf/org.freedesktop.ibus.gschema.xml:33 +msgid "US layout is appended to the Latin layouts. variant can be omitted." +msgstr "" +"Американська розкладка додається до латинських розкладок, варіант можна " +"пропустити." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:37 +msgid "Use xmodmap" +msgstr "Використовувати xmodmap" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" -"Some input methods have been installed, removed or updated. Please restart " -"ibus input platform." +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" -"Встановлено, вилучено або оновлено деякі зі способів введення. Будь ласка, " -"перезапустіть платформу введення ibus." +"Запускати xmodmap, якщо є .xmodmap або .Xmodmap під час перемикання рушіїв " +"ibus." -#: ../ui/gtk/main.py:66 -msgid "Restart Now" -msgstr "Перезапустити зараз" +#: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 +msgid "Use system keyboard layout" +msgstr "Використовувати розкладку клавіатури системи" -#: ../ui/gtk/main.py:67 -msgid "Later" -msgstr "Пізніше" +#: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 +msgid "Use system keyboard (XKB) layout" +msgstr "Використовувати розкладку клавіатури системи (XKB)" -#: ../ui/gtk/panel.py:116 -msgid "IBus Panel" -msgstr "Панель IBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:47 +msgid "Embed Preedit Text" +msgstr "Вбудувати попередньо створений текст" -#: ../ui/gtk/panel.py:122 -msgid "IBus input method framework" -msgstr "Оболонка способів введення IBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:48 +msgid "Embed Preedit Text in Application Window" +msgstr "Вбудувати попередньо створений текст у вікно програми" -#: ../ui/gtk/panel.py:352 -msgid "Restart" -msgstr "Перезапустити" +#: data/dconf/org.freedesktop.ibus.gschema.xml:52 +msgid "Use global input method" +msgstr "Використовувати загальний спосіб введення" -#: ../ui/gtk/panel.py:439 -msgid "Turn off input method" -msgstr "Вимкнути спосіб введення" +#: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 +msgid "Share the same input method among all applications" +msgstr "Використовувати один спосіб введення для всіх програм" -#: ../ui/gtk/panel.py:478 -msgid "No input window" -msgstr "Немає вікна введення" +#: data/dconf/org.freedesktop.ibus.gschema.xml:57 +msgid "Enable input method by default" +msgstr "Типово увімкнути спосіб введення" -#: ../ui/gtk/panel.py:509 -msgid "IBus is an intelligent input bus for Linux/Unix." -msgstr "IBus — інтелектуальний канал введення даних у Linux/Unix." +#: data/dconf/org.freedesktop.ibus.gschema.xml:58 +msgid "Enable input method by default when the application gets input focus" +msgstr "Типово увімкнути спосіб введення, коли програма отримує фокус введення" -#: ../ui/gtk/panel.py:513 -msgid "translator-credits" -msgstr "Юрій Чорноіван " +#: data/dconf/org.freedesktop.ibus.gschema.xml:62 +msgid "DConf preserve name prefixes" +msgstr "Збереження DConf префіксів назв" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:63 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "Префікси ключів DConf для припинення перетворення назв" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:70 +msgid "Trigger shortcut keys" +msgstr "Клавіатурні скорочення-перемикачі" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:71 +#: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 +msgid "The shortcut keys for turning input method on or off" +msgstr "Клавіатурне скорочення для вмикання і вимикання способів введення" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:75 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "Комбінації клавіш для перемикання gtk_accelerator_parse" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:80 +msgid "Enable shortcut keys" +msgstr "Увімкнути клавіатурні скорочення" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:81 +msgid "The shortcut keys for turning input method on" +msgstr "Клавіатурне скорочення для вмикання способів введення" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:85 +msgid "Disable shortcut keys" +msgstr "Вимкнути клавіатурні скорочення" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:86 +msgid "The shortcut keys for turning input method off" +msgstr "Клавіатурне скорочення для вимикання способів введення" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:90 +#: data/dconf/org.freedesktop.ibus.gschema.xml:95 +msgid "Next engine shortcut keys" +msgstr "Скорочення для наступного рушія" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:91 +#: data/dconf/org.freedesktop.ibus.gschema.xml:96 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "" +"Клавіатурні скорочення для перемикання на наступний спосіб введення у списку" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:100 +#: data/dconf/org.freedesktop.ibus.gschema.xml:105 +msgid "Prev engine shortcut keys" +msgstr "Скорочення для попереднього рушія" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:101 +#: data/dconf/org.freedesktop.ibus.gschema.xml:106 +msgid "The shortcut keys for switching to the previous input method" +msgstr "Клавіатурне скорочення для перемикання на попередній спосіб введення" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:112 +msgid "Auto hide" +msgstr "Автоматично ховати" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:113 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "" +"Поведінка панелі властивостей. 0 = не показувати, 1 = автоматично ховати, 2 " +"= завжди показувати" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:117 +#: data/dconf/org.freedesktop.ibus.gschema.xml:121 +msgid "Language panel position" +msgstr "Розташування мовної панелі" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:125 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "Слідувати за курсором введення, якщо панель показано завжди" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:126 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" +"Якщо має значення «true», панель слідуватиме за курсором введення, якщо " +"панель працює у режимі безумовного показу. Якщо має значення «false», панель " +"буде показано у фіксованій позиції." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:130 +msgid "The milliseconds to show property panel" +msgstr "Тривалість показу панелі властивостей у мілісекундах" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:131 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" +"Тривалість показу панелі властивостей (у мілісекундах) після фокусування або " +"зміни властивостей." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:135 +msgid "Orientation of lookup table" +msgstr "Орієнтація таблиці пошуку" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:136 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "Орієнтація таблиці пошуку. 0 = горизонтально, 1 = вертикально" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:140 +#: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 +#: setup/setup.ui:475 +msgid "Show icon on system tray" +msgstr "Показувати піктограму у системному лотку" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:145 +msgid "Show input method name" +msgstr "Показувати назву способу введення" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 +msgid "Show input method name on language bar" +msgstr "Показувати назву способу введення на мовній панелі" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:150 +msgid "RGBA value of XKB icon" +msgstr "Значення RGBA для піктограми XKB" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:151 +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form 'rgba(r," +"g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 to 255 or " +"percentage values in the range 0% to 100%, and 'a' is a floating point value " +"in the range 0 to 1 of the alpha." +msgstr "" +"На піктограмі XKB буде показано рядок розкладки. Для показу цього рядка буде " +"використано вказане значення RGBA. Значенням RGBA може бути: 1. назва " +"кольору у X11, 2. шістнадцяткове число у форматі «#ччззсс», де «ч», «з», «с» " +"є цифрами для червоного, зеленого та синього кольорів, 3. колір RGB у " +"форматі «rgb(ч,з,с)» або 4. колір RGBA у форматі «rgba(ч,з,с,п)», де «ч», " +"«з», «с» є або цілими значеннями у діапазоні від 0 до 255, або відсотковими " +"значеннями від 0% до 100%, а «п» є значенням з рухомою крапкою для " +"прозорості у діапазоні від 0 до 1." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:155 +msgid "The milliseconds to show the panel icon for a property" +msgstr "" +"Час у мілісекундах для приготування показу піктограми панелі для властивості" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:156 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" +"Час у мілісекундах, протягом якого слід показувати перехід піктограми панелі " +"з піктограми рушія на піктограму властивості після зміни рушія, якщо " +"властивість задається значенням icon-prop-key у IBusEngineDesc. Якщо вказано " +"значення 0, затримки не буде і піктограму властивості буде показано негайно." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:160 +msgid "Use custom font" +msgstr "Використовувати нетиповий шрифт" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:161 +msgid "Use custom font name for language panel" +msgstr "Використовувати нетиповий шрифт для мовної панелі" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:165 +#: data/dconf/org.freedesktop.ibus.gschema.xml:192 +msgid "Custom font" +msgstr "Нетиповий шрифт" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:166 +msgid "Custom font name for language panel" +msgstr "Назва нетипового шрифту для мовної панелі" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:170 setup/setup.ui:1305 +msgid "Choose glyphs with input method's language on candidate window" +msgstr "Вибирати гліфи з мови способу введення у вікні варіантів" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:171 +msgid "" +"Some code points have the different glyphs and Pango determines the glyphs " +"from the language attribute. Pango chooses glyphs from the IBus engine's " +"language if the value is true and choose them from the desktop locale if the " +"value is false." +msgstr "" +"Для деяких позицій у кодуванні існують різні гліфи, і Pango визначає гліф на " +"основі атрибута мови. Pango вибирає гліфи з мови рушія IBus, якщо цей " +"параметр має значення «true», і вибирає їх з локалі стільничного середовища, " +"якщо цей параметр має значення «false»." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:182 +msgid "Unicode shortcut keys for gtk_accelerator_parse" +msgstr "Клавіатурне скорочення Unicode для gtk_accelerator_parse" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:183 +msgid "The shortcut keys for turning Unicode typing on or off" +msgstr "" +"Клавіатурне скорочення для вмикання і вимикання введення символів Unicode" -#: ../ui/gtk/languagebar.py:106 -msgid "About the input method" -msgstr "Про спосіб введення" +#: data/dconf/org.freedesktop.ibus.gschema.xml:187 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "Клавіатурне скорочення емодзі для gtk_accelerator_parse" -#: ../ui/gtk/languagebar.py:214 -msgid "Switch input method" -msgstr "Перемкнути спосіб введення" +#: data/dconf/org.freedesktop.ibus.gschema.xml:188 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "Клавіатурне скорочення для вмикання і вимикання введення емодзі" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:193 +msgid "Custom font name for emoji characters on emoji dialog" +msgstr "Назва нетипового шрифту для символів емодзі у вікні емодзі" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:197 +msgid "Default language for emoji dictionary" +msgstr "Типова мова словника емодзі" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:198 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict ." +msgstr "" +"Виберіть типову мову словників емодзі у вікні емодзі. Значення $lang " +"застосовується до /usr/share/ibus/dicts/emoji-$lang.dict ." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:202 +msgid "favorite emoji list on emoji dialog" +msgstr "Список улюблених емодзі у вікні емодзі" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:203 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "" +"Ви зможете переглянути улюблені емодзі у списку емодзі, якщо у цьому списку " +"є якісь символи." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:207 +msgid "favorite emoji annotation list on emoji dialog" +msgstr "список анотацій до улюблених емодзі у вікні емодзі" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:208 +msgid "You can assign an annotation for a favorite emoji in this list." +msgstr "Ви можете додавати анотації до улюблених емодзі у цьому списку." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:212 +msgid "Whether emoji annotations can be match partially or not" +msgstr "Визначає, чи може бути встановлено часткову відповідність" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:213 +msgid "" +"Whether emoji annotations can be matched with a partial string instead of " +"the exact match or not." +msgstr "" +"Визначає, чи може бути встановлено відповідність емодзі за частиною рядка, а " +"не повним збігом." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:217 +msgid "Match emoji annotations with the specified length" +msgstr "Відповідність анотацій до емодзі за вказаною довжиною рядка" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:218 +msgid "" +"Match emoji annotations partially with more than the specified number of " +"characters instead of the exact match." +msgstr "" +"Встановлювати часткову відповідність анотацій до емодзі, якщо збігається " +"вказана кількість символів, але відповідність не є повною." -#: ../ui/gtk/languagebar.py:357 ../ui/gtk/engineabout.py:33 -#: ../setup/engineabout.py:33 ../setup/setup.ui.h:16 +#: data/dconf/org.freedesktop.ibus.gschema.xml:222 +msgid "Choose a condition to match emoji annotations partially" +msgstr "Вибрати умову часткової відповідності анотацій до емодзі" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:223 +msgid "" +"Choose one of the following conditions to match emoji annotations partially: " +"0 == Prefix match, 1 == Suffix match, 2 == Containing match" +msgstr "" +"Виберіть одну з таких умов для встановлення часткової відповідності за " +"анотаціями до емодзі: 0 == відповідність за префіксом, 1 == відповідність за " +"суфіксом, 2 == відповідність за вмістом" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:227 +msgid "Load the emoji data at the time of startup" +msgstr "Завантажувати дані емодзі під час запуску програми" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:228 +msgid "" +"Load the emoji data at the time of startup if true. About 10MB memory is " +"needed to load the data. Load the emoji data when open the emoji dialog at " +"the beginning if false." +msgstr "" +"Якщо true, завантаження даних емодзі під час запуску увімкнено. Для " +"завантаження даних потрібно приблизно 10 МБ пам'яті. Якщо false, дані емодзі " +"буде завантажено під час відкриття діалогового вікна емодзі на початку." + +#: data/dconf/org.freedesktop.ibus.gschema.xml:232 +msgid "Load the Unicode data at the time of startup" +msgstr "Завантажувати дані Unicode під час запуску" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:233 +msgid "" +"Load the Unicode data at the time of startup if true. About 15MB memory is " +"needed to load the data. Load the Unicode data when open the emoji dialog at " +"the beginning if false. The Unicode data is always loaded after the emoji " +"data is loaded even if true." +msgstr "" +"Якщо true, завантаження даних Unicode емодзі під час запуску увімкнено. Для " +"завантаження даних потрібно приблизно 10 МБ пам'яті. Якщо false, дані " +"Unicode буде завантажено під час відкриття діалогового вікна емодзі на " +"початку. Дані Unicode завжди завантажуватимуться після даних емодзі, навіть " +"якщо встановлено значення true." + +#: ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "" +"© Peng Huang, 2007–2010\n" +"© Red Hat, Inc., 2007–2010" + +#: ibus/lang.py:41 src/ibusutil.c:209 +msgid "Other" +msgstr "Інше" + +#: setup/emojilang.py:67 +msgid "Select a language" +msgstr "Виберіть мову" + +#: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 +#: setup/main.py:560 +msgid "_Cancel" +msgstr "_Скасувати" + +#: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 +msgid "_OK" +msgstr "_Гаразд" + +#: setup/emojilang.py:235 setup/enginedialog.py:222 +msgid "More…" +msgstr "Більше…" + +#: setup/engineabout.py:37 setup/setup.ui:1368 ui/gtk3/panel.vala:1259 msgid "About" msgstr "Інформація" -#: ../ui/gtk/languagebar.py:361 -msgid "About the Input Method" -msgstr "Про спосіб введення" +#: setup/engineabout.py:40 setup/setup.ui:1391 +msgid "_Close" +msgstr "_Закрити" -#: ../ui/gtk/engineabout.py:61 ../setup/engineabout.py:61 +#: setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "Мова: %s\n" -#: ../ui/gtk/engineabout.py:63 ../setup/engineabout.py:63 +#: setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "Розкладка клавіатури: %s\n" -#: ../ui/gtk/engineabout.py:65 ../setup/engineabout.py:65 +#: setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "Автор: %s\n" -#: ../ui/gtk/engineabout.py:67 ../setup/engineabout.py:67 +#: setup/engineabout.py:81 msgid "Description:\n" msgstr "Опис:\n" -#: ../setup/main.py:102 -msgid "trigger" -msgstr "перемикач" - -#: ../setup/main.py:113 -msgid "enable" -msgstr "увімкнути" - -#: ../setup/main.py:124 -msgid "disable" -msgstr "вимкнути" - -#: ../setup/main.py:135 -msgid "next input method" -msgstr "наступний спосіб введення" +#: setup/enginecombobox.py:139 setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "Виберіть спосіб введення" -#: ../setup/main.py:146 -msgid "previous input method" -msgstr "попередній спосіб введення" +#. add button +#: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 +msgid "_Add" +msgstr "_Додати" -#: ../setup/main.py:286 -msgid "IBus daemon is not started. Do you want to start it now?" -msgstr "Фонову службу не запущено IBus. Запустити її зараз?" +#. create im name & icon column +#: setup/enginetreeview.py:69 setup/setup.ui:838 +msgid "Input Method" +msgstr "Спосіб введення" -#: ../setup/main.py:301 -msgid "" -"IBus has been started! If you can not use IBus, please add below lines in $HOME/.bashrc, and relogin your desktop.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" -msgstr "" -"IBus запущено! Якщо ви не можете скористатися IBus, будь ласка, додайте наведені нижче рядки до вашого файла $HOME/.bashrc, вийдіть з облікового запису і знову до нього увійдіть.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +#: setup/ibus-setup.desktop:3 setup/setup.ui:69 +msgid "IBus Preferences" +msgstr "Налаштування IBus" -#: ../setup/main.py:316 -#, python-format -msgid "Select keyboard shortcut for %s" -msgstr "Виберіть клавіатурне скорочення для дії %s" +#: setup/ibus-setup.desktop:4 +msgid "Set IBus Preferences" +msgstr "Налаштувати IBus" -#: ../setup/keyboardshortcut.py:52 +#: setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Клавіатурні скорочення" -#: ../setup/keyboardshortcut.py:63 +#: setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "Код клавіші:" -#: ../setup/keyboardshortcut.py:78 +#: setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "Модифікатори:" -#: ../setup/keyboardshortcut.py:231 +#. apply button +#: setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "Заст_осувати" + +#. delete button +#: setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "В_илучити" + +#: setup/keyboardshortcut.py:252 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." @@ -190,365 +545,2962 @@ msgstr "" "Будь ласка, натисніть клавішу (або комбінацію клавіш).\n" "Діалогове вікно буде закрито після відпускання клавіші." -#: ../setup/keyboardshortcut.py:233 +#: setup/keyboardshortcut.py:255 msgid "Please press a key (or a key combination)" msgstr "Будь ласка, натисніть клавішу (або комбінацію клавіш)" -#: ../setup/enginecombobox.py:120 -msgid "Select an input method" -msgstr "Виберіть спосіб введення" +#: setup/main.py:121 setup/main.py:588 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "" +"Використовувати комбінацію з Shift для перемикання на попередній спосіб " +"введення" -#. create im name & icon column -#: ../setup/enginetreeview.py:64 ../setup/setup.ui.h:33 -msgid "Input Method" -msgstr "Спосіб введення" +#: setup/main.py:515 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "Фонову службу IBus не запущено. Хочете її запустити?" -#: ../setup/enginetreeview.py:92 -msgid "Kbd" -msgstr "Kbd" +#: setup/main.py:536 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "" +"IBus запущено! Якщо ви не можете скористатися IBus, додайте вказані нижче " +"рядки до файла $HOME/.bashrc; потім вийдіть зі стільничного середовища і " +"увійдіть до нього знову.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" -#: ../setup/ibus-setup.desktop.in.h:1 ../setup/setup.ui.h:32 -msgid "IBus Preferences" -msgstr "Налаштування IBus" +#. Translators: %d == 5 currently +#: setup/main.py:550 +#, python-format +msgid "IBus daemon could not be started in %d seconds." +msgstr "Не вдалося запустити фонову службу IBus протягом %d секунд." -#: ../setup/ibus-setup.desktop.in.h:2 -msgid "Set IBus Preferences" -msgstr "Налаштувати IBus" +#: setup/main.py:562 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "Виберіть клавіатурне скорочення для дії %s" -#: ../data/ibus.schemas.in.h:1 -msgid "Auto hide" -msgstr "Автоматично ховати" +#. Translators: Title of the window +#: setup/main.py:564 +msgid "switching input methods" +msgstr "перемикання способів введення" -#: ../data/ibus.schemas.in.h:2 -msgid "Custom font" -msgstr "Нетиповий шрифт" +#: setup/setup.ui:11 +msgid "Horizontal" +msgstr "Горизонтально" -#: ../data/ibus.schemas.in.h:3 -msgid "Custom font name for language panel" -msgstr "Назва нетипового шрифту для мовної панелі" +#: setup/setup.ui:14 +msgid "Vertical" +msgstr "Вертикально" -#: ../data/ibus.schemas.in.h:4 -msgid "Disable shortcut keys" -msgstr "Вимкнути клавіатурні скорочення" +#: setup/setup.ui:25 +msgid "Top left corner" +msgstr "У верхньому лівому куті" -#: ../data/ibus.schemas.in.h:5 -msgid "Embed Preedit Text" -msgstr "Вбудувати попередньо створений текст" +#: setup/setup.ui:28 +msgid "Top right corner" +msgstr "У верхньому правому куті" -#: ../data/ibus.schemas.in.h:6 -msgid "Embed Preedit Text in Application Window" -msgstr "Вбудувати попередньо створений текст у вікно програми" +#: setup/setup.ui:31 +msgid "Bottom left corner" +msgstr "У нижньому лівому куті" -#: ../data/ibus.schemas.in.h:7 -msgid "Enable input method by default" -msgstr "Типово увімкнути спосіб введення" +#: setup/setup.ui:34 +msgid "Bottom right corner" +msgstr "У нижньому правому куті" -#: ../data/ibus.schemas.in.h:8 -msgid "Enable input method by default when the application gets input focus" +#: setup/setup.ui:37 +msgid "Custom" +msgstr "Нетиповий" + +#: setup/setup.ui:48 +msgid "Do not show" +msgstr "Не показувати" + +#: setup/setup.ui:51 +msgid "Hide automatically" +msgstr "Автоматично ховати" + +#: setup/setup.ui:54 +msgid "Always" +msgstr "Завжди" + +#: setup/setup.ui:113 +msgid "The shortcut keys for switching to next input method in the list" msgstr "" -"Типово увімкнути спосіб введення, коли програма отримує фокус введення" +"Клавіатурні скорочення для перемикання на наступний спосіб введення у списку" -#: ../data/ibus.schemas.in.h:9 -msgid "Enable shortcut keys" -msgstr "Увімкнути клавіатурні скорочення" +#: setup/setup.ui:115 +msgid "Next input method:" +msgstr "Наступний спосіб введення:" -#: ../data/ibus.schemas.in.h:10 -msgid "Language panel position" -msgstr "Розташування мовної панелі" +#: setup/setup.ui:127 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "" +"Клавіатурне скорочення для перемикання на попередній спосіб введення у списку" -#: ../data/ibus.schemas.in.h:11 -msgid "Next engine shortcut keys" -msgstr "Скорочення для наступного рушія" +#: setup/setup.ui:129 +msgid "Previous input method:" +msgstr "Попередній спосіб введення:" -#: ../data/ibus.schemas.in.h:12 -msgid "Orientation of lookup table" -msgstr "Орієнтація таблиці пошуку" +#: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 +#: setup/setup.ui:903 setup/setup.ui:957 +msgid "..." +msgstr "…" -#: ../data/ibus.schemas.in.h:13 -msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" -msgstr "Орієнтація таблиці пошуку. 0 = горизонтально, 1 = вертикально" +#: setup/setup.ui:226 +msgid "Enable or disable:" +msgstr "Увімкнення або вимикання:" -#: ../data/ibus.schemas.in.h:14 -msgid "Preload engines" -msgstr "Попередньо завантажувати рушії" +#: setup/setup.ui:238 +msgid "Enable:" +msgstr "Увімкнути:" -#: ../data/ibus.schemas.in.h:15 -msgid "Preload engines during ibus starts up" -msgstr "Попередньо завантажувати рушії під час запуску ibus" +#: setup/setup.ui:291 +msgid "Disable:" +msgstr "Вимкнути:" -#: ../data/ibus.schemas.in.h:16 -msgid "Prev engine shortcut keys" -msgstr "Скорочення для попереднього рушія" +#: setup/setup.ui:345 setup/setup.ui:983 +msgid "Keyboard Shortcuts" +msgstr "Клавіатурні скорочення" -#: ../data/ibus.schemas.in.h:17 ../setup/setup.ui.h:42 -msgid "Share the same input method among all applications" -msgstr "Використовувати один спосіб введення для всіх програм" +#: setup/setup.ui:374 +msgid "Set the orientation of candidates in lookup table" +msgstr "Встановити орієнтацію варіантів у таблиці пошуку" -#: ../data/ibus.schemas.in.h:18 ../setup/setup.ui.h:43 -msgid "Show icon on system tray" -msgstr "Показувати піктограму у системному лотку" +#: setup/setup.ui:376 +msgid "Candidates orientation:" +msgstr "Орієнтація варіантів:" -#: ../data/ibus.schemas.in.h:19 -msgid "Show input method name" -msgstr "Показувати назву способу введення" +#: setup/setup.ui:407 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "Визначає поведінку ibus: спосіб показу або приховування мовної панелі" -#: ../data/ibus.schemas.in.h:20 ../setup/setup.ui.h:45 -msgid "Show input method name on language bar" -msgstr "Показувати назву способу введення на мовній панелі" +#: setup/setup.ui:409 +msgid "Show property panel:" +msgstr "Показ панелі властивостей:" -#: ../data/ibus.schemas.in.h:21 -msgid "" -"The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = " -"Always show" +#: setup/setup.ui:423 +msgid "Language panel position:" +msgstr "Розташування мовної панелі:" + +#: setup/setup.ui:494 +msgid "Show input method's name on language bar when check the checkbox" msgstr "" -"Поведінка мовної панелі. 0 = вбудувати до меню, 1 = автоматично ховати, 2 = " -"завжди показувати" +"Показати назву способу введення на мовній панелі, якщо позначено цей пункт" -#: ../data/ibus.schemas.in.h:22 -msgid "" -"The position of the language panel. 0 = Top left corner, 1 = Top right " -"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +#: setup/setup.ui:508 +msgid "Embed preedit text in application window" +msgstr "Вбудувати попередньо створений текст у вікно програми" + +#: setup/setup.ui:513 +msgid "Embed the preedit text of input method in the application window" +msgstr "Вбудувати попередньо створений текст способу введення у вікно програми" + +#: setup/setup.ui:527 +msgid "Use custom font:" +msgstr "Нетиповий шрифт:" + +#: setup/setup.ui:562 setup/setup.ui:1156 +msgid "Font and Style" +msgstr "Шрифт і стиль" + +#: setup/setup.ui:579 +msgid "General" +msgstr "Загальне" + +#: setup/setup.ui:671 +msgid "Add the selected input method into the enabled input methods" msgstr "" -"Розташування мовної панелі. 0 = у верхньому лівому куті, 1 = у верхньому " -"правому куті, 2 = у нижньому лівому куті, 3 = у нижньому правому куті, 4 = " -"нетипове" +"Додати позначений спосіб введення до списку увімкнених способів введення" -#: ../data/ibus.schemas.in.h:23 -msgid "The shortcut keys for switching to the next input method in the list" +#: setup/setup.ui:682 +msgid "_Remove" +msgstr "Ви_лучити" + +#: setup/setup.ui:689 +msgid "Remove the selected input method from the enabled input methods" msgstr "" -"Клавіатурні скорочення для перемикання на наступний спосіб введення у списку" +"Вилучити позначений спосіб введення зі списку увімкнених способів введення" -#: ../data/ibus.schemas.in.h:24 -msgid "The shortcut keys for switching to the previous input method" -msgstr "Клавіатурне скорочення для перемикання на попередній спосіб введення" +#: setup/setup.ui:700 +msgid "_Up" +msgstr "В_гору" -#: ../data/ibus.schemas.in.h:25 -msgid "The shortcut keys for turning input method off" -msgstr "Клавіатурне скорочення для вимикання способів введення" +#: setup/setup.ui:707 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "" +"Пересунути вгору позначений спосіб введення у списку увімкнених способів " +"введення" -#: ../data/ibus.schemas.in.h:26 -msgid "The shortcut keys for turning input method on" -msgstr "Клавіатурне скорочення для вмикання способів введення" +#: setup/setup.ui:718 +msgid "_Down" +msgstr "В_низ" -#: ../data/ibus.schemas.in.h:27 ../setup/setup.ui.h:51 -msgid "The shortcut keys for turning input method on or off" -msgstr "Клавіатурне скорочення для вмикання і вимикання способів введення" +#: setup/setup.ui:725 +msgid "Move down the selected input method in the enabled input methods" +msgstr "" +"Пересунути нижче позначений спосіб введення у списку увімкнених способів " +"введення" -#: ../data/ibus.schemas.in.h:28 -msgid "Trigger shortcut keys" -msgstr "Клавіатурні скорочення-перемикачі" +#: setup/setup.ui:736 +msgid "_About" +msgstr "_Про програму" -#: ../data/ibus.schemas.in.h:29 -msgid "Use custom font" -msgstr "Використовувати нетиповий шрифт" +#: setup/setup.ui:743 +msgid "Show information of the selected input method" +msgstr "Показати відомості щодо вибраного способу введення" -#: ../data/ibus.schemas.in.h:30 -msgid "Use custom font name for language panel" -msgstr "Використовувати нетиповий шрифт для мовної панелі" +#: setup/setup.ui:754 +msgid "_Preferences" +msgstr "_Параметри" -#: ../data/ibus.schemas.in.h:31 -msgid "Use global input method" -msgstr "Використовувати загальний спосіб введення" +#: setup/setup.ui:761 +msgid "Show setup of the selected input method" +msgstr "Показати панель налаштовування позначеного способу введення" -#: ../data/ibus.schemas.in.h:32 ../setup/setup.ui.h:55 -msgid "Use system keyboard (XKB) layout" -msgstr "Використовувати розкладку клавіатури системи (XKB)" +#: setup/setup.ui:812 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" +"Активний спосіб введення можна перемкнути у межах визначеного вище " +"списку натисканням клавіатурного скорочення або піктограми на панелі." -#: ../data/ibus.schemas.in.h:33 ../setup/setup.ui.h:56 -msgid "Use system keyboard layout" -msgstr "Використовувати розкладку клавіатури системи" +#: setup/setup.ui:873 +msgid "" +"The shortcut keys to enable conversions of emoji annotations or Unicode names" +msgstr "" +"Клавіатурне скорочення для вмикання перетворень анотацій емодзі або назв " +"символів Unicode" -#: ../setup/setup.ui.h:1 -msgid "..." -msgstr "…" +#: setup/setup.ui:875 +msgid "Emoji annotation:" +msgstr "Анотація емодзі:" -#: ../setup/setup.ui.h:2 -msgid "Font and Style" -msgstr "Шрифт і стиль" +#: setup/setup.ui:927 +msgid "The shortcut keys to enable Unicode code point conversions" +msgstr "" +"Клавіатурне скорочення для вмикання перетворень позицій у таблиці Unicode" -#: ../setup/setup.ui.h:3 -msgid "Global input method settings" -msgstr "Загальні параметри способів введення" +#: setup/setup.ui:929 +msgid "Unicode code point:" +msgstr "Позиція у таблиці Unicode:" -#: ../setup/setup.ui.h:4 -msgid "Keyboard Layout" -msgstr "Розкладка клавіатури" +#: setup/setup.ui:1013 +msgid "Set a font of Unicode candidates on the emoji dialog" +msgstr "Встановити шрифт варіантів емодзі у Unicode у вікні емодзі" -#: ../setup/setup.ui.h:5 -msgid "Keyboard Shortcuts" -msgstr "Клавіатурні скорочення" +#: setup/setup.ui:1015 +msgid "Unicode font:" +msgstr "Шрифт Unicode:" -#: ../setup/setup.ui.h:6 -msgid "Startup" -msgstr "Запуск" +#: setup/setup.ui:1038 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "Встановити мову анотацій емодзі у вікні емодзі" -#: ../setup/setup.ui.h:7 +#: setup/setup.ui:1040 +msgid "Emoji annotation language:" +msgstr "Мова анотацій емодзі:" + +#: setup/setup.ui:1062 msgid "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" +"Match emoji annotations partially with the following condition and more than " +"the number of characters:" msgstr "" -"IBus\n" -"Інтелектуальний канал введення\n" -"Домашня сторінка: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" +"Встановлювати відповідність емодзі за анотаціями з вказаною умовою та збігом " +"понад таку кількість символів:" -#: ../setup/setup.ui.h:14 +#: setup/setup.ui:1067 msgid "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." +"If emoji annotations can be matched with a partial string instead of the " +"exact match" msgstr "" -"Типовий спосіб введення — найвищий пункт у списку.\n" -"Змінити порядок пунктів можна за допомогою кнопок «Вгору/Вниз»." +"Визначає, чи може бути встановлено відповідність емодзі за частиною рядка, а " +"не повним збігом" -#: ../setup/setup.ui.h:17 -msgid "Add the selected input method into the enabled input methods" +#: setup/setup.ui:1101 +msgid "Prefix match" +msgstr "Відповідність за префіксом" + +#: setup/setup.ui:1115 +msgid "Suffix match" +msgstr "Відповідність за суфіксом" + +#: setup/setup.ui:1130 +msgid "Containing match" +msgstr "Відповідність за вмістом" + +#: setup/setup.ui:1176 +msgid "Emoji" +msgstr "Емодзі" + +#: setup/setup.ui:1230 +msgid "Keyboard Layout" +msgstr "Розкладка клавіатури" + +#: setup/setup.ui:1278 +msgid "Global input method settings" +msgstr "Загальні параметри способів введення" + +#: setup/setup.ui:1310 +msgid "" +"Choose glyphs with the input method's language on the candidate window for " +"the duplicated code points" msgstr "" -"Додати позначений спосіб введення до списку увімкнених способів введення" +"Вибирати гліфи з мови способу введення у вікні варіантів для дублювання " +"гліфів у позиції кодування" + +#: setup/setup.ui:1327 +msgid "Fonts" +msgstr "Шрифти" -#: ../setup/setup.ui.h:18 +#: setup/setup.ui:1347 msgid "Advanced" msgstr "Додатково" -#: ../setup/setup.ui.h:19 -msgid "Always" -msgstr "Завжди" +#: src/ibusemojigen.h:30 +msgid "Activities" +msgstr "Діяльність" + +#: src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "Тварини і природа" + +#: src/ibusemojigen.h:32 +msgid "Component" +msgstr "Компонент" + +#: src/ibusemojigen.h:33 +msgid "Flags" +msgstr "Прапори" + +#: src/ibusemojigen.h:34 +msgid "Food & Drink" +msgstr "Їжа і питво" + +#: src/ibusemojigen.h:35 +msgid "Objects" +msgstr "Об’єкти" + +#: src/ibusemojigen.h:36 +msgid "People & Body" +msgstr "Люди і тіло" + +#: src/ibusemojigen.h:37 +msgid "Smileys & Emotion" +msgstr "Смайлики та емоції" + +#: src/ibusemojigen.h:38 +msgid "Symbols" +msgstr "Символи" + +#: src/ibusemojigen.h:39 +msgid "Travel & Places" +msgstr "Подорожі і місця" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:33 +msgid "Basic Latin" +msgstr "Основні латинські" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:37 +msgid "Latin-1 Supplement" +msgstr "Додаткові Latin-1" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:41 +msgid "Latin Extended-A" +msgstr "Латинь розширена-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:45 +msgid "Latin Extended-B" +msgstr "Латинь розширена-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:49 +msgid "IPA Extensions" +msgstr "Розширена IPA" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:53 +msgid "Spacing Modifier Letters" +msgstr "Знаки інтервалів" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:57 +msgid "Combining Diacritical Marks" +msgstr "Об’єднання діакритичних знаків" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:61 +msgid "Greek and Coptic" +msgstr "Грецькі і коптські" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:65 +msgid "Cyrillic" +msgstr "Кирилиця" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:69 +msgid "Cyrillic Supplement" +msgstr "Додаткова кирилиця" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:73 +msgid "Armenian" +msgstr "Вірменська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:77 +msgid "Hebrew" +msgstr "Іврит" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:81 +msgid "Arabic" +msgstr "Арабська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:85 +msgid "Syriac" +msgstr "Сирійська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:89 +msgid "Arabic Supplement" +msgstr "Додаткові арабські" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:93 +msgid "Thaana" +msgstr "Таана" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:97 +msgid "NKo" +msgstr "Н’Ко" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:101 +msgid "Samaritan" +msgstr "Самаритянська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:105 +msgid "Mandaic" +msgstr "Мандейська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:109 +msgid "Syriac Supplement" +msgstr "Додаткові сирійські" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:113 +msgid "Arabic Extended-B" +msgstr "Арабська розширена-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:117 +msgid "Arabic Extended-A" +msgstr "Арабська розширена-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:121 +msgid "Devanagari" +msgstr "Деванагарі" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:125 +msgid "Bengali" +msgstr "Бенгальська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:129 +msgid "Gurmukhi" +msgstr "Гурмухі" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:133 +msgid "Gujarati" +msgstr "Гуджараті" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:137 +msgid "Oriya" +msgstr "Орія" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:141 +msgid "Tamil" +msgstr "Тамільська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:145 +msgid "Telugu" +msgstr "Телугу" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:149 +msgid "Kannada" +msgstr "Каннада" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:153 +msgid "Malayalam" +msgstr "Малаялам" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:157 +msgid "Sinhala" +msgstr "Сингальська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:161 +msgid "Thai" +msgstr "Тайська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:165 +msgid "Lao" +msgstr "Лаоська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:169 +msgid "Tibetan" +msgstr "Тибетська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:173 +msgid "Myanmar" +msgstr "М’янмська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:177 +msgid "Georgian" +msgstr "Грузинська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:181 +msgid "Hangul Jamo" +msgstr "Хангиль-чжамо" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:185 +msgid "Ethiopic" +msgstr "Ефіопська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:189 +msgid "Ethiopic Supplement" +msgstr "Додаткові ефіопські" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:193 +msgid "Cherokee" +msgstr "Черокі" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:197 +msgid "Unified Canadian Aboriginal Syllabics" +msgstr "Уніфіковані силабічні канадських аборигенів" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:201 +msgid "Ogham" +msgstr "Огам" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:205 +msgid "Runic" +msgstr "Рунічна" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:209 +msgid "Tagalog" +msgstr "Тагалог" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:213 +msgid "Hanunoo" +msgstr "Хануну" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:217 +msgid "Buhid" +msgstr "Бухід" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:221 +msgid "Tagbanwa" +msgstr "Таґбанва" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:225 +msgid "Khmer" +msgstr "Кхмерська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:229 +msgid "Mongolian" +msgstr "Монгольська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:233 +msgid "Unified Canadian Aboriginal Syllabics Extended" +msgstr "Уніфіковані силабічні канадських аборигенів (додаткові)" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:237 +msgid "Limbu" +msgstr "Лімбу" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:241 +msgid "Tai Le" +msgstr "Тай лі" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:245 +msgid "New Tai Lue" +msgstr "Нова тай лі" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:249 +msgid "Khmer Symbols" +msgstr "Кхмерські символи" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:253 +msgid "Buginese" +msgstr "Бугійська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:257 +msgid "Tai Tham" +msgstr "Тай-тхем" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:261 +msgid "Combining Diacritical Marks Extended" +msgstr "Розширення об’єднання діакритичних знаків" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:265 +msgid "Balinese" +msgstr "Балійська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:269 +msgid "Sundanese" +msgstr "Сунданська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:273 +msgid "Batak" +msgstr "Батак" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:277 +msgid "Lepcha" +msgstr "Лепча" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:281 +msgid "Ol Chiki" +msgstr "Ол-чикі" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:285 +msgid "Cyrillic Extended-C" +msgstr "Кирилиця розширена-C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:289 +msgid "Georgian Extended" +msgstr "Грузинська розширена" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:293 +msgid "Sundanese Supplement" +msgstr "Розширена суданська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:297 +msgid "Vedic Extensions" +msgstr "Ведичні розширення" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:301 +msgid "Phonetic Extensions" +msgstr "Фонетичні розширення" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:305 +msgid "Phonetic Extensions Supplement" +msgstr "Додаткові фонетичні розширення" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:309 +msgid "Combining Diacritical Marks Supplement" +msgstr "Додаткові об’єднання діакритичних знаків" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:313 +msgid "Latin Extended Additional" +msgstr "Латинські додаткові розширені" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:317 +msgid "Greek Extended" +msgstr "Розширена грецька" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:321 +msgid "General Punctuation" +msgstr "Загальна пунктуація" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:325 +msgid "Superscripts and Subscripts" +msgstr "Верхні і нижні індекси" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:329 +msgid "Currency Symbols" +msgstr "Символи грошових одиниць" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:333 +msgid "Combining Diacritical Marks for Symbols" +msgstr "Об’єднання діакритичних знаків і символів" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:337 +msgid "Letterlike Symbols" +msgstr "Схожі на літери символи" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:341 +msgid "Number Forms" +msgstr "Форми чисел" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:345 +msgid "Arrows" +msgstr "Стрілки" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:349 +msgid "Mathematical Operators" +msgstr "Математичні оператори" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:353 +msgid "Miscellaneous Technical" +msgstr "Різні технічні" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:357 +msgid "Control Pictures" +msgstr "Малюнки керування" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:361 +msgid "Optical Character Recognition" +msgstr "Оптичне розпізнавання знаків" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:365 +msgid "Enclosed Alphanumerics" +msgstr "Буквено-цифрові у рамках" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:369 +msgid "Box Drawing" +msgstr "Для малювання рамок" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:373 +msgid "Block Elements" +msgstr "Блокові елементи" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:377 +msgid "Geometric Shapes" +msgstr "Геометричні форми" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:381 +msgid "Miscellaneous Symbols" +msgstr "Різні символи" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:385 +msgid "Dingbats" +msgstr "Декоративні" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:389 +msgid "Miscellaneous Mathematical Symbols-A" +msgstr "Різні математичні символи-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:393 +msgid "Supplemental Arrows-A" +msgstr "Додаткові стрілки-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:397 +msgid "Braille Patterns" +msgstr "Шаблони Брайля" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:401 +msgid "Supplemental Arrows-B" +msgstr "Додаткові стрілки-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:405 +msgid "Miscellaneous Mathematical Symbols-B" +msgstr "Різні математичні символи-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:409 +msgid "Supplemental Mathematical Operators" +msgstr "Додаткові математичні дії" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:413 +msgid "Miscellaneous Symbols and Arrows" +msgstr "Різні символи і стрілки" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:417 +msgid "Glagolitic" +msgstr "Глаголиця" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:421 +msgid "Latin Extended-C" +msgstr "Латинь розширена-C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:425 +msgid "Coptic" +msgstr "Коптська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:429 +msgid "Georgian Supplement" +msgstr "Додаткові грузинські" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:433 +msgid "Tifinagh" +msgstr "Тіфінаг" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:437 +msgid "Ethiopic Extended" +msgstr "Розширена ефіопська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:441 +msgid "Cyrillic Extended-A" +msgstr "Розширена кирилиця-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:445 +msgid "Supplemental Punctuation" +msgstr "Додаткова пунктуація" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:449 +msgid "CJK Radicals Supplement" +msgstr "Додатки радикалів ієрогліфів" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:453 +msgid "Kangxi Radicals" +msgstr "Радикали кандзі" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:457 +msgid "Ideographic Description Characters" +msgstr "Символи-ідеограми" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:461 +msgid "CJK Symbols and Punctuation" +msgstr "Ієрогліфічні символи і пунктуація" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:465 +msgid "Hiragana" +msgstr "Хірагана" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:469 +msgid "Katakana" +msgstr "Катакана" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:473 +msgid "Bopomofo" +msgstr "Бопомофо" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:477 +msgid "Hangul Compatibility Jamo" +msgstr "Сумісні корейські" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:481 +msgid "Kanbun" +msgstr "Канбун" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:485 +msgid "Bopomofo Extended" +msgstr "Додаткові бопомофо" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:489 +msgid "CJK Strokes" +msgstr "Ієрогліфічні штрихи" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:493 +msgid "Katakana Phonetic Extensions" +msgstr "Фонетичні розширення катакани" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:497 +msgid "Enclosed CJK Letters and Months" +msgstr "Вкладені ієрогліфи і назви місяців" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:501 +msgid "CJK Compatibility" +msgstr "Сумісність з ієрогліфами" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:505 +msgid "CJK Unified Ideographs Extension A" +msgstr "Ієрогліфічні ідеограми, додаток A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:509 +msgid "Yijing Hexagram Symbols" +msgstr "Символи гексаграм «Книги перетворень»" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:513 +msgid "CJK Unified Ideographs" +msgstr "Універсальні ідеографічні ієрогліфи" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:517 +msgid "Yi Syllables" +msgstr "Склади Ї" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:521 +msgid "Yi Radicals" +msgstr "Радикалі Ї" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:525 +msgid "Lisu" +msgstr "Лісу" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:529 +msgid "Vai" +msgstr "Вай" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:533 +msgid "Cyrillic Extended-B" +msgstr "Кирилиця розширена-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:537 +msgid "Bamum" +msgstr "Бамум" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:541 +msgid "Modifier Tone Letters" +msgstr "Символи зміни тону" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:545 +msgid "Latin Extended-D" +msgstr "Латинь розширена-D" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:549 +msgid "Syloti Nagri" +msgstr "Силоті нагрі" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:553 +msgid "Common Indic Number Forms" +msgstr "Загальні індійські форми чисел" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:557 +msgid "Phags-pa" +msgstr "Фагс-па" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:561 +msgid "Saurashtra" +msgstr "Саураштра" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:565 +msgid "Devanagari Extended" +msgstr "Розширена деванагарі" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:569 +msgid "Kayah Li" +msgstr "Кая-лі" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:573 +msgid "Rejang" +msgstr "Реджан" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:577 +msgid "Hangul Jamo Extended-A" +msgstr "Корейска розширена-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:581 +msgid "Javanese" +msgstr "Яванська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:585 +msgid "Myanmar Extended-B" +msgstr "М’янмська розширена-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:589 +msgid "Cham" +msgstr "Тьям" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:593 +msgid "Myanmar Extended-A" +msgstr "М’янмська розширена-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:597 +msgid "Tai Viet" +msgstr "Тай-в’єт" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:601 +msgid "Meetei Mayek Extensions" +msgstr "Маніпурі розширена" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:605 +msgid "Ethiopic Extended-A" +msgstr "Ефіопська розширена-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:609 +msgid "Latin Extended-E" +msgstr "Латинь розширена-E" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:613 +msgid "Cherokee Supplement" +msgstr "Додаткові черокі" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:617 +msgid "Meetei Mayek" +msgstr "Маніпурі" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:621 +msgid "Hangul Syllables" +msgstr "Склади хангиля" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:625 +msgid "Hangul Jamo Extended-B" +msgstr "Корейська розширена-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:629 +msgid "High Surrogates" +msgstr "Верхні замінники" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:633 +msgid "High Private Use Surrogates" +msgstr "Верхні приватні замінники" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:637 +msgid "Low Surrogates" +msgstr "Нижні замінники" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:641 +msgid "Private Use Area" +msgstr "Область приватного використання" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:645 +msgid "CJK Compatibility Ideographs" +msgstr "Сумісні ієрогліфічні ідеограми" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:649 +msgid "Alphabetic Presentation Forms" +msgstr "Форми відтворення абеток" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:653 +msgid "Arabic Presentation Forms-A" +msgstr "Форми відображення арабської A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:657 +msgid "Variation Selectors" +msgstr "Вибір варіантів" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:661 +msgid "Vertical Forms" +msgstr "Вертикальні форми" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:665 +msgid "Combining Half Marks" +msgstr "Комбіновані позначки половинок" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:669 +msgid "CJK Compatibility Forms" +msgstr "Сумісні ієрогліфічні форми" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:673 +msgid "Small Form Variants" +msgstr "Варіанти малих форм" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:677 +msgid "Arabic Presentation Forms-B" +msgstr "Форми відображення арабської B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:681 +msgid "Halfwidth and Fullwidth Forms" +msgstr "Форми півширини та повної ширини" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:685 +msgid "Specials" +msgstr "Спеціальні" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:689 +msgid "Linear B Syllabary" +msgstr "Лінійна писемність B, склади" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:693 +msgid "Linear B Ideograms" +msgstr "Лінійна писемність B, ідеограми" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:697 +msgid "Aegean Numbers" +msgstr "Егейські числа" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:701 +msgid "Ancient Greek Numbers" +msgstr "Давньогрецькі числа" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:705 +msgid "Ancient Symbols" +msgstr "Давні символи" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:709 +msgid "Phaistos Disc" +msgstr "Фестський диск" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:713 +msgid "Lycian" +msgstr "Лікійська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:717 +msgid "Carian" +msgstr "Карійська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:721 +msgid "Coptic Epact Numbers" +msgstr "Коптські місячні числа" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:725 +msgid "Old Italic" +msgstr "Давня італійська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:729 +msgid "Gothic" +msgstr "Готичні" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:733 +msgid "Old Permic" +msgstr "Давня пермська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:737 +msgid "Ugaritic" +msgstr "Угаритська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:741 +msgid "Old Persian" +msgstr "Давня перська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:745 +msgid "Deseret" +msgstr "Дезерет" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:749 +msgid "Shavian" +msgstr "Шавіан" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:753 +msgid "Osmanya" +msgstr "Османья" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:757 +msgid "Osage" +msgstr "Осейдж" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:761 +msgid "Elbasan" +msgstr "Ельбасан" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:765 +msgid "Caucasian Albanian" +msgstr "Кавказька албанська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:769 +msgid "Vithkuqi" +msgstr "Віткукі" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:773 +msgid "Linear A" +msgstr "Лінійна писемність A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:777 +msgid "Latin Extended-F" +msgstr "Латинь розширена-F" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:781 +msgid "Cypriot Syllabary" +msgstr "Кіпріотська складова" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:785 +msgid "Imperial Aramaic" +msgstr "імперська арамейська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:789 +msgid "Palmyrene" +msgstr "Пальмірська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:793 +msgid "Nabataean" +msgstr "Набатейська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:797 +msgid "Hatran" +msgstr "Хатран" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:801 +msgid "Phoenician" +msgstr "Фінікійська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:805 +msgid "Lydian" +msgstr "Лідійська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:809 +msgid "Meroitic Hieroglyphs" +msgstr "Мероїтська ієрогліфічна" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:813 +msgid "Meroitic Cursive" +msgstr "Мероїтська, скоропис" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:817 +msgid "Kharoshthi" +msgstr "Кхароштхі" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:821 +msgid "Old South Arabian" +msgstr "Давня південноарабська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:825 +msgid "Old North Arabian" +msgstr "Давня північноарабська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:829 +msgid "Manichaean" +msgstr "Маніхейська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:833 +msgid "Avestan" +msgstr "Авестанська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:837 +msgid "Inscriptional Parthian" +msgstr "Інскрипційна парфянська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:841 +msgid "Inscriptional Pahlavi" +msgstr "Інскрипційна пехлеві" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:845 +msgid "Psalter Pahlavi" +msgstr "Псалтирська пехлеві" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:849 +msgid "Old Turkic" +msgstr "Давня турецька" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:853 +msgid "Old Hungarian" +msgstr "Давня угорська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:857 +msgid "Hanifi Rohingya" +msgstr "Ганіфі рохінджа" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:861 +msgid "Rumi Numeral Symbols" +msgstr "Числові символи румі" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:865 +msgid "Yezidi" +msgstr "Єзидська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:869 +msgid "Old Sogdian" +msgstr "Давня согдійська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:873 +msgid "Sogdian" +msgstr "Согдійська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:877 +msgid "Old Uyghur" +msgstr "Давня уйгурська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:881 +msgid "Chorasmian" +msgstr "хорезмійська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:885 +msgid "Elymaic" +msgstr "Елімаїдська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:889 +msgid "Brahmi" +msgstr "Брахмійська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:893 +msgid "Kaithi" +msgstr "Кайтхі" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:897 +msgid "Sora Sompeng" +msgstr "Соранг сомпенг" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:901 +msgid "Chakma" +msgstr "Чакма" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:905 +msgid "Mahajani" +msgstr "Махаджані" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:909 +msgid "Sharada" +msgstr "Шарада" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:913 +msgid "Sinhala Archaic Numbers" +msgstr "Сингальські архаїчні числа" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:917 +msgid "Khojki" +msgstr "Ходжкі" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:921 +msgid "Multani" +msgstr "Мултанська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:925 +msgid "Khudawadi" +msgstr "Худабадська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:929 +msgid "Grantha" +msgstr "Грантха" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:933 +msgid "Newa" +msgstr "Неварська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:937 +msgid "Tirhuta" +msgstr "Тірхута" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:941 +msgid "Siddham" +msgstr "Сіддхам" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:945 +msgid "Modi" +msgstr "Моді" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:949 +msgid "Mongolian Supplement" +msgstr "Додаткові монгольські" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:953 +msgid "Takri" +msgstr "Такрі" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:957 +msgid "Ahom" +msgstr "Ахом" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:961 +msgid "Dogra" +msgstr "Доґра" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:965 +msgid "Warang Citi" +msgstr "Варанг-кшиті" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:969 +msgid "Dives Akuru" +msgstr "Дайвс-акуру" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:973 +msgid "Nandinagari" +msgstr "Нандінагарі" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:977 +msgid "Zanabazar Square" +msgstr "Квадратний Занабазара" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:981 +msgid "Soyombo" +msgstr "Сойомбо" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:985 +msgid "Unified Canadian Aboriginal Syllabics Extended-A" +msgstr "Уніфіковані силабічні канадських аборигенів (додаткові) A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:989 +msgid "Pau Cin Hau" +msgstr "Пау Цин Хау" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:993 +msgid "Bhaiksuki" +msgstr "Бхайксукі" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:997 +msgid "Marchen" +msgstr "Марчен" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1001 +msgid "Masaram Gondi" +msgstr "Масарам гонді" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1005 +msgid "Gunjala Gondi" +msgstr "Гунджала гонді" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1009 +msgid "Makasar" +msgstr "Макасар" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1013 +msgid "Lisu Supplement" +msgstr "Лісу, доповнення Latin-1" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1017 +msgid "Tamil Supplement" +msgstr "Додаткова тамільська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1021 +msgid "Cuneiform" +msgstr "Клинопис" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1025 +msgid "Cuneiform Numbers and Punctuation" +msgstr "Клинописні числа і пунктуація" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1029 +msgid "Early Dynastic Cuneiform" +msgstr "Клинопис ранньої династії" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1033 +msgid "Cypro-Minoan" +msgstr "Кіпро-мінойська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1037 +msgid "Egyptian Hieroglyphs" +msgstr "Єгипетська ієрогліфічна" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1041 +msgid "Egyptian Hieroglyph Format Controls" +msgstr "Керування форматами єгипетських ієрогліфів" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1045 +msgid "Anatolian Hieroglyphs" +msgstr "Анатолійьска ієрогліфічна" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1049 +msgid "Bamum Supplement" +msgstr "Розширений бамум" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1053 +msgid "Mro" +msgstr "Мро" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1057 +msgid "Tangsa" +msgstr "Тангса" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1061 +msgid "Bassa Vah" +msgstr "Басса-вах" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1065 +msgid "Pahawh Hmong" +msgstr "Пахау-хмонг" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1069 +msgid "Medefaidrin" +msgstr "Медефайдрін" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1073 +msgid "Miao" +msgstr "Мяо" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1077 +msgid "Ideographic Symbols and Punctuation" +msgstr "Ідеографічні символи і пунктуація" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1081 +msgid "Tangut" +msgstr "Тангутська" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1085 +msgid "Tangut Components" +msgstr "Компоненти тангутської" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1089 +msgid "Khitan Small Script" +msgstr "Киданська мала писемність" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1093 +msgid "Tangut Supplement" +msgstr "Тангутська, доповнення" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1097 +msgid "Kana Extended-B" +msgstr "Кана розширена-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1101 +msgid "Kana Supplement" +msgstr "Додаткова кана" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1105 +msgid "Kana Extended-A" +msgstr "Кана розширена-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1109 +msgid "Small Kana Extension" +msgstr "Мале розширення кани" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1113 +msgid "Nushu" +msgstr "Нюй-шу" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1117 +msgid "Duployan" +msgstr "Система Дюполоє" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1121 +msgid "Shorthand Format Controls" +msgstr "Керування форматами скоропису" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1125 +msgid "Znamenny Musical Notation" +msgstr "Символи запису музики знаменного співу" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1129 +msgid "Byzantine Musical Symbols" +msgstr "Візантійські музичні символи" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1133 +msgid "Musical Symbols" +msgstr "Музичні символи" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1137 +msgid "Ancient Greek Musical Notation" +msgstr "Давньогрецькі символи запису музики" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1141 +msgid "Mayan Numerals" +msgstr "Цифри майя" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1145 +msgid "Tai Xuan Jing Symbols" +msgstr "Символи Тай Хуан Жинь" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1149 +msgid "Counting Rod Numerals" +msgstr "Числа з паличок для лічби" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1153 +msgid "Mathematical Alphanumeric Symbols" +msgstr "Математичні буквено-цифрові символи" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1157 +msgid "Sutton SignWriting" +msgstr "Жестова писемність Саттон" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1161 +msgid "Latin Extended-G" +msgstr "Латинь розширена-G" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1165 +msgid "Glagolitic Supplement" +msgstr "Додаткові глаголиці" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1169 +msgid "Nyiakeng Puachue Hmong" +msgstr "Ньякензька пахау-хмонг" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1173 +msgid "Toto" +msgstr "Тото" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1177 +msgid "Wancho" +msgstr "Ванчо" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1181 +msgid "Ethiopic Extended-B" +msgstr "Ефіопська розширена-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1185 +msgid "Mende Kikakui" +msgstr "Менде кікауї" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1189 +msgid "Adlam" +msgstr "Адлам" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1193 +msgid "Indic Siyaq Numbers" +msgstr "Індійські числа сіяк" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1197 +msgid "Ottoman Siyaq Numbers" +msgstr "Оттоманські сіякські числа" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1201 +msgid "Arabic Mathematical Alphabetic Symbols" +msgstr "Арабські математичні символи абетки" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1205 +msgid "Mahjong Tiles" +msgstr "Плитки маджонґ" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1209 +msgid "Domino Tiles" +msgstr "Плитки доміно" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1213 +msgid "Playing Cards" +msgstr "Ігрові карти" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1217 +msgid "Enclosed Alphanumeric Supplement" +msgstr "Додаткові буквенно-цифрові у рамках" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1221 +msgid "Enclosed Ideographic Supplement" +msgstr "Додаткові ідеографічні у рамках" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1225 +msgid "Miscellaneous Symbols and Pictographs" +msgstr "Різні символи і піктограми" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1229 +msgid "Emoticons" +msgstr "Емоційки" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1233 +msgid "Ornamental Dingbats" +msgstr "Орнаментальні декоративні" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1237 +msgid "Transport and Map Symbols" +msgstr "Транспортні і картографічні символи" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1241 +msgid "Alchemical Symbols" +msgstr "Алхімічні символи" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1245 +msgid "Geometric Shapes Extended" +msgstr "Розширені геометричні форми" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1249 +msgid "Supplemental Arrows-C" +msgstr "Додаткові стрілки-C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1253 +msgid "Supplemental Symbols and Pictographs" +msgstr "Додаткові символи і піктограми" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1257 +msgid "Chess Symbols" +msgstr "Шахові символи" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1261 +msgid "Symbols and Pictographs Extended-A" +msgstr "Символи і піктографи, розширення A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1265 +msgid "Symbols for Legacy Computing" +msgstr "Застарілі символи комп'ютерних наук" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1269 +msgid "CJK Unified Ideographs Extension B" +msgstr "Уніфіковані ієрогліфічні ідеограми, додаток B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1273 +msgid "CJK Unified Ideographs Extension C" +msgstr "Ієрогліфічні ідеограми, додаток C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1277 +msgid "CJK Unified Ideographs Extension D" +msgstr "Ієрогліфічні ідеограми, додаток D" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1281 +msgid "CJK Unified Ideographs Extension E" +msgstr "Ієрогліфічні ідеограми, додаток E" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1285 +msgid "CJK Unified Ideographs Extension F" +msgstr "Ієрогліфічні ідеограми, додаток F" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1289 +msgid "CJK Compatibility Ideographs Supplement" +msgstr "Додаткові ієрогліфічні ідеограми для сумісності" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1293 +msgid "CJK Unified Ideographs Extension G" +msgstr "Універсальні ідеографічні ієрогліфи, додаток G" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1297 +msgid "Tags" +msgstr "Мітки" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1301 +msgid "Variation Selectors Supplement" +msgstr "Додаткові символи зміни" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1305 +msgid "Supplementary Private Use Area-A" +msgstr "Додаткова область приватного використання A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1309 +msgid "Supplementary Private Use Area-B" +msgstr "Додаткова область приватного використання B" + +#: tools/main.vala:51 +msgid "List engine name only" +msgstr "Показати лише список рушіїв" + +#: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 +msgid "Can't connect to IBus.\n" +msgstr "Не вдалося встановити зв’язок з IBus.\n" + +#: tools/main.vala:93 +#, c-format +msgid "language: %s\n" +msgstr "мова: %s\n" + +#: tools/main.vala:161 +msgid "No engine is set.\n" +msgstr "Рушій не встановлено.\n" + +#: tools/main.vala:169 +msgid "Set global engine failed.\n" +msgstr "Спроба встановлення загального рушія зазнала невдачі.\n" + +#: tools/main.vala:174 +msgid "Get global engine failed.\n" +msgstr "Спроба отримання назви загального рушія зазнала невдачі.\n" + +#: tools/main.vala:217 +msgid "Read the system registry cache." +msgstr "Читати дані з загальносистемного кешу регістру." + +#: tools/main.vala:219 +msgid "Read the registry cache FILE." +msgstr "Читати дані з кешу регістру у файлі ФАЙЛ." + +#: tools/main.vala:237 tools/main.vala:242 +msgid "The registry cache is invalid.\n" +msgstr "Кеш регістру є некоректним.\n" + +#: tools/main.vala:257 +msgid "Write the system registry cache." +msgstr "Записати дані до загальносистемного кешу регістру." + +#: tools/main.vala:259 +msgid "Write the registry cache FILE." +msgstr "Записати дані до кешу регістру у файлі ФАЙЛ." + +#: tools/main.vala:295 +msgid "" +"Use engine schema paths instead of ibus core, which can be comma-separated " +"values." +msgstr "" +"Використовувати шляхи бази даних рушія замість ядра ibus. Шляхи слід " +"вказувати у форматі списку значень, відокремлених комами." -#: ../setup/setup.ui.h:20 -msgid "Bottom left corner" -msgstr "У нижньому лівому куті" +#: tools/main.vala:381 +msgid "Resetting…" +msgstr "Скидаємо…" -#: ../setup/setup.ui.h:21 -msgid "Bottom right corner" -msgstr "У нижньому правому куті" +#: tools/main.vala:399 +msgid "Done" +msgstr "Виконано" -#: ../setup/setup.ui.h:22 -msgid "Candidates orientation:" -msgstr "Орієнтація варіантів:" +#: tools/main.vala:444 +msgid "Set or get engine" +msgstr "Встановити рушій або отримати дані щодо встановленого рушія" -#: ../setup/setup.ui.h:23 -msgid "Custom" -msgstr "Нетиповий" +#: tools/main.vala:445 +msgid "Exit ibus-daemon" +msgstr "Завершити роботу фонової служби ibus" -#: ../setup/setup.ui.h:24 -msgid "Disable:" -msgstr "Вимкнути:" +#: tools/main.vala:446 +msgid "Show available engines" +msgstr "Показати список доступних рушіїв" -#: ../setup/setup.ui.h:25 -msgid "Embed preedit text in application window" -msgstr "Вбудувати попередньо створений текст у вікно програми" +#: tools/main.vala:447 +msgid "(Not implemented)" +msgstr "(не реалізовано)" -#: ../setup/setup.ui.h:26 -msgid "Embed the preedit text of input method in the application window" -msgstr "" -"Вбудувати попередньо створений текст способу введення у вікно програми" +#: tools/main.vala:448 +msgid "Restart ibus-daemon" +msgstr "Перезапустити фонову службу ibus" -#: ../setup/setup.ui.h:27 -msgid "Embedded in menu" -msgstr "Вбудувати у меню" +#: tools/main.vala:449 +msgid "Show version" +msgstr "Показати дані щодо версії" -#: ../setup/setup.ui.h:28 -msgid "Enable or disable:" -msgstr "Увімкнення або вимикання:" +#: tools/main.vala:450 +msgid "Show the content of registry cache" +msgstr "Показати вміст кешу регістру" -#: ../setup/setup.ui.h:29 -msgid "Enable:" -msgstr "Увімкнути:" +#: tools/main.vala:451 +msgid "Create registry cache" +msgstr "Створити кеш регістру" -#: ../setup/setup.ui.h:30 -msgid "General" -msgstr "Загальне" +#: tools/main.vala:452 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "Вивести адресу D-Bus фонової служби ibus" -#: ../setup/setup.ui.h:31 -msgid "Horizontal" -msgstr "Горизонтально" +#: tools/main.vala:453 +msgid "Show the configuration values" +msgstr "Показати значення налаштувань" -#: ../setup/setup.ui.h:34 -msgid "Language panel position:" -msgstr "Розташування мовної панелі:" +#: tools/main.vala:454 +msgid "Reset the configuration values" +msgstr "Скинути значення налаштувань до початкових" -#: ../setup/setup.ui.h:35 -msgid "Move down the selected input method in the enabled input methods" -msgstr "" -"Пересунути нижче позначений спосіб введення у списку увімкнених способів " -"введення" +#: tools/main.vala:456 +msgid "Save emoji on dialog to clipboard" +msgstr "Зберегти емодзі з вікна до буфера обміну даними" -#: ../setup/setup.ui.h:36 -msgid "Move up the selected input method in the enabled input methods list" +#: tools/main.vala:458 +msgid "Show this information" +msgstr "Показати цю довідкову інформацію" + +#: tools/main.vala:464 +#, c-format +msgid "" +"Usage: %s COMMAND [OPTION...]\n" +"\n" msgstr "" -"Пересунути вгору позначений спосіб введення у списку увімкнених способів " -"введення" +"Користування: %s КОМАНДА [ПАРАМЕТР...]\n" +"\n" -#: ../setup/setup.ui.h:37 -msgid "Next input method:" -msgstr "Наступний спосіб введення:" +#: tools/main.vala:465 +msgid "Commands:\n" +msgstr "Команди:\n" -#: ../setup/setup.ui.h:38 -msgid "Previous input method:" -msgstr "Попередній спосіб введення:" +#: tools/main.vala:494 +#, c-format +msgid "%s is unknown command!\n" +msgstr "Команда %s є невідомою програмі!\n" -#: ../setup/setup.ui.h:39 -msgid "Remove the selected input method from the enabled input methods" -msgstr "" -"Вилучити позначений спосіб введення зі списку увімкнених способів введення" +#: ui/gtk3/emojier.vala:235 +msgid "Favorites" +msgstr "Улюблені" -#: ../setup/setup.ui.h:40 -msgid "Set the behavior of ibus how to show or hide language bar" -msgstr "Визначає поведінку ibus: спосіб показу або приховування мовної панелі" +#: ui/gtk3/emojier.vala:236 +msgid "Others" +msgstr "Інше" -#: ../setup/setup.ui.h:41 -msgid "Set the orientation of candidates in lookup table" -msgstr "Встановити орієнтацію варіантів у таблиці пошуку" +#: ui/gtk3/emojier.vala:237 +msgid "Open Unicode choice" +msgstr "Відкрити вибір Unicode" + +#: ui/gtk3/emojier.vala:1000 +msgid "Bring back emoji choice" +msgstr "Повернути вибір емоційок" + +#: ui/gtk3/emojier.vala:1103 +msgid "Page Down" +msgstr "На сторінку вниз" + +#: ui/gtk3/emojier.vala:1114 +msgid "Page Up" +msgstr "На сторінку вгору" + +#: ui/gtk3/emojier.vala:1117 +msgid "Show emoji variants" +msgstr "Показувати варіанти емодзі" + +#: ui/gtk3/emojier.vala:1118 +msgid "Close" +msgstr "Закрити" + +#: ui/gtk3/emojier.vala:1124 +msgid "Menu" +msgstr "Меню" + +#: ui/gtk3/emojier.vala:1135 +msgid "Click to view a warning message" +msgstr "Натисніть, щоб переглянути попередження" + +#: ui/gtk3/emojier.vala:1179 +msgid "Loading a Unicode dictionary:" +msgstr "Завантаження словника Unicode:" + +#: ui/gtk3/emojier.vala:1425 +#, c-format +msgid "Code point: %s" +msgstr "Точка кодування: %s" + +#: ui/gtk3/emojier.vala:1431 +msgid "Has emoji variants" +msgstr "Має варіанти емодзі" + +#: ui/gtk3/emojier.vala:1599 ui/gtk3/emojier.vala:1612 +#, c-format +msgid "Description: %s" +msgstr "Опис: %s" + +#: ui/gtk3/emojier.vala:1599 +msgid "None" +msgstr "Немає" + +#: ui/gtk3/emojier.vala:1623 +#, c-format +msgid "Annotations: %s" +msgstr "Анотації: %s" + +#: ui/gtk3/emojier.vala:1649 +#, c-format +msgid "Name: %s" +msgstr "Назва: %s" + +#: ui/gtk3/emojier.vala:1657 +#, c-format +msgid "Alias: %s" +msgstr "Альтернативна назва: %s" + +#: ui/gtk3/emojier.vala:2180 ui/gtk3/ibus-extension-gtk3.desktop.in:3 +#: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1244 +msgid "Emoji Choice" +msgstr "Вибір емодзі" + +#: ui/gtk3/emojier.vala:2182 +msgid "Unicode Choice" +msgstr "Вибір Unicode" + +#: ui/gtk3/emojier.vala:2485 +msgid "" +"Failed to get the current text application. Please re-focus your " +"application. E.g. Press Esc key several times to release the emoji typing " +"mode, click your desktop and click your text application again." +msgstr "" +"Не вдалося отримати дані поточної програми для роботи з текстом. Будь ласка, " +"повторно встановіть фокус на вікно програми. Наприклад, натисніть клавішу " +"Esc декілька разів, щоб вимкнути режим введення емодзі, клацніть на " +"стільниці, а потім клацніть у вікні вашої програми для роботи з текстом." + +#: ui/gtk3/emojierapp.vala:47 +msgid "Canceled to choose an emoji." +msgstr "Скасовано вибір емодзі." + +#: ui/gtk3/emojierapp.vala:67 +msgid "Copied an emoji to your clipboard." +msgstr "Скопійовано емодзі до вашого буфера обміну даними." + +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ui/gtk3/emojierapp.vala:126 +msgid "\"FONT\" for emoji characters on emoji dialog" +msgstr "«ШРИФТ» для символів емодзі у діалоговому вікні емодзі" + +#: ui/gtk3/emojierapp.vala:127 +msgid "FONT" +msgstr "ШРИФТ" + +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ui/gtk3/emojierapp.vala:132 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" +msgstr "«МОВА» для анотацій у діалоговому вікні емодзі. Приклад: en" + +#: ui/gtk3/emojierapp.vala:133 +msgid "LANG" +msgstr "МОВА" + +#: ui/gtk3/emojierapp.vala:135 +msgid "Emoji annotations can be match partially" +msgstr "Встановлення відповідності за анотаціями до емодзі може бути частковим" + +#: ui/gtk3/emojierapp.vala:139 +msgid "Match with the length of the specified integer" +msgstr "Відповідність за вказаною довжиною рядка" + +#: ui/gtk3/emojierapp.vala:143 +msgid "Match with the condition of the specified integer" +msgstr "Відповідність з умовою на вказану довжину рядка" + +#: ui/gtk3/panel.vala:320 ui/gtk3/panel.vala:351 +msgid "IBus Panel" +msgstr "Панель IBus" -#: ../setup/setup.ui.h:44 -msgid "Show information of the selected input method" -msgstr "Показати відомості щодо вибраного способу введення" +#: ui/gtk3/panel.vala:756 +msgid "IBus Notification" +msgstr "Сповіщення IBus" -#: ../setup/setup.ui.h:46 -msgid "Show input method's name on language bar when check the checkbox" +#: ui/gtk3/panel.vala:757 ui/gtk3/panel.vala:766 ui/gtk3/panel.vala:770 +msgid "" +"Keymap changes do not work in Plasma Wayland at present. Please use " +"systemsettings5 instead." msgstr "" -"Показати назву способу введення на мовній панелі, якщо позначено цей пункт" +"У Плазмі для Wayland зміна розкладок у цій програмі поки не працює. Будь " +"ласка, скористайтеся для внесення змін systemsettings5." -#: ../setup/setup.ui.h:47 -msgid "Show language panel:" -msgstr "Показ мовної панелі:" - -#: ../setup/setup.ui.h:48 -msgid "Start ibus on login" -msgstr "Запускати ibus при вході" +#: ui/gtk3/panel.vala:1045 +#, c-format +msgid "" +"Your configured input method %s does not exist in IBus input methods so \"US" +"\" layout was configured instead of your input method." +msgstr "" +"Налаштованого вами способу введення %s немає серед способів введення IBus. " +"Через це, замість вибраного вами способу введення, буде використано " +"розкладку «US»." -#: ../setup/setup.ui.h:49 -msgid "The shortcut keys for switching to next input method in the list" +#: ui/gtk3/panel.vala:1050 +msgid "" +"At least one of your configured input methods does not exist in IBus input " +"methods." msgstr "" -"Клавіатурні скорочення для перемикання на наступний спосіб введення у списку" +"Серед способів введення IBus немає принаймні одного із налаштованих способів " +"введення." -#: ../setup/setup.ui.h:50 -msgid "The shortcut keys for switching to previous input method in the list" +#: ui/gtk3/panel.vala:1053 +msgid "" +"Please run `ibus-setup` command, open \"Input Method\" tab, and configure " +"your input methods again." msgstr "" -"Клавіатурне скорочення для перемикання на попередній спосіб введення у " -"списку" +"Будь ласка, віддайте команду «ibus-setup», відкрийте вкладку «Способи " +"введення» і налаштуйте ваші способи введення ще раз." -#: ../setup/setup.ui.h:52 -msgid "Top left corner" -msgstr "У верхньому лівому куті" +#: ui/gtk3/panel.vala:1216 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus — інтелектуальний канал введення даних у Linux/Unix." -#: ../setup/setup.ui.h:53 -msgid "Top right corner" -msgstr "У верхньому правому куті" +#: ui/gtk3/panel.vala:1220 +msgid "translator-credits" +msgstr "Юрій Чорноіван " -#: ../setup/setup.ui.h:54 -msgid "Use custom font:" -msgstr "Нетиповий шрифт:" +#: ui/gtk3/panel.vala:1239 +msgid "Preferences" +msgstr "Параметри" -#: ../setup/setup.ui.h:57 -msgid "Vertical" -msgstr "Вертикально" +#: ui/gtk3/panel.vala:1265 +msgid "Restart" +msgstr "Перезапустити" -#: ../setup/setup.ui.h:58 -msgid "When active" -msgstr "Якщо активна" +#: ui/gtk3/panel.vala:1269 +msgid "Quit" +msgstr "Вийти" + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 +msgid "default:LTR" +msgstr "default:LTR" + +#~ msgid "" +#~ "IBus\n" +#~ "The intelligent input bus\n" +#~ "Homepage: https://github.com/ibus/ibus/wiki\n" +#~ "\n" +#~ "\n" +#~ "\n" +#~ msgstr "" +#~ "IBus\n" +#~ "Інтелектуальний канал введення\n" +#~ "Домашня сторінка: https://github.com/ibus/ibus/wiki\n" +#~ "\n" +#~ "\n" +#~ "\n" + +#~ msgid "Start ibus on login" +#~ msgstr "Запускати ibus при вході" + +#~ msgid "Startup" +#~ msgstr "Запуск" diff --git a/po/ur.po b/po/ur.po new file mode 100644 index 000000000..52c858d43 --- /dev/null +++ b/po/ur.po @@ -0,0 +1,3209 @@ +# Urdu translation of ibus. +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2020 Takao Fujiwara +# This file is distributed under the same license as the ibus package. +# +# Translators: +# Shehroz Kaleem , 2020. +msgid "" +msgstr "" +"Project-Id-Version: IBus\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2020-01-08 12:40+0900\n" +"PO-Revision-Date: 2020-06-30 11:40+0000\n" +"Last-Translator: Shehroz Kaleem \n" +"Language-Team: Urdu \n" +"Language: ur\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.1.1\n" + +#. Translators: Here “Preload” is a verb +#: data/dconf/org.freedesktop.ibus.gschema.xml:11 +msgid "Preload engines" +msgstr "پہلے سے موجود" + +#. Translators: Tooltip for the button “Preload Engines” +#: data/dconf/org.freedesktop.ibus.gschema.xml:13 +msgid "Preload engines during ibus starts up" +msgstr "پہلے سے موجود" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:17 +msgid "Engines order" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:18 +msgid "Saved engines order in input method list" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:22 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:23 +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is " +"400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " +"show the window and switch prev/next engines." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:27 +msgid "Saved version number" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:28 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:32 +msgid "Latin layouts which have no ASCII" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:33 +msgid "US layout is appended to the Latin layouts. variant can be omitted." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:37 +msgid "Use xmodmap" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:38 +msgid "" +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 +msgid "Use system keyboard layout" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 +msgid "Use system keyboard (XKB) layout" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:47 +msgid "Embed Preedit Text" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:48 +msgid "Embed Preedit Text in Application Window" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:52 +msgid "Use global input method" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 +msgid "Share the same input method among all applications" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:57 +msgid "Enable input method by default" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:58 +msgid "Enable input method by default when the application gets input focus" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:62 +msgid "DConf preserve name prefixes" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:63 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:70 +msgid "Trigger shortcut keys" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:71 +#: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 +msgid "The shortcut keys for turning input method on or off" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:75 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:80 +msgid "Enable shortcut keys" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:81 +msgid "The shortcut keys for turning input method on" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:85 +msgid "Disable shortcut keys" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:86 +msgid "The shortcut keys for turning input method off" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:90 +#: data/dconf/org.freedesktop.ibus.gschema.xml:95 +msgid "Next engine shortcut keys" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:91 +#: data/dconf/org.freedesktop.ibus.gschema.xml:96 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:100 +#: data/dconf/org.freedesktop.ibus.gschema.xml:105 +msgid "Prev engine shortcut keys" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:101 +#: data/dconf/org.freedesktop.ibus.gschema.xml:106 +msgid "The shortcut keys for switching to the previous input method" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:112 +msgid "Auto hide" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:113 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:117 +#: data/dconf/org.freedesktop.ibus.gschema.xml:121 +msgid "Language panel position" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:125 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:126 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:130 +msgid "The milliseconds to show property panel" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:131 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:135 +msgid "Orientation of lookup table" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:136 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:140 +#: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 +#: setup/setup.ui:475 +msgid "Show icon on system tray" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:145 +msgid "Show input method name" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 +msgid "Show input method name on language bar" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:150 +msgid "RGBA value of XKB icon" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:151 +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form 'rgba(r," +"g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 to 255 or " +"percentage values in the range 0% to 100%, and 'a' is a floating point value " +"in the range 0 to 1 of the alpha." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:155 +msgid "The milliseconds to show the panel icon for a property" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:156 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:160 +msgid "Use custom font" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:161 +msgid "Use custom font name for language panel" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:165 +#: data/dconf/org.freedesktop.ibus.gschema.xml:183 +msgid "Custom font" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:166 +msgid "Custom font name for language panel" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:173 +msgid "Unicode shortcut keys for gtk_accelerator_parse" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:174 +msgid "The shortcut keys for turning Unicode typing on or off" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:178 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:179 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:184 +msgid "Custom font name for emoji characters on emoji dialog" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:188 +msgid "Default language for emoji dictionary" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:189 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:193 +msgid "favorite emoji list on emoji dialog" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:194 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:198 +msgid "favorite emoji annotation list on emoji dialog" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:199 +msgid "You can assign an annotation for a favorite emoji in this list." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:203 +msgid "Whether emoji annotations can be match partially or not" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:204 +msgid "" +"Whether emoji annotations can be matched with a partial string instead of " +"the exact match or not." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:208 +msgid "Match emoji annotations with the specified length" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:209 +msgid "" +"Match emoji annotations partially with more than the specified number of " +"characters instead of the exact match." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:213 +msgid "Choose a condition to match emoji annotations partially" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:214 +msgid "" +"Choose one of the following conditions to match emoji annotations partially: " +"0 == Prefix match, 1 == Suffix match, 2 == Containing match" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:218 +msgid "Load the emoji data at the time of startup" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:219 +msgid "" +"Load the emoji data at the time of startup if true. About 10MB memory is " +"needed to load the data. Load the emoji data when open the emoji dialog at " +"the beginning if false." +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:223 +msgid "Load the Unicode data at the time of startup" +msgstr "" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:224 +msgid "" +"Load the Unicode data at the time of startup if true. About 15MB memory is " +"needed to load the data. Load the Unicode data when open the emoji dialog at " +"the beginning if false. The Unicode data is always loaded after the emoji " +"data is loaded even if true." +msgstr "" + +#: ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "" + +#: ibus/lang.py:41 src/ibusutil.c:209 +msgid "Other" +msgstr "" + +#: setup/emojilang.py:67 +msgid "Select a language" +msgstr "" + +#: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 +#: setup/main.py:560 +msgid "_Cancel" +msgstr "" + +#: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 +msgid "_OK" +msgstr "" + +#: setup/emojilang.py:235 setup/enginedialog.py:205 +msgid "More…" +msgstr "" + +#: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 +msgid "About" +msgstr "" + +#: setup/engineabout.py:40 setup/setup.ui:1401 +msgid "_Close" +msgstr "" + +#: setup/engineabout.py:72 +#, python-format +msgid "Language: %s\n" +msgstr "" + +#: setup/engineabout.py:75 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "" + +#: setup/engineabout.py:78 +#, python-format +msgid "Author: %s\n" +msgstr "" + +#: setup/engineabout.py:81 +msgid "Description:\n" +msgstr "" + +#: setup/enginecombobox.py:139 setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "" + +#. add button +#: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 +msgid "_Add" +msgstr "" + +#. create im name & icon column +#: setup/enginetreeview.py:69 setup/setup.ui:838 +msgid "Input Method" +msgstr "" + +#: setup/enginetreeview.py:96 +msgid "Kbd" +msgstr "" + +#: setup/ibus-setup.desktop:3 setup/setup.ui:69 +msgid "IBus Preferences" +msgstr "" + +#: setup/ibus-setup.desktop:4 +msgid "Set IBus Preferences" +msgstr "" + +#: setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "" + +#: setup/keyboardshortcut.py:67 +msgid "Key code:" +msgstr "" + +#: setup/keyboardshortcut.py:82 +msgid "Modifiers:" +msgstr "" + +#. apply button +#: setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "" + +#. delete button +#: setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "" + +#: setup/keyboardshortcut.py:252 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "" + +#: setup/keyboardshortcut.py:255 +msgid "Please press a key (or a key combination)" +msgstr "" + +#: setup/main.py:121 setup/main.py:588 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "" + +#: setup/main.py:515 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "" + +#: setup/main.py:536 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "" + +#. Translators: %d == 5 currently +#: setup/main.py:550 +#, python-format +msgid "IBus daemon could not be started in %d seconds" +msgstr "" + +#: setup/main.py:562 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "" + +#. Translators: Title of the window +#: setup/main.py:564 +msgid "switching input methods" +msgstr "" + +#: setup/setup.ui:11 +msgid "Horizontal" +msgstr "" + +#: setup/setup.ui:14 +msgid "Vertical" +msgstr "" + +#: setup/setup.ui:25 +msgid "Top left corner" +msgstr "" + +#: setup/setup.ui:28 +msgid "Top right corner" +msgstr "" + +#: setup/setup.ui:31 +msgid "Bottom left corner" +msgstr "" + +#: setup/setup.ui:34 +msgid "Bottom right corner" +msgstr "" + +#: setup/setup.ui:37 +msgid "Custom" +msgstr "" + +#: setup/setup.ui:48 +msgid "Do not show" +msgstr "" + +#: setup/setup.ui:51 +msgid "Hide automatically" +msgstr "" + +#: setup/setup.ui:54 +msgid "Always" +msgstr "" + +#: setup/setup.ui:113 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "" + +#: setup/setup.ui:115 +msgid "Next input method:" +msgstr "" + +#: setup/setup.ui:127 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "" + +#: setup/setup.ui:129 +msgid "Previous input method:" +msgstr "" + +#: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 +#: setup/setup.ui:903 setup/setup.ui:957 +msgid "..." +msgstr "" + +#: setup/setup.ui:226 +msgid "Enable or disable:" +msgstr "" + +#: setup/setup.ui:238 +msgid "Enable:" +msgstr "" + +#: setup/setup.ui:291 +msgid "Disable:" +msgstr "" + +#: setup/setup.ui:345 setup/setup.ui:983 +msgid "Keyboard Shortcuts" +msgstr "" + +#: setup/setup.ui:374 +msgid "Set the orientation of candidates in lookup table" +msgstr "" + +#: setup/setup.ui:376 +msgid "Candidates orientation:" +msgstr "" + +#: setup/setup.ui:407 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "" + +#: setup/setup.ui:409 +msgid "Show property panel:" +msgstr "" + +#: setup/setup.ui:423 +msgid "Language panel position:" +msgstr "" + +#: setup/setup.ui:494 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "" + +#: setup/setup.ui:508 +msgid "Embed preedit text in application window" +msgstr "" + +#: setup/setup.ui:513 +msgid "Embed the preedit text of input method in the application window" +msgstr "" + +#: setup/setup.ui:527 +msgid "Use custom font:" +msgstr "" + +#: setup/setup.ui:562 setup/setup.ui:1156 +msgid "Font and Style" +msgstr "" + +#: setup/setup.ui:579 +msgid "General" +msgstr "" + +#: setup/setup.ui:671 +msgid "Add the selected input method into the enabled input methods" +msgstr "" + +#: setup/setup.ui:682 +msgid "_Remove" +msgstr "" + +#: setup/setup.ui:689 +msgid "Remove the selected input method from the enabled input methods" +msgstr "" + +#: setup/setup.ui:700 +msgid "_Up" +msgstr "" + +#: setup/setup.ui:707 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "" + +#: setup/setup.ui:718 +msgid "_Down" +msgstr "" + +#: setup/setup.ui:725 +msgid "Move down the selected input method in the enabled input methods" +msgstr "" + +#: setup/setup.ui:736 +msgid "_About" +msgstr "" + +#: setup/setup.ui:743 +msgid "Show information of the selected input method" +msgstr "" + +#: setup/setup.ui:754 +msgid "_Preferences" +msgstr "" + +#: setup/setup.ui:761 +msgid "Show setup of the selected input method" +msgstr "" + +#: setup/setup.ui:812 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" + +#: setup/setup.ui:873 +msgid "" +"The shortcut keys to enable conversions of emoji annotations or Unicode names" +msgstr "" + +#: setup/setup.ui:875 +msgid "Emoji annotation:" +msgstr "" + +#: setup/setup.ui:927 +msgid "The shortcut keys to enable Unicode code point conversions" +msgstr "" + +#: setup/setup.ui:929 +msgid "Unicode code point:" +msgstr "" + +#: setup/setup.ui:1013 +msgid "Set a font of Unicode candidates on the emoji dialog" +msgstr "" + +#: setup/setup.ui:1015 +msgid "Unicode font:" +msgstr "" + +#: setup/setup.ui:1038 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "" + +#: setup/setup.ui:1040 +msgid "Emoji annotation language:" +msgstr "" + +#: setup/setup.ui:1062 +msgid "" +"Match emoji annotations partially with the following condition and more than " +"the number of characters:" +msgstr "" + +#: setup/setup.ui:1067 +msgid "" +"If emoji annotations can be matched with a partial string instead of the " +"exact match" +msgstr "" + +#: setup/setup.ui:1101 +msgid "Prefix match" +msgstr "" + +#: setup/setup.ui:1115 +msgid "Suffix match" +msgstr "" + +#: setup/setup.ui:1130 +msgid "Containing match" +msgstr "" + +#: setup/setup.ui:1176 +msgid "Emoji" +msgstr "" + +#: setup/setup.ui:1230 +msgid "Keyboard Layout" +msgstr "" + +#: setup/setup.ui:1278 +msgid "Global input method settings" +msgstr "" + +#: setup/setup.ui:1298 +msgid "Advanced" +msgstr "" + +#: setup/setup.ui:1317 +msgid "" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" +msgstr "" + +#: setup/setup.ui:1341 +msgid "Start ibus on login" +msgstr "" + +#: setup/setup.ui:1358 +msgid "Startup" +msgstr "" + +#: src/ibusemojigen.h:30 +msgid "Activities" +msgstr "" + +#: src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "" + +#: src/ibusemojigen.h:32 +msgid "Component" +msgstr "" + +#: src/ibusemojigen.h:33 +msgid "Flags" +msgstr "" + +#: src/ibusemojigen.h:34 +msgid "Food & Drink" +msgstr "" + +#: src/ibusemojigen.h:35 +msgid "Objects" +msgstr "" + +#: src/ibusemojigen.h:36 +msgid "People & Body" +msgstr "" + +#: src/ibusemojigen.h:37 +msgid "Smileys & Emotion" +msgstr "" + +#: src/ibusemojigen.h:38 +msgid "Symbols" +msgstr "" + +#: src/ibusemojigen.h:39 +msgid "Travel & Places" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:33 +msgid "Basic Latin" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:37 +msgid "Latin-1 Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:41 +msgid "Latin Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:45 +msgid "Latin Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:49 +msgid "IPA Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:53 +msgid "Spacing Modifier Letters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:57 +msgid "Combining Diacritical Marks" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:61 +msgid "Greek and Coptic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:65 +msgid "Cyrillic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:69 +msgid "Cyrillic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:73 +msgid "Armenian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:77 +msgid "Hebrew" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:81 +msgid "Arabic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:85 +msgid "Syriac" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:89 +msgid "Arabic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:93 +msgid "Thaana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:97 +msgid "NKo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:101 +msgid "Samaritan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:105 +msgid "Mandaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:109 +msgid "Syriac Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:113 +msgid "Arabic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:117 +msgid "Devanagari" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:121 +msgid "Bengali" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:125 +msgid "Gurmukhi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:129 +msgid "Gujarati" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:133 +msgid "Oriya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:137 +msgid "Tamil" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:141 +msgid "Telugu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:145 +msgid "Kannada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:149 +msgid "Malayalam" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:153 +msgid "Sinhala" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:157 +msgid "Thai" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:161 +msgid "Lao" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:165 +msgid "Tibetan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:169 +msgid "Myanmar" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:173 +msgid "Georgian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:177 +msgid "Hangul Jamo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:181 +msgid "Ethiopic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:185 +msgid "Ethiopic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:189 +msgid "Cherokee" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:193 +msgid "Unified Canadian Aboriginal Syllabics" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:197 +msgid "Ogham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:201 +msgid "Runic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:205 +msgid "Tagalog" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:209 +msgid "Hanunoo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:213 +msgid "Buhid" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:217 +msgid "Tagbanwa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:221 +msgid "Khmer" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:225 +msgid "Mongolian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:229 +msgid "Unified Canadian Aboriginal Syllabics Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:233 +msgid "Limbu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:237 +msgid "Tai Le" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:241 +msgid "New Tai Lue" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:245 +msgid "Khmer Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:249 +msgid "Buginese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:253 +msgid "Tai Tham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:257 +msgid "Combining Diacritical Marks Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:261 +msgid "Balinese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:265 +msgid "Sundanese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:269 +msgid "Batak" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:273 +msgid "Lepcha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:277 +msgid "Ol Chiki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:281 +msgid "Cyrillic Extended-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:285 +msgid "Georgian Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:289 +msgid "Sundanese Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:293 +msgid "Vedic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:297 +msgid "Phonetic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:301 +msgid "Phonetic Extensions Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:305 +msgid "Combining Diacritical Marks Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:309 +msgid "Latin Extended Additional" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:313 +msgid "Greek Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:317 +msgid "General Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:321 +msgid "Superscripts and Subscripts" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:325 +msgid "Currency Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:329 +msgid "Combining Diacritical Marks for Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:333 +msgid "Letterlike Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:337 +msgid "Number Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:341 +msgid "Arrows" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:345 +msgid "Mathematical Operators" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:349 +msgid "Miscellaneous Technical" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:353 +msgid "Control Pictures" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:357 +msgid "Optical Character Recognition" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:361 +msgid "Enclosed Alphanumerics" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:365 +msgid "Box Drawing" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:369 +msgid "Block Elements" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:373 +msgid "Geometric Shapes" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:377 +msgid "Miscellaneous Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:381 +msgid "Dingbats" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:385 +msgid "Miscellaneous Mathematical Symbols-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:389 +msgid "Supplemental Arrows-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:393 +msgid "Braille Patterns" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:397 +msgid "Supplemental Arrows-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:401 +msgid "Miscellaneous Mathematical Symbols-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:405 +msgid "Supplemental Mathematical Operators" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:409 +msgid "Miscellaneous Symbols and Arrows" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:413 +msgid "Glagolitic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:417 +msgid "Latin Extended-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:421 +msgid "Coptic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:425 +msgid "Georgian Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:429 +msgid "Tifinagh" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:433 +msgid "Ethiopic Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:437 +msgid "Cyrillic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:441 +msgid "Supplemental Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:445 +msgid "CJK Radicals Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:449 +msgid "Kangxi Radicals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:453 +msgid "Ideographic Description Characters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:457 +msgid "CJK Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:461 +msgid "Hiragana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:465 +msgid "Katakana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:469 +msgid "Bopomofo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:473 +msgid "Hangul Compatibility Jamo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:477 +msgid "Kanbun" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:481 +msgid "Bopomofo Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:485 +msgid "CJK Strokes" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:489 +msgid "Katakana Phonetic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:493 +msgid "Enclosed CJK Letters and Months" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:497 +msgid "CJK Compatibility" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:501 +msgid "CJK Unified Ideographs Extension A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:505 +msgid "Yijing Hexagram Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:509 +msgid "CJK Unified Ideographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:513 +msgid "Yi Syllables" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:517 +msgid "Yi Radicals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:521 +msgid "Lisu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:525 +msgid "Vai" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:529 +msgid "Cyrillic Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:533 +msgid "Bamum" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:537 +msgid "Modifier Tone Letters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:541 +msgid "Latin Extended-D" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:545 +msgid "Syloti Nagri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:549 +msgid "Common Indic Number Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:553 +msgid "Phags-pa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:557 +msgid "Saurashtra" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:561 +msgid "Devanagari Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:565 +msgid "Kayah Li" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:569 +msgid "Rejang" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:573 +msgid "Hangul Jamo Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:577 +msgid "Javanese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:581 +msgid "Myanmar Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:585 +msgid "Cham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:589 +msgid "Myanmar Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:593 +msgid "Tai Viet" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:597 +msgid "Meetei Mayek Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:601 +msgid "Ethiopic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:605 +msgid "Latin Extended-E" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:609 +msgid "Cherokee Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:613 +msgid "Meetei Mayek" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:617 +msgid "Hangul Syllables" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:621 +msgid "Hangul Jamo Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:625 +msgid "High Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:629 +msgid "High Private Use Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:633 +msgid "Low Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:637 +msgid "Private Use Area" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:641 +msgid "CJK Compatibility Ideographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:645 +msgid "Alphabetic Presentation Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:649 +msgid "Arabic Presentation Forms-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:653 +msgid "Variation Selectors" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:657 +msgid "Vertical Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:661 +msgid "Combining Half Marks" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:665 +msgid "CJK Compatibility Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:669 +msgid "Small Form Variants" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:673 +msgid "Arabic Presentation Forms-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:677 +msgid "Halfwidth and Fullwidth Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:681 +msgid "Specials" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:685 +msgid "Linear B Syllabary" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:689 +msgid "Linear B Ideograms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:693 +msgid "Aegean Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:697 +msgid "Ancient Greek Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:701 +msgid "Ancient Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:705 +msgid "Phaistos Disc" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:709 +msgid "Lycian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:713 +msgid "Carian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:717 +msgid "Coptic Epact Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:721 +msgid "Old Italic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:725 +msgid "Gothic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:729 +msgid "Old Permic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:733 +msgid "Ugaritic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:737 +msgid "Old Persian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:741 +msgid "Deseret" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:745 +msgid "Shavian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:749 +msgid "Osmanya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:753 +msgid "Osage" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:757 +msgid "Elbasan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:761 +msgid "Caucasian Albanian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:765 +msgid "Linear A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:769 +msgid "Cypriot Syllabary" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:773 +msgid "Imperial Aramaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:777 +msgid "Palmyrene" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:781 +msgid "Nabataean" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:785 +msgid "Hatran" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:789 +msgid "Phoenician" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:793 +msgid "Lydian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:797 +msgid "Meroitic Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:801 +msgid "Meroitic Cursive" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:805 +msgid "Kharoshthi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:809 +msgid "Old South Arabian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:813 +msgid "Old North Arabian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:817 +msgid "Manichaean" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:821 +msgid "Avestan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:825 +msgid "Inscriptional Parthian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:829 +msgid "Inscriptional Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:833 +msgid "Psalter Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:837 +msgid "Old Turkic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:841 +msgid "Old Hungarian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:845 +msgid "Hanifi Rohingya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:849 +msgid "Rumi Numeral Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:853 +msgid "Old Sogdian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:857 +msgid "Sogdian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:861 +msgid "Elymaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:865 +msgid "Brahmi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:869 +msgid "Kaithi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:873 +msgid "Sora Sompeng" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:877 +msgid "Chakma" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:881 +msgid "Mahajani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:885 +msgid "Sharada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:889 +msgid "Sinhala Archaic Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:893 +msgid "Khojki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:897 +msgid "Multani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:901 +msgid "Khudawadi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:905 +msgid "Grantha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:909 +msgid "Newa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:913 +msgid "Tirhuta" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:917 +msgid "Siddham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:921 +msgid "Modi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:925 +msgid "Mongolian Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:929 +msgid "Takri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:933 +msgid "Ahom" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:937 +msgid "Dogra" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:941 +msgid "Warang Citi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:945 +msgid "Nandinagari" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:949 +msgid "Zanabazar Square" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:953 +msgid "Soyombo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:957 +msgid "Pau Cin Hau" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:961 +msgid "Bhaiksuki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:965 +msgid "Marchen" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:969 +msgid "Masaram Gondi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:973 +msgid "Gunjala Gondi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:977 +msgid "Makasar" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:981 +msgid "Tamil Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:985 +msgid "Cuneiform" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:989 +msgid "Cuneiform Numbers and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:993 +msgid "Early Dynastic Cuneiform" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:997 +msgid "Egyptian Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1001 +msgid "Egyptian Hieroglyph Format Controls" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1005 +msgid "Anatolian Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1009 +msgid "Bamum Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1013 +msgid "Mro" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1017 +msgid "Bassa Vah" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1021 +msgid "Pahawh Hmong" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1025 +msgid "Medefaidrin" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1029 +msgid "Miao" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1033 +msgid "Ideographic Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1037 +msgid "Tangut" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1041 +msgid "Tangut Components" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1045 +msgid "Kana Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1049 +msgid "Kana Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1053 +msgid "Small Kana Extension" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1057 +msgid "Nushu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1061 +msgid "Duployan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1065 +msgid "Shorthand Format Controls" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1069 +msgid "Byzantine Musical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1073 +msgid "Musical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1077 +msgid "Ancient Greek Musical Notation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1081 +msgid "Mayan Numerals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1085 +msgid "Tai Xuan Jing Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1089 +msgid "Counting Rod Numerals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1093 +msgid "Mathematical Alphanumeric Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1097 +msgid "Sutton SignWriting" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1101 +msgid "Glagolitic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1105 +msgid "Nyiakeng Puachue Hmong" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1109 +msgid "Wancho" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1113 +msgid "Mende Kikakui" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1117 +msgid "Adlam" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1121 +msgid "Indic Siyaq Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1125 +msgid "Ottoman Siyaq Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1129 +msgid "Arabic Mathematical Alphabetic Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1133 +msgid "Mahjong Tiles" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1137 +msgid "Domino Tiles" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1141 +msgid "Playing Cards" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1145 +msgid "Enclosed Alphanumeric Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1149 +msgid "Enclosed Ideographic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1153 +msgid "Miscellaneous Symbols and Pictographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1157 +msgid "Emoticons" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1161 +msgid "Ornamental Dingbats" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1165 +msgid "Transport and Map Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1169 +msgid "Alchemical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1173 +msgid "Geometric Shapes Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1177 +msgid "Supplemental Arrows-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1181 +msgid "Supplemental Symbols and Pictographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1185 +msgid "Chess Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1189 +msgid "Symbols and Pictographs Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1193 +msgid "CJK Unified Ideographs Extension B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1197 +msgid "CJK Unified Ideographs Extension C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1201 +msgid "CJK Unified Ideographs Extension D" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1205 +msgid "CJK Unified Ideographs Extension E" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1209 +msgid "CJK Unified Ideographs Extension F" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1213 +msgid "CJK Compatibility Ideographs Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1217 +msgid "Tags" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1221 +msgid "Variation Selectors Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1225 +msgid "Supplementary Private Use Area-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1229 +msgid "Supplementary Private Use Area-B" +msgstr "" + +#: tools/main.vala:51 +msgid "List engine name only" +msgstr "" + +#: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 +msgid "Can't connect to IBus.\n" +msgstr "" + +#: tools/main.vala:93 +#, c-format +msgid "language: %s\n" +msgstr "" + +#: tools/main.vala:161 +msgid "No engine is set.\n" +msgstr "" + +#: tools/main.vala:169 +msgid "Set global engine failed.\n" +msgstr "" + +#: tools/main.vala:174 +msgid "Get global engine failed.\n" +msgstr "" + +#: tools/main.vala:217 +msgid "Read the system registry cache." +msgstr "" + +#: tools/main.vala:219 +msgid "Read the registry cache FILE." +msgstr "" + +#: tools/main.vala:237 tools/main.vala:242 +msgid "The registry cache is invalid.\n" +msgstr "" + +#: tools/main.vala:257 +msgid "Write the system registry cache." +msgstr "" + +#: tools/main.vala:259 +msgid "Write the registry cache FILE." +msgstr "" + +#: tools/main.vala:295 +msgid "" +"Use engine schema paths instead of ibus core, which can be comma-separated " +"values." +msgstr "" + +#: tools/main.vala:381 +msgid "Resetting…" +msgstr "" + +#: tools/main.vala:399 +msgid "Done" +msgstr "" + +#: tools/main.vala:444 +msgid "Set or get engine" +msgstr "" + +#: tools/main.vala:445 +msgid "Exit ibus-daemon" +msgstr "" + +#: tools/main.vala:446 +msgid "Show available engines" +msgstr "" + +#: tools/main.vala:447 +msgid "(Not implemented)" +msgstr "" + +#: tools/main.vala:448 +msgid "Restart ibus-daemon" +msgstr "" + +#: tools/main.vala:449 +msgid "Show version" +msgstr "" + +#: tools/main.vala:450 +msgid "Show the content of registry cache" +msgstr "" + +#: tools/main.vala:451 +msgid "Create registry cache" +msgstr "" + +#: tools/main.vala:452 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "" + +#: tools/main.vala:453 +msgid "Show the configuration values" +msgstr "" + +#: tools/main.vala:454 +msgid "Reset the configuration values" +msgstr "" + +#: tools/main.vala:456 +msgid "Save emoji on dialog to clipboard " +msgstr "" + +#: tools/main.vala:458 +msgid "Show this information" +msgstr "" + +#: tools/main.vala:464 +#, c-format +msgid "" +"Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "" + +#: tools/main.vala:465 +msgid "Commands:\n" +msgstr "" + +#: tools/main.vala:494 +#, c-format +msgid "%s is unknown command!\n" +msgstr "" + +#: ui/gtk3/emojier.vala:233 +msgid "Favorites" +msgstr "" + +#: ui/gtk3/emojier.vala:234 +msgid "Others" +msgstr "" + +#: ui/gtk3/emojier.vala:235 +msgid "Open Unicode choice" +msgstr "" + +#: ui/gtk3/emojier.vala:994 +msgid "Bring back emoji choice" +msgstr "" + +#: ui/gtk3/emojier.vala:1096 +msgid "Page Down" +msgstr "" + +#: ui/gtk3/emojier.vala:1107 +msgid "Page Up" +msgstr "" + +#: ui/gtk3/emojier.vala:1110 +msgid "Show emoji variants" +msgstr "" + +#: ui/gtk3/emojier.vala:1111 +msgid "Close" +msgstr "" + +#: ui/gtk3/emojier.vala:1117 +msgid "Menu" +msgstr "" + +#: ui/gtk3/emojier.vala:1128 +msgid "Click to view a warning message" +msgstr "" + +#: ui/gtk3/emojier.vala:1172 +msgid "Loading a Unicode dictionary:" +msgstr "" + +#: ui/gtk3/emojier.vala:1418 +#, c-format +msgid "Code point: %s" +msgstr "" + +#: ui/gtk3/emojier.vala:1424 +msgid "Has emoji variants" +msgstr "" + +#: ui/gtk3/emojier.vala:1591 ui/gtk3/emojier.vala:1604 +#, c-format +msgid "Description: %s" +msgstr "" + +#: ui/gtk3/emojier.vala:1591 +msgid "None" +msgstr "" + +#: ui/gtk3/emojier.vala:1615 +#, c-format +msgid "Annotations: %s" +msgstr "" + +#: ui/gtk3/emojier.vala:1641 +#, c-format +msgid "Name: %s" +msgstr "" + +#: ui/gtk3/emojier.vala:1649 +#, c-format +msgid "Alias: %s" +msgstr "" + +#: ui/gtk3/emojier.vala:2139 ui/gtk3/ibus-extension-gtk3.desktop.in:3 +#: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 +msgid "Emoji Choice" +msgstr "" + +#: ui/gtk3/emojier.vala:2141 +msgid "Unicode Choice" +msgstr "" + +#: ui/gtk3/emojier.vala:2429 +msgid "" +"Failed to get the current text application. Please re-focus your " +"application. E.g. Press Esc key several times to release the emoji typing " +"mode, click your desktop and click your text application again." +msgstr "" + +#: ui/gtk3/emojierapp.vala:58 +msgid "Canceled to choose an emoji." +msgstr "" + +#: ui/gtk3/emojierapp.vala:93 +msgid "Copied an emoji to your clipboard." +msgstr "" + +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ui/gtk3/emojierapp.vala:114 +msgid "\"FONT\" for emoji characters on emoji dialog" +msgstr "" + +#: ui/gtk3/emojierapp.vala:115 +msgid "FONT" +msgstr "" + +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ui/gtk3/emojierapp.vala:120 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" +msgstr "" + +#: ui/gtk3/emojierapp.vala:121 +msgid "LANG" +msgstr "" + +#: ui/gtk3/emojierapp.vala:123 +msgid "Emoji annotations can be match partially" +msgstr "" + +#: ui/gtk3/emojierapp.vala:127 +msgid "Match with the length of the specified integer" +msgstr "" + +#: ui/gtk3/emojierapp.vala:131 +msgid "Match with the condition of the specified integer" +msgstr "" + +#: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 +msgid "IBus Panel" +msgstr "" + +#: ui/gtk3/panel.vala:1095 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "" + +#: ui/gtk3/panel.vala:1099 +msgid "translator-credits" +msgstr "" + +#: ui/gtk3/panel.vala:1118 +msgid "Preferences" +msgstr "" + +#: ui/gtk3/panel.vala:1144 +msgid "Restart" +msgstr "" + +#: ui/gtk3/panel.vala:1148 +msgid "Quit" +msgstr "" + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 +msgid "default:LTR" +msgstr "default:RTL" diff --git a/po/vi.po b/po/vi.po index 205be9c1d..cf0a8959f 100644 --- a/po/vi.po +++ b/po/vi.po @@ -1,531 +1,3098 @@ -# Vietnamese translations for data package. -# Copyright (C) 2009 THE data'S COPYRIGHT HOLDER -# This file is distributed under the same license as the data package. -# Lê Quốc Tuấn , 2009. +# Vietnamese translation of ibus. +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2018 Takao Fujiwara +# This file is distributed under the same license as the ibus package. # +# Translators: +# Lê Quốc Tuấn , 2009 +# Đoàn Hoà Khiêm , 2018 +# fujiwara , 2015. #zanata +# fujiwara , 2018. #zanata msgid "" msgstr "" -"Project-Id-Version: data 1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-12 00:41+0900\n" -"PO-Revision-Date: 2010-06-01 13:17+0700\n" -"Last-Translator: Lê Quốc Tuấn \n" -"Language-Team: Vietnamese\n" -"Language: \n" +"Project-Id-Version: IBus\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2018-06-21 16:24+0900\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2018-06-21 07:54+0000\n" +"Last-Translator: Copied by Zanata \n" +"Language-Team: Vietnamese\n" +"Language: vi\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Zanata 4.4.5\n" -#: ../bus/ibus.desktop.in.h:1 -msgid "IBus" -msgstr "IBus" +#: ../setup/setup.ui.h:1 +msgid "Horizontal" +msgstr "Ngang" -#: ../bus/ibus.desktop.in.h:2 -#, fuzzy -msgid "Input Method Framework" -msgstr "Bộ gõ IBus" +#: ../setup/setup.ui.h:2 +msgid "Vertical" +msgstr "Dọc" -#: ../bus/ibus.desktop.in.h:3 -#, fuzzy -msgid "Start IBus Input Method Framework" -msgstr "Bộ gõ IBus" +#: ../setup/setup.ui.h:3 +msgid "Top left corner" +msgstr "Góc trên bên trái" -#: ../ibus/_config.py.in:39 -msgid "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." -msgstr "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +#: ../setup/setup.ui.h:4 +msgid "Top right corner" +msgstr "Góc trên bên phải" -#: ../ibus/lang.py:41 -msgid "Other" -msgstr "Khác" +#: ../setup/setup.ui.h:5 +msgid "Bottom left corner" +msgstr "Góc dưới bên trái" -#: ../ui/gtk/candidatepanel.py:264 -msgid "Previous page" -msgstr "Trang trước" +#: ../setup/setup.ui.h:6 +msgid "Bottom right corner" +msgstr "Góc dưới bên phải" -#: ../ui/gtk/candidatepanel.py:269 -msgid "Next page" -msgstr "Trang sau" +#: ../setup/setup.ui.h:7 +msgid "Custom" +msgstr "Tùy biến" -#: ../ui/gtk/main.py:55 -msgid "" -"Some input methods have been installed, removed or updated. Please restart " -"ibus input platform." -msgstr "" -"Một vài kiểu gõ vừa được cài đặt, xóa hoặc cập nhật. Vui lòng khởi động lại " -"bộ gõ ibus." +#: ../setup/setup.ui.h:8 +msgid "Do not show" +msgstr "Không hiển thị" -#: ../ui/gtk/main.py:59 -msgid "Restart Now" -msgstr "Khởi động lại ngay" +#: ../setup/setup.ui.h:9 +msgid "Hide automatically" +msgstr "Tự động ẩn" -#: ../ui/gtk/main.py:60 -msgid "Later" -msgstr "Sau" +#: ../setup/setup.ui.h:10 +msgid "Always" +msgstr "Luôn luôn" -#: ../ui/gtk/panel.py:109 -msgid "IBus input method framework" -msgstr "Bộ gõ IBus" +#: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 +msgid "IBus Preferences" +msgstr "Tùy chọn IBus" -#: ../ui/gtk/panel.py:327 -msgid "Restart" -msgstr "Khởi động lại" +#: ../setup/setup.ui.h:12 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "Phím tắt dùng để chuyển đến kiểu gõ kế tiếp trong danh sách" -#: ../ui/gtk/panel.py:414 -msgid "Turn off input method" -msgstr "Tắt kiểu gõ" +#: ../setup/setup.ui.h:13 +msgid "Next input method:" +msgstr "Kiểu gõ kế tiếp:" -#: ../ui/gtk/panel.py:453 -msgid "No input window" -msgstr "Không có cửa sổ nhập" +#: ../setup/setup.ui.h:14 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "Phím tắt dùng để chuyển về kiểu gõ trước trong danh sách" -#: ../ui/gtk/panel.py:484 -msgid "IBus is an intelligent input bus for Linux/Unix." -msgstr "IBus là một bộ gõ thông minh cho Linux/Unix." +#: ../setup/setup.ui.h:15 +msgid "Previous input method:" +msgstr "Kiểu gõ trước:" -#: ../ui/gtk/panel.py:488 -msgid "translator-credits" -msgstr "Lê Quốc Tuấn " +#: ../setup/setup.ui.h:16 +msgid "..." +msgstr "..." + +#: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:16 +msgid "The shortcut keys for turning input method on or off" +msgstr "Phím tắt để bật hoặc tắt kiểu gõ" -#: ../ui/gtk/languagebar.py:106 -msgid "About the input method" -msgstr "Giới thiệu về kiểu gõ" +#: ../setup/setup.ui.h:18 +msgid "Enable or disable:" +msgstr "Bật hoặc tắt:" -#: ../ui/gtk/languagebar.py:214 -msgid "Switch input method" -msgstr "Chuyển kiểu gõ" +#: ../setup/setup.ui.h:19 +msgid "Enable:" +msgstr "Bật:" -#: ../ui/gtk/languagebar.py:357 ../ui/gtk/engineabout.py:33 -#: ../setup/engineabout.py:33 ../setup/setup.ui.h:16 -msgid "About" -msgstr "Giới thiệu" +#: ../setup/setup.ui.h:20 +msgid "Disable:" +msgstr "Tắt:" -#: ../ui/gtk/languagebar.py:361 -msgid "About the Input Method" -msgstr "Giới thiệu về kiểu gõ" +#: ../setup/setup.ui.h:21 +msgid "Keyboard Shortcuts" +msgstr "Phím tắt" -#: ../ui/gtk/engineabout.py:61 ../setup/engineabout.py:61 -#, python-format -msgid "Language: %s\n" -msgstr "Ngôn ngữ: %s\n" +#: ../setup/setup.ui.h:22 +msgid "Set the orientation of candidates in lookup table" +msgstr "Đặt hướng của từ gợi ý trong bảng tra cứu" -#: ../ui/gtk/engineabout.py:63 ../setup/engineabout.py:63 -#, python-format -msgid "Keyboard layout: %s\n" -msgstr "Bố trí bàn phím: %s\n" +#: ../setup/setup.ui.h:23 +msgid "Candidates orientation:" +msgstr "Hướng danh sách từ ứng cử:" -#: ../ui/gtk/engineabout.py:65 ../setup/engineabout.py:65 -#, python-format -msgid "Author: %s\n" -msgstr "Tác giả: %s\n" +#: ../setup/setup.ui.h:24 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "Thiết lập việc ẩn hay hiển thị thanh ngôn ngữ" -#: ../ui/gtk/engineabout.py:67 ../setup/engineabout.py:67 -msgid "Description:\n" -msgstr "Mô tả:\n" +#: ../setup/setup.ui.h:25 +msgid "Show property panel:" +msgstr "Hiển thị bảng thuộc tính:" + +#: ../setup/setup.ui.h:26 +msgid "Language panel position:" +msgstr "Vị trí thanh ngôn ngữ:" + +#: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:36 +msgid "Show icon on system tray" +msgstr "Hiển thị biểu tượng trên khay hệ thống" + +#: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:38 +msgid "Show input method name on language bar" +msgstr "Hiển thị tên kiểu gõ trên thanh ngôn ngữ" + +#: ../setup/setup.ui.h:29 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "Hiển thị tên của kiểu gõ trên thanh ngôn ngữ khi đánh dấu vào ô kiểm" + +#: ../setup/setup.ui.h:30 +msgid "Embed preedit text in application window" +msgstr "Nhúng văn bản tiền soạn thảo trong cửa sổ ứng dụng" + +#: ../setup/setup.ui.h:31 +msgid "Embed the preedit text of input method in the application window" +msgstr "Nhúng văn bản tiền soạn thảo của bộ gõ trong cửa sổ ứng dụng" + +#: ../setup/setup.ui.h:32 +msgid "Use custom font:" +msgstr "Dùng phông chữ tùy biến:" + +#: ../setup/setup.ui.h:33 +msgid "Font and Style" +msgstr "Phông và kiểu" + +#: ../setup/setup.ui.h:34 +msgid "General" +msgstr "Chung" + +#. add button +#: ../setup/setup.ui.h:35 ../setup/enginedialog.py:61 +#: ../setup/keyboardshortcut.py:124 +msgid "_Add" +msgstr "Thê_m" + +#: ../setup/setup.ui.h:36 +msgid "Add the selected input method into the enabled input methods" +msgstr "Thêm kiểu gõ đã chọn vào những kiểu gõ cho phép sử dụng" + +#: ../setup/setup.ui.h:37 +msgid "_Remove" +msgstr "_Bỏ" + +#: ../setup/setup.ui.h:38 +msgid "Remove the selected input method from the enabled input methods" +msgstr "Xóa kiểu gõ đã chọn ra khỏi những kiểu gõ cho phép sử dụng" -#: ../setup/main.py:102 -msgid "trigger" -msgstr "kích hoạt" +#: ../setup/setup.ui.h:39 +msgid "_Up" +msgstr "_Lên" -#: ../setup/main.py:113 -msgid "enable" +#: ../setup/setup.ui.h:40 +msgid "Move up the selected input method in the enabled input methods list" msgstr "" +"Di chuyển kiểu gõ đã chọn lên trên trong những kiểu gõ cho phép sử dụng" + +#: ../setup/setup.ui.h:41 +msgid "_Down" +msgstr "_Xuống" -#: ../setup/main.py:124 -msgid "disable" +#: ../setup/setup.ui.h:42 +msgid "Move down the selected input method in the enabled input methods" msgstr "" +"Di chuyển kiểu gõ đã chọn xuống dưới trong những kiểu gõ cho phép sử dụng" + +#: ../setup/setup.ui.h:43 +msgid "_About" +msgstr "G_iới thiệu" + +#: ../setup/setup.ui.h:44 +msgid "Show information of the selected input method" +msgstr "Hiển thị thông tin về kiểu gõ đã chọn" -#: ../setup/main.py:135 -msgid "next input method" -msgstr "chuyển đến kiểu gõ kế tiếp" +#: ../setup/setup.ui.h:45 +msgid "_Preferences" +msgstr "Tù_y thích" -#: ../setup/main.py:146 -msgid "previous input method" -msgstr "chuyển đến kiểu gõ trước" +#: ../setup/setup.ui.h:46 +msgid "Show setup of the selected input method" +msgstr "Hiển thị thiết lập cho kiểu gõ đã chọn" -#: ../setup/main.py:286 -msgid "IBus daemon is not started. Do you want to start it now?" +#: ../setup/setup.ui.h:47 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." msgstr "" -"Trình nền IBus chưa được khởi động. Bạn có muốn khởi động nó ngay bây giờ?" -#: ../setup/main.py:301 +#. create im name & icon column +#: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:68 +msgid "Input Method" +msgstr "Kiểu gõ" + +#: ../setup/setup.ui.h:49 msgid "" -"IBus has been started! If you can not use IBus, please add below lines in " -"$HOME/.bashrc, and relogin your desktop.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +"The shortcut keys to enable conversions of emoji annotations or Unicode " +"names" msgstr "" -"IBus vừa được khởi động! Nếu bạn không thể dùng IBus, vui lòng thêm những " -"dòng bên dưới vào $HOME/.bashrc, và đăng nhập lại.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" -#: ../setup/main.py:316 -#, python-format -msgid "Select keyboard shortcut for %s" -msgstr "Chọn phím tắt để %s" +#: ../setup/setup.ui.h:50 +msgid "Emoji annotation:" +msgstr "" -#: ../setup/keyboardshortcut.py:52 -msgid "Keyboard shortcuts" -msgstr "Những phím tắt" +#: ../setup/setup.ui.h:51 +msgid "The shortcut keys to enable Unicode code point conversions" +msgstr "" -#: ../setup/keyboardshortcut.py:63 -msgid "Key code:" -msgstr "Mã phím:" +#: ../setup/setup.ui.h:52 +msgid "Unicode code point:" +msgstr "" -#: ../setup/keyboardshortcut.py:78 -msgid "Modifiers:" -msgstr "Phím bổ sung:" +#: ../setup/setup.ui.h:53 +msgid "Set a font of Unicode candidates on the emoji dialog" +msgstr "" -#: ../setup/keyboardshortcut.py:231 +#: ../setup/setup.ui.h:54 +msgid "Unicode font:" +msgstr "" + +#: ../setup/setup.ui.h:55 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "" + +#: ../setup/setup.ui.h:56 +msgid "Emoji annotation language:" +msgstr "" + +#: ../setup/setup.ui.h:57 msgid "" -"Please press a key (or a key combination).\n" -"The dialog will be closed when the key is released." +"Match emoji annotations partially with the following condition and more than " +"the number of characters:" msgstr "" -"Vui lòng nhấn một phím (hoặc tổ hợp phím).\n" -"Hộp thoại này sẽ được đóng lại khi bạn thả phím ấn." -#: ../setup/keyboardshortcut.py:233 -msgid "Please press a key (or a key combination)" -msgstr "Vui lòng nhấn một phím (hoặc tổ hợp phím)" +#: ../setup/setup.ui.h:58 +msgid "" +"If emoji annotations can be matched with a partial string instead of the " +"exact match" +msgstr "" -#: ../setup/enginecombobox.py:120 -msgid "Select an input method" +#: ../setup/setup.ui.h:59 +msgid "Prefix match" +msgstr "" + +#: ../setup/setup.ui.h:60 +msgid "Suffix match" +msgstr "" + +#: ../setup/setup.ui.h:61 +msgid "Containing match" +msgstr "" + +#: ../setup/setup.ui.h:62 +msgid "Emoji" +msgstr "" + +#: ../setup/setup.ui.h:63 ../data/ibus.schemas.in.h:44 +msgid "Use system keyboard layout" +msgstr "Dùng kiểu bố trí bàn phím của hệ thống" + +#: ../setup/setup.ui.h:64 ../data/ibus.schemas.in.h:45 +msgid "Use system keyboard (XKB) layout" +msgstr "Dùng kiểu bố trí bàn phím hệ thống (XKB)" + +#: ../setup/setup.ui.h:65 +msgid "Keyboard Layout" +msgstr "Bố trí bàn phím" + +#: ../setup/setup.ui.h:66 ../data/ibus.schemas.in.h:74 +msgid "Share the same input method among all applications" +msgstr "Chia sẻ cùng kiểu gõ cho tất cả các ứng dụng" + +#: ../setup/setup.ui.h:67 +msgid "Global input method settings" msgstr "Chọn một kiểu gõ" -#. create im name & icon column -#: ../setup/enginetreeview.py:64 ../setup/setup.ui.h:33 -msgid "Input Method" -msgstr "Kiểu gõ" +#: ../setup/setup.ui.h:68 +msgid "Advanced" +msgstr "Nâng cao" -#: ../setup/enginetreeview.py:92 -msgid "Kbd" -msgstr "Kbd" +#: ../setup/setup.ui.h:69 +msgid "" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" +msgstr "" +"IBus\n" +"Bộ gõ thông minh\n" +"Trang chủ: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" -#: ../setup/ibus-setup.desktop.in.h:1 ../setup/setup.ui.h:32 -msgid "IBus Preferences" -msgstr "Tùy chọn IBus" +#: ../setup/setup.ui.h:76 +msgid "Start ibus on login" +msgstr "Khởi động ibus khi đăng nhập" -#: ../setup/ibus-setup.desktop.in.h:2 -#, fuzzy -msgid "Set IBus Preferences" -msgstr "Tùy chọn IBus" +#: ../setup/setup.ui.h:77 +msgid "Startup" +msgstr "Khởi động" -#: ../data/ibus.schemas.in.h:1 -msgid "Auto hide" -msgstr "Tự động ẩn" +#: ../setup/setup.ui.h:78 ../setup/engineabout.py:37 ../ui/gtk3/panel.vala:1164 +msgid "About" +msgstr "Giới thiệu" + +#: ../setup/setup.ui.h:79 ../setup/engineabout.py:40 +msgid "_Close" +msgstr "Đón_g" +#. Translators: Here “Preload” is a verb #: ../data/ibus.schemas.in.h:2 -msgid "Custom font" -msgstr "Tùy biến phông" +msgid "Preload engines" +msgstr "Nạp trước các kiểu gõ" -#: ../data/ibus.schemas.in.h:3 -msgid "Custom font name for language panel" -msgstr "Tùy biến phông cho thanh ngôn ngữ" +#. Translators: Tooltip for the button “Preload Engines” +#: ../data/ibus.schemas.in.h:4 +msgid "Preload engines during ibus starts up" +msgstr "Nạp trước các kiểu gõ khi khởi động ibus" + +#: ../data/ibus.schemas.in.h:5 +msgid "Engines order" +msgstr "" + +#: ../data/ibus.schemas.in.h:6 +msgid "Saved engines order in input method list" +msgstr "" + +#: ../data/ibus.schemas.in.h:7 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "" + +#: ../data/ibus.schemas.in.h:8 +msgid "" +"Set popup delay milliseconds to show IME switcher window. The default is 400." +" 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " +"show the window and switch prev/next engines." +msgstr "" + +#: ../data/ibus.schemas.in.h:9 +msgid "Saved version number" +msgstr "" + +#: ../data/ibus.schemas.in.h:10 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" + +#: ../data/ibus.schemas.in.h:11 +msgid "Latin layouts which have no ASCII" +msgstr "" + +#: ../data/ibus.schemas.in.h:12 +msgid "US layout is appended to the Latin layouts. variant can be omitted." +msgstr "" + +#: ../data/ibus.schemas.in.h:13 +msgid "Use xmodmap" +msgstr "" + +#: ../data/ibus.schemas.in.h:14 +msgid "" +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." +msgstr "" + +#: ../data/ibus.schemas.in.h:15 +msgid "Trigger shortcut keys" +msgstr "Phím tắt kích hoạt" + +#: ../data/ibus.schemas.in.h:17 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "" + +#: ../data/ibus.schemas.in.h:18 +msgid "Enable shortcut keys" +msgstr "Bật các phím tắt" + +#: ../data/ibus.schemas.in.h:19 +msgid "The shortcut keys for turning input method on" +msgstr "Phím tắt để bật kiểu gõ" + +#: ../data/ibus.schemas.in.h:20 +msgid "Disable shortcut keys" +msgstr "Tắt các phím tắt" + +#: ../data/ibus.schemas.in.h:21 +msgid "The shortcut keys for turning input method off" +msgstr "Phím tắt để tắt kiểu gõ" + +#: ../data/ibus.schemas.in.h:22 +msgid "Next engine shortcut keys" +msgstr "Phím tắt cho kiểu gõ kế tiếp" + +#: ../data/ibus.schemas.in.h:23 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "" + +#: ../data/ibus.schemas.in.h:24 +msgid "Prev engine shortcut keys" +msgstr "Phím tắt cho kiểu gõ trước" + +#: ../data/ibus.schemas.in.h:25 +msgid "The shortcut keys for switching to the previous input method" +msgstr "Phím tắt để chuyển sang kiểu gõ trước" + +#: ../data/ibus.schemas.in.h:26 +msgid "Auto hide" +msgstr "Tự động ẩn" + +#: ../data/ibus.schemas.in.h:27 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "" + +#: ../data/ibus.schemas.in.h:28 +msgid "Language panel position" +msgstr "Vị trí thanh ngôn ngữ:" + +#: ../data/ibus.schemas.in.h:29 +msgid "" +"The position of the language panel. 0 = Top left corner, 1 = Top right " +"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +msgstr "" +"Vị trí của thanh ngôn ngữ. 0 = góc trên bên trái, 1 = góc trên bên phải, 2 = " +"góc dưới bên trái, 3 = góc dưới bên phái, 4 = Tùy chọn" + +#: ../data/ibus.schemas.in.h:30 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "" + +#: ../data/ibus.schemas.in.h:31 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "" + +#: ../data/ibus.schemas.in.h:32 +msgid "The milliseconds to show property panel" +msgstr "" + +#: ../data/ibus.schemas.in.h:33 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "" + +#: ../data/ibus.schemas.in.h:34 +msgid "Orientation of lookup table" +msgstr "Hướng của bảng tra cứu" + +#: ../data/ibus.schemas.in.h:35 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "Hướng của bảng tra cứu. 0 = Ngang, 1 = Dọc" + +#: ../data/ibus.schemas.in.h:37 +msgid "Show input method name" +msgstr "Hiển thị tên kiểu gõ" + +#: ../data/ibus.schemas.in.h:39 +msgid "RGBA value of XKB icon" +msgstr "" + +#: ../data/ibus.schemas.in.h:41 +#, no-c-format +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " +"'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " +"to 255 or percentage values in the range 0% to 100%, and 'a' is a floating " +"point value in the range 0 to 1 of the alpha." +msgstr "" + +#: ../data/ibus.schemas.in.h:42 +msgid "The milliseconds to show the panel icon for a property" +msgstr "" + +#: ../data/ibus.schemas.in.h:43 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" + +#: ../data/ibus.schemas.in.h:46 +msgid "Use custom font" +msgstr "Dùng phông chữ tùy biến" + +#: ../data/ibus.schemas.in.h:47 +msgid "Use custom font name for language panel" +msgstr "Dùng phông tùy biến cho thanh ngôn ngữ" + +#: ../data/ibus.schemas.in.h:48 +msgid "Custom font" +msgstr "Tùy biến phông" + +#: ../data/ibus.schemas.in.h:49 +msgid "Custom font name for language panel" +msgstr "Tùy biến phông cho thanh ngôn ngữ" + +#: ../data/ibus.schemas.in.h:50 +msgid "Unicode shortcut keys for gtk_accelerator_parse" +msgstr "" + +#: ../data/ibus.schemas.in.h:51 +msgid "The shortcut keys for turning Unicode typing on or off" +msgstr "" + +#: ../data/ibus.schemas.in.h:52 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "" + +#: ../data/ibus.schemas.in.h:53 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "" + +#: ../data/ibus.schemas.in.h:54 +msgid "Custom font name for emoji characters on emoji dialog" +msgstr "" + +#: ../data/ibus.schemas.in.h:55 +msgid "Default language for emoji dictionary" +msgstr "" + +#: ../data/ibus.schemas.in.h:56 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" +msgstr "" + +#: ../data/ibus.schemas.in.h:57 +msgid "favorite emoji list on emoji dialog" +msgstr "" + +#: ../data/ibus.schemas.in.h:58 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "" + +#: ../data/ibus.schemas.in.h:59 +msgid "favorite emoji annotation list on emoji dialog" +msgstr "" + +#: ../data/ibus.schemas.in.h:60 +msgid "You can assign an annotation for a favorite emoji in this list." +msgstr "" + +#: ../data/ibus.schemas.in.h:61 +msgid "Whether emoji annotations can be match partially or not" +msgstr "" + +#: ../data/ibus.schemas.in.h:62 +msgid "" +"Whether emoji annotations can be matched with a partial string instead of " +"the exact match or not." +msgstr "" + +#: ../data/ibus.schemas.in.h:63 +msgid "Match emoji annotations with the specified length" +msgstr "" + +#: ../data/ibus.schemas.in.h:64 +msgid "" +"Match emoji annotations partially with more than the specified number of " +"characters instead of the exact match." +msgstr "" + +#: ../data/ibus.schemas.in.h:65 +msgid "Choose a condition to match emoji annotations partially" +msgstr "" + +#: ../data/ibus.schemas.in.h:66 +msgid "" +"Choose one of the following conditions to match emoji annotations partially: " +"0 == Prefix match, 1 == Suffix match, 2 == Containing match" +msgstr "" + +#: ../data/ibus.schemas.in.h:67 +msgid "Load the emoji data at the time of startup" +msgstr "" + +#: ../data/ibus.schemas.in.h:68 +msgid "" +"Load the emoji data at the time of startup if true. About 10MB memory is " +"needed to load the data. Load the emoji data when open the emoji dialog at " +"the beginning if false." +msgstr "" + +#: ../data/ibus.schemas.in.h:69 +msgid "Load the Unicode data at the time of startup" +msgstr "" + +#: ../data/ibus.schemas.in.h:70 +msgid "" +"Load the Unicode data at the time of startup if true. About 15MB memory is " +"needed to load the data. Load the Unicode data when open the emoji dialog at " +"the beginning if false. The Unicode data is always loaded after the emoji " +"data is loaded even if true." +msgstr "" + +#: ../data/ibus.schemas.in.h:71 +msgid "Embed Preedit Text" +msgstr "Nhúng văn bản tiền soạn thảo" + +#: ../data/ibus.schemas.in.h:72 +msgid "Embed Preedit Text in Application Window" +msgstr "Nhúng văn bản tiền soạn thảo trong cửa sổ ứng dụng" + +#: ../data/ibus.schemas.in.h:73 +msgid "Use global input method" +msgstr "Dùng chung kiểu gõ cho toàn hệ thống" + +#: ../data/ibus.schemas.in.h:75 +msgid "Enable input method by default" +msgstr "Bật kiểu gõ theo mặc định" + +#: ../data/ibus.schemas.in.h:76 +msgid "Enable input method by default when the application gets input focus" +msgstr "" + +#: ../data/ibus.schemas.in.h:77 +msgid "DConf preserve name prefixes" +msgstr "" + +#: ../data/ibus.schemas.in.h:78 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "" + +#: ../ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." + +#: ../ibus/lang.py:41 ../src/ibusutil.c:158 +msgid "Other" +msgstr "Khác" + +#: ../setup/emojilang.py:67 +msgid "Select a language" +msgstr "" + +#: ../setup/emojilang.py:70 ../setup/enginedialog.py:60 +#: ../setup/keyboardshortcut.py:339 ../setup/main.py:560 +msgid "_Cancel" +msgstr "_Thôi" + +#: ../setup/emojilang.py:71 ../setup/keyboardshortcut.py:340 +#: ../setup/main.py:561 +msgid "_OK" +msgstr "_OK" + +#: ../setup/emojilang.py:235 ../setup/enginedialog.py:205 +msgid "More…" +msgstr "" + +#: ../setup/engineabout.py:72 +#, python-format +msgid "Language: %s\n" +msgstr "Ngôn ngữ: %s\n" + +#: ../setup/engineabout.py:75 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "Bố trí bàn phím: %s\n" + +#: ../setup/engineabout.py:78 +#, python-format +msgid "Author: %s\n" +msgstr "Tác giả: %s\n" + +#: ../setup/engineabout.py:81 +msgid "Description:\n" +msgstr "Mô tả:\n" + +#: ../setup/enginecombobox.py:139 ../setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "Chọn một kiểu gõ" + +#: ../setup/enginetreeview.py:96 +msgid "Kbd" +msgstr "Kbd" + +#: ../setup/ibus-setup.desktop.in.h:2 +msgid "Set IBus Preferences" +msgstr "Thiết lập các tuỳ chọn IBus" + +#: ../setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "Những phím tắt" + +#: ../setup/keyboardshortcut.py:67 +msgid "Key code:" +msgstr "Mã phím:" + +#: ../setup/keyboardshortcut.py:82 +msgid "Modifiers:" +msgstr "Phím bổ sung:" + +#. apply button +#: ../setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "Á_p dụng" + +#. delete button +#: ../setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "_Xoá" + +#: ../setup/keyboardshortcut.py:252 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "" +"Vui lòng nhấn một phím (hoặc tổ hợp phím).\n" +"Hộp thoại này sẽ được đóng lại khi bạn thả phím ấn." + +#: ../setup/keyboardshortcut.py:255 +msgid "Please press a key (or a key combination)" +msgstr "Vui lòng nhấn một phím (hoặc tổ hợp phím)" + +#: ../setup/main.py:121 ../setup/main.py:588 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "" + +#: ../setup/main.py:515 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "IBus daemon đang không chạy. Bạn có muốn khởi động nó không?" + +#: ../setup/main.py:536 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "" +"IBus không thể khởi động! Nếu bạn không thể sử dụng IBus, hãy thêm các dòng " +"dưới đây vào tệp tin $HOME/.bashrc của bạn; sau đó hãy đăng nhập lại vào màn " +"hình làm việc.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" + +#. Translators: %d == 5 currently +#: ../setup/main.py:550 +#, python-format +msgid "IBus daemon could not be started in %d seconds." +msgstr "IBus daemon không thể khởi động trong %d giây." + +#: ../setup/main.py:562 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "Chọn phím tắt để %s" + +#. Translators: Title of the window +#: ../setup/main.py:564 +msgid "switching input methods" +msgstr "chuyển các kiểu gõ" + +#: ../src/ibusemojigen.h:30 +msgid "Activities" +msgstr "" + +#: ../src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "" + +#: ../src/ibusemojigen.h:32 +msgid "Flags" +msgstr "" + +#: ../src/ibusemojigen.h:33 +msgid "Food & Drink" +msgstr "" + +#: ../src/ibusemojigen.h:34 +msgid "Objects" +msgstr "" + +#: ../src/ibusemojigen.h:35 +msgid "Smileys & People" +msgstr "" + +#: ../src/ibusemojigen.h:36 +msgid "Symbols" +msgstr "" + +#: ../src/ibusemojigen.h:37 +msgid "Travel & Places" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:33 +msgid "Basic Latin" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:37 +msgid "Latin-1 Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:41 +msgid "Latin Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:45 +msgid "Latin Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:49 +msgid "IPA Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:53 +msgid "Spacing Modifier Letters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:57 +msgid "Combining Diacritical Marks" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:61 +msgid "Greek and Coptic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:65 +msgid "Cyrillic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:69 +msgid "Cyrillic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:73 +msgid "Armenian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:77 +msgid "Hebrew" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:81 +msgid "Arabic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:85 +msgid "Syriac" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:89 +msgid "Arabic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:93 +msgid "Thaana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:97 +msgid "NKo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:101 +msgid "Samaritan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:105 +msgid "Mandaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:109 +msgid "Syriac Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:113 +msgid "Arabic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:117 +msgid "Devanagari" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:121 +msgid "Bengali" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:125 +msgid "Gurmukhi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:129 +msgid "Gujarati" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:133 +msgid "Oriya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:137 +msgid "Tamil" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:141 +msgid "Telugu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:145 +msgid "Kannada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:149 +msgid "Malayalam" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:153 +msgid "Sinhala" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:157 +msgid "Thai" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:161 +msgid "Lao" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:165 +msgid "Tibetan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:169 +msgid "Myanmar" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:173 +msgid "Georgian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:177 +msgid "Hangul Jamo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:181 +msgid "Ethiopic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:185 +msgid "Ethiopic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:189 +msgid "Cherokee" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:193 +msgid "Unified Canadian Aboriginal Syllabics" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:197 +msgid "Ogham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:201 +msgid "Runic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:205 +msgid "Tagalog" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:209 +msgid "Hanunoo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:213 +msgid "Buhid" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:217 +msgid "Tagbanwa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:221 +msgid "Khmer" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:225 +msgid "Mongolian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:229 +msgid "Unified Canadian Aboriginal Syllabics Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:233 +msgid "Limbu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:237 +msgid "Tai Le" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:241 +msgid "New Tai Lue" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:245 +msgid "Khmer Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:249 +msgid "Buginese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:253 +msgid "Tai Tham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:257 +msgid "Combining Diacritical Marks Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:261 +msgid "Balinese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:265 +msgid "Sundanese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:269 +msgid "Batak" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:273 +msgid "Lepcha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:277 +msgid "Ol Chiki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:281 +msgid "Cyrillic Extended-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:285 +msgid "Sundanese Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:289 +msgid "Vedic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:293 +msgid "Phonetic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:297 +msgid "Phonetic Extensions Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:301 +msgid "Combining Diacritical Marks Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:305 +msgid "Latin Extended Additional" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:309 +msgid "Greek Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:313 +msgid "General Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:317 +msgid "Superscripts and Subscripts" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:321 +msgid "Currency Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:325 +msgid "Combining Diacritical Marks for Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:329 +msgid "Letterlike Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:333 +msgid "Number Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:337 +msgid "Arrows" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:341 +msgid "Mathematical Operators" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:345 +msgid "Miscellaneous Technical" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:349 +msgid "Control Pictures" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:353 +msgid "Optical Character Recognition" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:357 +msgid "Enclosed Alphanumerics" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:361 +msgid "Box Drawing" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:365 +msgid "Block Elements" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:369 +msgid "Geometric Shapes" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:373 +msgid "Miscellaneous Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:377 +msgid "Dingbats" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:381 +msgid "Miscellaneous Mathematical Symbols-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:385 +msgid "Supplemental Arrows-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:389 +msgid "Braille Patterns" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:393 +msgid "Supplemental Arrows-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:397 +msgid "Miscellaneous Mathematical Symbols-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:401 +msgid "Supplemental Mathematical Operators" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:405 +msgid "Miscellaneous Symbols and Arrows" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:409 +msgid "Glagolitic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:413 +msgid "Latin Extended-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:417 +msgid "Coptic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:421 +msgid "Georgian Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:425 +msgid "Tifinagh" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:429 +msgid "Ethiopic Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:433 +msgid "Cyrillic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:437 +msgid "Supplemental Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:441 +msgid "CJK Radicals Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:445 +msgid "Kangxi Radicals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:449 +msgid "Ideographic Description Characters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:453 +msgid "CJK Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:457 +msgid "Hiragana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:461 +msgid "Katakana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:465 +msgid "Bopomofo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:469 +msgid "Hangul Compatibility Jamo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:473 +msgid "Kanbun" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:477 +msgid "Bopomofo Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:481 +msgid "CJK Strokes" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:485 +msgid "Katakana Phonetic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:489 +msgid "Enclosed CJK Letters and Months" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:493 +msgid "CJK Compatibility" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:497 +msgid "CJK Unified Ideographs Extension A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:501 +msgid "Yijing Hexagram Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:505 +msgid "CJK Unified Ideographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:509 +msgid "Yi Syllables" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:513 +msgid "Yi Radicals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:517 +msgid "Lisu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:521 +msgid "Vai" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:525 +msgid "Cyrillic Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:529 +msgid "Bamum" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:533 +msgid "Modifier Tone Letters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:537 +msgid "Latin Extended-D" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:541 +msgid "Syloti Nagri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:545 +msgid "Common Indic Number Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:549 +msgid "Phags-pa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:553 +msgid "Saurashtra" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:557 +msgid "Devanagari Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:561 +msgid "Kayah Li" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:565 +msgid "Rejang" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:569 +msgid "Hangul Jamo Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:573 +msgid "Javanese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:577 +msgid "Myanmar Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:581 +msgid "Cham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:585 +msgid "Myanmar Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:589 +msgid "Tai Viet" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:593 +msgid "Meetei Mayek Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:597 +msgid "Ethiopic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:601 +msgid "Latin Extended-E" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:605 +msgid "Cherokee Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:609 +msgid "Meetei Mayek" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:613 +msgid "Hangul Syllables" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:617 +msgid "Hangul Jamo Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:621 +msgid "High Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:625 +msgid "High Private Use Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:629 +msgid "Low Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:633 +msgid "Private Use Area" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:637 +msgid "CJK Compatibility Ideographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:641 +msgid "Alphabetic Presentation Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:645 +msgid "Arabic Presentation Forms-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:649 +msgid "Variation Selectors" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:653 +msgid "Vertical Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:657 +msgid "Combining Half Marks" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:661 +msgid "CJK Compatibility Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:665 +msgid "Small Form Variants" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:669 +msgid "Arabic Presentation Forms-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:673 +msgid "Halfwidth and Fullwidth Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:677 +msgid "Specials" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:681 +msgid "Linear B Syllabary" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:685 +msgid "Linear B Ideograms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:689 +msgid "Aegean Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:693 +msgid "Ancient Greek Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:697 +msgid "Ancient Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:701 +msgid "Phaistos Disc" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:705 +msgid "Lycian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:709 +msgid "Carian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:713 +msgid "Coptic Epact Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:717 +msgid "Old Italic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:721 +msgid "Gothic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:725 +msgid "Old Permic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:729 +msgid "Ugaritic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:733 +msgid "Old Persian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:737 +msgid "Deseret" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:741 +msgid "Shavian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:745 +msgid "Osmanya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:749 +msgid "Osage" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:753 +msgid "Elbasan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:757 +msgid "Caucasian Albanian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:761 +msgid "Linear A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:765 +msgid "Cypriot Syllabary" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:769 +msgid "Imperial Aramaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:773 +msgid "Palmyrene" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:777 +msgid "Nabataean" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:781 +msgid "Hatran" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:785 +msgid "Phoenician" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:789 +msgid "Lydian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:793 +msgid "Meroitic Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:797 +msgid "Meroitic Cursive" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:801 +msgid "Kharoshthi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:805 +msgid "Old South Arabian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:809 +msgid "Old North Arabian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:813 +msgid "Manichaean" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:817 +msgid "Avestan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:821 +msgid "Inscriptional Parthian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:825 +msgid "Inscriptional Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:829 +msgid "Psalter Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:833 +msgid "Old Turkic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:837 +msgid "Old Hungarian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:841 +msgid "Rumi Numeral Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:845 +msgid "Brahmi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:849 +msgid "Kaithi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:853 +msgid "Sora Sompeng" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:857 +msgid "Chakma" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:861 +msgid "Mahajani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:865 +msgid "Sharada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:869 +msgid "Sinhala Archaic Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:873 +msgid "Khojki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:877 +msgid "Multani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:881 +msgid "Khudawadi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:885 +msgid "Grantha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:889 +msgid "Newa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:893 +msgid "Tirhuta" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:897 +msgid "Siddham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:901 +msgid "Modi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:905 +msgid "Mongolian Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:909 +msgid "Takri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:913 +msgid "Ahom" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:917 +msgid "Warang Citi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:921 +msgid "Zanabazar Square" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:925 +msgid "Soyombo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:929 +msgid "Pau Cin Hau" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:933 +msgid "Bhaiksuki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:937 +msgid "Marchen" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:941 +msgid "Masaram Gondi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:945 +msgid "Cuneiform" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:949 +msgid "Cuneiform Numbers and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:953 +msgid "Early Dynastic Cuneiform" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:957 +msgid "Egyptian Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:961 +msgid "Anatolian Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:965 +msgid "Bamum Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:969 +msgid "Mro" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:973 +msgid "Bassa Vah" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:977 +msgid "Pahawh Hmong" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:981 +msgid "Miao" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:985 +msgid "Ideographic Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:989 +msgid "Tangut" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:993 +msgid "Tangut Components" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:997 +msgid "Kana Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1001 +msgid "Kana Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1005 +msgid "Nushu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1009 +msgid "Duployan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1013 +msgid "Shorthand Format Controls" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1017 +msgid "Byzantine Musical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1021 +msgid "Musical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1025 +msgid "Ancient Greek Musical Notation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1029 +msgid "Tai Xuan Jing Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1033 +msgid "Counting Rod Numerals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1037 +msgid "Mathematical Alphanumeric Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1041 +msgid "Sutton SignWriting" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1045 +msgid "Glagolitic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1049 +msgid "Mende Kikakui" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1053 +msgid "Adlam" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1057 +msgid "Arabic Mathematical Alphabetic Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1061 +msgid "Mahjong Tiles" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1065 +msgid "Domino Tiles" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1069 +msgid "Playing Cards" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1073 +msgid "Enclosed Alphanumeric Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1077 +msgid "Enclosed Ideographic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1081 +msgid "Miscellaneous Symbols and Pictographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1085 +msgid "Emoticons" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1089 +msgid "Ornamental Dingbats" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1093 +msgid "Transport and Map Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1097 +msgid "Alchemical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1101 +msgid "Geometric Shapes Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1105 +msgid "Supplemental Arrows-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1109 +msgid "Supplemental Symbols and Pictographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1113 +msgid "CJK Unified Ideographs Extension B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1117 +msgid "CJK Unified Ideographs Extension C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1121 +msgid "CJK Unified Ideographs Extension D" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1125 +msgid "CJK Unified Ideographs Extension E" +msgstr "" -#: ../data/ibus.schemas.in.h:4 -msgid "Embed Preedit Text" -msgstr "Nhúng văn bản tiền soạn thảo" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1129 +msgid "CJK Unified Ideographs Extension F" +msgstr "" -#: ../data/ibus.schemas.in.h:5 -msgid "Embed Preedit Text in Application Window" -msgstr "Nhúng văn bản tiền soạn thảo trong cửa sổ ứng dụng" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1133 +msgid "CJK Compatibility Ideographs Supplement" +msgstr "" -#: ../data/ibus.schemas.in.h:6 -#, fuzzy -msgid "Enable input method by default" -msgstr "chuyển đến kiểu gõ kế tiếp" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1137 +msgid "Tags" +msgstr "" -#: ../data/ibus.schemas.in.h:7 -msgid "Enable input method by default when the application gets input focus" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1141 +msgid "Variation Selectors Supplement" msgstr "" -#: ../data/ibus.schemas.in.h:8 -msgid "Language panel position" -msgstr "Vị trí thanh ngôn ngữ:" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1145 +msgid "Supplementary Private Use Area-A" +msgstr "" -#: ../data/ibus.schemas.in.h:9 -msgid "Next engine shortcut keys" -msgstr "Phím tắt cho kiểu gõ kế tiếp" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1149 +msgid "Supplementary Private Use Area-B" +msgstr "" -#: ../data/ibus.schemas.in.h:10 -msgid "Orientation of lookup table" -msgstr "Hướng của bảng tra cứu" +#: ../tools/main.vala:51 +msgid "List engine name only" +msgstr "" -#: ../data/ibus.schemas.in.h:11 -msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" -msgstr "Hướng của bảng tra cứu. 0 = Ngang, 1 = Dọc" +#: ../tools/main.vala:67 ../tools/main.vala:192 ../tools/main.vala:202 +msgid "Can't connect to IBus.\n" +msgstr "Không thể kết nối với IBus.\n" -#: ../data/ibus.schemas.in.h:12 -msgid "Preload engines" -msgstr "Nạp trước các kiểu gõ" +#: ../tools/main.vala:93 +#, c-format +msgid "language: %s\n" +msgstr "ngôn ngữ: %s\n" -#: ../data/ibus.schemas.in.h:13 -msgid "Preload engines during ibus starts up" -msgstr "Nạp trước các kiểu gõ khi khởi động ibus" +#: ../tools/main.vala:161 +msgid "No engine is set.\n" +msgstr "" -#: ../data/ibus.schemas.in.h:14 -msgid "Prev engine shortcut keys" -msgstr "Phím tắt cho kiểu gõ trước" +#: ../tools/main.vala:169 +msgid "Set global engine failed.\n" +msgstr "" -#: ../data/ibus.schemas.in.h:15 ../setup/setup.ui.h:42 -msgid "Share the same input method among all applications" -msgstr "Chia sẻ cùng kiểu gõ cho tất cả các ứng dụng" +#: ../tools/main.vala:174 +msgid "Get global engine failed.\n" +msgstr "" -#: ../data/ibus.schemas.in.h:16 ../setup/setup.ui.h:43 -msgid "Show icon on system tray" -msgstr "Hiển thị biểu tượng trên khay hệ thống" +#: ../tools/main.vala:217 +msgid "Read the system registry cache." +msgstr "" -#: ../data/ibus.schemas.in.h:17 -msgid "Show input method name" -msgstr "Hiển thị tên kiểu gõ" +#: ../tools/main.vala:219 +msgid "Read the registry cache FILE." +msgstr "" -#: ../data/ibus.schemas.in.h:18 ../setup/setup.ui.h:45 -msgid "Show input method name on language bar" -msgstr "Hiển thị tên kiểu gõ trên thanh ngôn ngữ" +#: ../tools/main.vala:237 ../tools/main.vala:242 +msgid "The registry cache is invalid.\n" +msgstr "" -#: ../data/ibus.schemas.in.h:19 -msgid "" -"The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = " -"Always show" +#: ../tools/main.vala:257 +msgid "Write the system registry cache." msgstr "" -"Cách hiển thị thanh ngôn ngữ. 0 = Nhúng vào menu, 1 = Tự động ẩn, 2 = Luôn " -"hiện" -#: ../data/ibus.schemas.in.h:20 +#: ../tools/main.vala:259 +msgid "Write the registry cache FILE." +msgstr "" + +#: ../tools/main.vala:295 msgid "" -"The position of the language panel. 0 = Top left corner, 1 = Top right " -"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +"Use engine schema paths instead of ibus core, which can be comma-separated " +"values." msgstr "" -"Vị trí của thanh ngôn ngữ. 0 = góc trên bên trái, 1 = góc trên bên phải, 2 = " -"góc dưới bên trái, 3 = góc dưới bên phái, 4 = Tùy chọn" -#: ../data/ibus.schemas.in.h:21 -#, fuzzy -msgid "The shortcut keys for switching to the next input method in the list" -msgstr "Phím tắt dùng để chuyển đến kiểu gõ kế tiếp trong danh sách" +#: ../tools/main.vala:381 +msgid "Resetting…" +msgstr "" -#: ../data/ibus.schemas.in.h:22 -#, fuzzy -msgid "The shortcut keys for switching to the previous input method" -msgstr "Phím tắt dùng để chuyển về kiểu gõ trước trong danh sách" +#: ../tools/main.vala:399 +msgid "Done" +msgstr "" -#: ../data/ibus.schemas.in.h:23 ../setup/setup.ui.h:51 -msgid "The shortcut keys for turning input method on or off" -msgstr "Phím tắt để bật hoặc tắt kiểu gõ" +#: ../tools/main.vala:444 +msgid "Set or get engine" +msgstr "" -#: ../data/ibus.schemas.in.h:24 -msgid "Trigger shortcut keys" -msgstr "Phím tắt kích hoạt" +#: ../tools/main.vala:445 +msgid "Exit ibus-daemon" +msgstr "Thoát ibus-daemon" -#: ../data/ibus.schemas.in.h:25 -msgid "Use custom font" -msgstr "Dùng phông chữ tùy biến" +#: ../tools/main.vala:446 +msgid "Show available engines" +msgstr "" -#: ../data/ibus.schemas.in.h:26 -msgid "Use custom font name for language panel" -msgstr "Dùng phông tùy biến cho thanh ngôn ngữ" +#: ../tools/main.vala:447 +msgid "(Not implemented)" +msgstr "" -#: ../data/ibus.schemas.in.h:27 -msgid "Use global input method" -msgstr "Dùng chung kiểu gõ cho toàn hệ thống" +#: ../tools/main.vala:448 +msgid "Restart ibus-daemon" +msgstr "Khởi động lại ibus-daemon" -#: ../data/ibus.schemas.in.h:28 ../setup/setup.ui.h:55 -msgid "Use system keyboard (XKB) layout" -msgstr "Dùng kiểu bố trí bàn phím hệ thống (XKB)" +#: ../tools/main.vala:449 +msgid "Show version" +msgstr "Hiển thị phiên bản" -#: ../data/ibus.schemas.in.h:29 ../setup/setup.ui.h:56 -msgid "Use system keyboard layout" -msgstr "Dùng kiểu bố trí bàn phím của hệ thống" +#: ../tools/main.vala:450 +msgid "Show the content of registry cache" +msgstr "" -#: ../setup/setup.ui.h:1 -msgid "..." -msgstr "..." +#: ../tools/main.vala:451 +msgid "Create registry cache" +msgstr "" -#: ../setup/setup.ui.h:2 -msgid "Font and Style" -msgstr "Phông và kiểu" +#: ../tools/main.vala:452 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "" -#: ../setup/setup.ui.h:3 -msgid "Global input method settings" -msgstr "Chọn một kiểu gõ" +#: ../tools/main.vala:453 +msgid "Show the configuration values" +msgstr "" -#: ../setup/setup.ui.h:4 -msgid "Keyboard Layout" -msgstr "Bố trí bàn phím" +#: ../tools/main.vala:454 +msgid "Reset the configuration values" +msgstr "" -#: ../setup/setup.ui.h:5 -msgid "Keyboard Shortcuts" -msgstr "Phím tắt" +#: ../tools/main.vala:456 +msgid "Save emoji on dialog to clipboard " +msgstr "" -#: ../setup/setup.ui.h:6 -msgid "Startup" -msgstr "Khởi động" +#: ../tools/main.vala:458 +msgid "Show this information" +msgstr "Hiển thị thông tin này" -#: ../setup/setup.ui.h:7 -msgid "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" +#: ../tools/main.vala:464 +#, c-format +msgid "Usage: %s COMMAND [OPTION...]\n" "\n" +msgstr "Sử dụng: %s LỆNH [TUỲ CHỌN...]\n" "\n" + +#: ../tools/main.vala:465 +msgid "Commands:\n" +msgstr "Lệnh:\n" + +#: ../tools/main.vala:494 +#, c-format +msgid "%s is unknown command!\n" msgstr "" -"IBus\n" -"Bộ gõ thông minh\n" -"Trang chủ: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" -#: ../setup/setup.ui.h:14 -msgid "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." +#: ../ui/gtk3/emojier.vala:244 +msgid "Favorites" msgstr "" -"Kiểu gõ mặc định là kiểu gõ đầu tiên trong danh sách.\n" -"Bạn có thể dùng nút lên/xuống để thay đổi nó" -#: ../setup/setup.ui.h:17 -msgid "Add the selected input method into the enabled input methods" -msgstr "Thêm kiểu gõ đã chọn vào những kiểu gõ cho phép sử dụng" +#: ../ui/gtk3/emojier.vala:245 +msgid "Others" +msgstr "" -#: ../setup/setup.ui.h:18 -msgid "Advanced" -msgstr "Nâng cao" +#: ../ui/gtk3/emojier.vala:246 +msgid "Open Unicode choice" +msgstr "" -#: ../setup/setup.ui.h:19 -msgid "Always" -msgstr "Luôn luôn" +#: ../ui/gtk3/emojier.vala:371 +msgid "Type annotation or choose emoji" +msgstr "" -#: ../setup/setup.ui.h:20 -msgid "Bottom left corner" -msgstr "Góc dưới bên trái" +#: ../ui/gtk3/emojier.vala:965 +msgid "Bring back emoji choice" +msgstr "" -#: ../setup/setup.ui.h:21 -msgid "Bottom right corner" -msgstr "Góc dưới bên phải" +#: ../ui/gtk3/emojier.vala:1067 +msgid "Page Down" +msgstr "" -#: ../setup/setup.ui.h:22 -msgid "Candidates orientation:" -msgstr "Hướng danh sách từ ứng cử:" +#: ../ui/gtk3/emojier.vala:1078 +msgid "Page Up" +msgstr "" -#: ../setup/setup.ui.h:23 -msgid "Custom" -msgstr "Tùy biến" +#: ../ui/gtk3/emojier.vala:1081 +msgid "Show emoji variants" +msgstr "" -#: ../setup/setup.ui.h:24 -msgid "Disable:" +#: ../ui/gtk3/emojier.vala:1082 +msgid "Close" msgstr "" -#: ../setup/setup.ui.h:25 -msgid "Embed preedit text in application window" -msgstr "Nhúng văn bản tiền soạn thảo trong cửa sổ ứng dụng" +#: ../ui/gtk3/emojier.vala:1088 +msgid "Menu" +msgstr "" -#: ../setup/setup.ui.h:26 -msgid "Embed the preedit text of input method in the application window" -msgstr "Nhúng văn bản tiền soạn thảo của bộ gõ trong cửa sổ ứng dụng" +#: ../ui/gtk3/emojier.vala:1099 +msgid "Click to view a warning message" +msgstr "" -#: ../setup/setup.ui.h:27 -msgid "Embedded in menu" -msgstr "Nhúng vào menu" +#: ../ui/gtk3/emojier.vala:1143 +msgid "Loading a Unicode dictionary:" +msgstr "" -#: ../setup/setup.ui.h:28 -msgid "Enable or disable:" -msgstr "Bật hoặc tắt:" +#: ../ui/gtk3/emojier.vala:1383 +#, c-format +msgid "Code point: %s" +msgstr "" -#: ../setup/setup.ui.h:29 -msgid "Enable:" +#: ../ui/gtk3/emojier.vala:1389 +msgid "Has emoji variants" msgstr "" -#: ../setup/setup.ui.h:30 -msgid "General" -msgstr "Chung" +#: ../ui/gtk3/emojier.vala:1556 ../ui/gtk3/emojier.vala:1569 +#, c-format +msgid "Description: %s" +msgstr "" -#: ../setup/setup.ui.h:31 -msgid "Horizontal" -msgstr "Ngang" +#: ../ui/gtk3/emojier.vala:1556 +msgid "None" +msgstr "" -#: ../setup/setup.ui.h:34 -msgid "Language panel position:" -msgstr "Vị trí thanh ngôn ngữ:" +#: ../ui/gtk3/emojier.vala:1580 +#, c-format +msgid "Annotations: %s" +msgstr "" -#: ../setup/setup.ui.h:35 -msgid "Move down the selected input method in the enabled input methods" +#: ../ui/gtk3/emojier.vala:1606 +#, c-format +msgid "Name: %s" msgstr "" -"Di chuyển kiểu gõ đã chọn xuống dưới trong những kiểu gõ cho phép sử dụng" -#: ../setup/setup.ui.h:36 -msgid "Move up the selected input method in the enabled input methods list" +#: ../ui/gtk3/emojier.vala:1614 +#, c-format +msgid "Alias: %s" msgstr "" -"Di chuyển kiểu gõ đã chọn lên trên trong những kiểu gõ cho phép sử dụng" -#: ../setup/setup.ui.h:37 -msgid "Next input method:" -msgstr "Kiểu gõ kế tiếp:" +#: ../ui/gtk3/emojier.vala:2164 +#: ../ui/gtk3/ibus-extension-gtk3.desktop.in.in.h:1 +#: ../ui/gtk3/ibus-ui-emojier.desktop.in.in.h:1 ../ui/gtk3/panel.vala:1149 +msgid "Emoji Choice" +msgstr "" -#: ../setup/setup.ui.h:38 -msgid "Previous input method:" -msgstr "Kiểu gõ trước:" +#: ../ui/gtk3/emojier.vala:2166 +msgid "Unicode Choice" +msgstr "" -#: ../setup/setup.ui.h:39 -msgid "Remove the selected input method from the enabled input methods" -msgstr "Xóa kiểu gõ đã chọn ra khỏi những kiểu gõ cho phép sử dụng" +#: ../ui/gtk3/emojier.vala:2526 +msgid "" +"Failed to get the current text application. Please re-focus your application." +" E.g. Press Esc key several times to release the emoji typing mode, click " +"your desktop and click your text application again." +msgstr "" -#: ../setup/setup.ui.h:40 -msgid "Set the behavior of ibus how to show or hide language bar" -msgstr "Thiết lập việc ẩn hay hiển thị thanh ngôn ngữ" +#: ../ui/gtk3/emojierapp.vala:58 +msgid "Canceled to choose an emoji." +msgstr "" -#: ../setup/setup.ui.h:41 -msgid "Set the orientation of candidates in lookup table" -msgstr "Đặt hướng của từ gợi ý trong bảng tra cứu" +#: ../ui/gtk3/emojierapp.vala:93 +msgid "Copied an emoji to your clipboard." +msgstr "" -#: ../setup/setup.ui.h:44 -msgid "Show information of the selected input method" -msgstr "Hiển thị thông tin về kiểu gõ đã chọn" +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ../ui/gtk3/emojierapp.vala:114 +msgid "\"FONT\" for emoji characters on emoji dialog" +msgstr "" -#: ../setup/setup.ui.h:46 -msgid "Show input method's name on language bar when check the checkbox" -msgstr "Hiển thị tên của kiểu gõ trên thanh ngôn ngữ khi đánh dấu vào ô kiểm" +#: ../ui/gtk3/emojierapp.vala:115 +msgid "FONT" +msgstr "" -#: ../setup/setup.ui.h:47 -msgid "Show language panel:" -msgstr "Hiển thị thanh ngôn ngữ:" +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ../ui/gtk3/emojierapp.vala:120 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" +msgstr "" -#: ../setup/setup.ui.h:48 -msgid "Start ibus on login" -msgstr "Khởi động ibus khi đăng nhập" +#: ../ui/gtk3/emojierapp.vala:121 +msgid "LANG" +msgstr "" -#: ../setup/setup.ui.h:49 -msgid "The shortcut keys for switching to next input method in the list" -msgstr "Phím tắt dùng để chuyển đến kiểu gõ kế tiếp trong danh sách" +#: ../ui/gtk3/emojierapp.vala:123 +msgid "Emoji annotations can be match partially" +msgstr "" -#: ../setup/setup.ui.h:50 -msgid "The shortcut keys for switching to previous input method in the list" -msgstr "Phím tắt dùng để chuyển về kiểu gõ trước trong danh sách" +#: ../ui/gtk3/emojierapp.vala:127 +msgid "Match with the length of the specified integer" +msgstr "" -#: ../setup/setup.ui.h:52 -msgid "Top left corner" -msgstr "Góc trên bên trái" +#: ../ui/gtk3/emojierapp.vala:131 +msgid "Match with the condition of the specified integer" +msgstr "" -#: ../setup/setup.ui.h:53 -msgid "Top right corner" -msgstr "Góc trên bên phải" +#: ../ui/gtk3/panel.vala:282 ../ui/gtk3/panel.vala:313 +msgid "IBus Panel" +msgstr "" -#: ../setup/setup.ui.h:54 -msgid "Use custom font:" -msgstr "Dùng phông chữ tùy biến:" +#: ../ui/gtk3/panel.vala:710 +msgid "IBus Update" +msgstr "Cập nhật IBus" -#: ../setup/setup.ui.h:57 -msgid "Vertical" -msgstr "Dọc" +#: ../ui/gtk3/panel.vala:711 ../ui/gtk3/panel.vala:722 +msgid "Super+space is now the default hotkey." +msgstr "Super + space bây giờ là phím nóng mặc định." -#: ../setup/setup.ui.h:58 -msgid "When active" -msgstr "Khi hoạt động" +#: ../ui/gtk3/panel.vala:1121 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus là một bộ gõ thông minh cho Linux/Unix." + +#: ../ui/gtk3/panel.vala:1125 +msgid "translator-credits" +msgstr "" +"Lê Quốc Tuấn , 2009\n" +"Đoàn Hoà Khiêm , 2018" + +#: ../ui/gtk3/panel.vala:1144 +msgid "Preferences" +msgstr "Tùy thích" + +#: ../ui/gtk3/panel.vala:1170 +msgid "Restart" +msgstr "Khởi động lại" + +#: ../ui/gtk3/panel.vala:1174 +msgid "Quit" +msgstr "Thoát" + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ../ui/gtk3/propertypanel.vala:368 ../ui/gtk3/propertypanel.vala:376 +msgid "default:LTR" +msgstr "default:LTR" diff --git a/po/zh_CN.po b/po/zh_CN.po index 95667b8a9..6399420fa 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -1,539 +1,3349 @@ -# translation of ibus.master.po to Simplified Chinese -# Simplified Chinese Translation for ibus. -# Copyright (C) 2007-2010 Peng Huang +# Simplified Chinese Translation of ibus. +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2022 Takao Fujiwara # This file is distributed under the same license as the ibus package. # -# Peng Huang , 2007-2010. -# Leah Liu , 2010. -# ekd123 , 2011. -# simonyanix , 2011. +# Translators: +# Christopher Meng , 2012-2013 +# Tommy He , 2012 +# Mike Manilone , 2011 +# Mike Manilone , 2011 +# Peng Huang , 2007 +# simonyanix , 2011 +# Tommy He , 2012-2014 +# fujiwara , 2015, 2017-2018. #zanata +# Jerry Lee , 2017. #zanata +# Tian Shixiong , 2018. #zanata +# Pany , 2019. #zanata +# Tian Shixiong , 2019. #zanata +# Tian Shixiong , 2020. +# Boyuan Yang <073plan@gmail.com>, 2020. +# Whired Planck , 2020. +# Dingzhong Chen , 2021. +# Liu Tao , 2021. msgid "" msgstr "" -"Project-Id-Version: ibus.master\n" -"Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/list\n" -"POT-Creation-Date: 2011-05-13 11:21+0900\n" -"PO-Revision-Date: 2011-05-14 07:23+0000\n" -"Last-Translator: simonyanix \n" -"Language-Team: Chinese (China) (http://www.transifex.net/projects/p/fedora/team/zh_CN/)\n" +"Project-Id-Version: ibus 1.5.20\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2020-12-11 16:21+0900\n" +"PO-Revision-Date: 2021-09-17 07:04+0000\n" +"Last-Translator: Dingzhong Chen \n" +"Language-Team: Chinese (Simplified) \n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: KBabel 1.11.4\n" +"X-Generator: Weblate 4.8\n" -#: ../bus/ibus.desktop.in.h:1 -msgid "IBus" -msgstr "IBus" +#. Translators: Here “Preload” is a verb +#: data/dconf/org.freedesktop.ibus.gschema.xml:11 +msgid "Preload engines" +msgstr "预加载引擎" + +#. Translators: Tooltip for the button “Preload Engines” +#: data/dconf/org.freedesktop.ibus.gschema.xml:13 +msgid "Preload engines during ibus starts up" +msgstr "IBus 启动时预加载的引擎" -#: ../bus/ibus.desktop.in.h:2 -msgid "Input Method Framework" -msgstr "输入法框架" +#: data/dconf/org.freedesktop.ibus.gschema.xml:17 +msgid "Engines order" +msgstr "引擎顺序" -#: ../bus/ibus.desktop.in.h:3 -msgid "Start IBus Input Method Framework" -msgstr "启动IBus 输入法框架" +#: data/dconf/org.freedesktop.ibus.gschema.xml:18 +msgid "Saved engines order in input method list" +msgstr "保存在输入法选单中的引擎顺序" -#: ../ibus/_config.py.in:40 +#: data/dconf/org.freedesktop.ibus.gschema.xml:22 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "输入法切换窗口弹出延时" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:23 msgid "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +"Set popup delay milliseconds to show IME switcher window. The default is " +"400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " +"show the window and switch prev/next engines." msgstr "" -"版权所有 (c) 2007-2010 黄鹏\n" -"版权所有 (c) 2007-2010 Red Hat 公司" +"设置弹出显示输入法引擎切换窗口的延迟时间,单位为毫秒。默认为 400。0 等于立即显示窗口。大于 0 则延迟对应毫秒数。小于 0 " +"则不显示窗口并切换到之前或之后的引擎。" -#: ../ibus/lang.py:41 -msgid "Other" -msgstr "其他" +#: data/dconf/org.freedesktop.ibus.gschema.xml:27 +msgid "Saved version number" +msgstr "已储存的版本号" -#: ../ui/gtk/candidatepanel.py:264 -msgid "Previous page" -msgstr "上一页" +#: data/dconf/org.freedesktop.ibus.gschema.xml:28 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "已保存的版本号将被用作检查之前安装的 ibus 版本和当前版本间的区别。" -#: ../ui/gtk/candidatepanel.py:269 -msgid "Next page" -msgstr "下一页" +#: data/dconf/org.freedesktop.ibus.gschema.xml:32 +msgid "Latin layouts which have no ASCII" +msgstr "无 ASCII 码的拉丁字母布局" -#: ../ui/gtk/main.py:62 +#: data/dconf/org.freedesktop.ibus.gschema.xml:33 +msgid "US layout is appended to the Latin layouts. variant can be omitted." +msgstr "附加美国布局到这些拉丁字母布局上,忽略其字母变体。" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:37 +msgid "Use xmodmap" +msgstr "使用 xmodmap" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" -"Some input methods have been installed, removed or updated. Please restart " -"ibus input platform." -msgstr "一些输入法已经被安装,删除或者更新了。请重新启动ibus输入平台。" +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." +msgstr "若 .xmodmap 或者 .Xmodmap 存在则当 ibus 框架启动时执行 xmodmap。" -#: ../ui/gtk/main.py:66 -msgid "Restart Now" -msgstr "现在重启" +#: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 +msgid "Use system keyboard layout" +msgstr "使用系统键盘布局" -#: ../ui/gtk/main.py:67 -msgid "Later" -msgstr "稍候" +#: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 +msgid "Use system keyboard (XKB) layout" +msgstr "使用系统键盘(XKB)布局" -#: ../ui/gtk/panel.py:116 -msgid "IBus Panel" -msgstr "IBus面板" +#: data/dconf/org.freedesktop.ibus.gschema.xml:47 +msgid "Embed Preedit Text" +msgstr "内嵌编辑模式" -#: ../ui/gtk/panel.py:122 -msgid "IBus input method framework" -msgstr "IBus 输入法框架" +#: data/dconf/org.freedesktop.ibus.gschema.xml:48 +msgid "Embed Preedit Text in Application Window" +msgstr "在应用程序窗口中启用内嵌编辑模式" -#: ../ui/gtk/panel.py:352 -msgid "Restart" -msgstr "重新启动" +#: data/dconf/org.freedesktop.ibus.gschema.xml:52 +msgid "Use global input method" +msgstr "使用全局输入法" -#: ../ui/gtk/panel.py:439 -msgid "Turn off input method" -msgstr "关闭输入法" +#: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 +msgid "Share the same input method among all applications" +msgstr "在所有应用程序中共享同一个输入法" -#: ../ui/gtk/panel.py:478 -msgid "No input window" -msgstr "没有输入窗口" +#: data/dconf/org.freedesktop.ibus.gschema.xml:57 +msgid "Enable input method by default" +msgstr "默认启动输入法" -#: ../ui/gtk/panel.py:509 -msgid "IBus is an intelligent input bus for Linux/Unix." -msgstr "IBus is an intelligent input bus for Linux/Unix." +#: data/dconf/org.freedesktop.ibus.gschema.xml:58 +msgid "Enable input method by default when the application gets input focus" +msgstr "当应用程序需要使用输入时自动启用输入法" -#: ../ui/gtk/panel.py:513 -msgid "translator-credits" -msgstr "Huang Peng " +#: data/dconf/org.freedesktop.ibus.gschema.xml:62 +msgid "DConf preserve name prefixes" +msgstr "DConf 保留名称前缀" -#: ../ui/gtk/languagebar.py:106 -msgid "About the input method" -msgstr "关于输入法" +#: data/dconf/org.freedesktop.ibus.gschema.xml:63 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "用来停止名称转换的 DConf 键前缀" -#: ../ui/gtk/languagebar.py:214 -msgid "Switch input method" -msgstr "切换输入法" +#: data/dconf/org.freedesktop.ibus.gschema.xml:70 +msgid "Trigger shortcut keys" +msgstr "触发快捷键" -#: ../ui/gtk/languagebar.py:357 ../ui/gtk/engineabout.py:33 -#: ../setup/engineabout.py:33 ../setup/setup.ui.h:16 -msgid "About" -msgstr "关于" +#: data/dconf/org.freedesktop.ibus.gschema.xml:71 +#: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 +msgid "The shortcut keys for turning input method on or off" +msgstr "用于开启或关闭输入法的快捷键" -#: ../ui/gtk/languagebar.py:361 -msgid "About the Input Method" -msgstr "关于输入法" +#: data/dconf/org.freedesktop.ibus.gschema.xml:75 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "触发快捷键(gtk_accelerator_parse 格式)" -#: ../ui/gtk/engineabout.py:61 ../setup/engineabout.py:61 -#, python-format -msgid "Language: %s\n" -msgstr "语言: %s\n" +#: data/dconf/org.freedesktop.ibus.gschema.xml:80 +msgid "Enable shortcut keys" +msgstr "开启快捷键" -#: ../ui/gtk/engineabout.py:63 ../setup/engineabout.py:63 -#, python-format -msgid "Keyboard layout: %s\n" -msgstr "键盘: %s\n" +#: data/dconf/org.freedesktop.ibus.gschema.xml:81 +msgid "The shortcut keys for turning input method on" +msgstr "开启输入法的快捷键" -#: ../ui/gtk/engineabout.py:65 ../setup/engineabout.py:65 -#, python-format -msgid "Author: %s\n" -msgstr "作者: %s\n" +#: data/dconf/org.freedesktop.ibus.gschema.xml:85 +msgid "Disable shortcut keys" +msgstr "关闭快捷键" -#: ../ui/gtk/engineabout.py:67 ../setup/engineabout.py:67 -msgid "Description:\n" -msgstr "描述:\n" +#: data/dconf/org.freedesktop.ibus.gschema.xml:86 +msgid "The shortcut keys for turning input method off" +msgstr "关闭输入法的快捷键" -#: ../setup/main.py:102 -msgid "trigger" -msgstr "开关" +#: data/dconf/org.freedesktop.ibus.gschema.xml:90 +#: data/dconf/org.freedesktop.ibus.gschema.xml:95 +msgid "Next engine shortcut keys" +msgstr "下一个引擎快捷键" -#: ../setup/main.py:113 -msgid "enable" -msgstr "应用" +#: data/dconf/org.freedesktop.ibus.gschema.xml:91 +#: data/dconf/org.freedesktop.ibus.gschema.xml:96 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "切换到列表中下一个输入法快捷键" -#: ../setup/main.py:124 -msgid "disable" -msgstr "禁用" +#: data/dconf/org.freedesktop.ibus.gschema.xml:100 +#: data/dconf/org.freedesktop.ibus.gschema.xml:105 +msgid "Prev engine shortcut keys" +msgstr "上一个引擎快捷键" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:101 +#: data/dconf/org.freedesktop.ibus.gschema.xml:106 +msgid "The shortcut keys for switching to the previous input method" +msgstr "切换到列表中上一个输入法快捷键" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:112 +msgid "Auto hide" +msgstr "自动隐藏" -#: ../setup/main.py:135 -msgid "next input method" -msgstr "下一输入法" +#: data/dconf/org.freedesktop.ibus.gschema.xml:113 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "属性面板的行为。0 = 不再显示,1 = 自动隐藏,2 = 始终显示" -#: ../setup/main.py:146 -msgid "previous input method" -msgstr "上一输入法" +#: data/dconf/org.freedesktop.ibus.gschema.xml:117 +#: data/dconf/org.freedesktop.ibus.gschema.xml:121 +msgid "Language panel position" +msgstr "语言栏位置" -#: ../setup/main.py:286 -msgid "IBus daemon is not started. Do you want to start it now?" -msgstr "IBus 守护进程没有启动,您是否想现在启动它?" +#: data/dconf/org.freedesktop.ibus.gschema.xml:125 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "在始终显示的情况下面板跟随输入光标" -#: ../setup/main.py:301 +#: data/dconf/org.freedesktop.ibus.gschema.xml:126 msgid "" -"IBus has been started! If you can not use IBus, please add below lines in $HOME/.bashrc, and relogin your desktop.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." msgstr "" -"IBus 已经被成功启动!如果你不能正常使用IBus,请将下面代码加入到$HOME/.bashrc中,并重新登录桌面。\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +"若为真,当面板设为始终显示时面板将跟随输入光标。若为假,面板将在固定位置显" +"示。" -#: ../setup/main.py:316 -#, python-format -msgid "Select keyboard shortcut for %s" -msgstr "选择%s的快捷键" +#: data/dconf/org.freedesktop.ibus.gschema.xml:130 +msgid "The milliseconds to show property panel" +msgstr "显示属性面板的延时" -#: ../setup/keyboardshortcut.py:52 -msgid "Keyboard shortcuts" -msgstr "快捷键" +#: data/dconf/org.freedesktop.ibus.gschema.xml:131 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "在输入焦点或属性变更后,属性面板的显示延迟时间,单位为毫秒。" -#: ../setup/keyboardshortcut.py:63 -msgid "Key code:" -msgstr "按键:" +#: data/dconf/org.freedesktop.ibus.gschema.xml:135 +msgid "Orientation of lookup table" +msgstr "候选词表方向" -#: ../setup/keyboardshortcut.py:78 -msgid "Modifiers:" -msgstr "修饰符:" +#: data/dconf/org.freedesktop.ibus.gschema.xml:136 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "候选词表方向。0 = 水平,1 = 竖直" -#: ../setup/keyboardshortcut.py:231 -msgid "" -"Please press a key (or a key combination).\n" -"The dialog will be closed when the key is released." -msgstr "" -"请按一个键盘按键(或者一个组合按键)\n" -"当您松开任意按键时,对话框会自动关闭。" +#: data/dconf/org.freedesktop.ibus.gschema.xml:140 +#: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 +#: setup/setup.ui:475 +msgid "Show icon on system tray" +msgstr "在系统托盘上显示图标" -#: ../setup/keyboardshortcut.py:233 -msgid "Please press a key (or a key combination)" -msgstr "请按一个键盘按键(或者一个组合按键)" +#: data/dconf/org.freedesktop.ibus.gschema.xml:145 +msgid "Show input method name" +msgstr "显示输入法名称" -#: ../setup/enginecombobox.py:120 -msgid "Select an input method" -msgstr "选择输入法" +#: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 +msgid "Show input method name on language bar" +msgstr "在语言栏上显示输入法名称" -#. create im name & icon column -#: ../setup/enginetreeview.py:64 ../setup/setup.ui.h:33 -msgid "Input Method" -msgstr "输入法" +#: data/dconf/org.freedesktop.ibus.gschema.xml:150 +msgid "RGBA value of XKB icon" +msgstr "XKB 图标的 RGBA 值" -#: ../setup/enginetreeview.py:92 -msgid "Kbd" -msgstr "Kbd" +#: data/dconf/org.freedesktop.ibus.gschema.xml:151 +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form 'rgba(r," +"g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 to 255 or " +"percentage values in the range 0% to 100%, and 'a' is a floating point value " +"in the range 0 to 1 of the alpha." +msgstr "" +"XKB 图标显示键盘布局字符串并依据 RGBA 值进行渲染。RGBA 值可以是 1. X11 " +"中的颜色名;2.“#rrggbb”形式的十六进制数,其中“r”“g”“b”分别代表十六进制数字的红、绿和蓝;3.“rgb(r,g,b)”形式的 RGB " +"颜色;或者 4.“rgba(r,g,b,a)”形式的 RGBA 颜色,其中“r”“g”“b”分别为 0 到 255 之间的整数值,或者 0% 到 " +"100% 之间的百分比值,而“a”为 0 到 1 之间的浮点透明度。" -#: ../setup/ibus-setup.desktop.in.h:1 ../setup/setup.ui.h:32 -msgid "IBus Preferences" -msgstr "IBus 设置" +#: data/dconf/org.freedesktop.ibus.gschema.xml:155 +msgid "The milliseconds to show the panel icon for a property" +msgstr "显示属性面板图标的延时" -#: ../setup/ibus-setup.desktop.in.h:2 -msgid "Set IBus Preferences" -msgstr "修改IBus偏好" +#: data/dconf/org.freedesktop.ibus.gschema.xml:156 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" +"如果由 IBusEngineDesc 中的 icon-prop-key 值指定的引擎属性被切换时,面板图标从引擎图标变成属性图标的显示延迟时间。如果值为 " +"0,则没有延时,属性图标立即显示。" -#: ../data/ibus.schemas.in.h:1 -msgid "Auto hide" -msgstr "自动隐藏" +#: data/dconf/org.freedesktop.ibus.gschema.xml:160 +msgid "Use custom font" +msgstr "使用自定义字体" -#: ../data/ibus.schemas.in.h:2 +#: data/dconf/org.freedesktop.ibus.gschema.xml:161 +msgid "Use custom font name for language panel" +msgstr "语言栏上使用自定义字体" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:165 +#: data/dconf/org.freedesktop.ibus.gschema.xml:192 msgid "Custom font" msgstr "自定义字体" -#: ../data/ibus.schemas.in.h:3 +#: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "自定义语言栏字体" -#: ../data/ibus.schemas.in.h:4 -msgid "Disable shortcut keys" -msgstr "禁用快捷键" +#: data/dconf/org.freedesktop.ibus.gschema.xml:170 setup/setup.ui:1305 +msgid "Choose glyphs with input method's language on candidate window" +msgstr "按照输入法语言选择候选词窗口的字形" -#: ../data/ibus.schemas.in.h:5 -msgid "Embed Preedit Text" -msgstr "内嵌编辑模式" +#: data/dconf/org.freedesktop.ibus.gschema.xml:171 +msgid "" +"Some code points have the different glyphs and Pango determines the glyphs " +"from the language attribute. Pango chooses glyphs from the IBus engine's " +"language if the value is true and choose them from the desktop locale if the " +"value is false." +msgstr "有些字符码位有多个不同的字形,Pango 根据语言属性确定其字形。如果该值为真,从 IBus 引擎的语言选择字形;为假,从桌面语言选择字形。" -#: ../data/ibus.schemas.in.h:6 -msgid "Embed Preedit Text in Application Window" -msgstr "在应用程序窗口中启用内嵌编辑模式" +#: data/dconf/org.freedesktop.ibus.gschema.xml:182 +msgid "Unicode shortcut keys for gtk_accelerator_parse" +msgstr "Unicode 快捷键(gtk_accelerator_parse 格式)" -#: ../data/ibus.schemas.in.h:7 -msgid "Enable input method by default" -msgstr "默认启动输入法" +#: data/dconf/org.freedesktop.ibus.gschema.xml:183 +msgid "The shortcut keys for turning Unicode typing on or off" +msgstr "开启或关闭 Unicode 输入的快捷键" -#: ../data/ibus.schemas.in.h:8 -msgid "Enable input method by default when the application gets input focus" -msgstr "当应用程序需要使用输入时自动启用输入法" +#: data/dconf/org.freedesktop.ibus.gschema.xml:187 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "Emoji 快捷键(gtk_accelerator_parse 格式)" -#: ../data/ibus.schemas.in.h:9 -msgid "Enable shortcut keys" -msgstr "应用快捷键" +#: data/dconf/org.freedesktop.ibus.gschema.xml:188 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "用于开启或关闭表情输入的快捷键" -#: ../data/ibus.schemas.in.h:10 -msgid "Language panel position" -msgstr "语言栏位置" +#: data/dconf/org.freedesktop.ibus.gschema.xml:193 +msgid "Custom font name for emoji characters on emoji dialog" +msgstr "用于自定义表情符号对话框中表情符号的字体名称" -#: ../data/ibus.schemas.in.h:11 -msgid "Next engine shortcut keys" -msgstr "下一个引擎快捷键" +#: data/dconf/org.freedesktop.ibus.gschema.xml:197 +msgid "Default language for emoji dictionary" +msgstr "Emoji 字典的默认语言" -#: ../data/ibus.schemas.in.h:12 -msgid "Orientation of lookup table" -msgstr "候选词表方向" +#: data/dconf/org.freedesktop.ibus.gschema.xml:198 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict ." +msgstr "" +"选择表情输入面板中默认的表情字典语言。设定值 $lang 会应用于 /usr/share/ibus/dicts/emoji-$lang.dict。" -#: ../data/ibus.schemas.in.h:13 -msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" -msgstr "候选词表方向。0 = 水平,1 = 竖直。" +#: data/dconf/org.freedesktop.ibus.gschema.xml:202 +msgid "favorite emoji list on emoji dialog" +msgstr "Emoji 面板中的常用表情列表" -#: ../data/ibus.schemas.in.h:14 -msgid "Preload engines" -msgstr "预加载引擎" +#: data/dconf/org.freedesktop.ibus.gschema.xml:203 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "可在表情列表中显示常用的表情符号,但前提是该列表中存在字符。" -#: ../data/ibus.schemas.in.h:15 -msgid "Preload engines during ibus starts up" -msgstr "ibus启动时预加载的引擎" +#: data/dconf/org.freedesktop.ibus.gschema.xml:207 +msgid "favorite emoji annotation list on emoji dialog" +msgstr "Emoji 面板中的常用表情注释列表" -#: ../data/ibus.schemas.in.h:16 -msgid "Prev engine shortcut keys" -msgstr "上一个引擎快捷键" +#: data/dconf/org.freedesktop.ibus.gschema.xml:208 +msgid "You can assign an annotation for a favorite emoji in this list." +msgstr "你可以在此列表中为常用的表情符号添加注释。" -#: ../data/ibus.schemas.in.h:17 ../setup/setup.ui.h:42 -msgid "Share the same input method among all applications" -msgstr "在所有应用程序中共享同一个输入法" +#: data/dconf/org.freedesktop.ibus.gschema.xml:212 +msgid "Whether emoji annotations can be match partially or not" +msgstr "表情注释是否可以部分匹配" -#: ../data/ibus.schemas.in.h:18 ../setup/setup.ui.h:43 -msgid "Show icon on system tray" -msgstr "在系统托盘上显示图标" +#: data/dconf/org.freedesktop.ibus.gschema.xml:213 +msgid "" +"Whether emoji annotations can be matched with a partial string instead of " +"the exact match or not." +msgstr "是否允许使用部分字符来匹配表情注释,而不用完整字符串。" -#: ../data/ibus.schemas.in.h:19 -msgid "Show input method name" -msgstr "在语言栏上显示输入法名字" +#: data/dconf/org.freedesktop.ibus.gschema.xml:217 +msgid "Match emoji annotations with the specified length" +msgstr "使用特定长度字符匹配表情注释" -#: ../data/ibus.schemas.in.h:20 ../setup/setup.ui.h:45 -msgid "Show input method name on language bar" -msgstr "在语言栏上显示输入法名字" +#: data/dconf/org.freedesktop.ibus.gschema.xml:218 +msgid "" +"Match emoji annotations partially with more than the specified number of " +"characters instead of the exact match." +msgstr "不用完全匹配表情注释,只要输入的字符与表情注释匹配超过指定的字符数即可。" -#: ../data/ibus.schemas.in.h:21 +#: data/dconf/org.freedesktop.ibus.gschema.xml:222 +msgid "Choose a condition to match emoji annotations partially" +msgstr "选择表情注释部分匹配条件" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "" -"The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = " -"Always show" -msgstr "语言栏行为。0 = 嵌入菜单,1 = 自动隐藏,2 = 总是显示。" +"Choose one of the following conditions to match emoji annotations partially: " +"0 == Prefix match, 1 == Suffix match, 2 == Containing match" +msgstr "" +"选择以下条件来部分匹配表情注释:0 == 字首匹配, 1 == 字尾匹配, 2 == 包含匹配" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:227 +msgid "Load the emoji data at the time of startup" +msgstr "启动时加载 Emoji 数据" -#: ../data/ibus.schemas.in.h:22 +#: data/dconf/org.freedesktop.ibus.gschema.xml:228 msgid "" -"The position of the language panel. 0 = Top left corner, 1 = Top right " -"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" -msgstr "语言栏位置" +"Load the emoji data at the time of startup if true. About 10MB memory is " +"needed to load the data. Load the emoji data when open the emoji dialog at " +"the beginning if false." +msgstr "" +"如果设定为真(True),则在启动时载入表情数据。大概需要 10MB 内存来载入数据。如果设定为假(False),则在打开表情输入面板时加载表情数据。" -#: ../data/ibus.schemas.in.h:23 -msgid "The shortcut keys for switching to the next input method in the list" -msgstr "切换下一个输入法快捷键" +#: data/dconf/org.freedesktop.ibus.gschema.xml:232 +msgid "Load the Unicode data at the time of startup" +msgstr "启动时加载 Unicode 数据" -#: ../data/ibus.schemas.in.h:24 -msgid "The shortcut keys for switching to the previous input method" -msgstr "切换上一个输入法快捷键" +#: data/dconf/org.freedesktop.ibus.gschema.xml:233 +msgid "" +"Load the Unicode data at the time of startup if true. About 15MB memory is " +"needed to load the data. Load the Unicode data when open the emoji dialog at " +"the beginning if false. The Unicode data is always loaded after the emoji " +"data is loaded even if true." +msgstr "" +"如果设为“True”,则在启动时加载 Unicode 数据。加载数据大约需要 15MB 内存。如果设为“False”,则打开表情输入面板时加载 " +"Unicode 数据。Unicode 数据总是会在表情数据加载之后加载,即使设置为“True”也是如此。" -#: ../data/ibus.schemas.in.h:25 -msgid "The shortcut keys for turning input method off" -msgstr "关闭输入法的快捷键" +#: ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "" +"版权所有 (c) 2007-2010 黄鹏\n" +"版权所有 (c) 2007-2010 Red Hat, Inc." -#: ../data/ibus.schemas.in.h:26 -msgid "The shortcut keys for turning input method on" -msgstr "开启输入法的快捷键" +#: ibus/lang.py:41 src/ibusutil.c:209 +msgid "Other" +msgstr "其他" -#: ../data/ibus.schemas.in.h:27 ../setup/setup.ui.h:51 -msgid "The shortcut keys for turning input method on or off" -msgstr "打开关闭输入法的快捷键" +#: setup/emojilang.py:67 +msgid "Select a language" +msgstr "选择语言" -#: ../data/ibus.schemas.in.h:28 -msgid "Trigger shortcut keys" -msgstr "触发快捷键" +#: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 +#: setup/main.py:560 +msgid "_Cancel" +msgstr "取消(_C)" -#: ../data/ibus.schemas.in.h:29 -msgid "Use custom font" -msgstr "使用自定义字体" +#: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 +msgid "_OK" +msgstr "确定(_O)" -#: ../data/ibus.schemas.in.h:30 -msgid "Use custom font name for language panel" -msgstr "语言栏是否使用自定义字体" +#: setup/emojilang.py:235 setup/enginedialog.py:205 +msgid "More…" +msgstr "更多…" -#: ../data/ibus.schemas.in.h:31 -msgid "Use global input method" -msgstr "使用全局输入法" +#: setup/engineabout.py:37 setup/setup.ui:1368 ui/gtk3/panel.vala:1184 +msgid "About" +msgstr "关于" -#: ../data/ibus.schemas.in.h:32 ../setup/setup.ui.h:55 -msgid "Use system keyboard (XKB) layout" -msgstr "使用系统键盘(XKB)布局" +#: setup/engineabout.py:40 setup/setup.ui:1391 +msgid "_Close" +msgstr "关闭(_C)" -#: ../data/ibus.schemas.in.h:33 ../setup/setup.ui.h:56 -msgid "Use system keyboard layout" -msgstr "使用系统键盘布局" +#: setup/engineabout.py:72 +#, python-format +msgid "Language: %s\n" +msgstr "语言:%s\n" -#: ../setup/setup.ui.h:1 -msgid "..." -msgstr "..." +#: setup/engineabout.py:75 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "键盘布局:%s\n" -#: ../setup/setup.ui.h:2 -msgid "Font and Style" -msgstr "字体和风格" +#: setup/engineabout.py:78 +#, python-format +msgid "Author: %s\n" +msgstr "作者:%s\n" -#: ../setup/setup.ui.h:3 -msgid "Global input method settings" -msgstr "全局输入法设置" +#: setup/engineabout.py:81 +msgid "Description:\n" +msgstr "描述:\n" -#: ../setup/setup.ui.h:4 -msgid "Keyboard Layout" -msgstr "键盘布局" +#: setup/enginecombobox.py:139 setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "选择输入法" -#: ../setup/setup.ui.h:5 -msgid "Keyboard Shortcuts" -msgstr "快捷键" +#. add button +#: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 +msgid "_Add" +msgstr "添加(_A)" + +#. create im name & icon column +#: setup/enginetreeview.py:69 setup/setup.ui:838 +msgid "Input Method" +msgstr "输入法" -#: ../setup/setup.ui.h:6 -msgid "Startup" -msgstr "启动" +#: setup/ibus-setup.desktop:3 setup/setup.ui:69 +msgid "IBus Preferences" +msgstr "IBus 首选项" + +#: setup/ibus-setup.desktop:4 +msgid "Set IBus Preferences" +msgstr "设定 IBus 首选项" -#: ../setup/setup.ui.h:7 +#: setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "快捷键" + +#: setup/keyboardshortcut.py:67 +msgid "Key code:" +msgstr "按键:" + +#: setup/keyboardshortcut.py:82 +msgid "Modifiers:" +msgstr "修饰键:" + +#. apply button +#: setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "应用(_A)" + +#. delete button +#: setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "删除(_D)" + +#: setup/keyboardshortcut.py:252 msgid "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." msgstr "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" +"请按下一个键盘按键(或者按键组合)。\n" +"当您松开按键时,对话框将自动关闭。" + +#: setup/keyboardshortcut.py:255 +msgid "Please press a key (or a key combination)" +msgstr "请按下一个键盘按键(或者按键组合)" -#: ../setup/setup.ui.h:14 +#: setup/main.py:121 setup/main.py:588 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "和 SHIFT 一起使用快捷键来切换到先前的输入法" + +#: setup/main.py:515 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "IBus 守护进程尚未运行。您希望启动它吗?" + +#: setup/main.py:536 msgid "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" msgstr "" -"列表中第一个输入法是默认的输入法。\n" -"您可以使用上/下按钮来更改默认的输入法。" +"IBus 已经启动!如果您无法使用 IBus,添加以下行至 $HOME/.bashrc;然后重新登录您的桌面。\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" -#: ../setup/setup.ui.h:17 -msgid "Add the selected input method into the enabled input methods" -msgstr "添加输入法到启动" +#. Translators: %d == 5 currently +#: setup/main.py:550 +#, python-format +msgid "IBus daemon could not be started in %d seconds." +msgstr "IBus 守护在 %d 秒内无法启动。" -#: ../setup/setup.ui.h:18 -msgid "Advanced" -msgstr "高级" +#: setup/main.py:562 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "选择 %s 的快捷键" -#: ../setup/setup.ui.h:19 -msgid "Always" -msgstr "总是" +#. Translators: Title of the window +#: setup/main.py:564 +msgid "switching input methods" +msgstr "切换输入法" + +#: setup/setup.ui:11 +msgid "Horizontal" +msgstr "横排" -#: ../setup/setup.ui.h:20 +#: setup/setup.ui:14 +msgid "Vertical" +msgstr "竖排" + +#: setup/setup.ui:25 +msgid "Top left corner" +msgstr "左上角" + +#: setup/setup.ui:28 +msgid "Top right corner" +msgstr "右上角" + +#: setup/setup.ui:31 msgid "Bottom left corner" msgstr "左下角" -#: ../setup/setup.ui.h:21 +#: setup/setup.ui:34 msgid "Bottom right corner" msgstr "右下角" -#: ../setup/setup.ui.h:22 -msgid "Candidates orientation:" -msgstr "候选词排列方向:" - -#: ../setup/setup.ui.h:23 +#: setup/setup.ui:37 msgid "Custom" msgstr "自定义" -#: ../setup/setup.ui.h:24 +#: setup/setup.ui:48 +msgid "Do not show" +msgstr "不再显示" + +#: setup/setup.ui:51 +msgid "Hide automatically" +msgstr "自动隐藏" + +#: setup/setup.ui:54 +msgid "Always" +msgstr "总是" + +#: setup/setup.ui:113 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "切换下一个输入法的快捷键" + +#: setup/setup.ui:115 +msgid "Next input method:" +msgstr "下一输入法:" + +#: setup/setup.ui:127 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "切换上一个输入法的快捷键" + +#: setup/setup.ui:129 +msgid "Previous input method:" +msgstr "上一输入法:" + +#: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 +#: setup/setup.ui:903 setup/setup.ui:957 +msgid "..." +msgstr "..." + +#: setup/setup.ui:226 +msgid "Enable or disable:" +msgstr "开关:" + +#: setup/setup.ui:238 +msgid "Enable:" +msgstr "启用:" + +#: setup/setup.ui:291 msgid "Disable:" msgstr "禁用:" -#: ../setup/setup.ui.h:25 +#: setup/setup.ui:345 setup/setup.ui:983 +msgid "Keyboard Shortcuts" +msgstr "快捷键" + +#: setup/setup.ui:374 +msgid "Set the orientation of candidates in lookup table" +msgstr "设置候选词表方向" + +#: setup/setup.ui:376 +msgid "Candidates orientation:" +msgstr "候选词排列方向:" + +#: setup/setup.ui:407 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "设置如何显示或隐藏语言栏" + +#: setup/setup.ui:409 +msgid "Show property panel:" +msgstr "显示属性栏:" + +#: setup/setup.ui:423 +msgid "Language panel position:" +msgstr "语言栏位置:" + +#: setup/setup.ui:494 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "选中该项将在语言栏上显示输入法的名字" + +#: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "在应用程序窗口中启用内嵌编辑模式" -#: ../setup/setup.ui.h:26 +#: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "在应用程序窗口中启用输入法的内嵌编辑模式" -#: ../setup/setup.ui.h:27 -msgid "Embedded in menu" -msgstr "嵌入菜单" - -#: ../setup/setup.ui.h:28 -msgid "Enable or disable:" -msgstr "开关:" +#: setup/setup.ui:527 +msgid "Use custom font:" +msgstr "使用自定义字体:" -#: ../setup/setup.ui.h:29 -msgid "Enable:" -msgstr "应用:" +#: setup/setup.ui:562 setup/setup.ui:1156 +msgid "Font and Style" +msgstr "字体和风格" -#: ../setup/setup.ui.h:30 +#: setup/setup.ui:579 msgid "General" msgstr "常规" -#: ../setup/setup.ui.h:31 -msgid "Horizontal" -msgstr "水平" +#: setup/setup.ui:671 +msgid "Add the selected input method into the enabled input methods" +msgstr "添加选中的输入法到启用输入法列表" -#: ../setup/setup.ui.h:34 -msgid "Language panel position:" -msgstr "语言栏位置:" +#: setup/setup.ui:682 +msgid "_Remove" +msgstr "删除(_R)" -#: ../setup/setup.ui.h:35 -msgid "Move down the selected input method in the enabled input methods" -msgstr "下移选中的输入法" +#: setup/setup.ui:689 +msgid "Remove the selected input method from the enabled input methods" +msgstr "从启用输入法列表删除选中的输入法" -#: ../setup/setup.ui.h:36 +#: setup/setup.ui:700 +msgid "_Up" +msgstr "向上(_U)" + +#: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "上移选中的输入法" -#: ../setup/setup.ui.h:37 -msgid "Next input method:" -msgstr "下一输入法:" +#: setup/setup.ui:718 +msgid "_Down" +msgstr "向下(_D)" -#: ../setup/setup.ui.h:38 -msgid "Previous input method:" -msgstr "上一输入法:" - -#: ../setup/setup.ui.h:39 -msgid "Remove the selected input method from the enabled input methods" -msgstr "删除选中的输入法" - -#: ../setup/setup.ui.h:40 -msgid "Set the behavior of ibus how to show or hide language bar" -msgstr "设置显示隐藏语言栏的方式" +#: setup/setup.ui:725 +msgid "Move down the selected input method in the enabled input methods" +msgstr "下移选中的输入法" -#: ../setup/setup.ui.h:41 -msgid "Set the orientation of candidates in lookup table" -msgstr "设置候选词表方向" +#: setup/setup.ui:736 +msgid "_About" +msgstr "关于(_A)" -#: ../setup/setup.ui.h:44 +#: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "显示选中输入法的信息" -#: ../setup/setup.ui.h:46 -msgid "Show input method's name on language bar when check the checkbox" -msgstr "在语言栏上显示输入法的名字" +#: setup/setup.ui:754 +msgid "_Preferences" +msgstr "首选项(_P)" -#: ../setup/setup.ui.h:47 -msgid "Show language panel:" -msgstr "显示语言栏:" +#: setup/setup.ui:761 +msgid "Show setup of the selected input method" +msgstr "显示选中输入法的设置界面" -#: ../setup/setup.ui.h:48 -msgid "Start ibus on login" -msgstr "启动桌面时自动启动IBus" +#: setup/setup.ui:812 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "可以通过按下键盘快捷键或者点击面板图标来在上述列表中切换选中的输入法" -#: ../setup/setup.ui.h:49 -msgid "The shortcut keys for switching to next input method in the list" -msgstr "切换下一个输入法快捷键" +#: setup/setup.ui:873 +msgid "" +"The shortcut keys to enable conversions of emoji annotations or Unicode names" +msgstr "启用 Emoji 注释或 Unicode 名称转换的快捷键" -#: ../setup/setup.ui.h:50 -msgid "The shortcut keys for switching to previous input method in the list" -msgstr "切换上一个输入法快捷键" +#: setup/setup.ui:875 +msgid "Emoji annotation:" +msgstr "表情注释:" -#: ../setup/setup.ui.h:52 -msgid "Top left corner" -msgstr "左上角" +#: setup/setup.ui:927 +msgid "The shortcut keys to enable Unicode code point conversions" +msgstr "启用 Unicode 码位转换的快捷键" -#: ../setup/setup.ui.h:53 -msgid "Top right corner" -msgstr "右上角" +#: setup/setup.ui:929 +msgid "Unicode code point:" +msgstr "Unicode 码位:" -#: ../setup/setup.ui.h:54 -msgid "Use custom font:" -msgstr "使用自定义字体:" +#: setup/setup.ui:1013 +msgid "Set a font of Unicode candidates on the emoji dialog" +msgstr "设置表情输入面板中 Unicode 候选字符的字体" -#: ../setup/setup.ui.h:57 -msgid "Vertical" -msgstr "竖直" +#: setup/setup.ui:1015 +msgid "Unicode font:" +msgstr "Unicode 字体:" + +#: setup/setup.ui:1038 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "设置表情输入面板中表情注释的语言" + +#: setup/setup.ui:1040 +msgid "Emoji annotation language:" +msgstr "表情注释语言:" + +#: setup/setup.ui:1062 +msgid "" +"Match emoji annotations partially with the following condition and more than " +"the number of characters:" +msgstr "不用完全匹配表情注释,只要输入的字符与表情注释匹配超过指定的字符数:" + +#: setup/setup.ui:1067 +msgid "" +"If emoji annotations can be matched with a partial string instead of the " +"exact match" +msgstr "是否允许使用部分字符来匹配表情注释,而不用完整字符串" + +#: setup/setup.ui:1101 +msgid "Prefix match" +msgstr "字首匹配" + +#: setup/setup.ui:1115 +msgid "Suffix match" +msgstr "字尾匹配" + +#: setup/setup.ui:1130 +msgid "Containing match" +msgstr "包含匹配" + +#: setup/setup.ui:1176 +msgid "Emoji" +msgstr "表情符号" + +#: setup/setup.ui:1230 +msgid "Keyboard Layout" +msgstr "键盘布局" + +#: setup/setup.ui:1278 +msgid "Global input method settings" +msgstr "全局输入法设置" + +#: setup/setup.ui:1310 +msgid "" +"Choose glyphs with the input method's language on the candidate window for " +"the duplicated code points" +msgstr "对于复用的码位,按照输入法语言选择它在候选词窗口中的字形" + +#: setup/setup.ui:1327 +msgid "Fonts" +msgstr "字体" + +#: setup/setup.ui:1347 +msgid "Advanced" +msgstr "高级" + +#: src/ibusemojigen.h:30 +msgid "Activities" +msgstr "活动" + +#: src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "动物和自然" + +#: src/ibusemojigen.h:32 +msgid "Component" +msgstr "组件" + +#: src/ibusemojigen.h:33 +msgid "Flags" +msgstr "旗帜" + +#: src/ibusemojigen.h:34 +msgid "Food & Drink" +msgstr "食物和饮料" + +#: src/ibusemojigen.h:35 +msgid "Objects" +msgstr "物品" + +#: src/ibusemojigen.h:36 +msgid "People & Body" +msgstr "人物和身体" + +#: src/ibusemojigen.h:37 +msgid "Smileys & Emotion" +msgstr "笑脸和情感" + +#: src/ibusemojigen.h:38 +msgid "Symbols" +msgstr "符号" + +#: src/ibusemojigen.h:39 +msgid "Travel & Places" +msgstr "旅行和地点" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:33 +msgid "Basic Latin" +msgstr "基本拉丁字母" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:37 +msgid "Latin-1 Supplement" +msgstr "拉丁文 1 补充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:41 +msgid "Latin Extended-A" +msgstr "拉丁文扩展 A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:45 +msgid "Latin Extended-B" +msgstr "拉丁文扩展 B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:49 +msgid "IPA Extensions" +msgstr "国际音标扩展" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:53 +msgid "Spacing Modifier Letters" +msgstr "空格修饰字母" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:57 +msgid "Combining Diacritical Marks" +msgstr "组合变音标记" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:61 +msgid "Greek and Coptic" +msgstr "希腊和科普特字母" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:65 +msgid "Cyrillic" +msgstr "西里尔文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:69 +msgid "Cyrillic Supplement" +msgstr "西里尔文补充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:73 +msgid "Armenian" +msgstr "亚美尼亚文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:77 +msgid "Hebrew" +msgstr "希伯来字母" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:81 +msgid "Arabic" +msgstr "阿拉伯文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:85 +msgid "Syriac" +msgstr "叙利亚文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:89 +msgid "Arabic Supplement" +msgstr "阿拉伯文补充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:93 +msgid "Thaana" +msgstr "它拿字母" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:97 +msgid "NKo" +msgstr "Nko 书面字母" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:101 +msgid "Samaritan" +msgstr "撒玛利亚文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:105 +msgid "Mandaic" +msgstr "曼达安文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:109 +msgid "Syriac Supplement" +msgstr "叙利亚文补充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:113 +msgid "Arabic Extended-A" +msgstr "阿拉伯文扩展 A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:117 +msgid "Devanagari" +msgstr "天城文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:121 +msgid "Bengali" +msgstr "孟加拉文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:125 +msgid "Gurmukhi" +msgstr "古木基文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:129 +msgid "Gujarati" +msgstr "古吉拉特文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:133 +msgid "Oriya" +msgstr "奥里亚文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:137 +msgid "Tamil" +msgstr "泰米尔文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:141 +msgid "Telugu" +msgstr "泰卢固文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:145 +msgid "Kannada" +msgstr "卡纳达文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:149 +msgid "Malayalam" +msgstr "马拉雅拉姆文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:153 +msgid "Sinhala" +msgstr "僧伽罗文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:157 +msgid "Thai" +msgstr "泰文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:161 +msgid "Lao" +msgstr "老挝文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:165 +msgid "Tibetan" +msgstr "藏文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:169 +msgid "Myanmar" +msgstr "缅甸文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:173 +msgid "Georgian" +msgstr "格鲁吉亚文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:177 +msgid "Hangul Jamo" +msgstr "谚文字母" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:181 +msgid "Ethiopic" +msgstr "埃塞俄比亚文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:185 +msgid "Ethiopic Supplement" +msgstr "埃塞俄比亚文补充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:189 +msgid "Cherokee" +msgstr "切罗基文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:193 +msgid "Unified Canadian Aboriginal Syllabics" +msgstr "统一加拿大原住民音节文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:197 +msgid "Ogham" +msgstr "欧甘文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:201 +msgid "Runic" +msgstr "卢恩文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:205 +msgid "Tagalog" +msgstr "他加禄文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:209 +msgid "Hanunoo" +msgstr "哈努诺文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:213 +msgid "Buhid" +msgstr "布希德文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:217 +msgid "Tagbanwa" +msgstr "塔格班瓦文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:221 +msgid "Khmer" +msgstr "高棉文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:225 +msgid "Mongolian" +msgstr "蒙古文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:229 +msgid "Unified Canadian Aboriginal Syllabics Extended" +msgstr "统一加拿大原住民音节文字扩展" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:233 +msgid "Limbu" +msgstr "林布文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:237 +msgid "Tai Le" +msgstr "傣仂文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:241 +msgid "New Tai Lue" +msgstr "新傣仂文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:245 +msgid "Khmer Symbols" +msgstr "高棉文符号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:249 +msgid "Buginese" +msgstr "布吉文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:253 +msgid "Tai Tham" +msgstr "老傣文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:257 +msgid "Combining Diacritical Marks Extended" +msgstr "组合变音标记扩展" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:261 +msgid "Balinese" +msgstr "巴厘文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:265 +msgid "Sundanese" +msgstr "巽他文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:269 +msgid "Batak" +msgstr "巴塔克文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:273 +msgid "Lepcha" +msgstr "绒巴文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:277 +msgid "Ol Chiki" +msgstr "桑塔利文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:281 +msgid "Cyrillic Extended-C" +msgstr "西里尔文扩展 C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:285 +msgid "Georgian Extended" +msgstr "格鲁吉亚文扩展" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:289 +msgid "Sundanese Supplement" +msgstr "巽他字母补充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:293 +msgid "Vedic Extensions" +msgstr "吠陀扩展" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:297 +msgid "Phonetic Extensions" +msgstr "音标扩展" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:301 +msgid "Phonetic Extensions Supplement" +msgstr "音标扩展补充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:305 +msgid "Combining Diacritical Marks Supplement" +msgstr "组合变音标记补充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:309 +msgid "Latin Extended Additional" +msgstr "拉丁文扩展附加" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:313 +msgid "Greek Extended" +msgstr "希腊文扩展" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:317 +msgid "General Punctuation" +msgstr "通用标点符号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:321 +msgid "Superscripts and Subscripts" +msgstr "上标和下标" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:325 +msgid "Currency Symbols" +msgstr "货币符号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:329 +msgid "Combining Diacritical Marks for Symbols" +msgstr "符号用组合变音标记" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:333 +msgid "Letterlike Symbols" +msgstr "字母状符号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:337 +msgid "Number Forms" +msgstr "数字形式" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:341 +msgid "Arrows" +msgstr "箭头" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:345 +msgid "Mathematical Operators" +msgstr "数学运算符" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:349 +msgid "Miscellaneous Technical" +msgstr "杂项技术符号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:353 +msgid "Control Pictures" +msgstr "控制图" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:357 +msgid "Optical Character Recognition" +msgstr "光学识别符" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:361 +msgid "Enclosed Alphanumerics" +msgstr "带圈的字母数字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:365 +msgid "Box Drawing" +msgstr "制表符" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:369 +msgid "Block Elements" +msgstr "块状元素" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:373 +msgid "Geometric Shapes" +msgstr "几何形状" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:377 +msgid "Miscellaneous Symbols" +msgstr "杂项符号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:381 +msgid "Dingbats" +msgstr "杂锦符号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:385 +msgid "Miscellaneous Mathematical Symbols-A" +msgstr "杂项数学符号 A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:389 +msgid "Supplemental Arrows-A" +msgstr "补充箭头 A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:393 +msgid "Braille Patterns" +msgstr "盲文点字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:397 +msgid "Supplemental Arrows-B" +msgstr "补充箭头 B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:401 +msgid "Miscellaneous Mathematical Symbols-B" +msgstr "杂项数学符号 B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:405 +msgid "Supplemental Mathematical Operators" +msgstr "补充数学运算符" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:409 +msgid "Miscellaneous Symbols and Arrows" +msgstr "杂项符号和箭头" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:413 +msgid "Glagolitic" +msgstr "格拉哥里文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:417 +msgid "Latin Extended-C" +msgstr "拉丁文扩展 C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:421 +msgid "Coptic" +msgstr "科普特文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:425 +msgid "Georgian Supplement" +msgstr "格鲁吉亚文补充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:429 +msgid "Tifinagh" +msgstr "提非纳文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:433 +msgid "Ethiopic Extended" +msgstr "埃塞俄比亚文扩展" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:437 +msgid "Cyrillic Extended-A" +msgstr "西里尔文扩展 A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:441 +msgid "Supplemental Punctuation" +msgstr "补充标点符号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:445 +msgid "CJK Radicals Supplement" +msgstr "中日韩部首补充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:449 +msgid "Kangxi Radicals" +msgstr "康熙部首" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:453 +msgid "Ideographic Description Characters" +msgstr "表意文字描述字符" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:457 +msgid "CJK Symbols and Punctuation" +msgstr "中日韩符号和标点" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:461 +msgid "Hiragana" +msgstr "平假名" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:465 +msgid "Katakana" +msgstr "片假名" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:469 +msgid "Bopomofo" +msgstr "注音符号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:473 +msgid "Hangul Compatibility Jamo" +msgstr "谚文兼容字母" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:477 +msgid "Kanbun" +msgstr "汉文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:481 +msgid "Bopomofo Extended" +msgstr "注音符号扩展" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:485 +msgid "CJK Strokes" +msgstr "中日韩笔画" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:489 +msgid "Katakana Phonetic Extensions" +msgstr "片假名语音扩展" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:493 +msgid "Enclosed CJK Letters and Months" +msgstr "带圈的中日韩字符和月份" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:497 +msgid "CJK Compatibility" +msgstr "中日韩兼容字符" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:501 +msgid "CJK Unified Ideographs Extension A" +msgstr "中日韩统一表意文字扩展 A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:505 +msgid "Yijing Hexagram Symbols" +msgstr "易经六边形符号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:509 +msgid "CJK Unified Ideographs" +msgstr "中日韩统一表意文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:513 +msgid "Yi Syllables" +msgstr "彝文音节" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:517 +msgid "Yi Radicals" +msgstr "彝文部首" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:521 +msgid "Lisu" +msgstr "傈僳文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:525 +msgid "Vai" +msgstr "瓦伊文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:529 +msgid "Cyrillic Extended-B" +msgstr "西里尔文扩展 B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:533 +msgid "Bamum" +msgstr "巴姆穆文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:537 +msgid "Modifier Tone Letters" +msgstr "修饰用声调字母" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:541 +msgid "Latin Extended-D" +msgstr "拉丁文扩展 D" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:545 +msgid "Syloti Nagri" +msgstr "锡尔赫特城文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:549 +msgid "Common Indic Number Forms" +msgstr "通用印度数字形式" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:553 +msgid "Phags-pa" +msgstr "八思巴文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:557 +msgid "Saurashtra" +msgstr "索拉什特拉文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:561 +msgid "Devanagari Extended" +msgstr "天城文扩展" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:565 +msgid "Kayah Li" +msgstr "克耶里文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:569 +msgid "Rejang" +msgstr "拉让文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:573 +msgid "Hangul Jamo Extended-A" +msgstr "谚文字母扩展 A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:577 +msgid "Javanese" +msgstr "爪哇文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:581 +msgid "Myanmar Extended-B" +msgstr "缅甸文扩展 B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:585 +msgid "Cham" +msgstr "占文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:589 +msgid "Myanmar Extended-A" +msgstr "缅甸文扩展 A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:593 +msgid "Tai Viet" +msgstr "越南傣文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:597 +msgid "Meetei Mayek Extensions" +msgstr "曼尼普尔文扩展" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:601 +msgid "Ethiopic Extended-A" +msgstr "埃塞俄比亚文扩展 A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:605 +msgid "Latin Extended-E" +msgstr "拉丁文扩展 E" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:609 +msgid "Cherokee Supplement" +msgstr "切罗基文补充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:613 +msgid "Meetei Mayek" +msgstr "曼尼普尔文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:617 +msgid "Hangul Syllables" +msgstr "谚文音节" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:621 +msgid "Hangul Jamo Extended-B" +msgstr "谚文字母扩展 B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:625 +msgid "High Surrogates" +msgstr "高半代理区" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:629 +msgid "High Private Use Surrogates" +msgstr "高半私用代理区" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:633 +msgid "Low Surrogates" +msgstr "低半代理区" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:637 +msgid "Private Use Area" +msgstr "私用区" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:641 +msgid "CJK Compatibility Ideographs" +msgstr "中日韩兼容表意文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:645 +msgid "Alphabetic Presentation Forms" +msgstr "字母表示形式" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:649 +msgid "Arabic Presentation Forms-A" +msgstr "阿拉伯文表现形式 A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:653 +msgid "Variation Selectors" +msgstr "变体选择符" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:657 +msgid "Vertical Forms" +msgstr "竖排形式" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:661 +msgid "Combining Half Marks" +msgstr "组合用半形标记" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:665 +msgid "CJK Compatibility Forms" +msgstr "中日韩兼容形式" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:669 +msgid "Small Form Variants" +msgstr "小型变体" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:673 +msgid "Arabic Presentation Forms-B" +msgstr "阿拉伯文表现形式 B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:677 +msgid "Halfwidth and Fullwidth Forms" +msgstr "半角及全角形式" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:681 +msgid "Specials" +msgstr "特殊字符" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:685 +msgid "Linear B Syllabary" +msgstr "线形文字 B 音节" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:689 +msgid "Linear B Ideograms" +msgstr "线形文字 B 表意文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:693 +msgid "Aegean Numbers" +msgstr "爱琴海数字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:697 +msgid "Ancient Greek Numbers" +msgstr "古希腊数字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:701 +msgid "Ancient Symbols" +msgstr "古代符号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:705 +msgid "Phaistos Disc" +msgstr "斐斯托斯圆盘" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:709 +msgid "Lycian" +msgstr "吕西亚文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:713 +msgid "Carian" +msgstr "卡里亚文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:717 +msgid "Coptic Epact Numbers" +msgstr "科普特闰余数字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:721 +msgid "Old Italic" +msgstr "古意大利文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:725 +msgid "Gothic" +msgstr "哥特文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:729 +msgid "Old Permic" +msgstr "古彼尔姆文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:733 +msgid "Ugaritic" +msgstr "乌加里特文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:737 +msgid "Old Persian" +msgstr "古波斯文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:741 +msgid "Deseret" +msgstr "德瑟雷特文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:745 +msgid "Shavian" +msgstr "萧伯纳文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:749 +msgid "Osmanya" +msgstr "奥斯曼亚文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:753 +msgid "Osage" +msgstr "欧塞奇文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:757 +msgid "Elbasan" +msgstr "爱尔巴桑文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:761 +msgid "Caucasian Albanian" +msgstr "高加索阿尔巴尼亚文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:765 +msgid "Linear A" +msgstr "线形文字 A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:769 +msgid "Cypriot Syllabary" +msgstr "塞浦路斯文字音表" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:773 +msgid "Imperial Aramaic" +msgstr "帝国亚拉姆文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:777 +msgid "Palmyrene" +msgstr "帕米拉文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:781 +msgid "Nabataean" +msgstr "纳巴泰文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:785 +msgid "Hatran" +msgstr "哈特拉文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:789 +msgid "Phoenician" +msgstr "腓尼基文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:793 +msgid "Lydian" +msgstr "吕底亚文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:797 +msgid "Meroitic Hieroglyphs" +msgstr "麦罗埃文圣书体" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:801 +msgid "Meroitic Cursive" +msgstr "麦罗埃文草书体" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:805 +msgid "Kharoshthi" +msgstr "佉卢文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:809 +msgid "Old South Arabian" +msgstr "古南阿拉伯文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:813 +msgid "Old North Arabian" +msgstr "古北阿拉伯文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:817 +msgid "Manichaean" +msgstr "摩尼文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:821 +msgid "Avestan" +msgstr "阿维斯陀文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:825 +msgid "Inscriptional Parthian" +msgstr "碑刻帕提亚文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:829 +msgid "Inscriptional Pahlavi" +msgstr "碑刻巴列维文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:833 +msgid "Psalter Pahlavi" +msgstr "诗篇巴列维文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:837 +msgid "Old Turkic" +msgstr "古突厥文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:841 +msgid "Old Hungarian" +msgstr "古匈牙利文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:845 +msgid "Hanifi Rohingya" +msgstr "哈乃斐罗兴亚文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:849 +msgid "Rumi Numeral Symbols" +msgstr "卢米计数符号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:853 +msgid "Yezidi" +msgstr "雅茲迪文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:857 +msgid "Old Sogdian" +msgstr "古粟特文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:861 +msgid "Sogdian" +msgstr "粟特文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:865 +msgid "Chorasmian" +msgstr "花剌子模文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:869 +msgid "Elymaic" +msgstr "以利买文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:873 +msgid "Brahmi" +msgstr "婆罗米文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:877 +msgid "Kaithi" +msgstr "凯提文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:881 +msgid "Sora Sompeng" +msgstr "索拉桑朋文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:885 +msgid "Chakma" +msgstr "查克马文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:889 +msgid "Mahajani" +msgstr "马哈加尼文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:893 +msgid "Sharada" +msgstr "夏达拉文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:897 +msgid "Sinhala Archaic Numbers" +msgstr "僧伽罗文古数字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:901 +msgid "Khojki" +msgstr "可吉文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:905 +msgid "Multani" +msgstr "穆尔塔尼文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:909 +msgid "Khudawadi" +msgstr "库达瓦迪文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:913 +msgid "Grantha" +msgstr "古兰塔文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:917 +msgid "Newa" +msgstr "纽瓦文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:921 +msgid "Tirhuta" +msgstr "提尔胡塔文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:925 +msgid "Siddham" +msgstr "悉昙文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:929 +msgid "Modi" +msgstr "莫迪文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:933 +msgid "Mongolian Supplement" +msgstr "蒙古文补充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:937 +msgid "Takri" +msgstr "塔卡里" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:941 +msgid "Ahom" +msgstr "阿洪姆文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:945 +msgid "Dogra" +msgstr "多格拉文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:949 +msgid "Warang Citi" +msgstr "瓦兰齐地文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:953 +msgid "Dives Akuru" +msgstr "迪维西阿库鲁文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:957 +msgid "Nandinagari" +msgstr "南迪城文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:961 +msgid "Zanabazar Square" +msgstr "札那巴札尔方形字母" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:965 +msgid "Soyombo" +msgstr "索永布文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:969 +msgid "Pau Cin Hau" +msgstr "包钦豪文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:973 +msgid "Bhaiksuki" +msgstr "拜克舒基文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:977 +msgid "Marchen" +msgstr "玛钦文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:981 +msgid "Masaram Gondi" +msgstr "马萨拉姆贡德文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:985 +msgid "Gunjala Gondi" +msgstr "贡贾拉贡德文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:989 +msgid "Makasar" +msgstr "望加锡文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:993 +msgid "Lisu Supplement" +msgstr "傈僳文补充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:997 +msgid "Tamil Supplement" +msgstr "泰米尔文补充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1001 +msgid "Cuneiform" +msgstr "楔形文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1005 +msgid "Cuneiform Numbers and Punctuation" +msgstr "楔形数字和标点" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1009 +msgid "Early Dynastic Cuneiform" +msgstr "早王朝楔形文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1013 +msgid "Egyptian Hieroglyphs" +msgstr "埃及圣书体" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1017 +msgid "Egyptian Hieroglyph Format Controls" +msgstr "埃及圣书体格式控制" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1021 +msgid "Anatolian Hieroglyphs" +msgstr "安纳托利亚象形文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1025 +msgid "Bamum Supplement" +msgstr "巴姆穆文补充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1029 +msgid "Mro" +msgstr "莫鲁文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1033 +msgid "Bassa Vah" +msgstr "巴萨瓦文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1037 +msgid "Pahawh Hmong" +msgstr "帕哈苗文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1041 +msgid "Medefaidrin" +msgstr "梅德法伊德林文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1045 +msgid "Miao" +msgstr "苗文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1049 +msgid "Ideographic Symbols and Punctuation" +msgstr "表意符号及标点" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1053 +msgid "Tangut" +msgstr "西夏文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1057 +msgid "Tangut Components" +msgstr "西夏文偏旁" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1061 +msgid "Khitan Small Script" +msgstr "契丹小字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1065 +msgid "Tangut Supplement" +msgstr "西夏文补充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1069 +msgid "Kana Supplement" +msgstr "假名补充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1073 +msgid "Kana Extended-A" +msgstr "假名扩展 A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1077 +msgid "Small Kana Extension" +msgstr "小型假名扩展" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1081 +msgid "Nushu" +msgstr "女书" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1085 +msgid "Duployan" +msgstr "杜普洛彦速记文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1089 +msgid "Shorthand Format Controls" +msgstr "速记格式控制" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1093 +msgid "Byzantine Musical Symbols" +msgstr "拜占庭音乐符号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1097 +msgid "Musical Symbols" +msgstr "音乐符号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1101 +msgid "Ancient Greek Musical Notation" +msgstr "古希腊音乐记号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1105 +msgid "Mayan Numerals" +msgstr "玛雅数字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1109 +msgid "Tai Xuan Jing Symbols" +msgstr "太玄经符号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1113 +msgid "Counting Rod Numerals" +msgstr "算筹数码" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1117 +msgid "Mathematical Alphanumeric Symbols" +msgstr "数学用字母数字符号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1121 +msgid "Sutton SignWriting" +msgstr "萨顿手语文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1125 +msgid "Glagolitic Supplement" +msgstr "格拉哥里字母补充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1129 +msgid "Nyiakeng Puachue Hmong" +msgstr "涅根普瓦最苗文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1133 +msgid "Wancho" +msgstr "文乔文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1137 +msgid "Mende Kikakui" +msgstr "门德基卡库文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1141 +msgid "Adlam" +msgstr "阿德拉姆文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1145 +msgid "Indic Siyaq Numbers" +msgstr "印度西亚格数字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1149 +msgid "Ottoman Siyaq Numbers" +msgstr "奥斯曼西亚格数字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1153 +msgid "Arabic Mathematical Alphabetic Symbols" +msgstr "阿拉伯数学字母符号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1157 +msgid "Mahjong Tiles" +msgstr "麻将牌" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1161 +msgid "Domino Tiles" +msgstr "多米诺骨牌" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1165 +msgid "Playing Cards" +msgstr "扑克牌" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1169 +msgid "Enclosed Alphanumeric Supplement" +msgstr "带圈字母数字补充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1173 +msgid "Enclosed Ideographic Supplement" +msgstr "带圈表意文字补充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1177 +msgid "Miscellaneous Symbols and Pictographs" +msgstr "杂项符号和象形图" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1181 +msgid "Emoticons" +msgstr "表情符号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1185 +msgid "Ornamental Dingbats" +msgstr "装饰杂锦符号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1189 +msgid "Transport and Map Symbols" +msgstr "交通和地图符号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1193 +msgid "Alchemical Symbols" +msgstr "炼金术符号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1197 +msgid "Geometric Shapes Extended" +msgstr "几何形状扩展" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1201 +msgid "Supplemental Arrows-C" +msgstr "补充箭头 C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1205 +msgid "Supplemental Symbols and Pictographs" +msgstr "补充符号和象形图" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1209 +msgid "Chess Symbols" +msgstr "象棋符号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1213 +msgid "Symbols and Pictographs Extended-A" +msgstr "符号和象形图扩展 A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1217 +msgid "Symbols for Legacy Computing" +msgstr "传统计算符号" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1221 +msgid "CJK Unified Ideographs Extension B" +msgstr "中日韩统一表意文字扩展 B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1225 +msgid "CJK Unified Ideographs Extension C" +msgstr "中日韩统一表意文字扩展 C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1229 +msgid "CJK Unified Ideographs Extension D" +msgstr "中日韩统一表意文字扩展 D" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1233 +msgid "CJK Unified Ideographs Extension E" +msgstr "中日韩统一表意文字扩展 E" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1237 +msgid "CJK Unified Ideographs Extension F" +msgstr "中日韩统一表意文字扩展 F" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1241 +msgid "CJK Compatibility Ideographs Supplement" +msgstr "中日韩兼容表意文字补充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1245 +msgid "CJK Unified Ideographs Extension G" +msgstr "中日韩统一表意文字扩展 G" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1249 +msgid "Tags" +msgstr "标签" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1253 +msgid "Variation Selectors Supplement" +msgstr "变体选择器补充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1257 +msgid "Supplementary Private Use Area-A" +msgstr "补充私用区 A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1261 +msgid "Supplementary Private Use Area-B" +msgstr "补充私用区 B" + +#: tools/main.vala:51 +msgid "List engine name only" +msgstr "仅列出引擎名称" + +#: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 +msgid "Can't connect to IBus.\n" +msgstr "无法连接 IBus。\n" + +#: tools/main.vala:93 +#, c-format +msgid "language: %s\n" +msgstr "语言:%s\n" + +#: tools/main.vala:161 +msgid "No engine is set.\n" +msgstr "尚未设置引擎。\n" + +#: tools/main.vala:169 +msgid "Set global engine failed.\n" +msgstr "设定全局引擎失败。\n" + +#: tools/main.vala:174 +msgid "Get global engine failed.\n" +msgstr "获取全局引擎失败。\n" + +#: tools/main.vala:217 +msgid "Read the system registry cache." +msgstr "读取系统注册缓存。" + +#: tools/main.vala:219 +msgid "Read the registry cache FILE." +msgstr "读取注册缓存 FILE。" + +#: tools/main.vala:237 tools/main.vala:242 +msgid "The registry cache is invalid.\n" +msgstr "注册缓存无效。\n" + +#: tools/main.vala:257 +msgid "Write the system registry cache." +msgstr "写入系统注册缓存。" + +#: tools/main.vala:259 +msgid "Write the registry cache FILE." +msgstr "写入注册缓存 FILE。" + +#: tools/main.vala:295 +msgid "" +"Use engine schema paths instead of ibus core, which can be comma-separated " +"values." +msgstr "使用引擎架构的路径而非 IBus 核心的,该值以半角逗号分隔。" + +#: tools/main.vala:381 +msgid "Resetting…" +msgstr "正在重置……" + +#: tools/main.vala:399 +msgid "Done" +msgstr "完成" + +#: tools/main.vala:444 +msgid "Set or get engine" +msgstr "设定或获取引擎" + +#: tools/main.vala:445 +msgid "Exit ibus-daemon" +msgstr "退出 ibus-daemon" + +#: tools/main.vala:446 +msgid "Show available engines" +msgstr "显示可用引擎" + +#: tools/main.vala:447 +msgid "(Not implemented)" +msgstr "(暂不可用)" + +#: tools/main.vala:448 +msgid "Restart ibus-daemon" +msgstr "重启 ibus-daemon" + +#: tools/main.vala:449 +msgid "Show version" +msgstr "显示版本号" + +#: tools/main.vala:450 +msgid "Show the content of registry cache" +msgstr "显示注册缓存内容" + +#: tools/main.vala:451 +msgid "Create registry cache" +msgstr "创建注册缓存" + +#: tools/main.vala:452 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "输出 ibus-daemon 的 D-Bus 地址" + +#: tools/main.vala:453 +msgid "Show the configuration values" +msgstr "显示配置值" + +#: tools/main.vala:454 +msgid "Reset the configuration values" +msgstr "重置配置值" + +#: tools/main.vala:456 +msgid "Save emoji on dialog to clipboard" +msgstr "保存面板中的 Emoji 到剪贴板" + +#: tools/main.vala:458 +msgid "Show this information" +msgstr "显示本信息" + +#: tools/main.vala:464 +#, c-format +msgid "" +"Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "" +"用法:%s 命令 [选项...]\n" +"\n" + +#: tools/main.vala:465 +msgid "Commands:\n" +msgstr "命令:\n" + +#: tools/main.vala:494 +#, c-format +msgid "%s is unknown command!\n" +msgstr "%s 是未知命令!\n" + +#: ui/gtk3/emojier.vala:233 +msgid "Favorites" +msgstr "常用" + +#: ui/gtk3/emojier.vala:234 +msgid "Others" +msgstr "其他" + +#: ui/gtk3/emojier.vala:235 +msgid "Open Unicode choice" +msgstr "打开 Unicode 选择" + +#: ui/gtk3/emojier.vala:995 +msgid "Bring back emoji choice" +msgstr "返回 Emoji 选择" + +#: ui/gtk3/emojier.vala:1097 +msgid "Page Down" +msgstr "下一页" + +#: ui/gtk3/emojier.vala:1108 +msgid "Page Up" +msgstr "上一页" + +#: ui/gtk3/emojier.vala:1111 +msgid "Show emoji variants" +msgstr "显示表情变体" + +#: ui/gtk3/emojier.vala:1112 +msgid "Close" +msgstr "关闭" + +#: ui/gtk3/emojier.vala:1118 +msgid "Menu" +msgstr "菜单" + +#: ui/gtk3/emojier.vala:1129 +msgid "Click to view a warning message" +msgstr "点击查看警告信息" + +#: ui/gtk3/emojier.vala:1173 +msgid "Loading a Unicode dictionary:" +msgstr "正在加载 Unicode 字典:" + +#: ui/gtk3/emojier.vala:1419 +#, c-format +msgid "Code point: %s" +msgstr "码位:%s" + +#: ui/gtk3/emojier.vala:1425 +msgid "Has emoji variants" +msgstr "有表情符号变体" + +#: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 +#, c-format +msgid "Description: %s" +msgstr "描述:%s" + +#: ui/gtk3/emojier.vala:1592 +msgid "None" +msgstr "无" + +#: ui/gtk3/emojier.vala:1616 +#, c-format +msgid "Annotations: %s" +msgstr "注释:%s" + +#: ui/gtk3/emojier.vala:1642 +#, c-format +msgid "Name: %s" +msgstr "名称:%s" + +#: ui/gtk3/emojier.vala:1650 +#, c-format +msgid "Alias: %s" +msgstr "别名:%s" + +#: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 +#: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1169 +msgid "Emoji Choice" +msgstr "Emoji 选择" + +#: ui/gtk3/emojier.vala:2142 +msgid "Unicode Choice" +msgstr "Unicode 选择" + +#: ui/gtk3/emojier.vala:2432 +msgid "" +"Failed to get the current text application. Please re-focus your " +"application. E.g. Press Esc key several times to release the emoji typing " +"mode, click your desktop and click your text application again." +msgstr "无法捕捉当前文本应用程序。请重新让该应用程序获得焦点。比如多次按 Esc 键来退出表情输入模式,或是点击桌面然后再点击回该文本应用程序。" + +#: ui/gtk3/emojierapp.vala:47 +msgid "Canceled to choose an emoji." +msgstr "已取消所选的 Emoji。" + +#: ui/gtk3/emojierapp.vala:67 +msgid "Copied an emoji to your clipboard." +msgstr "已复制 Emoji 到剪贴板。" + +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ui/gtk3/emojierapp.vala:126 +msgid "\"FONT\" for emoji characters on emoji dialog" +msgstr "用于表情输入面板中表情符号的字体" + +#: ui/gtk3/emojierapp.vala:127 +msgid "FONT" +msgstr "字体" + +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ui/gtk3/emojierapp.vala:132 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" +msgstr "表情输入面板中的注释语言,如“en”" + +#: ui/gtk3/emojierapp.vala:133 +msgid "LANG" +msgstr "语言" + +#: ui/gtk3/emojierapp.vala:135 +msgid "Emoji annotations can be match partially" +msgstr "表情注释可以部分匹配" + +#: ui/gtk3/emojierapp.vala:139 +msgid "Match with the length of the specified integer" +msgstr "匹配指定整数的长度" + +#: ui/gtk3/emojierapp.vala:143 +msgid "Match with the condition of the specified integer" +msgstr "按指定长度的条件匹配" + +#: ui/gtk3/panel.vala:292 ui/gtk3/panel.vala:323 +msgid "IBus Panel" +msgstr "IBus 面板" + +#: ui/gtk3/panel.vala:975 +#, c-format +msgid "" +"Your configured input method %s does not exist in IBus input methods so \"US" +"\" layout was configured instead of your input method." +msgstr "你配置的输入法 %s 在 IBus 输入法上不存在,因此配置了美国布局来替代你的输入法。" + +#: ui/gtk3/panel.vala:980 +msgid "" +"At least one of your configured input methods does not exist in IBus input " +"methods." +msgstr "至少有一款你配置的输入法在 IBus 输入法上不存在。" + +#: ui/gtk3/panel.vala:983 +msgid "" +"Please run `ibus-setup` command, open \"Input Method\" tab, and configure " +"your input methods again." +msgstr "请运行“ibus-setup”命令,打开“输入法”设置页,再次配置你的输入法。" + +#: ui/gtk3/panel.vala:1141 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus 是一个适用于 Linux/Unix 系统的智能输入平台。" + +#: ui/gtk3/panel.vala:1145 +msgid "translator-credits" +msgstr "" +"黄鹏 \n" +"Fedora 简体中文组 \n" +"Dingzhong Chen " + +#: ui/gtk3/panel.vala:1164 +msgid "Preferences" +msgstr "首选项" + +#: ui/gtk3/panel.vala:1190 +msgid "Restart" +msgstr "重新启动" -#: ../setup/setup.ui.h:58 -msgid "When active" -msgstr "活动时" +#: ui/gtk3/panel.vala:1194 +msgid "Quit" +msgstr "退出" + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 +msgid "default:LTR" +msgstr "default:LTR" + +#~ msgid "" +#~ "IBus\n" +#~ "The intelligent input bus\n" +#~ "Homepage: https://github.com/ibus/ibus/wiki\n" +#~ "\n" +#~ "\n" +#~ "\n" +#~ msgstr "" +#~ "IBus\n" +#~ "智能输入平台\n" +#~ "主页:https://github.com/ibus/ibus/wiki\n" +#~ "\n" +#~ "\n" +#~ "\n" + +#~ msgid "Start ibus on login" +#~ msgstr "登录时运行 IBus" + +#~ msgid "Startup" +#~ msgstr "启动" diff --git a/po/zh_HK.po b/po/zh_HK.po index 7c4a89dce..e4fbea7cc 100644 --- a/po/zh_HK.po +++ b/po/zh_HK.po @@ -1,530 +1,3041 @@ -# translation of zh_TW.po to Traditional Chinese # Traditional Chinese translation for ibus. -# Copyright (C) 2008 Huang Peng +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2018 Takao Fujiwara # This file is distributed under the same license as the ibus package. # -# Cheng-Chia Tseng , 2010. -# Terry Chuang , 2010. +# Translators: +# Cheng-Chia Tseng , 2010 +# Peng Huang , 2008 +# Peng Huang , 2008 +# Terry Chuang , 2010 +# Terry Chuang , 2014 +# tomoe_musashi , 2015 +# fujiwara , 2015. #zanata +# tomoe musashi , 2016. #zanata +# fujiwara , 2018. #zanata msgid "" msgstr "" -"Project-Id-Version: zh_TW\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-12 00:41+0900\n" -"PO-Revision-Date: 2010-05-06 13:25+1000\n" -"Last-Translator: Terry Chuang \n" -"Language-Team: Traditional Chinese \n" -"Language: \n" +"Project-Id-Version: IBus\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2018-02-20 17:31+0900\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2018-02-20 04:23-0500\n" +"Last-Translator: Copied by Zanata \n" +"Language-Team: Traditional Chinese \n" +"Language: zh-HK\n" "Plural-Forms: nplurals=2; plural=n!=1;\n" -"X-Poedit-Language: Chinese\n" -"X-Poedit-Country: TAIWAN\n" -"X-Poedit-SourceCharset: utf-8\n" -"X-Generator: KBabel 1.11.4\n" - -#: ../bus/ibus.desktop.in.h:1 -msgid "IBus" -msgstr "IBus" - -#: ../bus/ibus.desktop.in.h:2 -#, fuzzy -msgid "Input Method Framework" -msgstr "IBus 輸入法框架" - -#: ../bus/ibus.desktop.in.h:3 -#, fuzzy -msgid "Start IBus Input Method Framework" -msgstr "IBus 輸入法框架" - -#: ../ibus/_config.py.in:39 -msgid "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." -msgstr "" -"版權所有 (c) 2007-2010 黃鵬\n" -"版權所有 (c) 2007-2010 Red Hat, Inc." +"X-Generator: Zanata 3.9.6\n" -#: ../ibus/lang.py:41 -msgid "Other" -msgstr "其它" +#: ../setup/setup.ui.h:1 +msgid "Horizontal" +msgstr "水平" -#: ../ui/gtk/candidatepanel.py:264 -msgid "Previous page" -msgstr "上一頁" +#: ../setup/setup.ui.h:2 +msgid "Vertical" +msgstr "垂直" -#: ../ui/gtk/candidatepanel.py:269 -msgid "Next page" -msgstr "下一頁" +#: ../setup/setup.ui.h:3 +msgid "Top left corner" +msgstr "左上角" -#: ../ui/gtk/main.py:55 -msgid "" -"Some input methods have been installed, removed or updated. Please restart " -"ibus input platform." -msgstr "有些輸入法已經被安裝、移除或更新。請重新啟動 ibus 輸入平台。" +#: ../setup/setup.ui.h:4 +msgid "Top right corner" +msgstr "右上角" -#: ../ui/gtk/main.py:59 -msgid "Restart Now" -msgstr "現在重新啟動" +#: ../setup/setup.ui.h:5 +msgid "Bottom left corner" +msgstr "左下角" -#: ../ui/gtk/main.py:60 -msgid "Later" -msgstr "稍候" +#: ../setup/setup.ui.h:6 +msgid "Bottom right corner" +msgstr "右下角" -#: ../ui/gtk/panel.py:109 -msgid "IBus input method framework" -msgstr "IBus 輸入法框架" +#: ../setup/setup.ui.h:7 +msgid "Custom" +msgstr "自訂" -#: ../ui/gtk/panel.py:327 -msgid "Restart" -msgstr "重新啟動" +#: ../setup/setup.ui.h:8 +msgid "Do not show" +msgstr "不要顯示" -#: ../ui/gtk/panel.py:414 -msgid "Turn off input method" -msgstr "關閉輸入法" +#: ../setup/setup.ui.h:9 +msgid "Hide automatically" +msgstr "自動隱藏" -#: ../ui/gtk/panel.py:453 -msgid "No input window" -msgstr "無輸入視窗" +#: ../setup/setup.ui.h:10 +msgid "Always" +msgstr "總是" -#: ../ui/gtk/panel.py:484 -msgid "IBus is an intelligent input bus for Linux/Unix." -msgstr "IBus 為 Linux/Unix 上的智慧型輸入法框架。" +#: ../setup/setup.ui.h:11 ../setup/ibus-setup.desktop.in.h:1 +msgid "IBus Preferences" +msgstr "IBus 偏好設定" -#: ../ui/gtk/panel.py:488 -msgid "translator-credits" +#: ../setup/setup.ui.h:12 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "用來切換到清單內下一個輸入法的快捷鍵" + +#: ../setup/setup.ui.h:13 +msgid "Next input method:" +msgstr "下一個輸入法:" + +#: ../setup/setup.ui.h:14 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "用來切換到清單內上一個輸入法的快捷鍵" + +#: ../setup/setup.ui.h:15 +msgid "Previous input method:" +msgstr "上一個輸入法:" + +#: ../setup/setup.ui.h:16 +msgid "..." +msgstr "..." + +#: ../setup/setup.ui.h:17 ../data/ibus.schemas.in.h:16 +msgid "The shortcut keys for turning input method on or off" +msgstr "用來開啟或關閉輸入法的快捷鍵" + +#: ../setup/setup.ui.h:18 +msgid "Enable or disable:" +msgstr "啟用或停用:" + +#: ../setup/setup.ui.h:19 +msgid "Enable:" +msgstr "啟用:" + +#: ../setup/setup.ui.h:20 +msgid "Disable:" +msgstr "停用:" + +#: ../setup/setup.ui.h:21 +msgid "Keyboard Shortcuts" +msgstr "鍵盤快捷鍵" + +#: ../setup/setup.ui.h:22 +msgid "Set the orientation of candidates in lookup table" +msgstr "設定查詢表單內候選字詞的排列方向" + +#: ../setup/setup.ui.h:23 +msgid "Candidates orientation:" +msgstr "候選詞排列方向:" + +#: ../setup/setup.ui.h:24 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "設定 ibus 如何顯示或隱藏語言列的行為" + +#: ../setup/setup.ui.h:25 +msgid "Show property panel:" +msgstr "顯示屬性面板:" + +#: ../setup/setup.ui.h:26 +msgid "Language panel position:" +msgstr "語言面板位置:" + +#: ../setup/setup.ui.h:27 ../data/ibus.schemas.in.h:36 +msgid "Show icon on system tray" +msgstr "在系統匣內顯示圖示" + +#: ../setup/setup.ui.h:28 ../data/ibus.schemas.in.h:38 +msgid "Show input method name on language bar" +msgstr "在語言列上顯示輸入法名稱" + +#: ../setup/setup.ui.h:29 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "當選取時在語言列上輸入法名稱" + +#: ../setup/setup.ui.h:30 +msgid "Embed preedit text in application window" +msgstr "在應用程式視窗中內嵌編輯模式" + +#: ../setup/setup.ui.h:31 +msgid "Embed the preedit text of input method in the application window" +msgstr "在應用程式視窗中內嵌輸入法的預先編輯文字" + +#: ../setup/setup.ui.h:32 +msgid "Use custom font:" +msgstr "使用自訂字型:" + +#: ../setup/setup.ui.h:33 +msgid "Font and Style" +msgstr "字型與風格" + +#: ../setup/setup.ui.h:34 +msgid "General" +msgstr "通用" + +#. add button +#: ../setup/setup.ui.h:35 ../setup/enginedialog.py:61 +#: ../setup/keyboardshortcut.py:124 +msgid "_Add" +msgstr "新增(_A)" + +#: ../setup/setup.ui.h:36 +msgid "Add the selected input method into the enabled input methods" +msgstr "新增選取的輸入法到已啟用的輸入法內" + +#: ../setup/setup.ui.h:37 +msgid "_Remove" +msgstr "移除(_R)" + +#: ../setup/setup.ui.h:38 +msgid "Remove the selected input method from the enabled input methods" +msgstr "從已啟用的輸入法中移除所選的輸入法" + +#: ../setup/setup.ui.h:39 +msgid "_Up" +msgstr "向上(_U)" + +#: ../setup/setup.ui.h:40 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "上移所選取的輸入法" + +#: ../setup/setup.ui.h:41 +msgid "_Down" +msgstr "向下(_D)" + +#: ../setup/setup.ui.h:42 +msgid "Move down the selected input method in the enabled input methods" +msgstr "下移所選取的輸入法" + +#: ../setup/setup.ui.h:43 +msgid "_About" +msgstr "關於(_A)" + +#: ../setup/setup.ui.h:44 +msgid "Show information of the selected input method" +msgstr "顯示所選取的輸入法資訊" + +#: ../setup/setup.ui.h:45 +msgid "_Preferences" +msgstr "偏好設定(_P)" + +#: ../setup/setup.ui.h:46 +msgid "Show setup of the selected input method" +msgstr "顯示所選輸入法的設置" + +#: ../setup/setup.ui.h:47 +msgid "" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." msgstr "" -"Ding-Yi Chen 陳定彞 , 2009\n" -"Cheng-Chia Tseng , 2010" +"你可以透過按下鍵盤快捷鍵,或是點按面板圖示的方式,來從上列清單中選取的輸入法之中切換使用中的輸入法。" + +#. create im name & icon column +#: ../setup/setup.ui.h:48 ../setup/enginetreeview.py:68 +msgid "Input Method" +msgstr "輸入法" -#: ../ui/gtk/languagebar.py:106 -msgid "About the input method" -msgstr "關於輸入法" +#: ../setup/setup.ui.h:49 +msgid "The shortcut keys for showing emoji dialog" +msgstr "" -#: ../ui/gtk/languagebar.py:214 -msgid "Switch input method" -msgstr "切換輸入法" +#: ../setup/setup.ui.h:50 +msgid "Emoji choice:" +msgstr "" -#: ../ui/gtk/languagebar.py:357 ../ui/gtk/engineabout.py:33 -#: ../setup/engineabout.py:33 ../setup/setup.ui.h:16 -msgid "About" -msgstr "關於" +#: ../setup/setup.ui.h:51 +msgid "Set a font of emoji candidates on the emoji dialog" +msgstr "" -#: ../ui/gtk/languagebar.py:361 -msgid "About the Input Method" -msgstr "關於輸入法" +#: ../setup/setup.ui.h:52 +msgid "Emoji font:" +msgstr "" -#: ../ui/gtk/engineabout.py:61 ../setup/engineabout.py:61 -#, python-format -msgid "Language: %s\n" -msgstr "語言:%s\n" +#: ../setup/setup.ui.h:53 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "" -#: ../ui/gtk/engineabout.py:63 ../setup/engineabout.py:63 -#, python-format -msgid "Keyboard layout: %s\n" -msgstr "鍵盤配置: %s\n" +#: ../setup/setup.ui.h:54 +msgid "Emoji annotation language:" +msgstr "" -#: ../ui/gtk/engineabout.py:65 ../setup/engineabout.py:65 -#, python-format -msgid "Author: %s\n" -msgstr "作者:%s\n" +#: ../setup/setup.ui.h:55 +msgid "" +"Match emoji annotations partially with the following condition and more than " +"the number of characters:" +msgstr "" -#: ../ui/gtk/engineabout.py:67 ../setup/engineabout.py:67 -msgid "Description:\n" -msgstr "描述:\n" +#: ../setup/setup.ui.h:56 +msgid "" +"If emoji annotations can be matched with a partial string instead of the " +"exact match" +msgstr "" + +#: ../setup/setup.ui.h:57 +msgid "Prefix match" +msgstr "" -#: ../setup/main.py:102 -msgid "trigger" -msgstr "觸發" +#: ../setup/setup.ui.h:58 +msgid "Suffix match" +msgstr "" -#: ../setup/main.py:113 -msgid "enable" +#: ../setup/setup.ui.h:59 +msgid "Containing match" msgstr "" -#: ../setup/main.py:124 -msgid "disable" +#: ../setup/setup.ui.h:60 +msgid "Emoji" msgstr "" -#: ../setup/main.py:135 -msgid "next input method" -msgstr "下一個輸入法" +#: ../setup/setup.ui.h:61 ../data/ibus.schemas.in.h:44 +msgid "Use system keyboard layout" +msgstr "使用系統鍵盤佈局" + +#: ../setup/setup.ui.h:62 ../data/ibus.schemas.in.h:45 +msgid "Use system keyboard (XKB) layout" +msgstr "使用系統鍵盤 (XKB) 佈局" + +#: ../setup/setup.ui.h:63 +msgid "Keyboard Layout" +msgstr "鍵盤佈局" + +#: ../setup/setup.ui.h:64 ../data/ibus.schemas.in.h:68 +msgid "Share the same input method among all applications" +msgstr "在所有的應用程式中共享同一個輸入法" -#: ../setup/main.py:146 -msgid "previous input method" -msgstr "上一個輸入法" +#: ../setup/setup.ui.h:65 +msgid "Global input method settings" +msgstr "全域輸入法設定值" -#: ../setup/main.py:286 -msgid "IBus daemon is not started. Do you want to start it now?" -msgstr "IBus 幕後程式没有啟動,您是否想現在啟動它?" +#: ../setup/setup.ui.h:66 +msgid "Advanced" +msgstr "進階" -#: ../setup/main.py:301 +#: ../setup/setup.ui.h:67 msgid "" -"IBus has been started! If you can not use IBus, please add below lines in " -"$HOME/.bashrc, and relogin your desktop.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +"IBus\n" +"The intelligent input bus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" msgstr "" -"IBus 已經成功啟動!如果您無法使用 IBus,請將下列代碼加入到 $HOME/.bashrc 中," -"並重新登入桌面。\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +"IBus\n" +"智慧型輸入框架\n" +"首頁: https://github.com/ibus/ibus/wiki\n" +"\n" +"\n" +"\n" -#: ../setup/main.py:316 -#, python-format -msgid "Select keyboard shortcut for %s" -msgstr "為 %s 選取鍵盤快捷鍵" +#: ../setup/setup.ui.h:74 +msgid "Start ibus on login" +msgstr "在登入時啟動 ibus" -#: ../setup/keyboardshortcut.py:52 -msgid "Keyboard shortcuts" -msgstr "鍵盤快捷鍵" +#: ../setup/setup.ui.h:75 +msgid "Startup" +msgstr "啟動" -#: ../setup/keyboardshortcut.py:63 -msgid "Key code:" -msgstr "按鍵碼:" +#: ../setup/setup.ui.h:76 ../setup/engineabout.py:37 ../ui/gtk3/panel.vala:1175 +msgid "About" +msgstr "關於" -#: ../setup/keyboardshortcut.py:78 -msgid "Modifiers:" -msgstr "組合按鍵:" +#: ../setup/setup.ui.h:77 ../setup/engineabout.py:40 +msgid "_Close" +msgstr "關閉(_C)" + +#. Translators: Here “Preload” is a verb +#: ../data/ibus.schemas.in.h:2 +msgid "Preload engines" +msgstr "預先載入引擎" + +#. Translators: Tooltip for the button “Preload Engines” +#: ../data/ibus.schemas.in.h:4 +msgid "Preload engines during ibus starts up" +msgstr "當 ibus 啟動時預先載入引擎" + +#: ../data/ibus.schemas.in.h:5 +msgid "Engines order" +msgstr "引擎順序" + +#: ../data/ibus.schemas.in.h:6 +msgid "Saved engines order in input method list" +msgstr "輸入法清單中儲存的引擎順序" + +#: ../data/ibus.schemas.in.h:7 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "IME 切換器視窗彈出延遲的毫秒數" -#: ../setup/keyboardshortcut.py:231 +#: ../data/ibus.schemas.in.h:8 msgid "" -"Please press a key (or a key combination).\n" -"The dialog will be closed when the key is released." +"Set popup delay milliseconds to show IME switcher window. The default is 400." +" 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " +"show the window and switch prev/next engines." +msgstr "" +"設定 IME 切換器視窗的彈出顯示毫秒數。預設為 400。0 = 立即顯示視窗。0 < 延遲毫秒。0 > 不要顯示視窗直接向前/" +"向後切換引擎。" + +#: ../data/ibus.schemas.in.h:9 +msgid "Saved version number" +msgstr "儲存的版本號碼" + +#: ../data/ibus.schemas.in.h:10 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "儲存的版本號碼可以用來查看上次安裝的 ibus 版本與目前安裝的 ibus 版本之間的差異。" + +#: ../data/ibus.schemas.in.h:11 +msgid "Latin layouts which have no ASCII" +msgstr "無 ASCII 的拉丁鍵盤佈局" + +#: ../data/ibus.schemas.in.h:12 +msgid "US layout is appended to the Latin layouts. variant can be omitted." +msgstr "US 鍵盤佈局附加到拉丁鍵盤佈局。variant 可被省略。" + +#: ../data/ibus.schemas.in.h:13 +msgid "Use xmodmap" +msgstr "使用 xmodmap" + +#: ../data/ibus.schemas.in.h:14 +msgid "" +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." +msgstr "當 ibus 引擎切換時,若 .xmodmap 或 .Xmodmap 存在,則執行 xmodmap。 " + +#: ../data/ibus.schemas.in.h:15 +msgid "Trigger shortcut keys" +msgstr "觸發用快捷鍵" + +#: ../data/ibus.schemas.in.h:17 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "gtk_accelerator_parse 的觸發用快捷鍵" + +#: ../data/ibus.schemas.in.h:18 +msgid "Enable shortcut keys" +msgstr "啟用快捷鍵" + +#: ../data/ibus.schemas.in.h:19 +msgid "The shortcut keys for turning input method on" +msgstr "開啟輸入法的快捷鍵" + +#: ../data/ibus.schemas.in.h:20 +msgid "Disable shortcut keys" +msgstr "停用快捷鍵" + +#: ../data/ibus.schemas.in.h:21 +msgid "The shortcut keys for turning input method off" +msgstr "關閉輸入法的快捷鍵" + +#: ../data/ibus.schemas.in.h:22 +msgid "Next engine shortcut keys" +msgstr "「下一個引擎」快捷鍵" + +#: ../data/ibus.schemas.in.h:23 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "用來切換到清單內下一個輸入法的快捷鍵" + +#: ../data/ibus.schemas.in.h:24 +msgid "Prev engine shortcut keys" +msgstr "「上一個引擎」快捷鍵" + +#: ../data/ibus.schemas.in.h:25 +msgid "The shortcut keys for switching to the previous input method" +msgstr "用來切換到清單內上一個輸入法的快捷鍵" + +#: ../data/ibus.schemas.in.h:26 +msgid "Auto hide" +msgstr "自動隱藏" + +#: ../data/ibus.schemas.in.h:27 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "屬性面板的行為。0 = 不要顯示,1 = 自動隱藏,2 = 總是顯示" + +#: ../data/ibus.schemas.in.h:28 +msgid "Language panel position" +msgstr "語言面板位置" + +#: ../data/ibus.schemas.in.h:29 +msgid "" +"The position of the language panel. 0 = Top left corner, 1 = Top right " +"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" +msgstr "語言列的位置。0 = 左上角, 1 = 右上角, 2 = 左下角, 3 = 右下角, 4 = 自訂" + +#: ../data/ibus.schemas.in.h:30 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "在面板總是顯示的情況下跟隨輸入游標" + +#: ../data/ibus.schemas.in.h:31 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." +msgstr "若為真,面板會在總是顯示的情況下跟隨輸入游標。若為假,面板則會顯示在固定位置上。" + +#: ../data/ibus.schemas.in.h:32 +msgid "The milliseconds to show property panel" +msgstr "顯示屬性面板的毫秒數" + +#: ../data/ibus.schemas.in.h:33 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "當焦點落在屬性面板內,或屬性變更時屬性面板的顯示毫秒數。" + +#: ../data/ibus.schemas.in.h:34 +msgid "Orientation of lookup table" +msgstr "查選表單表排列方向" + +#: ../data/ibus.schemas.in.h:35 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "查詢表單的排列方向。0 = 水平,1 = 垂直" + +#: ../data/ibus.schemas.in.h:37 +msgid "Show input method name" +msgstr "顯示輸入法名稱" + +#: ../data/ibus.schemas.in.h:39 +msgid "RGBA value of XKB icon" +msgstr "XKB 圖示的 RGBA 值" + +#: ../data/ibus.schemas.in.h:41 +#, no-c-format +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form " +"'rgba(r,g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 " +"to 255 or percentage values in the range 0% to 100%, and 'a' is a floating " +"point value in the range 0 to 1 of the alpha." +msgstr "" +"XKB 圖示會顯示鍵盤佈局的字串,而且該字串會以 RGBA 值繪製。RGBA 值可以是 1. X11 定義的顏色,2." +"「#rrggbb」格式的十六進制值,其中 r、g、b 分別是紅色、綠色和藍色,3. 「rgb(r,g,b,)」格式的 RGB 顏色,4." +"「rgba(r,g,b,a)」格式的 RGBA 顏色,其中 r、g、b 為 0 至 255 之間的整數值,或 0% 至 100% 之間的百分比,而 a " +"則是 0 至 1 之間的浮點 alpha 值。" + +#: ../data/ibus.schemas.in.h:42 +msgid "The milliseconds to show the panel icon for a property" +msgstr "" + +#: ../data/ibus.schemas.in.h:43 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" + +#: ../data/ibus.schemas.in.h:46 +msgid "Use custom font" +msgstr "使用自訂字型" + +#: ../data/ibus.schemas.in.h:47 +msgid "Use custom font name for language panel" +msgstr "語言面板是否使用自訂字型" + +#: ../data/ibus.schemas.in.h:48 +msgid "Custom font" +msgstr "自訂字型" + +#: ../data/ibus.schemas.in.h:49 +msgid "Custom font name for language panel" +msgstr "為語言面板自訂字型" + +#: ../data/ibus.schemas.in.h:50 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "" + +#: ../data/ibus.schemas.in.h:51 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "" + +#: ../data/ibus.schemas.in.h:52 +msgid "Custom font name for emoji characters on emoji dialog" +msgstr "" + +#: ../data/ibus.schemas.in.h:53 +msgid "Default language for emoji dictionary" +msgstr "" + +#: ../data/ibus.schemas.in.h:54 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" +msgstr "" + +#: ../data/ibus.schemas.in.h:55 +msgid "favorite emoji list on emoji dialog" +msgstr "" + +#: ../data/ibus.schemas.in.h:56 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "" + +#: ../data/ibus.schemas.in.h:57 +msgid "favorite emoji annotation list on emoji dialog" +msgstr "" + +#: ../data/ibus.schemas.in.h:58 +msgid "You can assign an annotation for a favorite emoji in this list." +msgstr "" + +#: ../data/ibus.schemas.in.h:59 +msgid "Whether emoji annotations can be match partially or not" +msgstr "" + +#: ../data/ibus.schemas.in.h:60 +msgid "" +"Whether emoji annotations can be matched with a partial string instead of " +"the exact match or not." +msgstr "" + +#: ../data/ibus.schemas.in.h:61 +msgid "Match emoji annotations with the specified length" +msgstr "" + +#: ../data/ibus.schemas.in.h:62 +msgid "" +"Match emoji annotations partially with more than the specified number of " +"characters instead of the exact match." +msgstr "" + +#: ../data/ibus.schemas.in.h:63 +msgid "Choose a condition to match emoji annotations partially" +msgstr "" + +#: ../data/ibus.schemas.in.h:64 +msgid "" +"Choose one of the following conditions to match emoji annotations partially: " +"0 == Prefix match, 1 == Suffix match, 2 == Containing match" +msgstr "" + +#: ../data/ibus.schemas.in.h:65 +msgid "Embed Preedit Text" +msgstr "內嵌編輯模式" + +#: ../data/ibus.schemas.in.h:66 +msgid "Embed Preedit Text in Application Window" +msgstr "在應用程式視窗中內嵌編輯模式" + +#: ../data/ibus.schemas.in.h:67 +msgid "Use global input method" +msgstr "使用全域輸入法" + +#: ../data/ibus.schemas.in.h:69 +msgid "Enable input method by default" +msgstr "預設啟用輸入法" + +#: ../data/ibus.schemas.in.h:70 +msgid "Enable input method by default when the application gets input focus" +msgstr "當應用程式取得輸入焦點時,預設將輸入法啟用" + +#: ../data/ibus.schemas.in.h:71 +msgid "DConf preserve name prefixes" +msgstr "DConf 保留名稱前綴" + +#: ../data/ibus.schemas.in.h:72 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "DConf 用來停止名稱轉換的鍵其前綴" + +#: ../ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "版權所有 (c) 2007-2010 黃鵬\n" +"版權所有 (c) 2007-2010 Red Hat, Inc." + +#: ../ibus/lang.py:41 ../src/ibusutil.c:158 +msgid "Other" +msgstr "其他" + +#: ../setup/emojilang.py:67 +msgid "Select a language" +msgstr "" + +#: ../setup/emojilang.py:70 ../setup/enginedialog.py:60 +#: ../setup/keyboardshortcut.py:339 ../setup/main.py:552 +msgid "_Cancel" +msgstr "取消(_C)" + +#: ../setup/emojilang.py:71 ../setup/keyboardshortcut.py:340 +#: ../setup/main.py:553 +msgid "_OK" +msgstr "確定(_O)" + +#: ../setup/emojilang.py:235 ../setup/enginedialog.py:205 +msgid "More…" +msgstr "更多…" + +#: ../setup/engineabout.py:72 +#, python-format +msgid "Language: %s\n" +msgstr "語言:%s\n" + +#: ../setup/engineabout.py:75 +#, python-format +msgid "Keyboard layout: %s\n" +msgstr "鍵盤佈局:%s\n" + +#: ../setup/engineabout.py:78 +#, python-format +msgid "Author: %s\n" +msgstr "作者:%s\n" + +#: ../setup/engineabout.py:81 +msgid "Description:\n" +msgstr "描述:\n" + +#: ../setup/enginecombobox.py:139 ../setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "選取輸入法" + +#: ../setup/enginetreeview.py:96 +msgid "Kbd" +msgstr "鍵盤" + +#: ../setup/ibus-setup.desktop.in.h:2 +msgid "Set IBus Preferences" +msgstr "設定 IBus 偏好設定" + +#: ../setup/keyboardshortcut.py:55 +msgid "Keyboard shortcuts" +msgstr "鍵盤快捷鍵" + +#: ../setup/keyboardshortcut.py:67 +msgid "Key code:" +msgstr "按鍵碼:" + +#: ../setup/keyboardshortcut.py:82 +msgid "Modifiers:" +msgstr "組合按鍵:" + +#. apply button +#: ../setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "套用(_A)" + +#. delete button +#: ../setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "刪除(_D)" + +#: ../setup/keyboardshortcut.py:252 +msgid "" +"Please press a key (or a key combination).\n" +"The dialog will be closed when the key is released." +msgstr "請按一個鍵盤按鍵 (或是按鍵組合)\n" +"當您放開按鍵時,對話框會自動關閉。" + +#: ../setup/keyboardshortcut.py:255 +msgid "Please press a key (or a key combination)" +msgstr "請按一個鍵盤按鍵 (或是按鍵組合)" + +#: ../setup/main.py:121 ../setup/main.py:580 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "使用含 Shift 鍵之快捷鍵來切換至上一個輸入法" + +#: ../setup/main.py:507 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "鍵盤輸入法 (IBus 背景程式) 並未執行。是否啟動?" + +#: ../setup/main.py:528 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "" +"IBus 已經啟動了!如果你無法使用IBus,請將下列文字行列新增到你的 $HOME/.bashrc 中;接着重新登入到你的桌面。\n" +"export GTK_IM_MODULE=ibus\n" +"export XMODIFIERS=@im=ibus\n" +"export QT_IM_MODULE=ibus" + +#. Translators: %d == 5 currently +#: ../setup/main.py:542 +#, python-format +msgid "IBus daemon could not be started in %d seconds." +msgstr "IBus 背景程式無法在 %d 秒後啟動。" + +#: ../setup/main.py:554 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "為 %s 選取鍵盤快捷鍵" + +#. Translators: Title of the window +#: ../setup/main.py:556 +msgid "switching input methods" +msgstr "切換輸入法" + +#: ../src/ibusemojigen.h:30 +msgid "Activities" +msgstr "" + +#: ../src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "" + +#: ../src/ibusemojigen.h:32 +msgid "Flags" +msgstr "" + +#: ../src/ibusemojigen.h:33 +msgid "Food & Drink" +msgstr "" + +#: ../src/ibusemojigen.h:34 +msgid "Objects" +msgstr "" + +#: ../src/ibusemojigen.h:35 +msgid "Smileys & People" +msgstr "" + +#: ../src/ibusemojigen.h:36 +msgid "Symbols" +msgstr "" + +#: ../src/ibusemojigen.h:37 +msgid "Travel & Places" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:33 +msgid "Basic Latin" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:37 +msgid "Latin-1 Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:41 +msgid "Latin Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:45 +msgid "Latin Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:49 +msgid "IPA Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:53 +msgid "Spacing Modifier Letters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:57 +msgid "Combining Diacritical Marks" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:61 +msgid "Greek and Coptic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:65 +msgid "Cyrillic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:69 +msgid "Cyrillic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:73 +msgid "Armenian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:77 +msgid "Hebrew" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:81 +msgid "Arabic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:85 +msgid "Syriac" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:89 +msgid "Arabic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:93 +msgid "Thaana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:97 +msgid "NKo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:101 +msgid "Samaritan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:105 +msgid "Mandaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:109 +msgid "Syriac Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:113 +msgid "Arabic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:117 +msgid "Devanagari" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:121 +msgid "Bengali" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:125 +msgid "Gurmukhi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:129 +msgid "Gujarati" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:133 +msgid "Oriya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:137 +msgid "Tamil" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:141 +msgid "Telugu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:145 +msgid "Kannada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:149 +msgid "Malayalam" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:153 +msgid "Sinhala" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:157 +msgid "Thai" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:161 +msgid "Lao" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:165 +msgid "Tibetan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:169 +msgid "Myanmar" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:173 +msgid "Georgian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:177 +msgid "Hangul Jamo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:181 +msgid "Ethiopic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:185 +msgid "Ethiopic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:189 +msgid "Cherokee" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:193 +msgid "Unified Canadian Aboriginal Syllabics" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:197 +msgid "Ogham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:201 +msgid "Runic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:205 +msgid "Tagalog" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:209 +msgid "Hanunoo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:213 +msgid "Buhid" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:217 +msgid "Tagbanwa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:221 +msgid "Khmer" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:225 +msgid "Mongolian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:229 +msgid "Unified Canadian Aboriginal Syllabics Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:233 +msgid "Limbu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:237 +msgid "Tai Le" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:241 +msgid "New Tai Lue" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:245 +msgid "Khmer Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:249 +msgid "Buginese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:253 +msgid "Tai Tham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:257 +msgid "Combining Diacritical Marks Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:261 +msgid "Balinese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:265 +msgid "Sundanese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:269 +msgid "Batak" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:273 +msgid "Lepcha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:277 +msgid "Ol Chiki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:281 +msgid "Cyrillic Extended-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:285 +msgid "Sundanese Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:289 +msgid "Vedic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:293 +msgid "Phonetic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:297 +msgid "Phonetic Extensions Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:301 +msgid "Combining Diacritical Marks Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:305 +msgid "Latin Extended Additional" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:309 +msgid "Greek Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:313 +msgid "General Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:317 +msgid "Superscripts and Subscripts" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:321 +msgid "Currency Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:325 +msgid "Combining Diacritical Marks for Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:329 +msgid "Letterlike Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:333 +msgid "Number Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:337 +msgid "Arrows" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:341 +msgid "Mathematical Operators" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:345 +msgid "Miscellaneous Technical" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:349 +msgid "Control Pictures" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:353 +msgid "Optical Character Recognition" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:357 +msgid "Enclosed Alphanumerics" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:361 +msgid "Box Drawing" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:365 +msgid "Block Elements" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:369 +msgid "Geometric Shapes" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:373 +msgid "Miscellaneous Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:377 +msgid "Dingbats" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:381 +msgid "Miscellaneous Mathematical Symbols-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:385 +msgid "Supplemental Arrows-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:389 +msgid "Braille Patterns" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:393 +msgid "Supplemental Arrows-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:397 +msgid "Miscellaneous Mathematical Symbols-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:401 +msgid "Supplemental Mathematical Operators" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:405 +msgid "Miscellaneous Symbols and Arrows" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:409 +msgid "Glagolitic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:413 +msgid "Latin Extended-C" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:417 +msgid "Coptic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:421 +msgid "Georgian Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:425 +msgid "Tifinagh" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:429 +msgid "Ethiopic Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:433 +msgid "Cyrillic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:437 +msgid "Supplemental Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:441 +msgid "CJK Radicals Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:445 +msgid "Kangxi Radicals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:449 +msgid "Ideographic Description Characters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:453 +msgid "CJK Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:457 +msgid "Hiragana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:461 +msgid "Katakana" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:465 +msgid "Bopomofo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:469 +msgid "Hangul Compatibility Jamo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:473 +msgid "Kanbun" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:477 +msgid "Bopomofo Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:481 +msgid "CJK Strokes" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:485 +msgid "Katakana Phonetic Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:489 +msgid "Enclosed CJK Letters and Months" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:493 +msgid "CJK Compatibility" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:497 +msgid "CJK Unified Ideographs Extension A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:501 +msgid "Yijing Hexagram Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:505 +msgid "CJK Unified Ideographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:509 +msgid "Yi Syllables" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:513 +msgid "Yi Radicals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:517 +msgid "Lisu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:521 +msgid "Vai" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:525 +msgid "Cyrillic Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:529 +msgid "Bamum" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:533 +msgid "Modifier Tone Letters" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:537 +msgid "Latin Extended-D" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:541 +msgid "Syloti Nagri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:545 +msgid "Common Indic Number Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:549 +msgid "Phags-pa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:553 +msgid "Saurashtra" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:557 +msgid "Devanagari Extended" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:561 +msgid "Kayah Li" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:565 +msgid "Rejang" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:569 +msgid "Hangul Jamo Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:573 +msgid "Javanese" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:577 +msgid "Myanmar Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:581 +msgid "Cham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:585 +msgid "Myanmar Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:589 +msgid "Tai Viet" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:593 +msgid "Meetei Mayek Extensions" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:597 +msgid "Ethiopic Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:601 +msgid "Latin Extended-E" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:605 +msgid "Cherokee Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:609 +msgid "Meetei Mayek" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:613 +msgid "Hangul Syllables" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:617 +msgid "Hangul Jamo Extended-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:621 +msgid "High Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:625 +msgid "High Private Use Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:629 +msgid "Low Surrogates" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:633 +msgid "Private Use Area" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:637 +msgid "CJK Compatibility Ideographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:641 +msgid "Alphabetic Presentation Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:645 +msgid "Arabic Presentation Forms-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:649 +msgid "Variation Selectors" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:653 +msgid "Vertical Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:657 +msgid "Combining Half Marks" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:661 +msgid "CJK Compatibility Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:665 +msgid "Small Form Variants" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:669 +msgid "Arabic Presentation Forms-B" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:673 +msgid "Halfwidth and Fullwidth Forms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:677 +msgid "Specials" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:681 +msgid "Linear B Syllabary" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:685 +msgid "Linear B Ideograms" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:689 +msgid "Aegean Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:693 +msgid "Ancient Greek Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:697 +msgid "Ancient Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:701 +msgid "Phaistos Disc" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:705 +msgid "Lycian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:709 +msgid "Carian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:713 +msgid "Coptic Epact Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:717 +msgid "Old Italic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:721 +msgid "Gothic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:725 +msgid "Old Permic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:729 +msgid "Ugaritic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:733 +msgid "Old Persian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:737 +msgid "Deseret" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:741 +msgid "Shavian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:745 +msgid "Osmanya" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:749 +msgid "Osage" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:753 +msgid "Elbasan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:757 +msgid "Caucasian Albanian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:761 +msgid "Linear A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:765 +msgid "Cypriot Syllabary" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:769 +msgid "Imperial Aramaic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:773 +msgid "Palmyrene" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:777 +msgid "Nabataean" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:781 +msgid "Hatran" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:785 +msgid "Phoenician" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:789 +msgid "Lydian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:793 +msgid "Meroitic Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:797 +msgid "Meroitic Cursive" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:801 +msgid "Kharoshthi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:805 +msgid "Old South Arabian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:809 +msgid "Old North Arabian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:813 +msgid "Manichaean" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:817 +msgid "Avestan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:821 +msgid "Inscriptional Parthian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:825 +msgid "Inscriptional Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:829 +msgid "Psalter Pahlavi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:833 +msgid "Old Turkic" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:837 +msgid "Old Hungarian" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:841 +msgid "Rumi Numeral Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:845 +msgid "Brahmi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:849 +msgid "Kaithi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:853 +msgid "Sora Sompeng" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:857 +msgid "Chakma" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:861 +msgid "Mahajani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:865 +msgid "Sharada" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:869 +msgid "Sinhala Archaic Numbers" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:873 +msgid "Khojki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:877 +msgid "Multani" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:881 +msgid "Khudawadi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:885 +msgid "Grantha" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:889 +msgid "Newa" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:893 +msgid "Tirhuta" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:897 +msgid "Siddham" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:901 +msgid "Modi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:905 +msgid "Mongolian Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:909 +msgid "Takri" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:913 +msgid "Ahom" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:917 +msgid "Warang Citi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:921 +msgid "Zanabazar Square" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:925 +msgid "Soyombo" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:929 +msgid "Pau Cin Hau" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:933 +msgid "Bhaiksuki" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:937 +msgid "Marchen" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:941 +msgid "Masaram Gondi" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:945 +msgid "Cuneiform" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:949 +msgid "Cuneiform Numbers and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:953 +msgid "Early Dynastic Cuneiform" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:957 +msgid "Egyptian Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:961 +msgid "Anatolian Hieroglyphs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:965 +msgid "Bamum Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:969 +msgid "Mro" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:973 +msgid "Bassa Vah" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:977 +msgid "Pahawh Hmong" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:981 +msgid "Miao" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:985 +msgid "Ideographic Symbols and Punctuation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:989 +msgid "Tangut" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:993 +msgid "Tangut Components" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:997 +msgid "Kana Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1001 +msgid "Kana Extended-A" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1005 +msgid "Nushu" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1009 +msgid "Duployan" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1013 +msgid "Shorthand Format Controls" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1017 +msgid "Byzantine Musical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1021 +msgid "Musical Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1025 +msgid "Ancient Greek Musical Notation" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1029 +msgid "Tai Xuan Jing Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1033 +msgid "Counting Rod Numerals" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1037 +msgid "Mathematical Alphanumeric Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1041 +msgid "Sutton SignWriting" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1045 +msgid "Glagolitic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1049 +msgid "Mende Kikakui" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1053 +msgid "Adlam" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1057 +msgid "Arabic Mathematical Alphabetic Symbols" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1061 +msgid "Mahjong Tiles" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1065 +msgid "Domino Tiles" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1069 +msgid "Playing Cards" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1073 +msgid "Enclosed Alphanumeric Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1077 +msgid "Enclosed Ideographic Supplement" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1081 +msgid "Miscellaneous Symbols and Pictographs" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1085 +msgid "Emoticons" +msgstr "" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1089 +msgid "Ornamental Dingbats" msgstr "" -"請按一個鍵盤按鍵 (或是按鍵組合)\n" -"當您放開按鍵時,對話框會自動關閉。" -#: ../setup/keyboardshortcut.py:233 -msgid "Please press a key (or a key combination)" -msgstr "請按一個鍵盤按鍵 (或是按鍵組合)" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1093 +msgid "Transport and Map Symbols" +msgstr "" -#: ../setup/enginecombobox.py:120 -msgid "Select an input method" -msgstr "選取輸入法" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1097 +msgid "Alchemical Symbols" +msgstr "" -#. create im name & icon column -#: ../setup/enginetreeview.py:64 ../setup/setup.ui.h:33 -msgid "Input Method" -msgstr "輸入法" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1101 +msgid "Geometric Shapes Extended" +msgstr "" -#: ../setup/enginetreeview.py:92 -msgid "Kbd" -msgstr "鍵盤" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1105 +msgid "Supplemental Arrows-C" +msgstr "" -#: ../setup/ibus-setup.desktop.in.h:1 ../setup/setup.ui.h:32 -msgid "IBus Preferences" -msgstr "IBus 偏好設定" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1109 +msgid "Supplemental Symbols and Pictographs" +msgstr "" -#: ../setup/ibus-setup.desktop.in.h:2 -#, fuzzy -msgid "Set IBus Preferences" -msgstr "IBus 偏好設定" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1113 +msgid "CJK Unified Ideographs Extension B" +msgstr "" -#: ../data/ibus.schemas.in.h:1 -msgid "Auto hide" -msgstr "自動隱藏" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1117 +msgid "CJK Unified Ideographs Extension C" +msgstr "" -#: ../data/ibus.schemas.in.h:2 -msgid "Custom font" -msgstr "自訂字型" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1121 +msgid "CJK Unified Ideographs Extension D" +msgstr "" -#: ../data/ibus.schemas.in.h:3 -msgid "Custom font name for language panel" -msgstr "為語言面板自訂字型" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1125 +msgid "CJK Unified Ideographs Extension E" +msgstr "" -#: ../data/ibus.schemas.in.h:4 -msgid "Embed Preedit Text" -msgstr "內嵌編輯模式" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1129 +msgid "CJK Unified Ideographs Extension F" +msgstr "" -#: ../data/ibus.schemas.in.h:5 -msgid "Embed Preedit Text in Application Window" -msgstr "在應用程式視窗中內嵌編輯模式" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1133 +msgid "CJK Compatibility Ideographs Supplement" +msgstr "" -#: ../data/ibus.schemas.in.h:6 -#, fuzzy -msgid "Enable input method by default" -msgstr "下一個輸入法" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1137 +msgid "Tags" +msgstr "" -#: ../data/ibus.schemas.in.h:7 -msgid "Enable input method by default when the application gets input focus" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1141 +msgid "Variation Selectors Supplement" msgstr "" -#: ../data/ibus.schemas.in.h:8 -msgid "Language panel position" -msgstr "語言面板位置" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1145 +msgid "Supplementary Private Use Area-A" +msgstr "" -#: ../data/ibus.schemas.in.h:9 -msgid "Next engine shortcut keys" -msgstr "「下一個引擎」快捷鍵" +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: ../src/ibusunicodegen.h:1149 +msgid "Supplementary Private Use Area-B" +msgstr "" -#: ../data/ibus.schemas.in.h:10 -msgid "Orientation of lookup table" -msgstr "查選表單表排列方向" +#: ../tools/main.vala:54 +msgid "List engine name only" +msgstr "只列出引擎名稱" -#: ../data/ibus.schemas.in.h:11 -msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" -msgstr "查詢表單的排列方向。0 = 水平,1 = 垂直" +#: ../tools/main.vala:70 ../tools/main.vala:195 ../tools/main.vala:205 +msgid "Can't connect to IBus.\n" +msgstr "無法連接至 IBus。\n" -#: ../data/ibus.schemas.in.h:12 -msgid "Preload engines" -msgstr "預先載入引擎" +#: ../tools/main.vala:96 +#, c-format +msgid "language: %s\n" +msgstr "語言:%s\n" -#: ../data/ibus.schemas.in.h:13 -msgid "Preload engines during ibus starts up" -msgstr "當 ibus 啟動時預先載入引擎" +#: ../tools/main.vala:164 +msgid "No engine is set.\n" +msgstr "尚未設定引擎。\n" -#: ../data/ibus.schemas.in.h:14 -msgid "Prev engine shortcut keys" -msgstr "「上一個引擎」快捷鍵" +#: ../tools/main.vala:172 +msgid "Set global engine failed.\n" +msgstr "無法設定全域引擎。\n" -#: ../data/ibus.schemas.in.h:15 ../setup/setup.ui.h:42 -msgid "Share the same input method among all applications" -msgstr "在所有的應用程式中共享同一個輸入法" +#: ../tools/main.vala:177 +msgid "Get global engine failed.\n" +msgstr "無法取得全域引擎。\n" -#: ../data/ibus.schemas.in.h:16 ../setup/setup.ui.h:43 -msgid "Show icon on system tray" -msgstr "在系統匣內顯示圖示" +#: ../tools/main.vala:220 +msgid "Read the system registry cache." +msgstr "讀取系統註冊快取。" -#: ../data/ibus.schemas.in.h:17 -msgid "Show input method name" -msgstr "顯示輸入法名稱" +#: ../tools/main.vala:222 +msgid "Read the registry cache FILE." +msgstr "讀取註冊快取 FILE。" -#: ../data/ibus.schemas.in.h:18 ../setup/setup.ui.h:45 -msgid "Show input method name on language bar" -msgstr "在語言列上顯示輸入法名稱" +#: ../tools/main.vala:240 ../tools/main.vala:245 +msgid "The registry cache is invalid.\n" +msgstr "註冊快取無效。\n" -#: ../data/ibus.schemas.in.h:19 -msgid "" -"The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = " -"Always show" -msgstr "語言面板行為。0 = 嵌入選單內,1 = 自動隱藏,2 = 永遠顯示" +#: ../tools/main.vala:260 +msgid "Write the system registry cache." +msgstr "寫入系統註冊快取。" -#: ../data/ibus.schemas.in.h:20 -msgid "" -"The position of the language panel. 0 = Top left corner, 1 = Top right " -"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" -msgstr "語言列的位置。0 = 左上角, 1 = 右上角, 2 = 左下角, 3 = 右下角, 4 = 自訂" +#: ../tools/main.vala:262 +msgid "Write the registry cache FILE." +msgstr "寫入註冊快取 FILE。" -#: ../data/ibus.schemas.in.h:21 -#, fuzzy -msgid "The shortcut keys for switching to the next input method in the list" -msgstr "用來切換到清單內下一個輸入法的快捷鍵" +#: ../tools/main.vala:314 +msgid "Resetting…" +msgstr "重設中…" -#: ../data/ibus.schemas.in.h:22 -#, fuzzy -msgid "The shortcut keys for switching to the previous input method" -msgstr "用來切換到清單內上一個輸入法的快捷鍵" +#: ../tools/main.vala:328 +msgid "Done" +msgstr "完成" -#: ../data/ibus.schemas.in.h:23 ../setup/setup.ui.h:51 -msgid "The shortcut keys for turning input method on or off" -msgstr "用來開啟或關閉輸入法的快捷鍵" +#: ../tools/main.vala:373 +msgid "Set or get engine" +msgstr "設定或取得引擎" -#: ../data/ibus.schemas.in.h:24 -msgid "Trigger shortcut keys" -msgstr "觸發用快捷鍵" +#: ../tools/main.vala:374 +msgid "Exit ibus-daemon" +msgstr "離開 ibus-daemon" -#: ../data/ibus.schemas.in.h:25 -msgid "Use custom font" -msgstr "使用自訂字型" +#: ../tools/main.vala:375 +msgid "Show available engines" +msgstr "顯示可用的引擎" -#: ../data/ibus.schemas.in.h:26 -msgid "Use custom font name for language panel" -msgstr "語言面板是否使用自訂字型" +#: ../tools/main.vala:376 +msgid "(Not implemented)" +msgstr "(尚未實作)" -#: ../data/ibus.schemas.in.h:27 -msgid "Use global input method" -msgstr "使用全域輸入法" +#: ../tools/main.vala:377 +msgid "Restart ibus-daemon" +msgstr "重新啟動 ibus-daemon" -#: ../data/ibus.schemas.in.h:28 ../setup/setup.ui.h:55 -msgid "Use system keyboard (XKB) layout" -msgstr "使用系統鍵盤 (XKB) 配置" +#: ../tools/main.vala:378 +msgid "Show version" +msgstr "顯示版本" -#: ../data/ibus.schemas.in.h:29 ../setup/setup.ui.h:56 -msgid "Use system keyboard layout" -msgstr "使用系統鍵盤配置" +#: ../tools/main.vala:379 +msgid "Show the content of registry cache" +msgstr "顯示註冊快取的內容" -#: ../setup/setup.ui.h:1 -msgid "..." -msgstr "..." +#: ../tools/main.vala:380 +msgid "Create registry cache" +msgstr "建立註冊快取" -#: ../setup/setup.ui.h:2 -msgid "Font and Style" -msgstr "字型與風格" +#: ../tools/main.vala:381 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "列印 ibus-daemon 的 D-Bus 位址" -#: ../setup/setup.ui.h:3 -msgid "Global input method settings" -msgstr "全域輸入法設定值" +#: ../tools/main.vala:382 +msgid "Show the configuration values" +msgstr "顯示組態值" -#: ../setup/setup.ui.h:4 -msgid "Keyboard Layout" -msgstr "鍵盤配置" +#: ../tools/main.vala:383 +msgid "Reset the configuration values" +msgstr "重設組態值" -#: ../setup/setup.ui.h:5 -msgid "Keyboard Shortcuts" -msgstr "鍵盤快捷鍵" +#: ../tools/main.vala:385 +msgid "Save emoji on dialog to clipboard " +msgstr "" -#: ../setup/setup.ui.h:6 -msgid "Startup" -msgstr "啟動" +#: ../tools/main.vala:387 +msgid "Show this information" +msgstr "顯示此資訊" -#: ../setup/setup.ui.h:7 -msgid "" -"IBus\n" -"The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" -"\n" +#: ../tools/main.vala:393 +#, c-format +msgid "Usage: %s COMMAND [OPTION...]\n" "\n" +msgstr "用法:%s COMMAND [OPTION...]\n" "\n" + +#: ../tools/main.vala:394 +msgid "Commands:\n" +msgstr "指令:\n" + +#: ../tools/main.vala:423 +#, c-format +msgid "%s is unknown command!\n" +msgstr "%s 為未知指令!\n" + +#: ../ui/gtk3/emojier.vala:245 +msgid "Show emoji variants" msgstr "" -"IBus\n" -"智慧型輸入框架\n" -"首頁: http://code.google.com/p/ibus\n" -"\n" -"\n" -"\n" -#: ../setup/setup.ui.h:14 -msgid "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." +#: ../ui/gtk3/emojier.vala:250 +msgid "Menu" msgstr "" -"清單內最頂端的輸入法為預設輸入法。\n" -"您可以使用 向上/向下 按鈕進行變更。" -#: ../setup/setup.ui.h:17 -msgid "Add the selected input method into the enabled input methods" -msgstr "加入選取的輸入法到已啟用的輸入法內" +#: ../ui/gtk3/emojier.vala:273 +msgid "Favorites" +msgstr "" -#: ../setup/setup.ui.h:18 -msgid "Advanced" -msgstr "進階" +#: ../ui/gtk3/emojier.vala:274 +msgid "Others" +msgstr "" -#: ../setup/setup.ui.h:19 -msgid "Always" -msgstr "總是" +#: ../ui/gtk3/emojier.vala:275 +msgid "Open Unicode choice" +msgstr "" -#: ../setup/setup.ui.h:20 -msgid "Bottom left corner" -msgstr "左下角" +#: ../ui/gtk3/emojier.vala:445 ../ui/gtk3/emojier.vala:826 +#: ../ui/gtk3/panel.vala:1149 +msgid "Emoji Choice" +msgstr "" -#: ../setup/setup.ui.h:21 -msgid "Bottom right corner" -msgstr "右下角" +#: ../ui/gtk3/emojier.vala:451 +msgid "Type annotation or choose emoji" +msgstr "" -#: ../setup/setup.ui.h:22 -msgid "Candidates orientation:" -msgstr "候選詞排列方向:" +#: ../ui/gtk3/emojier.vala:948 +msgid "Unicode Choice" +msgstr "" -#: ../setup/setup.ui.h:23 -msgid "Custom" -msgstr "自訂" +#: ../ui/gtk3/emojier.vala:950 +msgid "Bring back emoji choice" +msgstr "" -#: ../setup/setup.ui.h:24 -msgid "Disable:" +#: ../ui/gtk3/emojier.vala:1016 +msgid "Loading a Unicode dictionary:" msgstr "" -#: ../setup/setup.ui.h:25 -msgid "Embed preedit text in application window" -msgstr "在應用程式視窗中內嵌編輯模式" +#: ../ui/gtk3/emojier.vala:1071 +msgid "Page Down" +msgstr "" -#: ../setup/setup.ui.h:26 -msgid "Embed the preedit text of input method in the application window" -msgstr "在應用程式視窗中內嵌輸入法的預先編輯文字" +#: ../ui/gtk3/emojier.vala:1082 +msgid "Page Up" +msgstr "" -#: ../setup/setup.ui.h:27 -msgid "Embedded in menu" -msgstr "嵌入選單內" +#: ../ui/gtk3/emojier.vala:1236 +#, c-format +msgid "Code point: %s" +msgstr "" -#: ../setup/setup.ui.h:28 -msgid "Enable or disable:" -msgstr "啟用或停用:" +#: ../ui/gtk3/emojier.vala:1242 +msgid "Has emoji variants" +msgstr "" -#: ../setup/setup.ui.h:29 -msgid "Enable:" +#: ../ui/gtk3/emojier.vala:1377 ../ui/gtk3/emojier.vala:1391 +#, c-format +msgid "Description: %s" msgstr "" -#: ../setup/setup.ui.h:30 -msgid "General" -msgstr "通用" +#: ../ui/gtk3/emojier.vala:1377 +msgid "None" +msgstr "" -#: ../setup/setup.ui.h:31 -msgid "Horizontal" -msgstr "水平" +#: ../ui/gtk3/emojier.vala:1402 +#, c-format +msgid "Annotations: %s" +msgstr "" -#: ../setup/setup.ui.h:34 -msgid "Language panel position:" -msgstr "語言面板位置:" +#: ../ui/gtk3/emojier.vala:1428 +#, c-format +msgid "Name: %s" +msgstr "" -#: ../setup/setup.ui.h:35 -msgid "Move down the selected input method in the enabled input methods" -msgstr "下移所選取的輸入法" +#: ../ui/gtk3/emojier.vala:1436 +#, c-format +msgid "Alias: %s" +msgstr "" -#: ../setup/setup.ui.h:36 -msgid "Move up the selected input method in the enabled input methods list" -msgstr "上移所選取的輸入法" +#: ../ui/gtk3/emojierapp.vala:56 +msgid "Canceled to choose an emoji." +msgstr "" -#: ../setup/setup.ui.h:37 -msgid "Next input method:" -msgstr "下一個輸入法:" +#: ../ui/gtk3/emojierapp.vala:77 +msgid "Copied an emoji to your clipboard." +msgstr "" -#: ../setup/setup.ui.h:38 -msgid "Previous input method:" -msgstr "上一個輸入法:" +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ../ui/gtk3/emojierapp.vala:97 +msgid "\"FONT\" for emoji characters on emoji dialog" +msgstr "" -#: ../setup/setup.ui.h:39 -msgid "Remove the selected input method from the enabled input methods" -msgstr "從已啟用的輸入法中移除所選的輸入法" +#: ../ui/gtk3/emojierapp.vala:98 +msgid "FONT" +msgstr "" -#: ../setup/setup.ui.h:40 -msgid "Set the behavior of ibus how to show or hide language bar" -msgstr "設置 ibus 如何顯示或隱藏語言列的行為" +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ../ui/gtk3/emojierapp.vala:103 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" +msgstr "" -#: ../setup/setup.ui.h:41 -msgid "Set the orientation of candidates in lookup table" -msgstr "設置查詢表單內候選字詞的排列方向" +#: ../ui/gtk3/emojierapp.vala:104 +msgid "LANG" +msgstr "" -#: ../setup/setup.ui.h:44 -msgid "Show information of the selected input method" -msgstr "顯示所選取的輸入法資訊" +#: ../ui/gtk3/emojierapp.vala:106 +msgid "Emoji annotations can be match partially" +msgstr "" -#: ../setup/setup.ui.h:46 -msgid "Show input method's name on language bar when check the checkbox" -msgstr "當選取時在語言列上輸入法名稱" +#: ../ui/gtk3/emojierapp.vala:110 +msgid "Match with the length of the specified integer" +msgstr "" -#: ../setup/setup.ui.h:47 -msgid "Show language panel:" -msgstr "顯示語言面板:" +#: ../ui/gtk3/emojierapp.vala:114 +msgid "Match with the condition of the specified integer" +msgstr "" -#: ../setup/setup.ui.h:48 -msgid "Start ibus on login" -msgstr "在登入時啟動 ibus" +#: ../ui/gtk3/panel.vala:282 ../ui/gtk3/panel.vala:313 +msgid "IBus Panel" +msgstr "IBus 面板" -#: ../setup/setup.ui.h:49 -msgid "The shortcut keys for switching to next input method in the list" -msgstr "用來切換到清單內下一個輸入法的快捷鍵" +#: ../ui/gtk3/panel.vala:710 +msgid "IBus Update" +msgstr "IBus 更新" -#: ../setup/setup.ui.h:50 -msgid "The shortcut keys for switching to previous input method in the list" -msgstr "用來切換到清單內上一個輸入法的快捷鍵" +#: ../ui/gtk3/panel.vala:711 ../ui/gtk3/panel.vala:722 +msgid "Super+space is now the default hotkey." +msgstr "超級鍵+空白鍵為現在的預設熱鍵。" -#: ../setup/setup.ui.h:52 -msgid "Top left corner" -msgstr "左上角" +#: ../ui/gtk3/panel.vala:1121 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus 為 Linux/Unix 上的智慧型輸入法框架。" -#: ../setup/setup.ui.h:53 -msgid "Top right corner" -msgstr "右上角" +#: ../ui/gtk3/panel.vala:1125 +msgid "translator-credits" +msgstr "" +"Ding-Yi Chen 陳定彞 , 2009\n" +"Cheng-Chia Tseng , 2010\n" +"Terry Chuang , 2014\n" +"tomoe_musashi , 2015" -#: ../setup/setup.ui.h:54 -msgid "Use custom font:" -msgstr "使用自訂字型:" +#: ../ui/gtk3/panel.vala:1144 +msgid "Preferences" +msgstr "偏好設定" -#: ../setup/setup.ui.h:57 -msgid "Vertical" -msgstr "垂直" +#: ../ui/gtk3/panel.vala:1181 +msgid "Restart" +msgstr "重新啟動" -#: ../setup/setup.ui.h:58 -msgid "When active" -msgstr "當啟用時" +#: ../ui/gtk3/panel.vala:1185 +msgid "Quit" +msgstr "結束" + +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ../ui/gtk3/propertypanel.vala:368 ../ui/gtk3/propertypanel.vala:376 +msgid "default:LTR" +msgstr "default:LTR" diff --git a/po/zh_TW.po b/po/zh_TW.po index 1733a5cc2..3c6fba3c5 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -1,539 +1,3269 @@ -# translation of ibus.pot to Traditional Chinese # Traditional Chinese translation of ibus. -# Copyright (C) 2008 Peng Huang +# Copyright (C) 2008-2015 Peng Huang +# Copyright (C) 2015-2020 Takao Fujiwara # This file is distributed under the same license as the ibus package. -# +# # Translators: -# Ding-Yi Chen 陳定彞 , 2009. -# Cheng-Chia Tseng , 2010-2011. +# Ding-Yi Chen , 2009. +# Cheng-Chia Tseng , 2011-2012,2014. +# Walter Cheuk , 2012. +# fujiwara , 2015. #zanata +# tomoe musashi , 2016. #zanata +# Cheng-Chia Tseng , 2017. #zanata +# Cheng-Chia Tseng , 2018. #zanata +# Peter Pan , 2018. #zanata +# fujiwara , 2018. #zanata +# Peter Pan , 2019. #zanata +# fujiwara , 2019. #zanata +# Yi-Jyun Pan , 2020. msgid "" msgstr "" -"Project-Id-Version: IBus\n" -"Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/list\n" -"POT-Creation-Date: 2011-05-13 11:21+0900\n" -"PO-Revision-Date: 2011-06-17 10:37+0000\n" -"Last-Translator: zerng07 \n" -"Language-Team: Chinese (Taiwan) \n" +"Project-Id-Version: ibus 1.5.21\n" +"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" +"POT-Creation-Date: 2020-01-08 12:40+0900\n" +"PO-Revision-Date: 2020-05-24 12:40+0000\n" +"Last-Translator: Yi-Jyun Pan \n" +"Language-Team: Chinese (Traditional) \n" +"Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: zh_TW\n" "Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.0.4\n" + +#. Translators: Here “Preload” is a verb +#: data/dconf/org.freedesktop.ibus.gschema.xml:11 +msgid "Preload engines" +msgstr "預先載入引擎" + +#. Translators: Tooltip for the button “Preload Engines” +#: data/dconf/org.freedesktop.ibus.gschema.xml:13 +msgid "Preload engines during ibus starts up" +msgstr "當 IBus 啟動時預先載入引擎" -#: ../bus/ibus.desktop.in.h:1 -msgid "IBus" -msgstr "IBus" +#: data/dconf/org.freedesktop.ibus.gschema.xml:17 +msgid "Engines order" +msgstr "引擎順序" -#: ../bus/ibus.desktop.in.h:2 -msgid "Input Method Framework" -msgstr "輸入法框架" +#: data/dconf/org.freedesktop.ibus.gschema.xml:18 +msgid "Saved engines order in input method list" +msgstr "輸入法清單中儲存的引擎順序" -#: ../bus/ibus.desktop.in.h:3 -msgid "Start IBus Input Method Framework" -msgstr "啟動 IBus 輸入法框架" +#: data/dconf/org.freedesktop.ibus.gschema.xml:22 +msgid "Popup delay milliseconds for IME switcher window" +msgstr "IME 切換器視窗彈出延遲的毫秒數" -#: ../ibus/_config.py.in:40 +#: data/dconf/org.freedesktop.ibus.gschema.xml:23 msgid "" -"Copyright (c) 2007-2010 Peng Huang\n" -"Copyright (c) 2007-2010 Red Hat, Inc." +"Set popup delay milliseconds to show IME switcher window. The default is " +"400. 0 = Show the window immediately. 0 < Delay milliseconds. 0 > Do not " +"show the window and switch prev/next engines." msgstr "" -"版權所有 (c) 2007-2010 黃鵬\n" -"版權所有 (c) 2007-2010 Red Hat, Inc." +"設定用來顯示 IME 切換器視窗的彈出視窗延遲毫秒。預設值是 400。0 = 永遠顯示視" +"窗。0 < 延遲毫秒。0 > 不顯示視窗及切換上下引擎。" -#: ../ibus/lang.py:41 -msgid "Other" -msgstr "其它" +#: data/dconf/org.freedesktop.ibus.gschema.xml:27 +msgid "Saved version number" +msgstr "儲存的版本號碼" -#: ../ui/gtk/candidatepanel.py:264 -msgid "Previous page" -msgstr "上一頁" +#: data/dconf/org.freedesktop.ibus.gschema.xml:28 +msgid "" +"The saved version number will be used to check the difference between the " +"version of the previous installed ibus and one of the current ibus." +msgstr "" +"儲存的版本號碼可以用來查看前次安裝的 ibus 版本與目前安裝的 ibus 版本之間的差" +"異。" -#: ../ui/gtk/candidatepanel.py:269 -msgid "Next page" -msgstr "下一頁" +#: data/dconf/org.freedesktop.ibus.gschema.xml:32 +msgid "Latin layouts which have no ASCII" +msgstr "無 ASCII 之拉丁鍵盤配置" -#: ../ui/gtk/main.py:62 +#: data/dconf/org.freedesktop.ibus.gschema.xml:33 +msgid "US layout is appended to the Latin layouts. variant can be omitted." +msgstr "US 鍵盤配置附加到拉丁鍵盤配置。variant 可以省略。" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:37 +msgid "Use xmodmap" +msgstr "使用 xmodmap" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" -"Some input methods have been installed, removed or updated. Please restart " -"ibus input platform." -msgstr "有些輸入法已經被安裝、移除或更新。請重新啟動 ibus 輸入平台。" +"Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." +msgstr "" +"當 ibus 引擎切換之時,若 .xmodmap 或 .Xmodmap 存在的話,則執行 xmodmap。" -#: ../ui/gtk/main.py:66 -msgid "Restart Now" -msgstr "現在重新啟動" +#: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 +msgid "Use system keyboard layout" +msgstr "使用系統鍵盤配置" -#: ../ui/gtk/main.py:67 -msgid "Later" -msgstr "稍候" +#: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 +msgid "Use system keyboard (XKB) layout" +msgstr "使用系統鍵盤 (XKB) 配置" -#: ../ui/gtk/panel.py:116 -msgid "IBus Panel" -msgstr "IBus 面板" +#: data/dconf/org.freedesktop.ibus.gschema.xml:47 +msgid "Embed Preedit Text" +msgstr "內嵌預先編輯文字" -#: ../ui/gtk/panel.py:122 -msgid "IBus input method framework" -msgstr "IBus 輸入法框架" +#: data/dconf/org.freedesktop.ibus.gschema.xml:48 +msgid "Embed Preedit Text in Application Window" +msgstr "在應用程式視窗中內嵌預先編輯文字" -#: ../ui/gtk/panel.py:352 -msgid "Restart" -msgstr "重新啟動" +#: data/dconf/org.freedesktop.ibus.gschema.xml:52 +msgid "Use global input method" +msgstr "使用全域輸入法" -#: ../ui/gtk/panel.py:439 -msgid "Turn off input method" -msgstr "關閉輸入法" +#: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 +msgid "Share the same input method among all applications" +msgstr "在所有應用程式共用同一個輸入法" -#: ../ui/gtk/panel.py:478 -msgid "No input window" -msgstr "無輸入視窗" +#: data/dconf/org.freedesktop.ibus.gschema.xml:57 +msgid "Enable input method by default" +msgstr "預設啟用輸入法" -#: ../ui/gtk/panel.py:509 -msgid "IBus is an intelligent input bus for Linux/Unix." -msgstr "IBus 為 Linux/Unix 上的智慧型輸入法框架。" +#: data/dconf/org.freedesktop.ibus.gschema.xml:58 +msgid "Enable input method by default when the application gets input focus" +msgstr "當應用程式取得輸入焦點時,預設將輸入法啟用" -#: ../ui/gtk/panel.py:513 -msgid "translator-credits" +#: data/dconf/org.freedesktop.ibus.gschema.xml:62 +msgid "DConf preserve name prefixes" +msgstr "DConf 保留名稱前綴" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:63 +msgid "Prefixes of DConf keys to stop name conversion" +msgstr "DConf 鍵的前綴,用來停止名稱轉換" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:70 +msgid "Trigger shortcut keys" +msgstr "觸發用快捷鍵" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:71 +#: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 +msgid "The shortcut keys for turning input method on or off" +msgstr "用來開啟或關閉輸入法的快捷鍵" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:75 +msgid "Trigger shortcut keys for gtk_accelerator_parse" +msgstr "gtk_accelerator_parse 的觸發快捷鍵" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:80 +msgid "Enable shortcut keys" +msgstr "啟用快捷鍵" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:81 +msgid "The shortcut keys for turning input method on" +msgstr "開啟輸入法的快捷鍵" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:85 +msgid "Disable shortcut keys" +msgstr "停用快捷鍵" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:86 +msgid "The shortcut keys for turning input method off" +msgstr "關閉輸入法的快捷鍵" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:90 +#: data/dconf/org.freedesktop.ibus.gschema.xml:95 +msgid "Next engine shortcut keys" +msgstr "「下一個引擎」快捷鍵" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:91 +#: data/dconf/org.freedesktop.ibus.gschema.xml:96 +msgid "The shortcut keys for switching to the next input method in the list" +msgstr "用來切換到清單內下一個輸入法的快捷鍵" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:100 +#: data/dconf/org.freedesktop.ibus.gschema.xml:105 +msgid "Prev engine shortcut keys" +msgstr "「上一個引擎」快捷鍵" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:101 +#: data/dconf/org.freedesktop.ibus.gschema.xml:106 +msgid "The shortcut keys for switching to the previous input method" +msgstr "用來切換到清單內上一個輸入法的快捷鍵" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:112 +msgid "Auto hide" +msgstr "自動隱藏" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:113 +msgid "" +"The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " +"show" +msgstr "屬性面板的行為。0 = 不要顯示,1 = 自動隱藏,2 = 總是顯示" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:117 +#: data/dconf/org.freedesktop.ibus.gschema.xml:121 +msgid "Language panel position" +msgstr "語言面板位置" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:125 +msgid "Follow the input cursor in case the panel is always shown" +msgstr "在面板總是顯示的情況下跟隨輸入游標" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:126 +msgid "" +"If true, the panel follows the input cursor in case the panel is always " +"shown. If false, the panel is shown at a fixed location." msgstr "" -"Ding-Yi Chen 陳定彞 , 2009.\n" -"Cheng-Chia Tseng , 2010." +"若為真,則面板會在總是顯示的情況下跟隨輸入游標。若為假,則面板會顯示在固定位" +"置上。" -#: ../ui/gtk/languagebar.py:106 -msgid "About the input method" -msgstr "關於輸入法" +#: data/dconf/org.freedesktop.ibus.gschema.xml:130 +msgid "The milliseconds to show property panel" +msgstr "顯示屬性面板的毫秒數" -#: ../ui/gtk/languagebar.py:214 -msgid "Switch input method" -msgstr "切換輸入法" +#: data/dconf/org.freedesktop.ibus.gschema.xml:131 +msgid "" +"The milliseconds to show property panel after focus-in or properties are " +"changed." +msgstr "當焦點落在屬性面板內,或屬性變更時屬性面板的顯示毫秒數。" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:135 +msgid "Orientation of lookup table" +msgstr "查選表單表排列方向" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:136 +msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" +msgstr "查詢表單的排列方向。0 = 水平,1 = 垂直" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:140 +#: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 +#: setup/setup.ui:475 +msgid "Show icon on system tray" +msgstr "在系統匣顯示圖示" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:145 +msgid "Show input method name" +msgstr "顯示輸入法名稱" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 +msgid "Show input method name on language bar" +msgstr "在語言列顯示輸入法名稱" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:150 +msgid "RGBA value of XKB icon" +msgstr "XKB 圖示的 RGBA 值" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:151 +msgid "" +"XKB icon shows the layout string and the string is rendered with the RGBA " +"value. The RGBA value can be 1. a color name from X11, 2. a hex value in " +"form '#rrggbb' where 'r', 'g' and 'b' are hex digits of the red, green, and " +"blue, 3. a RGB color in form 'rgb(r,g,b)' or 4. a RGBA color in form 'rgba(r," +"g,b,a)' where 'r', 'g', and 'b' are either integers in the range 0 to 255 or " +"percentage values in the range 0% to 100%, and 'a' is a floating point value " +"in the range 0 to 1 of the alpha." +msgstr "" +"XKB 圖示會顯示鍵盤配置的字串,且該字串會以 RGBA 值繪製。RGBA 值可以是 1. X11 " +"定義的顏色,2.「#rrggbb」格式的十六進位值,其中 r、g、b 分別是紅色、綠色與藍" +"色,3. 「rgb(r,g,b)」格式的 RGB 色彩,4.「rgba(r,g,b,a)」格式的 RGBA 採,其中" +"的 r、g、b 為 0 至 255 之間的整數值,或 0% 至 100% 之間的百分比,而 a 則是 0 " +"至 1 之間的浮點 alpha 值。" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:155 +msgid "The milliseconds to show the panel icon for a property" +msgstr "顯示面板屬性圖示的毫秒數" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:156 +msgid "" +"The milliseconds to show the panel icon from the engine icon to a property " +"icon whenever engines are switched if the property is specified by the value " +"of icon-prop-key in IBusEngineDesc. If the value is 0, no delay time and the " +"property icon is shown immediately." +msgstr "" +"當切換引擎時將面板的引擎圖示改顯示為屬性圖示的毫秒數,若 IBusEngineDesc 中該" +"屬性的 icon-prop-key 值有指定的話。如果值為 0,則沒有延遲時間,該屬性圖示將立" +"即顯示。" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:160 +msgid "Use custom font" +msgstr "使用自訂字型" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:161 +msgid "Use custom font name for language panel" +msgstr "語言面板是否使用自訂字型" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:165 +#: data/dconf/org.freedesktop.ibus.gschema.xml:183 +msgid "Custom font" +msgstr "自訂字型" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:166 +msgid "Custom font name for language panel" +msgstr "為語言面板自訂字型" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:173 +msgid "Unicode shortcut keys for gtk_accelerator_parse" +msgstr "gtk_accelerator_parse 的 Unicode 快捷鍵" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:174 +msgid "The shortcut keys for turning Unicode typing on or off" +msgstr "開啟或關閉 Unicode 輸入的快捷鍵" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:178 +msgid "Emoji shortcut keys for gtk_accelerator_parse" +msgstr "gtk_accelerator_parse 的繪文字快捷鍵" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:179 +msgid "The shortcut keys for turning emoji typing on or off" +msgstr "開啟繪文字輸入或關閉的快捷鍵" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:184 +msgid "Custom font name for emoji characters on emoji dialog" +msgstr "繪文字對話窗當中繪文字字元的自訂字型名稱" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:188 +msgid "Default language for emoji dictionary" +msgstr "繪文字字典的預設語言" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:189 +msgid "" +"Choose a default language of emoji dictionaries on the emoji dialog. The " +"value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict ." +msgstr "" +"請在繪文字對話窗當中選擇繪文字字典語言。$lang 的值會套用到 /usr/share/ibus/" +"dicts/emoji-$lang.dict。" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:193 +msgid "favorite emoji list on emoji dialog" +msgstr "繪文字對話窗中的喜愛繪文字清單" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:194 +msgid "" +"You can show the favorite emojis on emoji list if this list has any " +"characters." +msgstr "您可以在繪文字清單中顯示喜愛的繪文字,若有列出任何字元的話。" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:198 +msgid "favorite emoji annotation list on emoji dialog" +msgstr "繪文字對話盒中喜愛的繪文字註解列表" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:199 +msgid "You can assign an annotation for a favorite emoji in this list." +msgstr "您可以為清單中喜愛的繪文字指派註解。" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:203 +msgid "Whether emoji annotations can be match partially or not" +msgstr "是否可以只部分符合繪文字註解" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:204 +msgid "" +"Whether emoji annotations can be matched with a partial string instead of " +"the exact match or not." +msgstr "比對時是否可以只有部分字串符合繪文字註解,而非精確符合。" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:208 +msgid "Match emoji annotations with the specified length" +msgstr "以指定長度符合繪文字註解" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:209 +msgid "" +"Match emoji annotations partially with more than the specified number of " +"characters instead of the exact match." +msgstr "以超過指定字數符合部分繪文字註解,而非精確符合。" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:213 +msgid "Choose a condition to match emoji annotations partially" +msgstr "選擇部分符合繪文字註解的條件" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:214 +msgid "" +"Choose one of the following conditions to match emoji annotations partially: " +"0 == Prefix match, 1 == Suffix match, 2 == Containing match" +msgstr "" +"選擇下列部分符合繪文字註解的條件之一:0 == 前綴符合,1 == 後綴符合, 2 == 內含" +"符合" -#: ../ui/gtk/languagebar.py:357 ../ui/gtk/engineabout.py:33 -#: ../setup/engineabout.py:33 ../setup/setup.ui.h:16 +#: data/dconf/org.freedesktop.ibus.gschema.xml:218 +msgid "Load the emoji data at the time of startup" +msgstr "每次開啟時載入 Emoji 資料" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:219 +msgid "" +"Load the emoji data at the time of startup if true. About 10MB memory is " +"needed to load the data. Load the emoji data when open the emoji dialog at " +"the beginning if false." +msgstr "" +"如果為 True 則在每次開啟時載入 Emoji 資料,載入資料大約需要 10MB 的記憶體大" +"小。當設定為 False 時則在第一次開啟 Emoji 對話框時載入 Emoji 資料。" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:223 +msgid "Load the Unicode data at the time of startup" +msgstr "每次開啟時載入 Unicode 資料" + +#: data/dconf/org.freedesktop.ibus.gschema.xml:224 +msgid "" +"Load the Unicode data at the time of startup if true. About 15MB memory is " +"needed to load the data. Load the Unicode data when open the emoji dialog at " +"the beginning if false. The Unicode data is always loaded after the emoji " +"data is loaded even if true." +msgstr "" +"如果為 True 則在每次開啟時載入 Unicode 資料。載入資料需要大約 15MB 大小的記憶" +"體。如果設定為 False 則在第一次開啟 Emoji 對話框時載入 Unicode 資料,就算設定" +"為 True,Unicode 資料永遠都會在 Emoji 資料載入後才載入。" + +#: ibus/_config.py.in:41 +msgid "" +"Copyright (c) 2007-2010 Peng Huang\n" +"Copyright (c) 2007-2010 Red Hat, Inc." +msgstr "" +"著作權所有 (c) 2007-2010 黃鵬\n" +"著作權所有 (c) 2007-2010 Red Hat, Inc." + +#: ibus/lang.py:41 src/ibusutil.c:209 +msgid "Other" +msgstr "其他" + +#: setup/emojilang.py:67 +msgid "Select a language" +msgstr "選取語言" + +#: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 +#: setup/main.py:560 +msgid "_Cancel" +msgstr "取消(_C)" + +#: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 +msgid "_OK" +msgstr "確定(_O)" + +#: setup/emojilang.py:235 setup/enginedialog.py:205 +msgid "More…" +msgstr "其他…" + +#: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "關於" -#: ../ui/gtk/languagebar.py:361 -msgid "About the Input Method" -msgstr "關於輸入法" +#: setup/engineabout.py:40 setup/setup.ui:1401 +msgid "_Close" +msgstr "關閉(_C)" -#: ../ui/gtk/engineabout.py:61 ../setup/engineabout.py:61 +#: setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "語言:%s\n" -#: ../ui/gtk/engineabout.py:63 ../setup/engineabout.py:63 +#: setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "鍵盤配置: %s\n" -#: ../ui/gtk/engineabout.py:65 ../setup/engineabout.py:65 +#: setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "作者:%s\n" -#: ../ui/gtk/engineabout.py:67 ../setup/engineabout.py:67 +#: setup/engineabout.py:81 msgid "Description:\n" msgstr "描述:\n" -#: ../setup/main.py:102 -msgid "trigger" -msgstr "觸發" - -#: ../setup/main.py:113 -msgid "enable" -msgstr "啟用" - -#: ../setup/main.py:124 -msgid "disable" -msgstr "停用" +#: setup/enginecombobox.py:139 setup/enginedialog.py:57 +msgid "Select an input method" +msgstr "選取輸入法" -#: ../setup/main.py:135 -msgid "next input method" -msgstr "下一個輸入法" +#. add button +#: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 +msgid "_Add" +msgstr "加入(_A)" -#: ../setup/main.py:146 -msgid "previous input method" -msgstr "上一個輸入法" +#. create im name & icon column +#: setup/enginetreeview.py:69 setup/setup.ui:838 +msgid "Input Method" +msgstr "輸入法" -#: ../setup/main.py:286 -msgid "IBus daemon is not started. Do you want to start it now?" -msgstr "IBus 幕後程式没有啟動,您是否想現在啟動它?" +#: setup/enginetreeview.py:96 +msgid "Kbd" +msgstr "鍵盤" -#: ../setup/main.py:301 -msgid "" -"IBus has been started! If you can not use IBus, please add below lines in $HOME/.bashrc, and relogin your desktop.\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" -msgstr "" -"IBus 已經成功啟動!如果您無法使用 IBus,請將下列代碼加入到 $HOME/.bashrc 中,並重新登入桌面。\n" -" export GTK_IM_MODULE=ibus\n" -" export XMODIFIERS=@im=ibus\n" -" export QT_IM_MODULE=ibus" +#: setup/ibus-setup.desktop:3 setup/setup.ui:69 +msgid "IBus Preferences" +msgstr "IBus 偏好設定" -#: ../setup/main.py:316 -#, python-format -msgid "Select keyboard shortcut for %s" -msgstr "為 %s 選取鍵盤快捷鍵" +#: setup/ibus-setup.desktop:4 +msgid "Set IBus Preferences" +msgstr "設定 IBus 偏好設定" -#: ../setup/keyboardshortcut.py:52 +#: setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "鍵盤快捷鍵" -#: ../setup/keyboardshortcut.py:63 +#: setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "按鍵碼:" -#: ../setup/keyboardshortcut.py:78 +#: setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "修飾鍵:" -#: ../setup/keyboardshortcut.py:231 +#. apply button +#: setup/keyboardshortcut.py:130 +msgid "_Apply" +msgstr "套用(_A)" + +#. delete button +#: setup/keyboardshortcut.py:136 +msgid "_Delete" +msgstr "刪除(_D)" + +#: setup/keyboardshortcut.py:252 msgid "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." msgstr "" -"請按一個鍵盤按鍵 (或是按鍵組合)\n" +"請按鍵盤按鍵 (或是按鍵組合)\n" "當您放開按鍵時,對話框會自動關閉。" -#: ../setup/keyboardshortcut.py:233 +#: setup/keyboardshortcut.py:255 msgid "Please press a key (or a key combination)" -msgstr "請按一個鍵盤按鍵 (或是按鍵組合)" +msgstr "請按鍵盤按鍵 (或是按鍵組合)" -#: ../setup/enginecombobox.py:120 -msgid "Select an input method" -msgstr "選取輸入法" +#: setup/main.py:121 setup/main.py:588 +msgid "Use shortcut with shift to switch to the previous input method" +msgstr "使用含 Shift 鍵之快捷鍵來切換至前個輸入法" -#. create im name & icon column -#: ../setup/enginetreeview.py:64 ../setup/setup.ui.h:33 -msgid "Input Method" -msgstr "輸入法" +#: setup/main.py:515 +msgid "The IBus daemon is not running. Do you wish to start it?" +msgstr "IBus 幕後程式並非執行中。您是否要啟動它?" -#: ../setup/enginetreeview.py:92 -msgid "Kbd" -msgstr "鍵盤" +#: setup/main.py:536 +msgid "" +"IBus has been started! If you cannot use IBus, add the following lines to " +"your $HOME/.bashrc; then relog into your desktop.\n" +" export GTK_IM_MODULE=ibus\n" +" export XMODIFIERS=@im=ibus\n" +" export QT_IM_MODULE=ibus" +msgstr "" +"IBus 已經啟動!若您無法使用 IBus,請將下列文字加入您的 $HOME/.bashrc 中;接著" +"重新登入桌面。\n" +"export GTK_IM_MODULE=ibus\n" +"export XMODIFIERS=@im=ibus\n" +"export QT_IM_MODULE=ibus" + +#. Translators: %d == 5 currently +#: setup/main.py:550 +#, python-format +msgid "IBus daemon could not be started in %d seconds." +msgstr "IBus 幕後程式無法在 %d 秒後啟動。" -#: ../setup/ibus-setup.desktop.in.h:1 ../setup/setup.ui.h:32 -msgid "IBus Preferences" -msgstr "IBus 偏好設定" +#: setup/main.py:562 +#, python-format +msgid "Select keyboard shortcut for %s" +msgstr "為 %s 選取鍵盤快捷鍵" -#: ../setup/ibus-setup.desktop.in.h:2 -msgid "Set IBus Preferences" -msgstr "設置 IBus 偏好設定" +#. Translators: Title of the window +#: setup/main.py:564 +msgid "switching input methods" +msgstr "切換輸入法" -#: ../data/ibus.schemas.in.h:1 -msgid "Auto hide" +#: setup/setup.ui:11 +msgid "Horizontal" +msgstr "水平" + +#: setup/setup.ui:14 +msgid "Vertical" +msgstr "垂直" + +#: setup/setup.ui:25 +msgid "Top left corner" +msgstr "左上角" + +#: setup/setup.ui:28 +msgid "Top right corner" +msgstr "右上角" + +#: setup/setup.ui:31 +msgid "Bottom left corner" +msgstr "左下角" + +#: setup/setup.ui:34 +msgid "Bottom right corner" +msgstr "右下角" + +#: setup/setup.ui:37 +msgid "Custom" +msgstr "自訂" + +#: setup/setup.ui:48 +msgid "Do not show" +msgstr "不要顯示" + +#: setup/setup.ui:51 +msgid "Hide automatically" msgstr "自動隱藏" -#: ../data/ibus.schemas.in.h:2 -msgid "Custom font" -msgstr "自訂字型" +#: setup/setup.ui:54 +msgid "Always" +msgstr "總是" -#: ../data/ibus.schemas.in.h:3 -msgid "Custom font name for language panel" -msgstr "為語言面板自訂字型" +#: setup/setup.ui:113 +msgid "The shortcut keys for switching to next input method in the list" +msgstr "用來切換到清單內下一個輸入法的快捷鍵" -#: ../data/ibus.schemas.in.h:4 -msgid "Disable shortcut keys" -msgstr "停用快捷鍵" +#: setup/setup.ui:115 +msgid "Next input method:" +msgstr "下一個輸入法:" -#: ../data/ibus.schemas.in.h:5 -msgid "Embed Preedit Text" -msgstr "內嵌編輯模式" +#: setup/setup.ui:127 +msgid "The shortcut keys for switching to previous input method in the list" +msgstr "用來切換到清單內上一個輸入法的快捷鍵" -#: ../data/ibus.schemas.in.h:6 -msgid "Embed Preedit Text in Application Window" -msgstr "在應用程式視窗中內嵌編輯模式" +#: setup/setup.ui:129 +msgid "Previous input method:" +msgstr "上一個輸入法:" -#: ../data/ibus.schemas.in.h:7 -msgid "Enable input method by default" -msgstr "預設啟用輸入法" +#: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 +#: setup/setup.ui:903 setup/setup.ui:957 +msgid "..." +msgstr "..." -#: ../data/ibus.schemas.in.h:8 -msgid "Enable input method by default when the application gets input focus" -msgstr "當應用程式取得輸入焦點時,預設將輸入法啟用" +#: setup/setup.ui:226 +msgid "Enable or disable:" +msgstr "啟用或停用:" -#: ../data/ibus.schemas.in.h:9 -msgid "Enable shortcut keys" -msgstr "啟用快捷鍵" +#: setup/setup.ui:238 +msgid "Enable:" +msgstr "啟用:" -#: ../data/ibus.schemas.in.h:10 -msgid "Language panel position" -msgstr "語言面板位置" +#: setup/setup.ui:291 +msgid "Disable:" +msgstr "停用:" -#: ../data/ibus.schemas.in.h:11 -msgid "Next engine shortcut keys" -msgstr "「下一個引擎」快捷鍵" +#: setup/setup.ui:345 setup/setup.ui:983 +msgid "Keyboard Shortcuts" +msgstr "鍵盤快捷鍵" -#: ../data/ibus.schemas.in.h:12 -msgid "Orientation of lookup table" -msgstr "查選表單表排列方向" +#: setup/setup.ui:374 +msgid "Set the orientation of candidates in lookup table" +msgstr "設定查詢表單內候選字詞的排列方向" -#: ../data/ibus.schemas.in.h:13 -msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" -msgstr "查詢表單的排列方向。0 = 水平,1 = 垂直" +#: setup/setup.ui:376 +msgid "Candidates orientation:" +msgstr "候選詞排列方向:" -#: ../data/ibus.schemas.in.h:14 -msgid "Preload engines" -msgstr "預先載入引擎" +#: setup/setup.ui:407 +msgid "Set the behavior of ibus how to show or hide language bar" +msgstr "設定 IBus 如何顯示或隱藏語言列的行為" -#: ../data/ibus.schemas.in.h:15 -msgid "Preload engines during ibus starts up" -msgstr "當 ibus 啟動時預先載入引擎" +#: setup/setup.ui:409 +msgid "Show property panel:" +msgstr "顯示屬性面板:" -#: ../data/ibus.schemas.in.h:16 -msgid "Prev engine shortcut keys" -msgstr "「上一個引擎」快捷鍵" +#: setup/setup.ui:423 +msgid "Language panel position:" +msgstr "語言面板位置:" -#: ../data/ibus.schemas.in.h:17 ../setup/setup.ui.h:42 -msgid "Share the same input method among all applications" -msgstr "在所有的應用程式中共享同一個輸入法" +#: setup/setup.ui:494 +msgid "Show input method's name on language bar when check the checkbox" +msgstr "當選取時在語言列上輸入法名稱" -#: ../data/ibus.schemas.in.h:18 ../setup/setup.ui.h:43 -msgid "Show icon on system tray" -msgstr "在系統匣內顯示圖示" +#: setup/setup.ui:508 +msgid "Embed preedit text in application window" +msgstr "在應用程式視窗內嵌預先編輯文字" -#: ../data/ibus.schemas.in.h:19 -msgid "Show input method name" -msgstr "顯示輸入法名稱" +#: setup/setup.ui:513 +msgid "Embed the preedit text of input method in the application window" +msgstr "在應用程式視窗內嵌輸入法的預先編輯文字" -#: ../data/ibus.schemas.in.h:20 ../setup/setup.ui.h:45 -msgid "Show input method name on language bar" -msgstr "在語言列上顯示輸入法名稱" +#: setup/setup.ui:527 +msgid "Use custom font:" +msgstr "使用自訂字型:" -#: ../data/ibus.schemas.in.h:21 -msgid "" -"The behavior of language panel. 0 = Embedded in menu, 1 = Auto hide, 2 = " -"Always show" -msgstr "語言面板行為。0 = 嵌入選單內,1 = 自動隱藏,2 = 永遠顯示" +#: setup/setup.ui:562 setup/setup.ui:1156 +msgid "Font and Style" +msgstr "字型與風格" + +#: setup/setup.ui:579 +msgid "General" +msgstr "通用" + +#: setup/setup.ui:671 +msgid "Add the selected input method into the enabled input methods" +msgstr "加入選取的輸入法到已啟用的輸入法內" + +#: setup/setup.ui:682 +msgid "_Remove" +msgstr "移除(_R)" + +#: setup/setup.ui:689 +msgid "Remove the selected input method from the enabled input methods" +msgstr "從已啟用的輸入法中移除所選的輸入法" + +#: setup/setup.ui:700 +msgid "_Up" +msgstr "向上(_U)" + +#: setup/setup.ui:707 +msgid "Move up the selected input method in the enabled input methods list" +msgstr "上移所選取的輸入法" -#: ../data/ibus.schemas.in.h:22 +#: setup/setup.ui:718 +msgid "_Down" +msgstr "向下(_D)" + +#: setup/setup.ui:725 +msgid "Move down the selected input method in the enabled input methods" +msgstr "下移所選取的輸入法" + +#: setup/setup.ui:736 +msgid "_About" +msgstr "關於(_A)" + +#: setup/setup.ui:743 +msgid "Show information of the selected input method" +msgstr "顯示所選取的輸入法資訊" + +#: setup/setup.ui:754 +msgid "_Preferences" +msgstr "偏好設定(_P)" + +#: setup/setup.ui:761 +msgid "Show setup of the selected input method" +msgstr "顯示選取輸入法的設定" + +#: setup/setup.ui:812 msgid "" -"The position of the language panel. 0 = Top left corner, 1 = Top right " -"corner, 2 = Bottom left corner, 3 = Bottom right corner, 4 = Custom" -msgstr "語言列的位置。0 = 左上角, 1 = 右上角, 2 = 左下角, 3 = 右下角, 4 = 自訂" +"The active input method can be switched around from the selected " +"ones in the above list by pressing the keyboard shortcut keys or clicking " +"the panel icon." +msgstr "" +"您可以透過按下鍵盤快捷鍵,或是點按面板圖示的方式,來從上列清單中選" +"取的輸入法之中切換使用中的輸入法。" -#: ../data/ibus.schemas.in.h:23 -msgid "The shortcut keys for switching to the next input method in the list" -msgstr "用來切換到清單內下一個輸入法的快捷鍵" +#: setup/setup.ui:873 +msgid "" +"The shortcut keys to enable conversions of emoji annotations or Unicode names" +msgstr "啟用繪文字符號或 Unicode 名稱轉換的快捷鍵" -#: ../data/ibus.schemas.in.h:24 -msgid "The shortcut keys for switching to the previous input method" -msgstr "用來切換到清單內上一個輸入法的快捷鍵" +#: setup/setup.ui:875 +msgid "Emoji annotation:" +msgstr "繪文字符號:" -#: ../data/ibus.schemas.in.h:25 -msgid "The shortcut keys for turning input method off" -msgstr "關閉輸入法的快捷鍵" +#: setup/setup.ui:927 +msgid "The shortcut keys to enable Unicode code point conversions" +msgstr "啟用 Unicode 碼位轉換的快捷鍵" -#: ../data/ibus.schemas.in.h:26 -msgid "The shortcut keys for turning input method on" -msgstr "開啟輸入法的快捷鍵" +#: setup/setup.ui:929 +msgid "Unicode code point:" +msgstr "Unicode 碼位:" -#: ../data/ibus.schemas.in.h:27 ../setup/setup.ui.h:51 -msgid "The shortcut keys for turning input method on or off" -msgstr "用來開啟或關閉輸入法的快捷鍵" +#: setup/setup.ui:1013 +msgid "Set a font of Unicode candidates on the emoji dialog" +msgstr "設定繪文字對話框上的 Unicode 候選字型" -#: ../data/ibus.schemas.in.h:28 -msgid "Trigger shortcut keys" -msgstr "觸發用快捷鍵" +#: setup/setup.ui:1015 +msgid "Unicode font:" +msgstr "Unicode 字體:" -#: ../data/ibus.schemas.in.h:29 -msgid "Use custom font" -msgstr "使用自訂字型" +#: setup/setup.ui:1038 +msgid "Set a language of emoji annotations on the emoji dialog" +msgstr "設定繪文字對話窗中的繪文字註釋語言" -#: ../data/ibus.schemas.in.h:30 -msgid "Use custom font name for language panel" -msgstr "語言面板是否使用自訂字型" +#: setup/setup.ui:1040 +msgid "Emoji annotation language:" +msgstr "繪文字註釋語言:" -#: ../data/ibus.schemas.in.h:31 -msgid "Use global input method" -msgstr "使用全域輸入法" +#: setup/setup.ui:1062 +msgid "" +"Match emoji annotations partially with the following condition and more than " +"the number of characters:" +msgstr "部分繪文字註解符合下列條件以及至少字數:" -#: ../data/ibus.schemas.in.h:32 ../setup/setup.ui.h:55 -msgid "Use system keyboard (XKB) layout" -msgstr "使用系統鍵盤 (XKB) 配置" +#: setup/setup.ui:1067 +msgid "" +"If emoji annotations can be matched with a partial string instead of the " +"exact match" +msgstr "是否繪文字註解可以用部分字串符合取代精確符合" -#: ../data/ibus.schemas.in.h:33 ../setup/setup.ui.h:56 -msgid "Use system keyboard layout" -msgstr "使用系統鍵盤配置" +#: setup/setup.ui:1101 +msgid "Prefix match" +msgstr "前綴符合" -#: ../setup/setup.ui.h:1 -msgid "..." -msgstr "..." +#: setup/setup.ui:1115 +msgid "Suffix match" +msgstr "後綴符合" -#: ../setup/setup.ui.h:2 -msgid "Font and Style" -msgstr "字型與風格" +#: setup/setup.ui:1130 +msgid "Containing match" +msgstr "內含符合" -#: ../setup/setup.ui.h:3 -msgid "Global input method settings" -msgstr "全域輸入法設定值" +#: setup/setup.ui:1176 +msgid "Emoji" +msgstr "繪文字" -#: ../setup/setup.ui.h:4 +#: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "鍵盤配置" -#: ../setup/setup.ui.h:5 -msgid "Keyboard Shortcuts" -msgstr "鍵盤快捷鍵" +#: setup/setup.ui:1278 +msgid "Global input method settings" +msgstr "全域輸入法設定值" -#: ../setup/setup.ui.h:6 -msgid "Startup" -msgstr "啟動" +#: setup/setup.ui:1298 +msgid "Advanced" +msgstr "進階" -#: ../setup/setup.ui.h:7 +#: setup/setup.ui:1317 msgid "" "IBus\n" "The intelligent input bus\n" -"Homepage: http://code.google.com/p/ibus\n" +"Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" "IBus\n" "智慧型輸入框架\n" -"首頁: http://code.google.com/p/ibus\n" +"首頁: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" -#: ../setup/setup.ui.h:14 -msgid "" -"The default input method is the top one in the list.\n" -"You may use up/down buttons to change it." -msgstr "" -"清單內最頂端的輸入法為預設輸入法。\n" -"您可以使用 向上/向下 按鈕進行變更。" +#: setup/setup.ui:1341 +msgid "Start ibus on login" +msgstr "在登入時啟動 IBus" -#: ../setup/setup.ui.h:17 -msgid "Add the selected input method into the enabled input methods" -msgstr "加入選取的輸入法到已啟用的輸入法內" +#: setup/setup.ui:1358 +msgid "Startup" +msgstr "啟動" -#: ../setup/setup.ui.h:18 -msgid "Advanced" -msgstr "進階" +#: src/ibusemojigen.h:30 +msgid "Activities" +msgstr "活動" + +#: src/ibusemojigen.h:31 +msgid "Animals & Nature" +msgstr "動物與自然" + +#: src/ibusemojigen.h:32 +msgid "Component" +msgstr "元件" + +#: src/ibusemojigen.h:33 +msgid "Flags" +msgstr "旗幟" + +#: src/ibusemojigen.h:34 +msgid "Food & Drink" +msgstr "食物與飲品" + +#: src/ibusemojigen.h:35 +msgid "Objects" +msgstr "物體" + +#: src/ibusemojigen.h:36 +msgid "People & Body" +msgstr "人們 & 身體" + +#: src/ibusemojigen.h:37 +msgid "Smileys & Emotion" +msgstr "笑臉 & 表情" + +#: src/ibusemojigen.h:38 +msgid "Symbols" +msgstr "符號" + +#: src/ibusemojigen.h:39 +msgid "Travel & Places" +msgstr "旅行與地點" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:33 +msgid "Basic Latin" +msgstr "基本拉丁字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:37 +msgid "Latin-1 Supplement" +msgstr "拉丁字-1 補充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:41 +msgid "Latin Extended-A" +msgstr "拉丁字擴充-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:45 +msgid "Latin Extended-B" +msgstr "拉丁字擴充-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:49 +msgid "IPA Extensions" +msgstr "IPA 國際音標擴充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:53 +msgid "Spacing Modifier Letters" +msgstr "佔位修飾字元" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:57 +msgid "Combining Diacritical Marks" +msgstr "組合式變音標記" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:61 +msgid "Greek and Coptic" +msgstr "希臘字與科普特字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:65 +msgid "Cyrillic" +msgstr "西里爾字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:69 +msgid "Cyrillic Supplement" +msgstr "西里爾字補充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:73 +msgid "Armenian" +msgstr "阿美尼亞文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:77 +msgid "Hebrew" +msgstr "希伯來文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:81 +msgid "Arabic" +msgstr "阿拉伯文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:85 +msgid "Syriac" +msgstr "敘利亞文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:89 +msgid "Arabic Supplement" +msgstr "阿拉伯文補充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:93 +msgid "Thaana" +msgstr "塔納文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:97 +msgid "NKo" +msgstr "Nko 西非書面文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:101 +msgid "Samaritan" +msgstr "撒馬利亞字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:105 +msgid "Mandaic" +msgstr "曼達文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:109 +msgid "Syriac Supplement" +msgstr "敘利亞文補充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:113 +msgid "Arabic Extended-A" +msgstr "阿拉伯文擴充-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:117 +msgid "Devanagari" +msgstr "天城文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:121 +msgid "Bengali" +msgstr "孟加拉文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:125 +msgid "Gurmukhi" +msgstr "古爾穆基文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:129 +msgid "Gujarati" +msgstr "古吉拉特文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:133 +msgid "Oriya" +msgstr "歐利亞文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:137 +msgid "Tamil" +msgstr "泰米爾文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:141 +msgid "Telugu" +msgstr "泰盧固文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:145 +msgid "Kannada" +msgstr "卡納達文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:149 +msgid "Malayalam" +msgstr "馬拉亞拉姆文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:153 +msgid "Sinhala" +msgstr "僧伽羅文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:157 +msgid "Thai" +msgstr "泰文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:161 +msgid "Lao" +msgstr "寮文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:165 +msgid "Tibetan" +msgstr "藏文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:169 +msgid "Myanmar" +msgstr "緬甸文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:173 +msgid "Georgian" +msgstr "喬治亞文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:177 +msgid "Hangul Jamo" +msgstr "韓文字母" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:181 +msgid "Ethiopic" +msgstr "衣索比亞文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:185 +msgid "Ethiopic Supplement" +msgstr "衣索比亞文補充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:189 +msgid "Cherokee" +msgstr "切羅基文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:193 +msgid "Unified Canadian Aboriginal Syllabics" +msgstr "統一加拿大原住民音節" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:197 +msgid "Ogham" +msgstr "歐甘文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:201 +msgid "Runic" +msgstr "盧恩文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:205 +msgid "Tagalog" +msgstr "他加祿文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:209 +msgid "Hanunoo" +msgstr "哈努諾文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:213 +msgid "Buhid" +msgstr "布希德文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:217 +msgid "Tagbanwa" +msgstr "塔格巴努亞文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:221 +msgid "Khmer" +msgstr "高棉文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:225 +msgid "Mongolian" +msgstr "蒙古文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:229 +msgid "Unified Canadian Aboriginal Syllabics Extended" +msgstr "統一加拿大原住民音節擴充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:233 +msgid "Limbu" +msgstr "林布文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:237 +msgid "Tai Le" +msgstr "傣哪文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:241 +msgid "New Tai Lue" +msgstr "新傣仂文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:245 +msgid "Khmer Symbols" +msgstr "高棉符號" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:249 +msgid "Buginese" +msgstr "布吉文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:253 +msgid "Tai Tham" +msgstr "老傣文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:257 +msgid "Combining Diacritical Marks Extended" +msgstr "組合式變音標記擴充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:261 +msgid "Balinese" +msgstr "巴厘文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:265 +msgid "Sundanese" +msgstr "巽他文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:269 +msgid "Batak" +msgstr "巴塔克文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:273 +msgid "Lepcha" +msgstr "雷布查文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:277 +msgid "Ol Chiki" +msgstr "桑塔利文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:281 +msgid "Cyrillic Extended-C" +msgstr "西里爾字擴充-C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:285 +msgid "Georgian Extended" +msgstr "喬治亞文擴充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:289 +msgid "Sundanese Supplement" +msgstr "巽他文補充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:293 +msgid "Vedic Extensions" +msgstr "吠陀梵文擴充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:297 +msgid "Phonetic Extensions" +msgstr "音標擴充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:301 +msgid "Phonetic Extensions Supplement" +msgstr "音標擴充補充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:305 +msgid "Combining Diacritical Marks Supplement" +msgstr "組合式變音標記補充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:309 +msgid "Latin Extended Additional" +msgstr "拉丁字擴充增補" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:313 +msgid "Greek Extended" +msgstr "希臘字擴充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:317 +msgid "General Punctuation" +msgstr "一般標點符號" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:321 +msgid "Superscripts and Subscripts" +msgstr "上標和下標" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:325 +msgid "Currency Symbols" +msgstr "貨幣符號" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:329 +msgid "Combining Diacritical Marks for Symbols" +msgstr "符號的組合式變音標記" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:333 +msgid "Letterlike Symbols" +msgstr "類文字符號" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:337 +msgid "Number Forms" +msgstr "數字形式" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:341 +msgid "Arrows" +msgstr "箭頭" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:345 +msgid "Mathematical Operators" +msgstr "數學運算子" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:349 +msgid "Miscellaneous Technical" +msgstr "零雜技術符號" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:353 +msgid "Control Pictures" +msgstr "控制圖案" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:357 +msgid "Optical Character Recognition" +msgstr "光學字元辨識" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:361 +msgid "Enclosed Alphanumerics" +msgstr "括圈字母數字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:365 +msgid "Box Drawing" +msgstr "方塊繪製" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:369 +msgid "Block Elements" +msgstr "區塊元件" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:373 +msgid "Geometric Shapes" +msgstr "幾何形狀" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:377 +msgid "Miscellaneous Symbols" +msgstr "零雜符號" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:381 +msgid "Dingbats" +msgstr "裝飾符號" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:385 +msgid "Miscellaneous Mathematical Symbols-A" +msgstr "零雜數學用符號-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:389 +msgid "Supplemental Arrows-A" +msgstr "補充箭號-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:393 +msgid "Braille Patterns" +msgstr "盲人點字樣式" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:397 +msgid "Supplemental Arrows-B" +msgstr "補充箭號-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:401 +msgid "Miscellaneous Mathematical Symbols-B" +msgstr "雜合數學用符號-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:405 +msgid "Supplemental Mathematical Operators" +msgstr "補充數學運算符" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:409 +msgid "Miscellaneous Symbols and Arrows" +msgstr "混合符號與鍵號" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:413 +msgid "Glagolitic" +msgstr "格拉哥里字母" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:417 +msgid "Latin Extended-C" +msgstr "拉丁字擴充-C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:421 +msgid "Coptic" +msgstr "科普特文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:425 +msgid "Georgian Supplement" +msgstr "喬治亞文補充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:429 +msgid "Tifinagh" +msgstr "提非納格字母" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:433 +msgid "Ethiopic Extended" +msgstr "衣索比亞文擴充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:437 +msgid "Cyrillic Extended-A" +msgstr "西里爾字擴充-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:441 +msgid "Supplemental Punctuation" +msgstr "補充標點符號" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:445 +msgid "CJK Radicals Supplement" +msgstr "中日韓部首補充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:449 +msgid "Kangxi Radicals" +msgstr "康熙部首" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:453 +msgid "Ideographic Description Characters" +msgstr "表意文字描述字元" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:457 +msgid "CJK Symbols and Punctuation" +msgstr "中日韓符號和標點符號" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:461 +msgid "Hiragana" +msgstr "平假名" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:465 +msgid "Katakana" +msgstr "片假名" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:469 +msgid "Bopomofo" +msgstr "注音符號" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:473 +msgid "Hangul Compatibility Jamo" +msgstr "韓文相容字母" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:477 +msgid "Kanbun" +msgstr "日本漢文訓點號" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:481 +msgid "Bopomofo Extended" +msgstr "注音符號擴充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:485 +msgid "CJK Strokes" +msgstr "中日韓筆劃部件" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:489 +msgid "Katakana Phonetic Extensions" +msgstr "片假名注音擴充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:493 +msgid "Enclosed CJK Letters and Months" +msgstr "括圈中日韓文字和月份" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:497 +msgid "CJK Compatibility" +msgstr "中日韓相容字元" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:501 +msgid "CJK Unified Ideographs Extension A" +msgstr "中日韓統一表意文字擴充 A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:505 +msgid "Yijing Hexagram Symbols" +msgstr "易經六十四卦象符號" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:509 +msgid "CJK Unified Ideographs" +msgstr "中日韓統一表意文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:513 +msgid "Yi Syllables" +msgstr "彝文音節字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:517 +msgid "Yi Radicals" +msgstr "彝文字根" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:521 +msgid "Lisu" +msgstr "老傈僳文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:525 +msgid "Vai" +msgstr "瓦伊文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:529 +msgid "Cyrillic Extended-B" +msgstr "西里爾字擴充-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:533 +msgid "Bamum" +msgstr "巴蒙文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:537 +msgid "Modifier Tone Letters" +msgstr "聲調修飾符號" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:541 +msgid "Latin Extended-D" +msgstr "拉丁字擴充-D" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:545 +msgid "Syloti Nagri" +msgstr "錫爾赫特文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:549 +msgid "Common Indic Number Forms" +msgstr "常用印度數字圖樣" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:553 +msgid "Phags-pa" +msgstr "八思巴文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:557 +msgid "Saurashtra" +msgstr "索拉什特拉文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:561 +msgid "Devanagari Extended" +msgstr "天城文擴充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:565 +msgid "Kayah Li" +msgstr "克耶文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:569 +msgid "Rejang" +msgstr "勒姜文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:573 +msgid "Hangul Jamo Extended-A" +msgstr "韓文字母擴充-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:577 +msgid "Javanese" +msgstr "爪哇文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:581 +msgid "Myanmar Extended-B" +msgstr "緬甸文擴充-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:585 +msgid "Cham" +msgstr "占文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:589 +msgid "Myanmar Extended-A" +msgstr "緬甸文擴充-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:593 +msgid "Tai Viet" +msgstr "傣端文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:597 +msgid "Meetei Mayek Extensions" +msgstr "曼尼普爾文擴充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:601 +msgid "Ethiopic Extended-A" +msgstr "衣索比亞文擴充-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:605 +msgid "Latin Extended-E" +msgstr "拉丁字擴充-E" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:609 +msgid "Cherokee Supplement" +msgstr "切羅基文補充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:613 +msgid "Meetei Mayek" +msgstr "曼尼普爾文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:617 +msgid "Hangul Syllables" +msgstr "韓文音節文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:621 +msgid "Hangul Jamo Extended-B" +msgstr "韓文字母擴充-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:625 +msgid "High Surrogates" +msgstr "高段代理區" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:629 +msgid "High Private Use Surrogates" +msgstr "高段私用代理區" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:633 +msgid "Low Surrogates" +msgstr "低段代理區" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:637 +msgid "Private Use Area" +msgstr "私用區塊" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:641 +msgid "CJK Compatibility Ideographs" +msgstr "中日韓相容表意文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:645 +msgid "Alphabetic Presentation Forms" +msgstr "字母表現形式" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:649 +msgid "Arabic Presentation Forms-A" +msgstr "阿拉伯文表現形式-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:653 +msgid "Variation Selectors" +msgstr "字形變體選取符" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:657 +msgid "Vertical Forms" +msgstr "直書形式" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:661 +msgid "Combining Half Marks" +msgstr "組合式半形符號" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:665 +msgid "CJK Compatibility Forms" +msgstr "中日韓相容形式" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:669 +msgid "Small Form Variants" +msgstr "小寫形式變體" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:673 +msgid "Arabic Presentation Forms-B" +msgstr "阿拉伯文表現形式-B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:677 +msgid "Halfwidth and Fullwidth Forms" +msgstr "半寬與全寬形式" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:681 +msgid "Specials" +msgstr "特殊區域" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:685 +msgid "Linear B Syllabary" +msgstr "線形 B 音節文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:689 +msgid "Linear B Ideograms" +msgstr "線形 B 表意文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:693 +msgid "Aegean Numbers" +msgstr "愛琴海數字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:697 +msgid "Ancient Greek Numbers" +msgstr "古希臘數字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:701 +msgid "Ancient Symbols" +msgstr "古代符號" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:705 +msgid "Phaistos Disc" +msgstr "費斯托斯泥圓盤文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:709 +msgid "Lycian" +msgstr "呂基亞文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:713 +msgid "Carian" +msgstr "卡里亞文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:717 +msgid "Coptic Epact Numbers" +msgstr "科普特潤餘數字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:721 +msgid "Old Italic" +msgstr "古意大利文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:725 +msgid "Gothic" +msgstr "歌德文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:729 +msgid "Old Permic" +msgstr "古彼爾姆文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:733 +msgid "Ugaritic" +msgstr "烏加里特楔形文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:737 +msgid "Old Persian" +msgstr "古波斯文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:741 +msgid "Deseret" +msgstr "猶他大學音標" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:745 +msgid "Shavian" +msgstr "肅伯納字母" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:749 +msgid "Osmanya" +msgstr "奥斯曼亞字母" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:753 +msgid "Osage" +msgstr "歐塞奇文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:757 +msgid "Elbasan" +msgstr "艾爾巴桑文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:761 +msgid "Caucasian Albanian" +msgstr "高加索阿爾巴尼亞文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:765 +msgid "Linear A" +msgstr "線形文字 A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:769 +msgid "Cypriot Syllabary" +msgstr "塞浦路斯音節字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:773 +msgid "Imperial Aramaic" +msgstr "規範阿拉米文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:777 +msgid "Palmyrene" +msgstr "帕爾邁拉文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:781 +msgid "Nabataean" +msgstr "納巴泰文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:785 +msgid "Hatran" +msgstr "哈坦文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:789 +msgid "Phoenician" +msgstr "腓尼基字母" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:793 +msgid "Lydian" +msgstr "呂底亞文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:797 +msgid "Meroitic Hieroglyphs" +msgstr "麥羅埃文碑銘體" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:801 +msgid "Meroitic Cursive" +msgstr "麥羅埃文通俗體" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:805 +msgid "Kharoshthi" +msgstr "佉盧字母" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:809 +msgid "Old South Arabian" +msgstr "古南阿拉伯文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:813 +msgid "Old North Arabian" +msgstr "古北阿拉伯文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:817 +msgid "Manichaean" +msgstr "摩尼教文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:821 +msgid "Avestan" +msgstr "阿維斯陀文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:825 +msgid "Inscriptional Parthian" +msgstr "帕提亞文碑銘體" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:829 +msgid "Inscriptional Pahlavi" +msgstr "巴列維文碑銘體" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:833 +msgid "Psalter Pahlavi" +msgstr "詩篇巴列維文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:837 +msgid "Old Turkic" +msgstr "古突厥文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:841 +msgid "Old Hungarian" +msgstr "古匈牙利文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:845 +msgid "Hanifi Rohingya" +msgstr "哈乃斐羅興亞文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:849 +msgid "Rumi Numeral Symbols" +msgstr "魯米數字符號" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:853 +msgid "Old Sogdian" +msgstr "古粟特字母" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:857 +msgid "Sogdian" +msgstr "粟特字母" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:861 +msgid "Elymaic" +msgstr "埃利邁文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:865 +msgid "Brahmi" +msgstr "婆羅米字母" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:869 +msgid "Kaithi" +msgstr "凱提字母" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:873 +msgid "Sora Sompeng" +msgstr "索朗桑朋文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:877 +msgid "Chakma" +msgstr "查克馬文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:881 +msgid "Mahajani" +msgstr "馬哈佳尼文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:885 +msgid "Sharada" +msgstr "夏拉達文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:889 +msgid "Sinhala Archaic Numbers" +msgstr "古僧伽羅文數字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:893 +msgid "Khojki" +msgstr "可吉文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:897 +msgid "Multani" +msgstr "穆爾坦尼文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:901 +msgid "Khudawadi" +msgstr "庫達瓦迪文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:905 +msgid "Grantha" +msgstr "帕拉瓦文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:909 +msgid "Newa" +msgstr "紐瓦文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:913 +msgid "Tirhuta" +msgstr "特忽塔文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:917 +msgid "Siddham" +msgstr "悉曇文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:921 +msgid "Modi" +msgstr "莫迪文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:925 +msgid "Mongolian Supplement" +msgstr "蒙古文補充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:929 +msgid "Takri" +msgstr "塔克里文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:933 +msgid "Ahom" +msgstr "阿洪姆文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:937 +msgid "Dogra" +msgstr "多格拉文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:941 +msgid "Warang Citi" +msgstr "瓦蘭齊地文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:945 +msgid "Nandinagari" +msgstr "南迪城文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:949 +msgid "Zanabazar Square" +msgstr "札那巴札爾方塊字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:953 +msgid "Soyombo" +msgstr "索永布文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:957 +msgid "Pau Cin Hau" +msgstr "包欽浩文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:961 +msgid "Bhaiksuki" +msgstr "比奇舒奇文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:965 +msgid "Marchen" +msgstr "象雄文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:969 +msgid "Masaram Gondi" +msgstr "馬薩拉姆共地文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:973 +msgid "Gunjala Gondi" +msgstr "古吉拉共地文字" + +# ref: https://zh.wikipedia.org/wiki/Unicode%E5%AD%97%E7%AC%A6%E5%B9%B3%E9%9D%A2%E6%98%A0%E5%B0%84 +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:977 +msgid "Makasar" +msgstr "瑪卡莎文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:981 +msgid "Tamil Supplement" +msgstr "泰米爾文補充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:985 +msgid "Cuneiform" +msgstr "楔形文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:989 +msgid "Cuneiform Numbers and Punctuation" +msgstr "楔形數字和標點符號" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:993 +msgid "Early Dynastic Cuneiform" +msgstr "古王國時期楔形文字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:997 +msgid "Egyptian Hieroglyphs" +msgstr "古埃及聖書字碑銘體" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1001 +msgid "Egyptian Hieroglyph Format Controls" +msgstr "埃及聖書體格式控制" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1005 +msgid "Anatolian Hieroglyphs" +msgstr "安那托利亞文碑銘體" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1009 +msgid "Bamum Supplement" +msgstr "巴蒙文補充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1013 +msgid "Mro" +msgstr "蒙羅文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1017 +msgid "Bassa Vah" +msgstr "巴撒符文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1021 +msgid "Pahawh Hmong" +msgstr "救世苗文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1025 +msgid "Medefaidrin" +msgstr "梅德法伊德林文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1029 +msgid "Miao" +msgstr "柏格理苗文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1033 +msgid "Ideographic Symbols and Punctuation" +msgstr "表意文字符號和標點" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1037 +msgid "Tangut" +msgstr "西夏文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1041 +msgid "Tangut Components" +msgstr "西夏文部件" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1045 +msgid "Kana Supplement" +msgstr "假名補充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1049 +msgid "Kana Extended-A" +msgstr "假名擴充-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1053 +msgid "Small Kana Extension" +msgstr "小假名擴充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1057 +msgid "Nushu" +msgstr "女書文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1061 +msgid "Duployan" +msgstr "杜普雷速記" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1065 +msgid "Shorthand Format Controls" +msgstr "速記格式控制符" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1069 +msgid "Byzantine Musical Symbols" +msgstr "拜占庭音樂符號" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1073 +msgid "Musical Symbols" +msgstr "音樂符號" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1077 +msgid "Ancient Greek Musical Notation" +msgstr "古希臘音樂譜記號" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1081 +msgid "Mayan Numerals" +msgstr "瑪雅數字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1085 +msgid "Tai Xuan Jing Symbols" +msgstr "太玄經符號" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1089 +msgid "Counting Rod Numerals" +msgstr "算籌記數式" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1093 +msgid "Mathematical Alphanumeric Symbols" +msgstr "數學用字母數字符號" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1097 +msgid "Sutton SignWriting" +msgstr "薩頓手語符號" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1101 +msgid "Glagolitic Supplement" +msgstr "格拉哥里字母補充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1105 +msgid "Nyiakeng Puachue Hmong" +msgstr "創世紀苗文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1109 +msgid "Wancho" +msgstr "萬秋文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1113 +msgid "Mende Kikakui" +msgstr "門德語奇卡奎文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1117 +msgid "Adlam" +msgstr "阿德拉姆文" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1121 +msgid "Indic Siyaq Numbers" +msgstr "印度西亞克數字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1125 +msgid "Ottoman Siyaq Numbers" +msgstr "奧斯曼西亞克數字" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1129 +msgid "Arabic Mathematical Alphabetic Symbols" +msgstr "阿拉伯文數學用字母符號" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1133 +msgid "Mahjong Tiles" +msgstr "麻將牌面" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1137 +msgid "Domino Tiles" +msgstr "西洋骨牌牌面" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1141 +msgid "Playing Cards" +msgstr "撲克牌" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1145 +msgid "Enclosed Alphanumeric Supplement" +msgstr "括圈字母數字補充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1149 +msgid "Enclosed Ideographic Supplement" +msgstr "括圈表意文字補充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1153 +msgid "Miscellaneous Symbols and Pictographs" +msgstr "雜合符號和象形圖" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1157 +msgid "Emoticons" +msgstr "表情圖示" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1161 +msgid "Ornamental Dingbats" +msgstr "裝飾雜錦圖" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1165 +msgid "Transport and Map Symbols" +msgstr "運輸和地圖符號" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1169 +msgid "Alchemical Symbols" +msgstr "煉金術符號" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1173 +msgid "Geometric Shapes Extended" +msgstr "幾何圖形擴充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1177 +msgid "Supplemental Arrows-C" +msgstr "補充箭頭-C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1181 +msgid "Supplemental Symbols and Pictographs" +msgstr "補充符號與象形圖" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1185 +msgid "Chess Symbols" +msgstr "西洋棋符號" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1189 +msgid "Symbols and Pictographs Extended-A" +msgstr "符號和象形文字擴充-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1193 +msgid "CJK Unified Ideographs Extension B" +msgstr "中日韓統一表意文字擴充 B" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1197 +msgid "CJK Unified Ideographs Extension C" +msgstr "中日韓統一表意文字擴充 C" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1201 +msgid "CJK Unified Ideographs Extension D" +msgstr "中日韓統一表意文字擴充 D" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1205 +msgid "CJK Unified Ideographs Extension E" +msgstr "中日韓統一表意文字擴充 E" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1209 +msgid "CJK Unified Ideographs Extension F" +msgstr "中日韓統一表意文字擴充 F" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1213 +msgid "CJK Compatibility Ideographs Supplement" +msgstr "中日韓相容表意文字補充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1217 +msgid "Tags" +msgstr "標籤" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1221 +msgid "Variation Selectors Supplement" +msgstr "字形變體選取符補充" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1225 +msgid "Supplementary Private Use Area-A" +msgstr "補充私用區-A" + +#. TRANSLATORS: You might refer the translations from gucharmap with +#. the following command: +#. msgmerge -C gucharmap.po ibus.po ibus.pot +#: src/ibusunicodegen.h:1229 +msgid "Supplementary Private Use Area-B" +msgstr "補充私用區-B" + +#: tools/main.vala:51 +msgid "List engine name only" +msgstr "僅列出引擎名稱" + +#: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 +msgid "Can't connect to IBus.\n" +msgstr "無法連接 IBus。\n" + +#: tools/main.vala:93 +#, c-format +msgid "language: %s\n" +msgstr "語言:%s\n" -#: ../setup/setup.ui.h:19 -msgid "Always" -msgstr "總是" +#: tools/main.vala:161 +msgid "No engine is set.\n" +msgstr "尚未設定引擎。\n" -#: ../setup/setup.ui.h:20 -msgid "Bottom left corner" -msgstr "左下角" +#: tools/main.vala:169 +msgid "Set global engine failed.\n" +msgstr "無法設定全域引擎。\n" -#: ../setup/setup.ui.h:21 -msgid "Bottom right corner" -msgstr "右下角" +#: tools/main.vala:174 +msgid "Get global engine failed.\n" +msgstr "無法取得全域引擎。\n" -#: ../setup/setup.ui.h:22 -msgid "Candidates orientation:" -msgstr "候選詞排列方向:" +#: tools/main.vala:217 +msgid "Read the system registry cache." +msgstr "讀取系統註冊快取。" -#: ../setup/setup.ui.h:23 -msgid "Custom" -msgstr "自訂" +#: tools/main.vala:219 +msgid "Read the registry cache FILE." +msgstr "讀取註冊快取 FILE。" -#: ../setup/setup.ui.h:24 -msgid "Disable:" -msgstr "停用:" +#: tools/main.vala:237 tools/main.vala:242 +msgid "The registry cache is invalid.\n" +msgstr "註冊快取無效。\n" -#: ../setup/setup.ui.h:25 -msgid "Embed preedit text in application window" -msgstr "在應用程式視窗中內嵌編輯模式" +#: tools/main.vala:257 +msgid "Write the system registry cache." +msgstr "寫入系統註冊快取。" -#: ../setup/setup.ui.h:26 -msgid "Embed the preedit text of input method in the application window" -msgstr "在應用程式視窗中內嵌輸入法的預先編輯文字" +#: tools/main.vala:259 +msgid "Write the registry cache FILE." +msgstr "寫入註冊快取 FILE。" -#: ../setup/setup.ui.h:27 -msgid "Embedded in menu" -msgstr "嵌入選單內" +#: tools/main.vala:295 +msgid "" +"Use engine schema paths instead of ibus core, which can be comma-separated " +"values." +msgstr "使用引擎基模位置取代 ibus 核心,可以透過逗號分割字串。" -#: ../setup/setup.ui.h:28 -msgid "Enable or disable:" -msgstr "啟用或停用:" +#: tools/main.vala:381 +msgid "Resetting…" +msgstr "重設中…" -#: ../setup/setup.ui.h:29 -msgid "Enable:" -msgstr "啟用:" +#: tools/main.vala:399 +msgid "Done" +msgstr "完成" -#: ../setup/setup.ui.h:30 -msgid "General" -msgstr "通用" +#: tools/main.vala:444 +msgid "Set or get engine" +msgstr "設定引擎或取得引擎" -#: ../setup/setup.ui.h:31 -msgid "Horizontal" -msgstr "水平" +#: tools/main.vala:445 +msgid "Exit ibus-daemon" +msgstr "離開 ibus-daemon" -#: ../setup/setup.ui.h:34 -msgid "Language panel position:" -msgstr "語言面板位置:" +#: tools/main.vala:446 +msgid "Show available engines" +msgstr "顯示可用的引擎" -#: ../setup/setup.ui.h:35 -msgid "Move down the selected input method in the enabled input methods" -msgstr "下移所選取的輸入法" +#: tools/main.vala:447 +msgid "(Not implemented)" +msgstr "(尚未實作)" -#: ../setup/setup.ui.h:36 -msgid "Move up the selected input method in the enabled input methods list" -msgstr "上移所選取的輸入法" +#: tools/main.vala:448 +msgid "Restart ibus-daemon" +msgstr "重新啟動 ibus-daemon" -#: ../setup/setup.ui.h:37 -msgid "Next input method:" -msgstr "下一個輸入法:" +#: tools/main.vala:449 +msgid "Show version" +msgstr "顯示版本" -#: ../setup/setup.ui.h:38 -msgid "Previous input method:" -msgstr "上一個輸入法:" +#: tools/main.vala:450 +msgid "Show the content of registry cache" +msgstr "顯示註冊快取的內容" -#: ../setup/setup.ui.h:39 -msgid "Remove the selected input method from the enabled input methods" -msgstr "從已啟用的輸入法中移除所選的輸入法" +#: tools/main.vala:451 +msgid "Create registry cache" +msgstr "建立註冊快取" -#: ../setup/setup.ui.h:40 -msgid "Set the behavior of ibus how to show or hide language bar" -msgstr "設置 ibus 如何顯示或隱藏語言列的行為" +#: tools/main.vala:452 +msgid "Print the D-Bus address of ibus-daemon" +msgstr "列印 ibus-daemon 的 D-Bus 位址" -#: ../setup/setup.ui.h:41 -msgid "Set the orientation of candidates in lookup table" -msgstr "設置查詢表單內候選字詞的排列方向" +#: tools/main.vala:453 +msgid "Show the configuration values" +msgstr "顯示組態值" -#: ../setup/setup.ui.h:44 -msgid "Show information of the selected input method" -msgstr "顯示所選取的輸入法資訊" +#: tools/main.vala:454 +msgid "Reset the configuration values" +msgstr "重設組態值" -#: ../setup/setup.ui.h:46 -msgid "Show input method's name on language bar when check the checkbox" -msgstr "當選取時在語言列上輸入法名稱" +#: tools/main.vala:456 +msgid "Save emoji on dialog to clipboard" +msgstr "將對話窗中的繪文字儲存到剪貼簿" -#: ../setup/setup.ui.h:47 -msgid "Show language panel:" -msgstr "顯示語言面板:" +#: tools/main.vala:458 +msgid "Show this information" +msgstr "顯示此資訊" -#: ../setup/setup.ui.h:48 -msgid "Start ibus on login" -msgstr "在登入時啟動 ibus" +#: tools/main.vala:464 +#, c-format +msgid "" +"Usage: %s COMMAND [OPTION...]\n" +"\n" +msgstr "" +"用法:%s COMMAND [OPTION...]\n" +"\n" -#: ../setup/setup.ui.h:49 -msgid "The shortcut keys for switching to next input method in the list" -msgstr "用來切換到清單內下一個輸入法的快捷鍵" +#: tools/main.vala:465 +msgid "Commands:\n" +msgstr "指令:\n" -#: ../setup/setup.ui.h:50 -msgid "The shortcut keys for switching to previous input method in the list" -msgstr "用來切換到清單內上一個輸入法的快捷鍵" +#: tools/main.vala:494 +#, c-format +msgid "%s is unknown command!\n" +msgstr "%s 為未知指令!\n" -#: ../setup/setup.ui.h:52 -msgid "Top left corner" -msgstr "左上角" +#: ui/gtk3/emojier.vala:233 +msgid "Favorites" +msgstr "喜愛" -#: ../setup/setup.ui.h:53 -msgid "Top right corner" -msgstr "右上角" +#: ui/gtk3/emojier.vala:234 +msgid "Others" +msgstr "其他" -#: ../setup/setup.ui.h:54 -msgid "Use custom font:" -msgstr "使用自訂字型:" +#: ui/gtk3/emojier.vala:235 +msgid "Open Unicode choice" +msgstr "開啟 Unicode 選擇" -#: ../setup/setup.ui.h:57 -msgid "Vertical" -msgstr "垂直" +#: ui/gtk3/emojier.vala:994 +msgid "Bring back emoji choice" +msgstr "返回繪文字選擇" + +#: ui/gtk3/emojier.vala:1096 +msgid "Page Down" +msgstr "上一頁" + +#: ui/gtk3/emojier.vala:1107 +msgid "Page Up" +msgstr "下一頁" + +#: ui/gtk3/emojier.vala:1110 +msgid "Show emoji variants" +msgstr "顯示繪文字變化" + +#: ui/gtk3/emojier.vala:1111 +msgid "Close" +msgstr "關閉" + +#: ui/gtk3/emojier.vala:1117 +msgid "Menu" +msgstr "選單" + +#: ui/gtk3/emojier.vala:1128 +msgid "Click to view a warning message" +msgstr "點擊顯示警告訊息" + +#: ui/gtk3/emojier.vala:1172 +msgid "Loading a Unicode dictionary:" +msgstr "載入 Unicode 字典:" + +#: ui/gtk3/emojier.vala:1418 +#, c-format +msgid "Code point: %s" +msgstr "碼點:%s" + +#: ui/gtk3/emojier.vala:1424 +msgid "Has emoji variants" +msgstr "有繪文字變化" + +#: ui/gtk3/emojier.vala:1591 ui/gtk3/emojier.vala:1604 +#, c-format +msgid "Description: %s" +msgstr "描述:%s" + +#: ui/gtk3/emojier.vala:1591 +msgid "None" +msgstr "無" + +#: ui/gtk3/emojier.vala:1615 +#, c-format +msgid "Annotations: %s" +msgstr "註釋:%s" + +#: ui/gtk3/emojier.vala:1641 +#, c-format +msgid "Name: %s" +msgstr "名稱:%s" + +#: ui/gtk3/emojier.vala:1649 +#, c-format +msgid "Alias: %s" +msgstr "別名:%s" + +#: ui/gtk3/emojier.vala:2139 ui/gtk3/ibus-extension-gtk3.desktop.in:3 +#: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 +msgid "Emoji Choice" +msgstr "繪文字選擇" + +#: ui/gtk3/emojier.vala:2141 +msgid "Unicode Choice" +msgstr "Unicode 選擇" + +#: ui/gtk3/emojier.vala:2429 +msgid "" +"Failed to get the current text application. Please re-focus your " +"application. E.g. Press Esc key several times to release the emoji typing " +"mode, click your desktop and click your text application again." +msgstr "" +"無法取得目前的文字應用程式,請重新取回您應用程式的焦點。例如按幾次 Esc 退出繪" +"文字輸入模式後,按一下桌面再重按您的文字應用程式一次。" + +#: ui/gtk3/emojierapp.vala:58 +msgid "Canceled to choose an emoji." +msgstr "已取消繪文字的選擇。" + +#: ui/gtk3/emojierapp.vala:93 +msgid "Copied an emoji to your clipboard." +msgstr "已將繪文字複製到您的剪貼簿。" + +#. TRANSLATORS: "FONT" should be capital and translatable. +#. * It's used for an argument command --font=FONT +#. +#: ui/gtk3/emojierapp.vala:114 +msgid "\"FONT\" for emoji characters on emoji dialog" +msgstr "繪文字對話盒之繪文字字元用「FONT」字型" + +#: ui/gtk3/emojierapp.vala:115 +msgid "FONT" +msgstr "FONT" + +#. TRANSLATORS: "LANG" should be capital and translatable. +#. * It's used for an argument command --lang=LANG +#. +#: ui/gtk3/emojierapp.vala:120 +msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" +msgstr "繪文字對話盒的「LANG」語言註解。例:「en」" + +#: ui/gtk3/emojierapp.vala:121 +msgid "LANG" +msgstr "LANG" + +#: ui/gtk3/emojierapp.vala:123 +msgid "Emoji annotations can be match partially" +msgstr "可以部分符合繪文字註解" + +#: ui/gtk3/emojierapp.vala:127 +msgid "Match with the length of the specified integer" +msgstr "符合指定整數長度" + +#: ui/gtk3/emojierapp.vala:131 +msgid "Match with the condition of the specified integer" +msgstr "符合指定整數的條件" + +#: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 +msgid "IBus Panel" +msgstr "IBus 面板" + +#: ui/gtk3/panel.vala:1095 +msgid "IBus is an intelligent input bus for Linux/Unix." +msgstr "IBus 為 Linux/Unix 上的智慧型輸入法框架。" + +#: ui/gtk3/panel.vala:1099 +msgid "translator-credits" +msgstr "" +"Ding-Yi Chen 陳定彞 , 2009.\n" +"Cheng-Chia Tseng , 2010-17.\n" +"Yi-Jyun Pan , 2019-20." + +#: ui/gtk3/panel.vala:1118 +msgid "Preferences" +msgstr "偏好設定" + +#: ui/gtk3/panel.vala:1144 +msgid "Restart" +msgstr "重新啟動" + +#: ui/gtk3/panel.vala:1148 +msgid "Quit" +msgstr "結束" -#: ../setup/setup.ui.h:58 -msgid "When active" -msgstr "當啟用時" +#. Translators: If your locale is RTL, the msgstr is "default:RTL". +#. * Otherwise the msgstr is "default:LTR". +#: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 +msgid "default:LTR" +msgstr "default:LTR" diff --git a/portal/Makefile.am b/portal/Makefile.am new file mode 100644 index 000000000..d1e2051ae --- /dev/null +++ b/portal/Makefile.am @@ -0,0 +1,96 @@ +# vim:set noet ts=4: +# +# ibus - The Input Bus +# +# Copyright (c) 2007-2013 Peng Huang +# Copyright (c) 2007-2013 Red Hat, Inc. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA + +NULL = + +libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la + +AM_CPPFLAGS = \ + -I$(top_srcdir)/src \ + -I$(top_builddir)/src \ + $(NULL) + +AM_CFLAGS = \ + @GLIB2_CFLAGS@ \ + @GIO2_CFLAGS@ \ + @GTHREAD2_CFLAGS@ \ + -DG_LOG_DOMAIN=\"IBUS\" \ + -DPKGDATADIR=\"$(pkgdatadir)\" \ + -DLIBEXECDIR=\"$(libexecdir)\" \ + -DBINDIR=\"@bindir@\" \ + -DIBUS_DISABLE_DEPRECATED \ + $(NULL) +AM_LDADD = \ + @GOBJECT2_LIBS@ \ + @GLIB2_LIBS@ \ + @GIO2_LIBS@ \ + @GTHREAD2_LIBS@ \ + $(libibus) \ + $(NULL) + +ibus_dbus_built_sources = ibus-portal-dbus.c ibus-portal-dbus.h +BUILT_SOURCES = $(ibus_dbus_built_sources) + +libexec_PROGRAMS = ibus-portal +ibus_portal_DEPENDENCIES = \ + $(libibus) \ + $(NULL) +ibus_portal_SOURCES = \ + portal.c \ + $(ibus_dbus_built_sources) \ + $(NULL) +ibus_portal_CFLAGS = \ + $(AM_CFLAGS) \ + $(NULL) +ibus_portal_LDADD = \ + $(AM_LDADD) \ + $(NULL) + +$(libibus): + $(MAKE) -C $(top_builddir)/src + +dbusservice_in_files = org.freedesktop.portal.IBus.service.in +dbusservice_DATA = $(dbusservice_in_files:.service.in=.service) +dbusservicedir=${datadir}/dbus-1/services + +org.freedesktop.portal.IBus.service: org.freedesktop.portal.IBus.service.in + $(AM_V_GEN) sed -e "s|\@libexecdir\@|$(libexecdir)|" $< > $@.tmp && mv $@.tmp $@ + +$(ibus_dbus_built_sources) : org.freedesktop.IBus.Portal.xml + $(AM_V_GEN) $(GDBUS_CODEGEN) \ + --interface-prefix org.freedesktop.IBus. \ + --c-namespace IBusDbus \ + --generate-c-code $(builddir)/ibus-portal-dbus \ + $^ \ + $(NULL) + +EXTRA_DIST = \ + $(dbusservice_in_files) \ + org.freedesktop.IBus.Portal.xml \ + $(NULL) + +CLEANFILES = \ + $(dbusservice_DATA) \ + $(NULL) + + +-include $(top_srcdir)/git.mk diff --git a/portal/org.freedesktop.IBus.Portal.xml b/portal/org.freedesktop.IBus.Portal.xml new file mode 100644 index 000000000..376ad424d --- /dev/null +++ b/portal/org.freedesktop.IBus.Portal.xml @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/portal/org.freedesktop.portal.IBus.service.in b/portal/org.freedesktop.portal.IBus.service.in new file mode 100644 index 000000000..47ae9ffcb --- /dev/null +++ b/portal/org.freedesktop.portal.IBus.service.in @@ -0,0 +1,3 @@ +[D-BUS Service] +Name=org.freedesktop.portal.IBus +Exec=@libexecdir@/ibus-portal diff --git a/portal/portal.c b/portal/portal.c new file mode 100644 index 000000000..c2e4fc7f4 --- /dev/null +++ b/portal/portal.c @@ -0,0 +1,711 @@ +/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ +/* vim:set et sts=4: */ +/* ibus - The Input Bus + * Copyright (C) 2017-2021 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "ibus-portal-dbus.h" + +typedef struct _IBusPortal IBusPortal; +typedef struct _IBusPortalClass IBusPortalClass; +typedef struct _IBusPortalContext IBusPortalContext; +typedef struct _IBusPortalContextClass IBusPortalContextClass; + +struct _IBusPortalContext +{ + IBusDbusInputContextSkeleton parent_instance; + IBusInputContext *context; + guint id; + char *owner; + char *object_path; + IBusDbusService *service; +}; + +struct _IBusPortalContextClass +{ + IBusDbusInputContextSkeletonClass parent_class; +}; + +struct _IBusPortal +{ + IBusDbusPortalSkeleton parent_instance; + +}; + +struct _IBusPortalClass +{ + IBusDbusPortalSkeletonClass parent_class; +}; + +enum +{ + PROP_CONTENT_TYPE = 1, + PROP_CLIENT_COMMIT_PREEDIT, + N_PROPERTIES +}; + +static GMainLoop *loop = NULL; +static IBusBus *ibus_bus; +static IBusPortal *ibus_portal = NULL; +static gboolean opt_verbose; +static gboolean opt_replace; + +static GList *all_contexts = NULL; + +static guint next_context_id; + +GType ibus_portal_context_get_type (void) G_GNUC_CONST; +static void ibus_portal_context_iface_init (IBusDbusInputContextIface *iface); + +static void portal_context_g_signal (GDBusProxy *proxy, + const gchar *sender_name, + const gchar *signal_name, + GVariant *parameters, + IBusPortalContext *portal_context); + +G_DEFINE_TYPE_WITH_CODE (IBusPortalContext, + ibus_portal_context, + IBUS_DBUS_TYPE_INPUT_CONTEXT_SKELETON, + G_IMPLEMENT_INTERFACE (IBUS_DBUS_TYPE_INPUT_CONTEXT, + ibus_portal_context_iface_init)); + +static void +_forward_method_cb (GObject *source_object, + GAsyncResult *res, + gpointer user_data) +{ + GDBusMethodInvocation *invocation = user_data; + GError *error = NULL; + + GVariant *variant = g_dbus_proxy_call_finish ((GDBusProxy *) source_object, + res, &error); + if (variant == NULL) { + g_dbus_method_invocation_return_gerror (invocation, error); + g_error_free (error); + return; + } + + g_dbus_method_invocation_return_value (invocation, variant); +} + +static gboolean +_forward_method (IBusDbusInputContext *object, + GDBusMethodInvocation *invocation) +{ + IBusPortalContext *portal_context = (IBusPortalContext *)object; + GDBusMessage *message = g_dbus_method_invocation_get_message (invocation); + + g_dbus_proxy_call (G_DBUS_PROXY (portal_context->context), + g_dbus_method_invocation_get_method_name (invocation), + g_dbus_message_get_body (message), + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, /* cancellable */ + _forward_method_cb, invocation); + return TRUE; +} + +static gboolean +ibus_dbus_context_cancel_hand_writing (IBusDbusInputContext *object, + GDBusMethodInvocation *invocation, + guint arg_n_strokes) +{ + return _forward_method (object, invocation); +} + +static gboolean +ibus_dbus_context_focus_in (IBusDbusInputContext *object, + GDBusMethodInvocation *invocation) +{ + return _forward_method (object, invocation); +} + +static gboolean +ibus_dbus_context_focus_out (IBusDbusInputContext *object, + GDBusMethodInvocation *invocation) +{ + return _forward_method (object, invocation); +} + +static gboolean +ibus_dbus_context_get_engine (IBusDbusInputContext *object, + GDBusMethodInvocation *invocation) +{ + return _forward_method (object, invocation); +} + +static gboolean +ibus_dbus_context_process_hand_writing_event (IBusDbusInputContext *object, + GDBusMethodInvocation *invocation, + GVariant + *arg_coordinates) +{ + return _forward_method (object, invocation); +} + +static gboolean +ibus_dbus_context_process_key_event (IBusDbusInputContext *object, + GDBusMethodInvocation *invocation, + guint arg_keyval, + guint arg_keycode, + guint arg_state) +{ + return _forward_method (object, invocation); +} + +static gboolean +ibus_dbus_context_property_activate (IBusDbusInputContext *object, + GDBusMethodInvocation *invocation, + const gchar *arg_name, + guint arg_state) +{ + return _forward_method (object, invocation); +} + +static gboolean +ibus_dbus_context_reset (IBusDbusInputContext *object, + GDBusMethodInvocation *invocation) +{ + return _forward_method (object, invocation); +} + +static gboolean +ibus_dbus_context_set_capabilities (IBusDbusInputContext *object, + GDBusMethodInvocation *invocation, + guint arg_caps) +{ + return _forward_method (object, invocation); +} + +static gboolean +ibus_dbus_context_set_cursor_location (IBusDbusInputContext *object, + GDBusMethodInvocation *invocation, + gint arg_x, + gint arg_y, + gint arg_w, + gint arg_h) +{ + return _forward_method (object, invocation); +} + +static gboolean +ibus_dbus_context_set_cursor_location_relative (IBusDbusInputContext *object, + GDBusMethodInvocation + *invocation, + gint arg_x, + gint arg_y, + gint arg_w, + gint arg_h) +{ + return _forward_method (object, invocation); +} + +static gboolean +ibus_dbus_context_set_engine (IBusDbusInputContext *object, + GDBusMethodInvocation *invocation, + const gchar *arg_name) +{ + return _forward_method (object, invocation); +} + +static gboolean +ibus_dbus_context_set_surrounding_text (IBusDbusInputContext *object, + GDBusMethodInvocation *invocation, + GVariant *arg_text, + guint arg_cursor_pos, + guint arg_anchor_pos) +{ + return _forward_method (object, invocation); +} + +static void +ibus_portal_context_iface_init (IBusDbusInputContextIface *iface) +{ + iface->handle_cancel_hand_writing = ibus_dbus_context_cancel_hand_writing; + iface->handle_focus_in = ibus_dbus_context_focus_in; + iface->handle_focus_out = ibus_dbus_context_focus_out; + iface->handle_get_engine = ibus_dbus_context_get_engine; + iface->handle_process_hand_writing_event = + ibus_dbus_context_process_hand_writing_event; + iface->handle_process_key_event = ibus_dbus_context_process_key_event; + iface->handle_property_activate = ibus_dbus_context_property_activate; + iface->handle_reset = ibus_dbus_context_reset; + iface->handle_set_capabilities = ibus_dbus_context_set_capabilities; + iface->handle_set_cursor_location = ibus_dbus_context_set_cursor_location; + iface->handle_set_cursor_location_relative = + ibus_dbus_context_set_cursor_location_relative; + iface->handle_set_engine = ibus_dbus_context_set_engine; + iface->handle_set_surrounding_text = ibus_dbus_context_set_surrounding_text; +} + +static void +ibus_portal_context_init (IBusPortalContext *portal_context) +{ +} + +static void +ibus_portal_context_finalize (GObject *object) +{ + IBusPortalContext *portal_context = (IBusPortalContext *)object; + + all_contexts = g_list_remove (all_contexts, portal_context); + + g_dbus_interface_skeleton_unexport ( + G_DBUS_INTERFACE_SKELETON (portal_context->service)); + g_dbus_interface_skeleton_unexport ( + G_DBUS_INTERFACE_SKELETON (portal_context)); + + g_free (portal_context->owner); + g_free (portal_context->object_path); + g_object_unref (portal_context->service); + + g_signal_handlers_disconnect_by_func ( + portal_context->context, + G_CALLBACK(portal_context_g_signal), + portal_context); + g_object_unref (portal_context->context); + + G_OBJECT_CLASS (ibus_portal_context_parent_class)->finalize (object); +} + +static void +ibus_portal_context_set_property (IBusPortalContext *portal_context, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + switch (prop_id) { + case PROP_CONTENT_TYPE: + g_dbus_proxy_call (G_DBUS_PROXY (portal_context->context), + "org.freedesktop.DBus.Properties.Set", + g_variant_new ("(ssv)", + IBUS_INTERFACE_INPUT_CONTEXT, + "ContentType", + g_value_get_variant (value)), + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, /* cancellable */ + NULL, /* callback */ + NULL /* user_data */ + ); + break; + case PROP_CLIENT_COMMIT_PREEDIT: + g_dbus_proxy_call (G_DBUS_PROXY (portal_context->context), + "org.freedesktop.DBus.Properties.Set", + g_variant_new ("(ssv)", + IBUS_INTERFACE_INPUT_CONTEXT, + "ClientCommitPreedit", + g_value_get_variant (value)), + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, /* cancellable */ + NULL, /* callback */ + NULL /* user_data */ + ); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (portal_context, prop_id, pspec); + } +} + +static void +ibus_portal_context_get_property (IBusPortalContext *portal_context, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + switch (prop_id) { + case PROP_CONTENT_TYPE: + case PROP_CLIENT_COMMIT_PREEDIT: + g_warning ("No support for setting content type"); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (portal_context, prop_id, pspec); + } +} + +static gboolean +ibus_portal_context_g_authorize_method (GDBusInterfaceSkeleton *interface, + GDBusMethodInvocation *invocation) +{ + IBusPortalContext *portal_context = (IBusPortalContext *)interface; + + if (g_strcmp0 (g_dbus_method_invocation_get_sender (invocation), + portal_context->owner) == 0) { + return TRUE; + } + + g_dbus_method_invocation_return_error (invocation, + G_DBUS_ERROR, + G_DBUS_ERROR_FAILED, + "Access denied"); + return FALSE; +} + + +static void +ibus_portal_context_class_init (IBusPortalContextClass *klass) +{ + GObjectClass *gobject_class; + GDBusInterfaceSkeletonClass *skeleton_class; + + gobject_class = G_OBJECT_CLASS (klass); + gobject_class->finalize = ibus_portal_context_finalize; + gobject_class->set_property = + (GObjectSetPropertyFunc) ibus_portal_context_set_property; + gobject_class->get_property = + (GObjectGetPropertyFunc) ibus_portal_context_get_property; + + skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS(klass); + skeleton_class->g_authorize_method = ibus_portal_context_g_authorize_method; + + ibus_dbus_input_context_override_properties (gobject_class, + PROP_CONTENT_TYPE); +} + +static void +portal_context_g_signal (GDBusProxy *proxy, + const gchar *sender_name, + const gchar *signal_name, + GVariant *parameters, + IBusPortalContext *portal_context) +{ + GError *error = NULL; + GDBusConnection *connection; + + if (g_strcmp0 (sender_name, IBUS_SERVICE_IBUS) != 0) + return; + + connection = g_dbus_interface_skeleton_get_connection ( + G_DBUS_INTERFACE_SKELETON (portal_context)); + if (!g_dbus_connection_emit_signal (connection, + portal_context->owner, + portal_context->object_path, + IBUS_INTERFACE_INPUT_CONTEXT, + signal_name, + parameters, + &error)) { + g_warning ("Unable to emit signal %s: %s", signal_name, error->message); + g_error_free (error); + } + + g_signal_stop_emission_by_name (proxy, "g-signal"); +} + +static gboolean +ibus_portal_context_handle_destroy (IBusDbusService *object, + GDBusMethodInvocation *invocation, + IBusPortalContext *portal_context) +{ + g_object_unref (portal_context); + return FALSE; +} + +static IBusPortalContext * +ibus_portal_context_new (IBusInputContext *context, + GDBusConnection *connection, + const char *owner, + GError **error) +{ + IBusPortalContext *portal_context = + g_object_new (ibus_portal_context_get_type (), NULL); + + g_signal_connect (context, + "g-signal", + G_CALLBACK(portal_context_g_signal), + portal_context); + + portal_context->id = ++next_context_id; + portal_context->context = g_object_ref (context); + portal_context->owner = g_strdup (owner); + portal_context->object_path = + g_strdup_printf (IBUS_PATH_INPUT_CONTEXT, portal_context->id); + portal_context->service = ibus_dbus_service_skeleton_new (); + + g_signal_connect (portal_context->service, + "handle-destroy", + G_CALLBACK (ibus_portal_context_handle_destroy), + portal_context); + + if (!g_dbus_interface_skeleton_export ( + G_DBUS_INTERFACE_SKELETON (portal_context->service), + connection, portal_context->object_path, + error) || + !g_dbus_interface_skeleton_export ( + G_DBUS_INTERFACE_SKELETON (portal_context), + connection, portal_context->object_path, + error)) { + g_object_unref (portal_context); + return NULL; + } + + all_contexts = g_list_prepend (all_contexts, portal_context); + + return portal_context; +} + +GType ibus_portal_get_type (void) G_GNUC_CONST; +static void ibus_portal_iface_init (IBusDbusPortalIface *iface); + +G_DEFINE_TYPE_WITH_CODE (IBusPortal, ibus_portal, + IBUS_DBUS_TYPE_PORTAL_SKELETON, + G_IMPLEMENT_INTERFACE (IBUS_DBUS_TYPE_PORTAL, + ibus_portal_iface_init)); + + +static void +create_input_context_done (IBusBus *bus, + GAsyncResult *res, + GDBusMethodInvocation *invocation) +{ + GError *error = NULL; + IBusInputContext *context; + IBusPortalContext *portal_context; + + context = ibus_bus_create_input_context_async_finish (ibus_bus, + res, + &error); + if (context == NULL) { + g_dbus_method_invocation_return_gerror (invocation, error); + g_error_free (error); + return; + } + + portal_context = ibus_portal_context_new ( + context, + g_dbus_method_invocation_get_connection (invocation), + g_dbus_method_invocation_get_sender (invocation), + &error); + g_object_unref (context); + + if (portal_context == NULL) { + g_dbus_method_invocation_return_gerror (invocation, error); + g_error_free (error); + return; + } + + ibus_dbus_portal_complete_create_input_context ( + IBUS_DBUS_PORTAL(ibus_portal), + invocation, portal_context->object_path); +} + +static gboolean +ibus_portal_handle_create_input_context (IBusDbusPortal *object, + GDBusMethodInvocation *invocation, + const gchar *arg_client_name) +{ + ibus_bus_create_input_context_async ( + ibus_bus, + arg_client_name, -1, + NULL, + (GAsyncReadyCallback)create_input_context_done, + invocation); + return TRUE; +} + +static void +ibus_portal_iface_init (IBusDbusPortalIface *iface) +{ + iface->handle_create_input_context = + ibus_portal_handle_create_input_context; +} + +static void +ibus_portal_init (IBusPortal *portal) +{ +} + +static void +ibus_portal_class_init (IBusPortalClass *klass) +{ +} + + +static void +show_version_and_quit (void) +{ + g_print ("%s - Version %s\n", g_get_application_name (), VERSION); + exit (EXIT_SUCCESS); +} + +static const GOptionEntry entries[] = +{ + { "version", 'V', G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK, + show_version_and_quit, "Show the application's version.", NULL }, + { "verbose", 'v', 0, G_OPTION_ARG_NONE, + &opt_verbose, "verbose.", NULL }, + { "replace", 'r', 0, G_OPTION_ARG_NONE, + &opt_replace, "Replace.", NULL }, + { NULL }, +}; + +static void +on_bus_acquired (GDBusConnection *connection, + const gchar *name, + gpointer user_data) +{ + GError *error = NULL; + + ibus_portal = g_object_new (ibus_portal_get_type (), NULL); + + if (!g_dbus_interface_skeleton_export ( + G_DBUS_INTERFACE_SKELETON (ibus_portal), + connection, + IBUS_PATH_IBUS, + &error)) { + g_warning ("Error exporting portal: %s", error->message); + g_error_free (error); + return; + } +} + +static void +on_name_acquired (GDBusConnection *connection, + const gchar *name, + gpointer user_data) +{ +} + +static void +on_name_lost (GDBusConnection *connection, + const gchar *name, + gpointer user_data) +{ + g_main_loop_quit (loop); +} + +static void +name_owner_changed (GDBusConnection *connection, + const gchar *sender_name, + const gchar *object_path, + const gchar *interface_name, + const gchar *signal_name, + GVariant *parameters, + gpointer user_data) +{ + const char *name, *from, *to; + + g_variant_get (parameters, "(sss)", &name, &from, &to); + + if (name[0] == ':' && + g_strcmp0 (name, from) == 0 && + g_strcmp0 (to, "") == 0) + { + GList *l, *next; + /* Client disconnected, free any input contexts it may have */ + for (l = all_contexts; l != NULL; l = next) { + IBusPortalContext *portal_context = l->data; + next = l->next; + + if (g_strcmp0 (portal_context->owner, name) == 0) { + g_object_unref (portal_context); + } + } + } +} + +static void +_bus_disconnected_cb (IBusBus *ibusbus) +{ + g_main_loop_quit (loop); +} + +gint +main (gint argc, gchar **argv) +{ + GDBusConnection *session_bus = NULL; + guint owner_id; + + setlocale (LC_ALL, ""); + + GOptionContext *context = g_option_context_new ("- ibus daemon"); + g_option_context_add_main_entries (context, entries, "ibus-daemon"); + + GError *error = NULL; + if (!g_option_context_parse (context, &argc, &argv, &error)) { + g_printerr ("Option parsing failed: %s\n", error->message); + g_error_free (error); + exit (-1); + } + + errno = 0; + /* Avoid even loading gvfs to avoid accidental confusion */ + if (!g_setenv ("GIO_USE_VFS", "local", TRUE)) + g_warning ("Failed setenv %s", strerror (errno)); + + ibus_init (); + + ibus_set_log_handler (opt_verbose); + + ibus_bus = ibus_bus_new (); + if (!ibus_bus_is_connected (ibus_bus)) { + g_printerr ("Not connected to the ibus bus\n"); + exit (1); + } + + g_signal_connect (ibus_bus, "disconnected", + G_CALLBACK (_bus_disconnected_cb), NULL); + + loop = g_main_loop_new (NULL, FALSE); + + session_bus = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error); + if (session_bus == NULL) { + g_printerr ("No session bus: %s", error->message); + exit (-1); + } + + g_dbus_connection_signal_subscribe (session_bus, + "org.freedesktop.DBus", + "org.freedesktop.DBus", + "NameOwnerChanged", + "/org/freedesktop/DBus", + NULL, + G_DBUS_SIGNAL_FLAGS_NONE, + name_owner_changed, + NULL, NULL); + + owner_id = g_bus_own_name (G_BUS_TYPE_SESSION, + IBUS_SERVICE_PORTAL, + G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT | + (opt_replace ? G_BUS_NAME_OWNER_FLAGS_REPLACE + : 0), + on_bus_acquired, + on_name_acquired, + on_name_lost, + NULL, + NULL); + + g_main_loop_run (loop); + + g_bus_unown_name (owner_id); + g_main_loop_unref (loop); + + return 0; +} diff --git a/setup/Makefile.am b/setup/Makefile.am index 9618d7fae..34c8f1360 100644 --- a/setup/Makefile.am +++ b/setup/Makefile.am @@ -2,60 +2,84 @@ # # ibus - The Input Bus # -# Copyright (c) 2007-2010 Peng Huang -# Copyright (c) 2007-2010 Red Hat, Inc. +# Copyright (c) 2007-2014 Peng Huang +# Copyright (c) 2015-2019 Takao Fujiwara +# Copyright (c) 2007-2019 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA ibussetup_PYTHON = \ - main.py \ - i18n.py \ - icon.py \ - enginecombobox.py \ - enginetreeview.py \ - engineabout.py \ - keyboardshortcut.py \ - $(NULL) + emojilang.py \ + enginecombobox.py \ + enginedialog.py \ + enginetreeview.py \ + engineabout.py \ + i18n.py \ + icon.py \ + keyboardshortcut.py \ + main.py \ + $(NULL) ibussetup_DATA = \ - setup.ui \ - $(NULL) + setup.ui \ + $(NULL) bin_SCRIPTS = ibus-setup ibussetupdir = $(pkgdatadir)/setup -desktop_in_files = ibus-setup.desktop.in -desktop_DATA = $(desktop_in_files:.desktop.in=.desktop) +ibus-setup: ibus-setup.in + $(AM_V_GEN) sed -e "s|\@datarootdir\@|$(datarootdir)|g" \ + -e "s|\@localedir\@|$(localedir)|g" \ + -e "s|\@libexecdir\@|$(libexecdir)|g" \ + -e "s|\@prefix\@|$(prefix)|g" \ + -e "s|\@PYTHON\@|$(PYTHON)|g" \ + $< > $@.tmp && \ + mv $@.tmp $@ + +desktop_notrans_files = ibus-setup.desktop +desktop_DATA = org.freedesktop.IBus.Setup.desktop desktopdir = $(datadir)/applications -@INTLTOOL_DESKTOP_RULE@ +org.freedesktop.IBus.Setup.desktop: ibus-setup.desktop + $(AM_V_GEN) $(MSGFMT) --desktop --template $< -d $(top_srcdir)/po -o $@ + +man_one_in_files = ibus-setup.1.in +man_one_files = $(man_one_in_files:.1.in=.1) +man_one_DATA =$(man_one_files:.1=.1.gz) +man_onedir = $(mandir)/man1 +%.1: %.1.in + $(AM_V_GEN) sed \ + -e 's|@VERSION[@]|$(VERSION)|g' $< > $@.tmp && \ + mv $@.tmp $@ +%.1.gz: %.1 + $(AM_V_GEN) gzip -c $< > $@.tmp && mv $@.tmp $@ CLEANFILES = \ - *.pyc \ - ibus-setup \ - $(NULL) + $(desktop_DATA) \ + $(man_one_DATA) \ + $(man_one_files) \ + *.pyc \ + ibus-setup \ + $(NULL) EXTRA_DIST = \ - ibus-setup.in \ - setup.ui \ - ibus-setup.desktop.in \ - $(NULL) - -DISTCLEANFILES = \ - $(desktop_DATA) \ - $(NULL) + $(desktop_notrans_files) \ + $(man_one_in_files) \ + ibus-setup.in \ + setup.ui \ + $(NULL) test: $(ENV_IBUS_TEST) \ diff --git a/setup/emojilang.py b/setup/emojilang.py new file mode 100644 index 000000000..58757d869 --- /dev/null +++ b/setup/emojilang.py @@ -0,0 +1,348 @@ +# vim:set et sts=4 sw=4: +# -*- coding: utf-8 -*- +# +# ibus - The Input Bus +# +# Copyright (c) 2017-2019 Takao Fujiwara +# Copyright (c) 2017 Red Hat, Inc. +# +# 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 2 of the +# License, or (at your option) any later version. +# +# 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 . + +# for python2 +from __future__ import print_function + +__all__ = ( + "EmojiLangButton", +); + +from gi.repository import Gtk +from gi.repository import GLib +from gi.repository import GObject +from gi.repository import IBus + +import functools +import gettext +import i18n +import locale +import os + +from icon import load_icon +from i18n import _, N_ + +ROW_TRAVEL_DIRECTION_NONE, \ +ROW_TRAVEL_DIRECTION_FORWARD, \ +ROW_TRAVEL_DIRECTION_BACKWARD = list(range(3)) + +class LanguageString: + def __init__(self, id, trans = ""): + self.id = id + self.trans = trans + +class EmojiLangChooser(Gtk.Dialog): + __gtype_name__ = 'EmojiLangChooser' + __initial_languages = [ IBus.get_language_name('en_US'), + IBus.get_language_name('en_GB'), + IBus.get_language_name('de_DE'), + IBus.get_language_name('fr_FR'), + IBus.get_language_name('es_ES'), + IBus.get_language_name('zh_CN'), + IBus.get_language_name('ja_JP'), + IBus.get_language_name('ru_RU'), + IBus.get_language_name('ar_EG') ] + + + def __init__(self, id = None, transient_for = None): + super(EmojiLangChooser, self).__init__( + title = _("Select a language"), + transient_for = transient_for, + resizable = True) + buttons = (_("_Cancel"), Gtk.ResponseType.CANCEL, + _("_OK"), Gtk.ResponseType.APPLY) + self.add_buttons(*buttons) + + if id == None: + id = 'en' + self.__id = id + self.__engines_for_lang = {} + self.__untrans_for_lang = {} + self.__langs = {} + self.__lang_list = [] + + self.__scrolled = Gtk.ScrolledWindow( + hscrollbar_policy = Gtk.PolicyType.NEVER, + vscrollbar_policy = Gtk.PolicyType.NEVER, + shadow_type = Gtk.ShadowType.IN, + margin_start = 6, + margin_end = 6, + margin_top = 6, + margin_bottom = 6) + self.vbox.add(self.__scrolled) + viewport = Gtk.Viewport() + self.__scrolled.add(viewport) + self.__list = Gtk.ListBox(vexpand = True, + halign = Gtk.Align.FILL, + valign = Gtk.Align.FILL) + viewport.add(self.__list) + + self.__adjustment = self.__scrolled.get_vadjustment() + self.__list.set_adjustment(self.__adjustment) + self.__list.set_filter_func(self.__list_filter, None) + self.__list.connect('row-activated', self.__row_activated) + + self.__showing_extra = False + self.__more_row = self.__more_row_new() + self.__load_lang_list() + self.__show_lang_rows() + self.show_all() + + + def __load_lang_list(self): + dictdir = os.path.dirname(__file__) + '/../dicts' + for filename in os.listdir(dictdir): + suffix = '.dict' + if not filename.endswith(suffix): + continue + lang_id = filename[0:len(filename) - len(suffix)] + prefix = 'emoji-' + if not lang_id.startswith(prefix): + continue + lang_id = lang_id[len(prefix):] + lang = LanguageString(lang_id, IBus.get_language_name(lang_id)) + self.__lang_list.append(lang) + if len(self.__lang_list) == 0: + print("Not found dicts in %s" % dictdir, file=sys.stderr) + lang = LanguageString('en', IBus.get_language_name('en')) + self.__lang_list.append(lang) + return + + def cmp_lang(a, b): + label_a = a.trans + a.id + label_b = b.trans + b.id + return (label_a > label_b) - (label_a < label_b) + + self.__lang_list.sort(key = functools.cmp_to_key(cmp_lang)) + + loc = locale.getlocale()[0] + # None on C locale + if loc == None or loc == 'C': + loc = 'en_US' + index = 0 + for lang in self.__lang_list: + # move current language to the first place + if lang.trans == IBus.get_language_name(loc): + self.__lang_list.remove(lang) + self.__lang_list.insert(index, lang) + index += 1 + + for lang in self.__lang_list: + # move English to the second place + if lang.trans == IBus.get_language_name('en'): + self.__lang_list.remove(lang) + self.__lang_list.insert(index, lang) + index += 1 + + + def __list_filter(self, row, data): + if row.id == self.__id: + self.__list.select_row(row) + if row == self.__more_row: + return not self.__showing_extra + if not self.__showing_extra and row.is_extra: + return False + return True + + + def __row_activated(self, box, row): + if row == self.__more_row: + self.__show_more() + return + self.__id = row.id + + + def __padded_label_new(self, text, icon, alignment, direction): + hbox = Gtk.Box(orientation = Gtk.Orientation.HORIZONTAL) + + if direction == ROW_TRAVEL_DIRECTION_BACKWARD: + rtl = (Gtk.Widget.get_default_direction() == \ + Gtk.TextDirection.RTL) + if rtl: + arrow = Gtk.Image.new_from_icon_name( + 'go-previous-rtl-symbolic', Gtk.IconSize.MENU) + else: + arrow = Gtk.Image.new_from_icon_name( + 'go-previous-symbolic', Gtk.IconSize.MENU) + hbox.pack_start(arrow, False, True, 0) + + if icon != None: + pixbuf = load_icon(icon, Gtk.IconSize.LARGE_TOOLBAR) + image = Gtk.Image(pixbuf = pixbuf) + hbox.pack_start(image, False, True, 0) + + label = Gtk.Label(label = text) + label.set_halign(alignment) + label.set_valign(Gtk.Align.CENTER) + label.set_margin_start(20) + label.set_margin_end(20) + label.set_margin_top(6) + label.set_margin_bottom(6) + hbox.pack_start(label, True, True, 0) + return hbox + + + def __list_box_row_new(self, lang): + row = Gtk.ListBoxRow() + row.trans = lang.trans + row.id = lang.id + row.is_extra = False + return row + + + def __lang_row_new(self, lang, prev_lang): + row = self.__list_box_row_new(lang) + label = lang.trans + if lang.id == self.__id: + row.is_extra = False + elif prev_lang != None and label == prev_lang.trans: + label = "%s (%s)" % (lang.trans, lang.id) + row.is_extra = True + elif not self.__showing_extra and \ + lang.trans not in self.__initial_languages: + row.is_extra = True + widget = self.__padded_label_new(label, + None, + Gtk.Align.CENTER, + ROW_TRAVEL_DIRECTION_NONE) + row.add(widget) + return row + + + def __more_row_new(self): + row = Gtk.ListBoxRow() + row.id = None + hbox = Gtk.Box(orientation = Gtk.Orientation.HORIZONTAL) + row.add(hbox) + row.set_tooltip_text(_("More…")) + arrow = Gtk.Image.new_from_icon_name('view-more-symbolic', + Gtk.IconSize.MENU) + arrow.set_margin_start(20) + arrow.set_margin_end(20) + arrow.set_margin_top(6) + arrow.set_margin_bottom(6) + arrow.set_halign(Gtk.Align.CENTER) + arrow.set_valign(Gtk.Align.CENTER) + hbox.pack_start(arrow, True, True, 0) + return row + + + def __set_fixed_size(self): + if self.__scrolled.get_policy()[0] == Gtk.PolicyType.AUTOMATIC: + return + (width, height) = self.get_size() + self.set_size_request(width, height) + self.__scrolled.set_policy(Gtk.PolicyType.AUTOMATIC, + Gtk.PolicyType.AUTOMATIC) + + + def __remove_all_children(self): + for l in self.__list.get_children(): + self.__list.remove(l) + + + def __show_lang_rows(self): + self.__remove_all_children() + prev_lang = None + for lang in self.__lang_list: + row = self.__lang_row_new(lang, prev_lang) + self.__list.add(row) + prev_lang = lang + self.__list.add(self.__more_row) + self.__list.show_all() + self.__adjustment.set_value(self.__adjustment.get_lower()) + self.__list.invalidate_filter() + self.__list.set_selection_mode(Gtk.SelectionMode.SINGLE) + + + def __show_more(self): + self.__set_fixed_size() + self.__showing_extra = True + self.__list.invalidate_filter() + + + def get_selected_lang(self): + return self.__id + + +class EmojiLangButton(Gtk.Button): + __gtype_name__ = 'EmojiLangButton' + __gproperties__ = { + 'lang' : ( + str, + 'lang', + 'lang for emojo-*.dict', + 'en', + GObject.ParamFlags.READABLE | GObject.ParamFlags.WRITABLE) + } + + + def __init__(self): + super(EmojiLangButton, self).__init__() + self.__lang = '' + + + def do_get_property(self, prop): + if prop.name == 'lang': + return self.__lang + else: + raise AttributeError('unknown property %s' % prop.name) + + + def do_set_property(self, prop, value): + if prop.name == 'lang': + self.set_lang(value) + else: + raise AttributeError('unknown property %s' % prop.name) + + + def do_clicked(self): + dialog = EmojiLangChooser(id = self.__lang, + transient_for = self.get_toplevel()) + id = dialog.run() + if id != Gtk.ResponseType.APPLY: + dialog.destroy() + return + self.set_lang(dialog.get_selected_lang()) + dialog.destroy() + + + def set_lang(self, lang): + self.__lang = lang + self.notify("lang") + self.set_label(IBus.get_language_name(lang)) + + + def get_lang(self, lang): + return self.__lang + + +GObject.type_register(EmojiLangButton) + + +if __name__ == "__main__": + dialog = EmojiLangChooser() + id = dialog.run() + if id != Gtk.ResponseType.APPLY: + dialog.destroy() + import sys + sys.exit(0) + print("Selected language:", dialog.get_selected_lang()) diff --git a/setup/engineabout.py b/setup/engineabout.py index 7e2813a25..4e6a5efbf 100644 --- a/setup/engineabout.py +++ b/setup/engineabout.py @@ -2,23 +2,23 @@ # # ibus - The Input Bus # -# Copyright (c) 2007-2010 Peng Huang -# Copyright (c) 2007-2010 Red Hat, Inc. +# Copyright (c) 2007-2015 Peng Huang +# Copyright (c) 2007-2015 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA from gi.repository import IBus from gi.repository import Gdk @@ -26,19 +26,24 @@ from gi.repository import Gtk from gi.repository import Pango +import i18n + from i18n import _, N_ class EngineAbout(Gtk.Dialog): - def __init__(self, enginedesc): - self.__engine_desc = enginedesc - super(EngineAbout, self).__init__(_("About"), None, - Gtk.DialogFlags.MODAL, - (Gtk.STOCK_CLOSE, Gtk.ResponseType.CLOSE)) + def __init__(self, engine, transient_for = None): + self.__engine_desc = engine + super(EngineAbout, self).__init__( + title = _("About"), + transient_for = transient_for) + buttons = (_("_Close"), Gtk.ResponseType.CLOSE) + self.add_buttons(*buttons) self.__init_ui() def __init_ui(self): - self.set_icon_name(Gtk.STOCK_ABOUT) + # set_icon_name() cannot fallback any stock ids to the real files. + self.set_icon_name('help-about') sw = Gtk.ScrolledWindow() sw.set_shadow_type(Gtk.ShadowType.ETCHED_IN) sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC) @@ -61,7 +66,7 @@ def __fill_text_view(self): text_buffer.insert_pixbuf(iter, self.__load_icon(self.__engine_desc.get_icon())) text_buffer.insert_with_tags_by_name(iter, - "\n%s\n" % self.__engine_desc.get_longname(), + "\n%s\n" % i18n.gettext_engine_longname(self.__engine_desc), "heading", "left_margin_16") text_buffer.insert_with_tags_by_name(iter, _("Language: %s\n") % IBus.get_language_name(self.__engine_desc.get_language()), @@ -75,7 +80,7 @@ def __fill_text_view(self): text_buffer.insert_with_tags_by_name(iter, _("Description:\n"), "small", "bold", "left_margin_16") text_buffer.insert_with_tags_by_name(iter, - self.__engine_desc.get_description(), + i18n.gettext_engine_description(self.__engine_desc), "wrap_text", "left_margin_32") @@ -98,14 +103,19 @@ def __create_tags(self, text_buffer): text_buffer.create_tag("left_margin_32", left_margin=32) - def __load_icon(self, icon): + def __load_icon(self, icon_name): try: - pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale(icon, 48, 48, True) + pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale(icon_name, + 48, + 48, + True) except: theme = Gtk.IconTheme.get_default() - icon = theme.lookup_icon("ibus-engine", 48, 0) + icon = theme.lookup_icon(icon_name, 48, 0) + if icon == None: + icon = theme.lookup_icon("ibus-engine", 48, 0) if icon == None: - icon = theme.lookup_icon(Gtk.STOCK_MISSING_IMAGE, 48, 0) + icon = theme.lookup_icon("image-missing", 48, 0) pixbuf = icon.load_icon() return pixbuf diff --git a/setup/enginecombobox.py b/setup/enginecombobox.py index 8d1424b85..199ed964f 100644 --- a/setup/enginecombobox.py +++ b/setup/enginecombobox.py @@ -2,25 +2,27 @@ # # ibus - The Input Bus # -# Copyright (c) 2007-2010 Peng Huang -# Copyright (c) 2007-2010 Red Hat, Inc. +# Copyright (c) 2007-2014 Peng Huang +# Copyright (c) 2007-2014 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA import locale +import functools +import sys from gi.repository import GObject from gi.repository import Gtk @@ -65,7 +67,6 @@ def set_engines(self, engines): self.__model.set(iter1, 0, 0) langs = {} for e in engines: - print e.get_language() l = IBus.get_language_name(e.get_language()) if l == None: l = "" @@ -73,9 +74,13 @@ def set_engines(self, engines): langs[l] = [] langs[l].append(e) - keys = langs.keys() - keys.sort(locale.strcoll) - current_lang = IBus.get_language_name(locale.getlocale()[0]) + keys = list(langs.keys()) + keys.sort(key=functools.cmp_to_key(locale.strcoll)) + loc = locale.getlocale()[0] + # None on C locale + if loc == None or loc == 'C': + loc = 'en_US' + current_lang = IBus.get_language_name(loc) # move current language to the first place if current_lang in keys: keys.remove(current_lang) @@ -92,7 +97,7 @@ def cmp_engine(a, b): if a.get_rank() == b.get_rank(): return locale.strcoll(a.get_longname(), b.get_longname()) return int(b.get_rank() - a.get_rank()) - langs[l].sort(cmp_engine) + langs[l].sort(key=functools.cmp_to_key(cmp_engine)) for e in langs[l]: iter2 = self.__model.append(iter1) self.__model.set(iter2, 0, e) @@ -103,7 +108,10 @@ def cmp_engine(a, b): def __icon_cell_data_cb(self, celllayout, renderer, model, iter, data): engine = self.__model.get_value(iter, 0) - if isinstance(engine, str) or isinstance (engine, unicode): + if isinstance(engine, str): + renderer.set_property("visible", False) + renderer.set_property("sensitive", False) + elif sys.version < '3' and isinstance (engine, unicode): renderer.set_property("visible", False) renderer.set_property("sensitive", False) elif isinstance(engine, int): @@ -113,17 +121,16 @@ def __icon_cell_data_cb(self, celllayout, renderer, model, iter, data): renderer.set_property("visible", True) renderer.set_property("sensitive", True) pixbuf = load_icon(engine.get_icon(), Gtk.IconSize.LARGE_TOOLBAR) - if pixbuf == None: - pixbuf = load_icon("ibus-engine", Gtk.IconSize.LARGE_TOOLBAR) - if pixbuf == None: - pixbuf = load_icon(Gtk.STOCK_MISSING_IMAGE, - Gtk.IconSize.LARGE_TOOLBAR) renderer.set_property("pixbuf", pixbuf) def __name_cell_data_cb(self, celllayout, renderer, model, iter, data): engine = self.__model.get_value(iter, 0) - if isinstance (engine, str) or isinstance (engine, unicode): + if isinstance (engine, str): + renderer.set_property("sensitive", False) + renderer.set_property("text", engine) + renderer.set_property("weight", Pango.Weight.NORMAL) + elif sys.version < '3' and isinstance (engine, unicode): renderer.set_property("sensitive", False) renderer.set_property("text", engine) renderer.set_property("weight", Pango.Weight.NORMAL) @@ -148,7 +155,7 @@ def do_get_property(self, property): iter = self.get_active_iter() return self.get_model()[iter][0] else: - raise AttributeError, 'unknown property %s' % property.name + raise AttributeError('unknown property %s' % property.name) def get_active_engine(self): return self.get_property("active-engine") diff --git a/setup/enginedialog.py b/setup/enginedialog.py new file mode 100644 index 000000000..470f801c3 --- /dev/null +++ b/setup/enginedialog.py @@ -0,0 +1,387 @@ +# vim:set et sts=4 sw=4: +# -*- coding: utf-8 -*- +# +# ibus - The Input Bus +# +# Copyright (c) 2015 Peng Huang +# Copyright (c) 2015-2021 Takao Fujiwara +# Copyright (c) 2013-2015 Red Hat, Inc. +# +# 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 2 of the +# License, or (at your option) any later version. +# +# 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 . + +# This file is ported from +# gnome-control-center/panels/region/cc-input-chooser.c + +from gi.repository import Gtk +from gi.repository import GLib +from gi.repository import IBus + +import functools +import gettext +import i18n +import locale + +from icon import load_icon +from i18n import _, N_ + +ROW_TRAVEL_DIRECTION_NONE, \ +ROW_TRAVEL_DIRECTION_FORWARD, \ +ROW_TRAVEL_DIRECTION_BACKWARD = list(range(3)) + +class EngineDialog(Gtk.Dialog): + __gtype_name__ = 'EngineDialog' + __initial_languages = [ IBus.get_language_name('en_US'), + IBus.get_language_name('en_GB'), + IBus.get_language_name('de_DE'), + IBus.get_language_name('fr_FR'), + IBus.get_language_name('es_ES'), + IBus.get_language_name('zh_CN'), + IBus.get_language_name('ja_JP'), + IBus.get_language_name('ru_RU'), + IBus.get_language_name('ar_EG') ] + + + def __init__(self, transient_for = None): + super(EngineDialog, self).__init__( + title = _("Select an input method"), + transient_for = transient_for, + resizable = True) + buttons = (_("_Cancel"), Gtk.ResponseType.CANCEL, + _("_Add"), Gtk.ResponseType.APPLY) + self.add_buttons(*buttons) + self.set_response_sensitive(Gtk.ResponseType.APPLY, False) + + self.__engines_for_lang = {} + self.__untrans_for_lang = {} + self.__langs = {} + + self.__scrolled = Gtk.ScrolledWindow( + hscrollbar_policy = Gtk.PolicyType.NEVER, + vscrollbar_policy = Gtk.PolicyType.NEVER, + shadow_type = Gtk.ShadowType.IN, + margin_start = 6, + margin_end = 6, + margin_top = 6, + margin_bottom = 6) + self.vbox.add(self.__scrolled) + viewport = Gtk.Viewport() + self.__scrolled.add(viewport) + self.__list = Gtk.ListBox(vexpand = True, + halign = Gtk.Align.FILL, + valign = Gtk.Align.FILL) + viewport.add(self.__list) + + self.__adjustment = self.__scrolled.get_vadjustment() + self.__list.set_adjustment(self.__adjustment) + self.__list.set_filter_func(self.__list_filter, None) + self.__list.connect('row-activated', self.__row_activated) + self.__list.connect('row-selected', self.__row_selected) + + self.__showing_extra = False + self.__more_row = self.__more_row_new() + + self.__filter_timeout_id = 0 + self.__filter_word = None + self.__filter_entry = Gtk.SearchEntry(hexpand = True, + margin_start = 6, + margin_end = 6, + margin_top = 6, + margin_bottom = 6) + self.__filter_entry.set_no_show_all(True) + self.__filter_entry.connect('search-changed', self.__filter_changed) + self.vbox.add(self.__filter_entry) + + self.show_all() + + + def __list_filter(self, row, data): + if row == self.__more_row: + return not self.__showing_extra + if not self.__showing_extra and row.is_extra: + return False + if self.__filter_word == None: + return True + if row.back: + return True + + word = self.__filter_word.lower() + if word in row.name.lower(): + return True + if word in row.untrans.lower(): + return True + # Search engine name in language list + if row.lang_info: + if row.name in self.__engines_for_lang.keys(): + for row_l in self.__engines_for_lang[row.name]: + if word in row_l.name.lower(): + return True + if word in row_l.untrans.lower(): + return True + # Search language name in engine list + if not row.lang_info: + for l in self.__engines_for_lang.keys(): + if word in l.lower(): + for row_l in self.__engines_for_lang[l]: + if row.name == row_l.name: + return True + for (trans, untrans) in self.__untrans_for_lang.items(): + if word in untrans.lower(): + for row_l in self.__engines_for_lang[trans]: + if row.name == row_l.name: + return True + return False + + + def __row_activated(self, box, row): + if row == self.__more_row: + self.__show_more() + return + if row.back: + self.__show_lang_rows() + return + if row.lang_info: + self.__show_engines_for_lang(row) + return + + + def __row_selected(self, box, row): + self.set_response_sensitive(Gtk.ResponseType.APPLY, row != None) + + + def __padded_label_new(self, text, icon, alignment, direction): + hbox = Gtk.Box(orientation = Gtk.Orientation.HORIZONTAL) + + if direction == ROW_TRAVEL_DIRECTION_BACKWARD: + rtl = (Gtk.Widget.get_default_direction() == \ + Gtk.TextDirection.RTL) + if rtl: + arrow = Gtk.Image.new_from_icon_name( + 'go-previous-rtl-symbolic', Gtk.IconSize.MENU) + else: + arrow = Gtk.Image.new_from_icon_name( + 'go-previous-symbolic', Gtk.IconSize.MENU) + hbox.pack_start(arrow, False, True, 0) + + if icon != None: + pixbuf = load_icon(icon, Gtk.IconSize.LARGE_TOOLBAR) + image = Gtk.Image(pixbuf = pixbuf) + hbox.pack_start(image, False, True, 0) + + label = Gtk.Label(label = text) + label.set_halign(alignment) + label.set_valign(Gtk.Align.CENTER) + label.set_margin_start(20) + label.set_margin_end(20) + label.set_margin_top(6) + label.set_margin_bottom(6) + hbox.pack_start(label, True, True, 0) + return hbox + + + def __list_box_row_new(self, text): + row = Gtk.ListBoxRow() + row.name = text + row.is_extra = False + row.lang_info = False + row.back = False + row.untrans = '' + row.engine = None + return row + + + def __lang_row_new(self, text): + row = self.__list_box_row_new(text) + row.lang_info = True + if len(self.__untrans_for_lang) != 0: + row.untrans = self.__untrans_for_lang[text] + if not self.__showing_extra and text not in self.__initial_languages: + row.is_extra = True + widget = self.__padded_label_new(text, + None, + Gtk.Align.CENTER, + ROW_TRAVEL_DIRECTION_NONE) + row.add(widget) + return row + + + def __more_row_new(self): + row = Gtk.ListBoxRow() + hbox = Gtk.Box(orientation = Gtk.Orientation.HORIZONTAL) + row.add(hbox) + row.set_tooltip_text(_("More…")) + arrow = Gtk.Image.new_from_icon_name('view-more-symbolic', + Gtk.IconSize.MENU) + arrow.set_margin_start(20) + arrow.set_margin_end(20) + arrow.set_margin_top(6) + arrow.set_margin_bottom(6) + arrow.set_halign(Gtk.Align.CENTER) + arrow.set_valign(Gtk.Align.CENTER) + hbox.pack_start(arrow, True, True, 0) + return row + + + def __back_row_new(self, text): + row = self.__list_box_row_new(text) + row.lang_info = True + row.back = True + widget = self.__padded_label_new(text, + None, + Gtk.Align.CENTER, + ROW_TRAVEL_DIRECTION_BACKWARD) + row.add(widget) + return row + + + def __engine_row_new(self, engine): + longname = i18n.gettext_engine_longname(engine) + description = i18n.gettext_engine_description(engine) + row = self.__list_box_row_new(longname) + row.untrans = engine.get_longname() + row.rank = engine.get_rank() + row.set_tooltip_text(description) + row.engine = engine + widget = self.__padded_label_new(longname, + engine.get_icon(), + Gtk.Align.START, + ROW_TRAVEL_DIRECTION_NONE) + row.add(widget) + return row + + + def __set_fixed_size(self): + if self.__scrolled.get_policy()[0] == Gtk.PolicyType.AUTOMATIC: + return + (width, height) = self.get_size() + self.set_size_request(width, height) + self.__scrolled.set_policy(Gtk.PolicyType.AUTOMATIC, + Gtk.PolicyType.AUTOMATIC) + + + def __remove_all_children(self): + for l in self.__list.get_children(): + self.__list.remove(l) + + + def __add_engine_rows_for_lang(self, row): + lang = row.name + + def cmp_engine(a, b): + if a.rank == b.rank: + return locale.strcoll(a.name, b.name) + return int(b.rank - a.rank) + + self.__engines_for_lang[lang].sort( + key = functools.cmp_to_key(cmp_engine)) + for row in self.__engines_for_lang[lang]: + self.__list.add(row) + + + def __show_lang_rows(self): + self.__remove_all_children() + for lang in self.__langs: + row = self.__lang_row_new(lang) + self.__list.add(row) + self.__list.add(self.__more_row) + self.__list.show_all() + self.__adjustment.set_value(self.__adjustment.get_lower()) + self.__list.invalidate_filter() + self.__list.set_selection_mode(Gtk.SelectionMode.SINGLE) + + + def __show_more(self): + self.__set_fixed_size() + self.__filter_entry.show() + self.__showing_extra = True + self.__list.invalidate_filter() + + + def __show_engines_for_lang(self, row): + text = row.name + self.__set_fixed_size() + self.__remove_all_children() + row = self.__back_row_new(text) + self.__list.add(row) + self.__add_engine_rows_for_lang(row) + self.__list.show_all() + self.__adjustment.set_value(self.__adjustment.get_lower()) + + + def __do_filter(self): + text = self.__filter_entry.get_text() + if text == '': + self.__filter_word = None + else: + self.__filter_word = text + self.__list.invalidate_filter() + self.__filter_timeout_id = 0 + return False + + + def __filter_changed(self, entry): + if self.__filter_timeout_id == 0: + self.__filter_timeout_id = GLib.timeout_add(150, self.__do_filter) + + + def set_engines(self, engines): + self.__engines_for_lang = {} + self.__untrans_for_lang = {} + for e in engines: + l = IBus.get_language_name(e.get_language()) + if l == None: + l = '' + if l not in self.__engines_for_lang: + self.__engines_for_lang[l] = [] + i18n.init_textdomain(e.get_textdomain()) + row = self.__engine_row_new(e) + self.__engines_for_lang[l].append(row) + + # Retrieve Untranslated language names. + untrans = IBus.get_untranslated_language_name(e.get_language()) + if untrans == None: + untrans = '' + self.__untrans_for_lang[l] = untrans + + keys = list(self.__engines_for_lang.keys()) + keys.sort(key=functools.cmp_to_key(locale.strcoll)) + loc = locale.getlocale()[0] + # None on C locale + if loc == None or loc == 'C': + loc = 'en_US' + current_lang = IBus.get_language_name(loc) + # move current language to the first place + if current_lang in keys: + keys.remove(current_lang) + keys.insert(0, current_lang) + + # move English to the second place + en_lang = IBus.get_language_name('en_US') + if en_lang != current_lang and en_lang in keys: + keys.remove(en_lang) + keys.insert(1, en_lang) + + #add 'Others' to the end of the combo box + if IBus.get_language_name('Other') in keys: + keys.remove(IBus.get_language_name('Other')) + keys += [IBus.get_language_name('Other')] + + self.__langs = keys + self.__show_lang_rows() + + + def get_selected_engine(self): + row = self.__list.get_selected_row() + if row == None: + return None + return row.engine diff --git a/setup/enginetreeview.py b/setup/enginetreeview.py index 8b3ef9ec9..8534de5ee 100644 --- a/setup/enginetreeview.py +++ b/setup/enginetreeview.py @@ -2,23 +2,24 @@ # # ibus - The Input Bus # -# Copyright (c) 2007-2010 Peng Huang -# Copyright (c) 2007-2010 Red Hat, Inc. +# Copyright (c) 2007-2015 Peng Huang +# Copyright (c) 2014-2020 Takao Fujiwara +# Copyright (c) 2007-2020 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA from gi.repository import GLib from gi.repository import GObject @@ -26,6 +27,8 @@ from gi.repository import IBus from gi.repository import Pango +import i18n + from icon import load_icon from i18n import _, N_ @@ -47,7 +50,7 @@ class EngineTreeView(Gtk.TreeView): def __init__(self): super(EngineTreeView, self).__init__() - self.__engines = set([]) + self.__engines = [] self.__changed = False # self.set_headers_visible(True) @@ -59,6 +62,8 @@ def __init__(self): self.__model.connect("row-deleted", self.__emit_changed_delay_cb, "row-deleted") self.__model.connect("row-inserted", self.__emit_changed_delay_cb, "row-inserted") self.__model.connect("rows-reordered", self.__emit_changed_delay_cb, "rows-reordered") + self.__model.set_default_sort_func(self.__sort_engines, None) + self.__model.set_sort_column_id(-1, Gtk.SortType.ASCENDING) # create im name & icon column column = Gtk.TreeViewColumn(_("Input Method")) @@ -87,9 +92,8 @@ def __init__(self): renderer.set_property("text-column", 0) renderer.set_property("has-entry", False) renderer.set_property("editable", True) - renderer.connect("changed", self.__engine_layout_changed_cb) - column = Gtk.TreeViewColumn(_("Kbd")) + column = Gtk.TreeViewColumn("Kbd") column.set_expand(False) column.set_fixed_width(32) column.set_sizing(Gtk.TreeViewColumnSizing.FIXED) @@ -99,6 +103,18 @@ def __init__(self): self.get_selection().connect("changed", self.__selection_changed_cb) + def __sort_engines(self, model, a, b, data): + engine_a = model[a][0] + engine_b = model[b][0] + language_a = IBus.get_language_name(engine_a.get_language()) + language_b = IBus.get_language_name(engine_b.get_language()) + longname_a = i18n.gettext_engine_longname(engine_a) + longname_b = i18n.gettext_engine_longname(engine_b) + label_a = "%s - %s" % (language_a, longname_a) + label_b = "%s - %s" % (language_b, longname_b) + # http://docs.python.org/3.0/whatsnew/3.0.html#ordering-comparisons + return (label_a > label_b) - (label_a < label_b) + def __selection_changed_cb(self, *args): self.notify("active-engine"); @@ -116,28 +132,31 @@ def __emit_changed_delay_cb(self, *args): def __icon_cell_data_cb(self, celllayout, renderer, model, it, data): engine = self.__model.get_value(it, 0) + # When append_engine() is called, self.__model.append(None) + # is called internally and engine == None could happen in + # a slow system. + if engine == None: + return + icon_size = Gtk.icon_size_lookup(Gtk.IconSize.LARGE_TOOLBAR)[0] pixbuf = load_icon(engine.get_icon(), Gtk.IconSize.LARGE_TOOLBAR) - - if pixbuf == None: - pixbuf = load_icon("ibus-engine", Gtk.IconSize.LARGE_TOOLBAR) - if pixbuf == None: - pixbuf = load_icon(Gtk.STOCK_MISSING_IMAGE, - Gtk.IconSize.LARGE_TOOLBAR) - renderer.set_property("pixbuf", pixbuf) def __name_cell_data_cb(self, celllayout, renderer, model, it, data): engine = self.__model.get_value(it, 0) + + # When append_engine() is called, self.__model.append(None) + # is called internally and engine == None could happen in + # a slow system. + if engine == None: + return + renderer.set_property("sensitive", True) language = IBus.get_language_name(engine.get_language()) + longname = i18n.gettext_engine_longname(engine) renderer.set_property("text", - "%s - %s" % (language, engine.get_longname())) - if self.__model.get_path(it).get_indices()[0] == 0: - # default engine - renderer.set_property("weight", Pango.Weight.BOLD) - else: - renderer.set_property("weight", Pango.Weight.NORMAL) + "%s - %s" % (language, longname)) + renderer.set_property("weight", Pango.Weight.NORMAL) def __layout_cell_data_cb(self, celllayout, renderer, model, it, data): engine = self.__model.get_value(it, 0) @@ -146,17 +165,7 @@ def __layout_cell_data_cb(self, celllayout, renderer, model, it, data): if not layout: layout = engine.layout renderer.set_property("text", layout) - if self.__model.get_path(it).get_indices()[0] == 0: - #default engine - renderer.set_property("weight", Pango.WEIGHT_BOLD) - else: - renderer.set_property("weight", Pango.WEIGHT_NORMAL) - - def __engine_layout_changed_cb(self, combo, path, it): - return - i = self.__model.get_iter(path) - layout = combo.get_property("model").get_value(it, 0) - self.__model.set_value(i, 1, layout) + renderer.set_property("weight", Pango.Weight.NORMAL) def do_get_property(self, prop): if prop.name == "active-engine": @@ -169,25 +178,26 @@ def do_get_property(self, prop): engines = [ r[0] for r in self.__model if r[0] != None] return engines else: - raise AttributeError, 'unknown property %s' % prop.name + raise AttributeError('unknown property %s' % prop.name) def do_set_property(self, prop, value): if prop.name == "active-engine": - raise AttributeError, "active-engine is readonly" + raise AttributeError("active-engine is readonly") elif prop.name == "engines": set_engines(value) else: - raise AttributeError, 'unknown property %s' % prop.name + raise AttributeError('unknown property %s' % prop.name) def set_engines(self, engines): self.__model.clear() - self.__engines = set([]) + self.__engines = [] for e in engines: if e in self.__engines: continue it = self.__model.append(None) + i18n.init_textdomain(e.get_textdomain()) self.__model.set(it, 0, e) - self.__engines.add(e) + self.__engines.append(e) self.__emit_changed() def get_selected_iter(self): @@ -196,6 +206,9 @@ def get_selected_iter(self): return selection.get_selected()[1] def get_engines(self): + return self.__engines + + def get_sorted_engines(self): return self.get_property("engines") def get_active_engine(self): @@ -206,16 +219,14 @@ def prepend_engine(self, engine): return it = self.__model.prepend(None) self.__model.set(it, 0, engine) - self.__engines.add(engine) - self.scroll_to_cell(self.__model[0].path, None) + self.__engines = [engine] + self.__engines def append_engine(self, engine): if engine == None or engine in self.__engines: return it = self.__model.append(None) self.__model.set(it, 0, engine) - self.__engines.add(engine) - self.scroll_to_cell(self.__model[-1].path, None) + self.__engines.append(engine) def remove_engine(self): it = self.get_selected_iter() diff --git a/setup/ibus-setup.1.in b/setup/ibus-setup.1.in new file mode 100644 index 000000000..2b574a1a2 --- /dev/null +++ b/setup/ibus-setup.1.in @@ -0,0 +1,50 @@ +.\" This file is distributed under the same license as the ibus +.\" package. +.\" Copyright (C) LI Daobing , 2008. +.\" Copyright (C) Takao Fujiwara , 2013-2017. +.\" Copyright (c) Peng Huang , 2013. +.\" +.TH "IBUS-SETUP" 1 "November 2017" "@VERSION@" "User Commands" +.SH NAME +.B ibus-setup +\- configuration program for ibus + +.SH "SYNOPSIS" +.B ibus-setup + +.SH "DESCRIPTION" + +.PP +IBus is an Intelligent Input Bus. It is a new input framework for Linux +OS. It provides full featured and user friendly input method user +interface. It also may help developers to develop input method easily. + +.PP +.B ibus-setup +is the configuration program for IBus. + +.PP +Homepage: https://github.com/ibus/ibus/wiki + +.SH "ADVANCED" +.TP +\fBUse system keyboard layout\fR +If this option is enabled, use your system keymap instead and IBus +does not change it with any input method engines. The system keymap is +decided by your desktop session. IBus calls +.B setxkbmap (1) +command internally to set the selected keymap and override the +system keymap if this options is disabled. +You can check the current keymap with +.B setxkbmap -query +command. +.TP +\fBShare the same input method among all applications\fR +If this option is disabled, You can choose an input metod engine +by input context. + +.SH BUGS +If you find a bug, please report it at https://github.com/ibus/ibus/issues + +.SH "SEE ALSO" +.BR ibus (1) diff --git a/setup/ibus-setup.desktop b/setup/ibus-setup.desktop new file mode 100644 index 000000000..3ad41c495 --- /dev/null +++ b/setup/ibus-setup.desktop @@ -0,0 +1,13 @@ +[Desktop Entry] +Name=IBus Preferences +Comment=Set IBus Preferences +Exec=ibus-setup +Icon=ibus-setup +Terminal=false +Type=Application +StartupNotify=true +Categories=Settings; +# GNOME uses its own "input source" settings instead +NotShowIn=GNOME;Unity; +X-AppStream-Ignore=true +Keywords=keyboard;input; diff --git a/setup/ibus-setup.desktop.in b/setup/ibus-setup.desktop.in deleted file mode 100644 index 864b026ec..000000000 --- a/setup/ibus-setup.desktop.in +++ /dev/null @@ -1,9 +0,0 @@ -[Desktop Entry] -_Name=IBus Preferences -_Comment=Set IBus Preferences -Exec=ibus-setup -Icon=ibus-setup -Terminal=false -Type=Application -StartupNotify=true -Categories=Settings; diff --git a/setup/ibus-setup.in b/setup/ibus-setup.in index f3c37309b..474ce8a83 100644 --- a/setup/ibus-setup.in +++ b/setup/ibus-setup.in @@ -3,30 +3,29 @@ # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang -# Copyright (c) 2007-2010 Red Hat, Inc. +# Copyright (c) 2018-2019 Takao Fujiwara +# Copyright (c) 2007-2018 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA prefix=@prefix@ -exec_prefix=@exec_prefix@ -datarootdir=@datarootdir@ libexecdir=@libexecdir@ export IBUS_PREFIX=@prefix@ export IBUS_DATAROOTDIR=@datarootdir@ export IBUS_LOCALEDIR=@localedir@ export IBUS_LIBEXECDIR=${libexecdir} -exec @PYTHON@ @prefix@/share/ibus/setup/main.py $@ +exec ${PYTHON:-@PYTHON@} @prefix@/share/ibus/setup/main.py "$@" diff --git a/setup/icon.py b/setup/icon.py index be8a38a1f..31b7df885 100644 --- a/setup/icon.py +++ b/setup/icon.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA __all__ = ( "load_icon" @@ -37,9 +37,14 @@ icon_cache = {} -def load_icon(icon, size): - if (icon, size) in icon_cache: - return icon_cache[(icon, size)] +# load_icon: +# @icon_name_or_path: Can be a name or path but not stock id +# because gtk_icon_theme_load_icon() cannot fallback the stock id to +# a real file name against gtk_image_new_from_stock(). +# @size: #GtkIconSize +def load_icon(icon_name_or_path, size): + if (icon_name_or_path, size) in icon_cache: + return icon_cache[(icon_name_or_path, size)] icon_size = Gtk.icon_size_lookup(size) if icon_size[0]: @@ -47,7 +52,7 @@ def load_icon(icon, size): pixbuf = None try: - pixbuf = GdkPixbuf.Pixbuf.new_from_file(icon) + pixbuf = GdkPixbuf.Pixbuf.new_from_file(icon_name_or_path) w, h = pixbuf.get_width(), pixbuf.get_height() rate = max(w, h) / float(icon_size) w = int(w / rate) @@ -60,10 +65,26 @@ def load_icon(icon, size): if pixbuf == None: try: theme = Gtk.IconTheme.get_default() - pixbuf = theme.load_icon(icon, icon_size, 0) + pixbuf = theme.load_icon(icon_name_or_path, icon_size, 0) except: # import traceback # traceback.print_exc() pass - icon_cache[(icon, size)] = pixbuf + if pixbuf == None: + try: + theme = Gtk.IconTheme.get_default() + pixbuf = theme.load_icon('ibus-engine', icon_size, 0) + except: + # import traceback + # traceback.print_exc() + pass + if pixbuf == None: + try: + theme = Gtk.IconTheme.get_default() + pixbuf = theme.load_icon('image-missing', icon_size, 0) + except: + # import traceback + # traceback.print_exc() + pass + icon_cache[(icon_name_or_path, size)] = pixbuf return pixbuf diff --git a/setup/keyboardshortcut.py b/setup/keyboardshortcut.py index 8972dafbb..39a6d4711 100644 --- a/setup/keyboardshortcut.py +++ b/setup/keyboardshortcut.py @@ -2,23 +2,23 @@ # # ibus - The Input Bus # -# Copyright (c) 2007-2010 Peng Huang -# Copyright (c) 2007-2010 Red Hat, Inc. +# Copyright (c) 2007-2015 Peng Huang +# Copyright (c) 2007-2015 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA __all__ = ( "KeyboardShortcutSelection", @@ -35,9 +35,10 @@ MAX_HOTKEY = 6 -class KeyboardShortcutSelection(Gtk.VBox): +class KeyboardShortcutSelection(Gtk.Box): def __init__(self, shortcuts = None): - super(KeyboardShortcutSelection, self).__init__() + super(KeyboardShortcutSelection, self).__init__( + orientation=Gtk.Orientation.VERTICAL) self.__init_ui() self.set_shortcuts(shortcuts) @@ -48,21 +49,22 @@ def __init_ui(self): # self.pack_start(label, False, True, 4) # shortcuts view - self.__shortcut_view = Gtk.TreeView(Gtk.ListStore(GObject.TYPE_STRING)) - self.__shortcut_view.set_size_request(-1, 100) + self.__shortcut_view = Gtk.TreeView( + model = Gtk.ListStore(GObject.TYPE_STRING)) renderer = Gtk.CellRendererText() column = Gtk.TreeViewColumn(_("Keyboard shortcuts"), renderer, text = 0) self.__shortcut_view.append_column(column) self.__shortcut_view.connect("cursor-changed", self.__shortcut_view_cursor_changed_cb) scrolledwindow = Gtk.ScrolledWindow() scrolledwindow.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC) + scrolledwindow.set_min_content_height(100) scrolledwindow.add(self.__shortcut_view) scrolledwindow.set_shadow_type(Gtk.ShadowType.IN) self.pack_start(scrolledwindow, True, True, 4) # key code - hbox = Gtk.HBox() - label = Gtk.Label(_("Key code:")) + hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) + label = Gtk.Label(label = _("Key code:")) label.set_justify(Gtk.Justification.LEFT) label.set_alignment(0.0, 0.5) hbox.pack_start(label, False, True, 4) @@ -70,56 +72,69 @@ def __init_ui(self): self.__keycode_entry = Gtk.Entry() self.__keycode_entry.connect("notify::text", self.__keycode_entry_notify_cb) hbox.pack_start(self.__keycode_entry, True, True, 4) - self.__keycode_button = Gtk.Button("...") + self.__keycode_button = Gtk.Button(label = "...") self.__keycode_button.connect("clicked", self.__keycode_button_clicked_cb) hbox.pack_start(self.__keycode_button, False, True, 4) self.pack_start(hbox, False, True, 4) # modifiers - hbox = Gtk.HBox() - label = Gtk.Label(_("Modifiers:")) + hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) + label = Gtk.Label(label = _("Modifiers:")) label.set_justify(Gtk.Justification.LEFT) label.set_alignment(0.0, 0.5) hbox.pack_start(label, False, True, 4) - table = Gtk.Table(4, 2) + table = Gtk.Table(n_rows = 4, n_columns = 2) self.__modifier_buttons = [] - self.__modifier_buttons.append(("Control", Gtk.CheckButton("_Control"), Gdk.ModifierType.CONTROL_MASK)) - self.__modifier_buttons.append(("Alt", Gtk.CheckButton("A_lt"), Gdk.ModifierType.MOD1_MASK)) - self.__modifier_buttons.append(("Shift", Gtk.CheckButton("_Shift"), Gdk.ModifierType.SHIFT_MASK)) - self.__modifier_buttons.append(("Meta", Gtk.CheckButton("_Meta"), Gdk.ModifierType.META_MASK)) - self.__modifier_buttons.append(("Super", Gtk.CheckButton("S_uper"), Gdk.ModifierType.SUPER_MASK)) - self.__modifier_buttons.append(("Hyper", Gtk.CheckButton("_Hyper"), Gdk.ModifierType.HYPER_MASK)) - self.__modifier_buttons.append(("Capslock", Gtk.CheckButton("Capsloc_k"), Gdk.ModifierType.LOCK_MASK)) - self.__modifier_buttons.append(("Release", Gtk.CheckButton("_Release"), Gdk.ModifierType.RELEASE_MASK)) + self.__modifier_buttons.append(("Control", + Gtk.CheckButton.new_with_mnemonic("_Control"), + Gdk.ModifierType.CONTROL_MASK)) + self.__modifier_buttons.append(("Alt", + Gtk.CheckButton.new_with_mnemonic("A_lt"), + Gdk.ModifierType.MOD1_MASK)) + self.__modifier_buttons.append(("Shift", + Gtk.CheckButton.new_with_mnemonic("_Shift"), + Gdk.ModifierType.SHIFT_MASK)) + self.__modifier_buttons.append(("Meta", + Gtk.CheckButton.new_with_mnemonic("_Meta"), + Gdk.ModifierType.META_MASK)) + self.__modifier_buttons.append(("Super", + Gtk.CheckButton.new_with_mnemonic("S_uper"), + Gdk.ModifierType.SUPER_MASK)) + self.__modifier_buttons.append(("Hyper", + Gtk.CheckButton.new_with_mnemonic("_Hyper"), + Gdk.ModifierType.HYPER_MASK)) + # is not parsed by gtk_accelerator_parse() + # is not supported by XIGrabKeycode() for name, button, mask in self.__modifier_buttons: button.connect("toggled", self.__modifier_button_toggled_cb, name) table.attach(self.__modifier_buttons[0][1], 0, 1, 0, 1) table.attach(self.__modifier_buttons[1][1], 1, 2, 0, 1) table.attach(self.__modifier_buttons[2][1], 2, 3, 0, 1) - table.attach(self.__modifier_buttons[3][1], 3, 4, 0, 1) - table.attach(self.__modifier_buttons[4][1], 0, 1, 1, 2) - table.attach(self.__modifier_buttons[5][1], 1, 2, 1, 2) - table.attach(self.__modifier_buttons[6][1], 2, 3, 1, 2) - table.attach(self.__modifier_buttons[7][1], 3, 4, 1, 2) + table.attach(self.__modifier_buttons[3][1], 0, 1, 1, 2) + table.attach(self.__modifier_buttons[4][1], 1, 2, 1, 2) + table.attach(self.__modifier_buttons[5][1], 2, 3, 1, 2) hbox.pack_start(table, True, True, 4) self.pack_start(hbox, False, True, 4) # buttons - hbox = Gtk.HBox() + hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) # add button - self.__add_button = Gtk.Button(stock = Gtk.STOCK_ADD) + self.__add_button = Gtk.Button(label = _("_Add"), + use_underline = True) self.__add_button.set_sensitive(False) self.__add_button.connect("clicked", self.__add_button_clicked_cb) hbox.pack_start(self.__add_button, False, True, 0) # apply button - self.__apply_button = Gtk.Button(stock = Gtk.STOCK_APPLY) + self.__apply_button = Gtk.Button(label = _("_Apply"), + use_underline = True) self.__apply_button.set_sensitive(False) self.__apply_button.connect("clicked", self.__apply_button_clicked_cb) hbox.pack_start(self.__apply_button, False, True, 0) # delete button - self.__delete_button = Gtk.Button(stock = Gtk.STOCK_DELETE) + self.__delete_button = Gtk.Button(label = _("_Delete"), + use_underline = True) self.__delete_button.set_sensitive(False) self.__delete_button.connect("clicked", self.__delete_button_clicked_cb) hbox.pack_start(self.__delete_button, False, True, 0) @@ -168,19 +183,20 @@ def __get_shortcut_from_buttons(self): modifiers.append(name) if keycode.startswith("_"): keycode = keycode[1:] - keys = modifiers + [keycode] - shortcut = "+".join(keys) + shortcut = "".join(['<' + m + '>' for m in modifiers]) + shortcut += keycode return shortcut def __set_shortcut_to_buttons(self, shortcut): - keys = shortcut.split("+") - mods = keys[:-1] + (keyval, state) = Gtk.accelerator_parse(shortcut) + if keyval == 0 and state == 0: + return for name, button, mask in self.__modifier_buttons: - if name in mods: + if state & mask: button.set_active(True) else: button.set_active(False) - self.__keycode_entry.set_text(keys[-1]) + self.__keycode_entry.set_text(shortcut.rsplit('>', 1)[-1]) def __get_selected_shortcut(self): model = self.__shortcut_view.get_model() @@ -203,8 +219,8 @@ def __del_selected_shortcut(self): def __shortcut_view_cursor_changed_cb(self, treeview): shortcut = self.__get_selected_shortcut() - self.__set_shortcut_to_buttons(shortcut) if shortcut != None: + self.__set_shortcut_to_buttons(shortcut) self.__delete_button.set_sensitive(True) else: self.__delete_button.set_sensitive(False) @@ -231,53 +247,60 @@ def __keycode_entry_notify_cb(self, entry, arg): def __keycode_button_clicked_cb(self, button): out = [] - dlg = Gtk.MessageDialog(parent = self.get_toplevel(), buttons = Gtk.ButtonsType.CLOSE) - message = _("Please press a key (or a key combination).\nThe dialog will be closed when the key is released.") + dlg = Gtk.MessageDialog(transient_for = self.get_toplevel(), + buttons = Gtk.ButtonsType.CLOSE) + message = _("Please press a key (or a key combination).\n" \ + "The dialog will be closed when the key is released.") dlg.set_markup(message) dlg.set_title(_("Please press a key (or a key combination)")) - - def __key_press_event(d, k, out): - out.append(k.copy()) - - def __key_release_event(d, k, out): - d.response(Gtk.ResponseType.OK) - - dlg.connect("key-press-event", __key_press_event, out) - dlg.connect("key-release-event", __key_release_event, None) + sw = Gtk.ScrolledWindow() + + def __accel_edited_cb(c, path, keyval, state, keycode): + out.append(keyval) + out.append(state) + out.append(keycode) + dlg.response(Gtk.ResponseType.OK) + + model = Gtk.ListStore(GObject.TYPE_INT, + GObject.TYPE_UINT, + GObject.TYPE_UINT) + accel_view = Gtk.TreeView(model = model) + accel_view.set_headers_visible(False) + sw.add(accel_view) + sw.set_min_content_height(30) + column = Gtk.TreeViewColumn() + renderer = Gtk.CellRendererAccel(accel_mode=Gtk.CellRendererAccelMode.OTHER, + editable=True) + renderer.connect('accel-edited', __accel_edited_cb) + column.pack_start(renderer, True) + column.add_attribute(renderer, 'accel-mods', 0) + column.add_attribute(renderer, 'accel-key', 1) + column.add_attribute(renderer, 'keycode', 2) + accel_view.append_column(column) + it = model.append(None) + area = dlg.get_message_area() + area.pack_end(sw, True, True, 0) + sw.show_all() id = dlg.run() dlg.destroy() - if id != Gtk.ResponseType.OK or not out: + if id != Gtk.ResponseType.OK or len(out) < 3: return - keyevent = out[len(out) - 1] - state = keyevent.state & (Gdk.ModifierType.CONTROL_MASK | \ - Gdk.ModifierType.SHIFT_MASK | \ - Gdk.ModifierType.MOD1_MASK | \ - Gdk.ModifierType.META_MASK | \ - Gdk.ModifierType.SUPER_MASK | \ - Gdk.ModifierType.HYPER_MASK) - - - if state == 0: - state = state | Gdk.ModifierType.RELEASE_MASK - elif keyevent.keyval in (Gdk.KEY_Control_L, Gdk.KEY_Control_R) and state == Gdk.ModifierType.CONTROL_MASK: - state = state | Gdk.ModifierType.RELEASE_MASK - elif keyevent.keyval in (Gdk.KEY_Shift_L, Gdk.KEY_Shift_R) and state == Gdk.ModifierType.SHIFT_MASK: - state = state | Gdk.ModifierType.RELEASE_MASK - elif keyevent.keyval in (Gdk.KEY_Alt_L, Gdk.KEY_Alt_R) and state == Gdk.ModifierType.MOD1_MASK: - state = state | Gdk.ModifierType.RELEASE_MASK - elif keyevent.keyval in (Gdk.KEY_Meta_L, Gdk.KEY_Meta_R) and state == Gdk.ModifierType.META_MASK: - state = state | Gdk.ModifierType.RELEASE_MASK - elif keyevent.keyval in (Gdk.KEY_Super_L, Gdk.KEY_Super_R) and state == Gdk.ModifierType.SUPER_MASK: - state = state | Gdk.ModifierType.RELEASE_MASK - elif keyevent.keyval in (Gdk.KEY_Hyper_L, Gdk.KEY_Hyper_R) and state == Gdk.ModifierType.HYPER_MASK: - state = state | Gdk.ModifierType.RELEASE_MASK + keyval = out[0] + state = out[1] + keycode = out[2] for name, button, mask in self.__modifier_buttons: if state & mask: button.set_active(True) else: button.set_active(False) - self.__keycode_entry.set_text(Gdk.keyval_name(keyevent.keyval)) + + shortcut = Gtk.accelerator_name_with_keycode(None, + keyval, + keycode, + state) + shortcut = shortcut.replace('', '') + self.__keycode_entry.set_text(shortcut.rsplit('>', 1)[-1]) def __add_button_clicked_cb(self, button): shortcut = self.__get_shortcut_from_buttons() @@ -293,8 +316,9 @@ def __delete_button_clicked_cb(self, button): self.__apply_button.set_sensitive(False) class KeyboardShortcutSelectionDialog(Gtk.Dialog): - def __init__(self, title = None, parent = None, flags = 0, buttons = None): - super(KeyboardShortcutSelectionDialog, self).__init__(title, parent, flags, buttons) + def __init__(self, title = None, transient_for = None, flags = 0): + super(KeyboardShortcutSelectionDialog, self).__init__( + title = title, transient_for = transient_for, flags = flags) self.__selection_view = KeyboardShortcutSelection() self.vbox.pack_start(self.__selection_view, False, True, 0) self.vbox.show_all() @@ -311,12 +335,12 @@ def get_shortcuts(self): if __name__ == "__main__": - dlg = KeyboardShortcutSelectionDialog( - title = "Select test", - buttons = (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, - Gtk.STOCK_OK, Gtk.ResponseType.OK)) + dlg = KeyboardShortcutSelectionDialog(title = "Select test") + buttons = (_("_Cancel"), Gtk.ResponseType.CANCEL, + _("_OK"), Gtk.ResponseType.OK) + dlg.add_buttons(buttons) dlg.add_shortcut("Control+Shift+space") dlg.set_shortcuts(None) - print dlg.run() - print dlg.get_shortcuts() + print((dlg.run())) + print((dlg.get_shortcuts())) diff --git a/setup/main.py b/setup/main.py index 7cd3e3745..d0e05666a 100644 --- a/setup/main.py +++ b/setup/main.py @@ -1,42 +1,63 @@ # vim:set et sts=4 sw=4: +# -*- coding: utf-8 -*- # # ibus - The Input Bus # -# Copyright (c) 2007-2010 Peng Huang -# Copyright (c) 2007-2010 Red Hat, Inc. +# Copyright (c) 2007-2016 Peng Huang +# Copyright (c) 2010-2020 Takao Fujiwara +# Copyright (c) 2007-2020 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA + +# for python2 +from __future__ import print_function import os import signal import sys import time +import glob + +from gi import require_version as gi_require_version +gi_require_version('GLib', '2.0') +gi_require_version('GdkX11', '3.0') +gi_require_version('Gio', '2.0') +gi_require_version('Gtk', '3.0') +gi_require_version('IBus', '1.0') from gi.repository import GLib +# set_prgname before importing other modules to show the name in warning +# messages when import modules are failed. +GLib.set_prgname('ibus-setup') + +from gi.repository import GdkX11 +from gi.repository import Gio from gi.repository import Gtk from gi.repository import IBus from os import path -from xdg import BaseDirectory +import i18n import keyboardshortcut import locale +from emojilang import EmojiLangButton from enginecombobox import EngineComboBox +from enginedialog import EngineDialog from enginetreeview import EngineTreeView from engineabout import EngineAbout -from i18n import DOMAINNAME, _, N_, init as i18n_init +from i18n import DOMAINNAME, _, N_ ( COLUMN_NAME, @@ -45,7 +66,7 @@ COLUMN_VISIBLE, COLUMN_ICON, COLUMN_DATA, -) = range(6) +) = list(range(6)) ( DATA_NAME, @@ -57,7 +78,7 @@ DATA_EXEC, DATA_STARTED, DATA_PRELOAD -) = range(9) +) = list(range(9)) class Setup(object): def __flush_gtk_events(self): @@ -66,137 +87,261 @@ def __flush_gtk_events(self): def __init__(self): super(Setup, self).__init__() + + self.__settings_general = Gio.Settings( + schema = "org.freedesktop.ibus.general"); + self.__settings_hotkey = Gio.Settings( + schema = "org.freedesktop.ibus.general.hotkey"); + self.__settings_panel = Gio.Settings( + schema = "org.freedesktop.ibus.panel"); + self.__settings_emoji = Gio.Settings( + schema = "org.freedesktop.ibus.panel.emoji"); + + # IBus.Bus() calls ibus_bus_new(). + # Gtk.Builder().add_from_file() also calls ibus_bus_new_async() + # via ibus_im_context_new(). + # Then if IBus.Bus() is called after Gtk.Builder().add_from_file(), + # the connection delay would be happened without an async + # finish function. + self.__bus = None + self.__init_bus() + + # Gtk.ListBox has been available since gtk 3.10 + self.__has_list_box = hasattr(Gtk, 'ListBox') + gtk_builder_file = path.join(path.dirname(__file__), "./setup.ui") self.__builder = Gtk.Builder() self.__builder.set_translation_domain(DOMAINNAME) self.__builder.add_from_file(gtk_builder_file); - self.__bus = None - self.__init_bus() self.__init_ui() - def __init_hotkey(self): - default_values = { - "trigger" : (N_("trigger"), ["Control+space"]), - "enable_unconditional" : (N_("enable"), []), - "disable_unconditional" : (N_("disable"), []) - } - - values = dict(self.__config.get_values("general/hotkey")) - - for name, (label, shortcuts) in default_values.items(): - shortcuts = values.get(name, shortcuts) - button = self.__builder.get_object("button_%s" % name) - entry = self.__builder.get_object("entry_%s" % name) - entry.set_text("; ".join(shortcuts)) - entry.set_tooltip_text("\n".join(shortcuts)) + def __init_hotkeys(self): + name = 'triggers' + label = 'switch_engine' + comment = \ + _("Use shortcut with shift to switch to the previous input method") + self.__init_hotkey(name, label, comment) + name = 'emoji' + label = 'emoji_dialog' + self.__init_hotkey(name, label) + name = 'unicode' + label = 'unicode_dialog' + self.__init_hotkey(name, label) + + def __init_hotkey(self, name, label, comment=None): + if name == 'emoji': + shortcuts = self.__settings_emoji.get_strv('hotkey') + elif name == 'unicode': + shortcuts = self.__settings_emoji.get_strv('unicode-hotkey') + else: + shortcuts = self.__settings_hotkey.get_strv(name) + button = self.__builder.get_object("button_%s" % label) + entry = self.__builder.get_object("entry_%s" % label) + entry.set_text("; ".join(shortcuts)) + tooltip = "\n".join(shortcuts) + if comment != None: + tooltip += "\n" + comment + entry.set_tooltip_text(tooltip) + if name == 'emoji': + button.connect("clicked", self.__shortcut_button_clicked_cb, + 'hotkey', 'panel/' + name, label, entry) + elif name == 'unicode': + button.connect("clicked", self.__shortcut_button_clicked_cb, + 'unicode-hotkey', 'panel/emoji', label, entry) + else: button.connect("clicked", self.__shortcut_button_clicked_cb, - label, "general/hotkey", name, entry) + name, "general/hotkey", label, entry) def __init_panel(self): - values = dict(self.__config.get_values("panel")) - # lookup table orientation self.__combobox_lookup_table_orientation = self.__builder.get_object( "combobox_lookup_table_orientation") - self.__combobox_lookup_table_orientation.set_active( - values.get("lookup_table_orientation", 0)) - self.__combobox_lookup_table_orientation.connect("changed", - self.__combobox_lookup_table_orientation_changed_cb) + self.__settings_panel.bind('lookup-table-orientation', + self.__combobox_lookup_table_orientation, + 'active', + Gio.SettingsBindFlags.DEFAULT) # auto hide self.__combobox_panel_show = self.__builder.get_object( "combobox_panel_show") - self.__combobox_panel_show.set_active(values.get("show", 0)) - self.__combobox_panel_show.connect("changed", - self.__combobox_panel_show_changed_cb) + self.__settings_panel.bind('show', + self.__combobox_panel_show, + 'active', + Gio.SettingsBindFlags.DEFAULT) # panel position self.__combobox_panel_position = self.__builder.get_object( "combobox_panel_position") - self.__combobox_panel_position.set_active(values.get("position", 3)) - self.__combobox_panel_position.connect("changed", - self.__combobox_panel_position_changed_cb) + self.__combobox_panel_position.set_active(3) + #self.__settings_panel.bind('position', + # self.__combobox_panel_position, + # 'active', + # Gio.SettingsBindFlags.DEFAULT) # custom font self.__checkbutton_custom_font = self.__builder.get_object( "checkbutton_custom_font") - self.__checkbutton_custom_font.set_active( - values.get("use_custom_font", False)) - self.__checkbutton_custom_font.connect("toggled", - self.__checkbutton_custom_font_toggled_cb) + self.__settings_panel.bind('use-custom-font', + self.__checkbutton_custom_font, + 'active', + Gio.SettingsBindFlags.DEFAULT) self.__fontbutton_custom_font = self.__builder.get_object( "fontbutton_custom_font") - if values.get("use_custom_font", False): - self.__fontbutton_custom_font.set_sensitive(True) - else: - self.__fontbutton_custom_font.set_sensitive(False) - font_name = Gtk.Settings.get_default().get_property("gtk-font-name") - font_name = unicode(font_name, "utf-8") - font_name = values.get("custom_font", font_name) - self.__fontbutton_custom_font.connect("notify::font-name", - self.__fontbutton_custom_font_notify_cb) - self.__fontbutton_custom_font.set_font_name(font_name) + self.__settings_panel.bind('custom-font', + self.__fontbutton_custom_font, + 'font-name', + Gio.SettingsBindFlags.DEFAULT) + self.__settings_panel.bind('use-custom-font', + self.__fontbutton_custom_font, + 'sensitive', + Gio.SettingsBindFlags.GET) + + # custom theme + self.__model_custom_theme = self.__builder.get_object( + "model_custom_theme") + self.__combobox_custom_theme = self.__builder.get_object( + "combobox_custom_theme") + self.__checkbutton_custom_theme = self.__builder.get_object( + "checkbutton_custom_theme") + + def update_combobox_custom_theme(settings, key): + theme_name_list = self.__init_available_gtk_themes() + self.__model_custom_theme.clear() + for name in theme_name_list: + self.__model_custom_theme.append([name]) + current_theme = self.__settings_panel.get_string(key) + try: + current_theme_number = theme_name_list.index(current_theme) + except ValueError: + self.__settings_panel.reset(key) + current_theme = self.__settings_panel.get_string(key) + current_theme_number = theme_name_list.index(current_theme) + self.__combobox_custom_theme.set_active(current_theme_number) + + update_combobox_custom_theme(None, 'custom-theme') + self.__settings_panel.bind('use-custom-theme', + self.__checkbutton_custom_theme, + 'active', + Gio.SettingsBindFlags.DEFAULT) + self.__settings_panel.connect('changed::custom-theme', + update_combobox_custom_theme) + self.__settings_panel.bind('use-custom-theme', + self.__combobox_custom_theme, + 'sensitive', + Gio.SettingsBindFlags.DEFAULT) + self.__combobox_custom_theme.connect("changed", + self.__on_combobox_custom_theme_changed) + + + # custom icon + self.__model_custom_icon = self.__builder.get_object( + "model_custom_icon") + self.__combobox_custom_icon = self.__builder.get_object( + "combobox_custom_icon") + self.__checkbutton_custom_icon = self.__builder.get_object( + "checkbutton_custom_icon") + + def update_combobox_custom_icon(settings, key): + icon_name_list = self.__init_available_gtk_icons() + self.__model_custom_icon.clear() + for name in icon_name_list: + self.__model_custom_icon.append([name]) + current_icon = self.__settings_panel.get_string(key) + try: + current_icon_number = icon_name_list.index(current_icon) + except ValueError: + self.__settings_panel.reset(key) + current_icon = self.__settings_panel.get_string(key) + current_icon_number = icon_name_list.index(current_icon) + self.__combobox_custom_icon.set_active(current_icon_number) + + update_combobox_custom_icon(None, 'custom-icon') + self.__settings_panel.bind('use-custom-icon', + self.__checkbutton_custom_icon, + 'active', + Gio.SettingsBindFlags.DEFAULT) + self.__settings_panel.connect('changed::custom-icon', + update_combobox_custom_icon) + self.__settings_panel.bind('use-custom-icon', + self.__combobox_custom_icon, + 'sensitive', + Gio.SettingsBindFlags.DEFAULT) + self.__combobox_custom_icon.connect("changed", + self.__on_combobox_custom_icon_changed) # show icon on system tray self.__checkbutton_show_icon_on_systray = self.__builder.get_object( "checkbutton_show_icon_on_systray") - self.__checkbutton_show_icon_on_systray.set_active( - values.get("show_icon_on_systray", True)) - self.__checkbutton_show_icon_on_systray.connect("toggled", - self.__checkbutton_show_icon_on_systray_toggled_cb) + self.__settings_panel.bind('show-icon-on-systray', + self.__checkbutton_show_icon_on_systray, + 'active', + Gio.SettingsBindFlags.DEFAULT) # show ime name self.__checkbutton_show_im_name = self.__builder.get_object( "checkbutton_show_im_name") - self.__checkbutton_show_im_name.set_active( - values.get("show_im_name", False)) - self.__checkbutton_show_im_name.connect("toggled", - self.__checkbutton_show_im_name_toggled_cb) + self.__settings_panel.bind('show-im-name', + self.__checkbutton_show_im_name, + 'active', + Gio.SettingsBindFlags.DEFAULT) + + self.__checkbutton_glyph_from_engine_lang = self.__builder.get_object( + "checkbutton_use_glyph_from_engine_lang") + self.__settings_panel.bind('use-glyph-from-engine-lang', + self.__checkbutton_glyph_from_engine_lang, + 'active', + Gio.SettingsBindFlags.DEFAULT) def __init_general(self): - values = dict(self.__config.get_values("general")) - # embed preedit text self.__checkbutton_embed_preedit_text = self.__builder.get_object( "checkbutton_embed_preedit_text") - self.__checkbutton_embed_preedit_text.set_active( - values.get("embed_preedit_text", True)) - self.__checkbutton_embed_preedit_text.connect("toggled", - self.__checkbutton_embed_preedit_text_toggled_cb) + self.__settings_general.bind('embed-preedit-text', + self.__checkbutton_embed_preedit_text, + 'active', + Gio.SettingsBindFlags.DEFAULT) # use system keyboard layout setting self.__checkbutton_use_sys_layout = self.__builder.get_object( "checkbutton_use_sys_layout") - self.__checkbutton_use_sys_layout.set_active( - values.get("use_system_keyboard_layout", True)) - self.__checkbutton_use_sys_layout.connect("toggled", - self.__checkbutton_use_sys_layout_toggled_cb) + self.__settings_general.bind('use-system-keyboard-layout', + self.__checkbutton_use_sys_layout, + 'active', + Gio.SettingsBindFlags.DEFAULT) # use global ime setting self.__checkbutton_use_global_engine = self.__builder.get_object( "checkbutton_use_global_engine") - self.__checkbutton_use_global_engine.set_active( - values.get("use_global_engine", False)) - self.__checkbutton_use_global_engine.connect("toggled", - self.__checkbutton_use_global_engine_toggled_cb) + self.__settings_general.bind('use-global-engine', + self.__checkbutton_use_global_engine, + 'active', + Gio.SettingsBindFlags.DEFAULT) # init engine page self.__engines = self.__bus.list_engines() self.__combobox = self.__builder.get_object("combobox_engines") - self.__combobox.set_engines(self.__engines) + if self.__has_list_box: + self.__combobox.set_no_show_all(True) + self.__combobox.hide() + else: + self.__combobox.set_engines(self.__engines) tmp_dict = {} for e in self.__engines: tmp_dict[e.get_name()] = e - engine_names = values.get("preload_engines", []) + engine_names = self.__settings_general.get_strv('preload-engines') engines = [tmp_dict[name] for name in engine_names if name in tmp_dict] self.__treeview = self.__builder.get_object("treeview_engines") self.__treeview.set_engines(engines) button = self.__builder.get_object("button_engine_add") - button.connect("clicked", self.__button_engine_add_cb) + if self.__has_list_box: + button.set_sensitive(True) + button.connect("clicked", self.__button_engine_add_cb) + else: + button.connect("clicked", self.__button_engine_add_cb_deprecate) button = self.__builder.get_object("button_engine_remove") button.connect("clicked", lambda *args:self.__treeview.remove_engine()) button = self.__builder.get_object("button_engine_up") @@ -218,26 +363,133 @@ def __init_general(self): self.__treeview.connect("notify::active-engine", self.__treeview_notify_cb) self.__treeview.connect("notify::engines", self.__treeview_notify_cb) + def __init_emoji(self): + self.__fontbutton_emoji_font = self.__builder.get_object( + 'fontbutton_emoji_font') + self.__fontbutton_emoji_font.set_preview_text('🙂🍎🚃💓📧⚽🐳'); + self.__settings_emoji.bind('font', + self.__fontbutton_emoji_font, + 'font-name', + Gio.SettingsBindFlags.DEFAULT) + self.__button_emoji_lang = self.__builder.get_object( + 'button_emoji_lang') + self.__settings_emoji.bind('lang', + self.__button_emoji_lang, + 'lang', + Gio.SettingsBindFlags.DEFAULT) + self.__checkbutton_emoji_partial_match = self.__builder.get_object( + 'checkbutton_emoji_partial_match') + checkbutton_label = self.__checkbutton_emoji_partial_match.get_child() + if type(checkbutton_label) == Gtk.Label: + checkbutton_label.set_property('wrap', True) + checkbutton_label.set_property('max-width-chars', 74) + self.__spinbutton_emoji_partial_match = self.__builder.get_object( + 'spinbutton_emoji_partial_match') + self.__settings_emoji.bind('has-partial-match', + self.__checkbutton_emoji_partial_match, + 'active', + Gio.SettingsBindFlags.DEFAULT) + self.__settings_emoji.bind('has-partial-match', + self.__spinbutton_emoji_partial_match, + 'sensitive', + Gio.SettingsBindFlags.GET) + + def adjustment_value_changed_cb(obj): + key = 'partial-match-length' + value = int(adjustment.get_value()) + if value == self.__settings_emoji.get_int(key): + return + self.__settings_emoji.set_int(key, value) + def settings_emoji_partial_match_length_cb(settings, key): + value = self.__settings_emoji.get_int(key) + old_value = int(self.__spinbutton_emoji_partial_match.get_value()) + if value == old_value: + return + self.__spinbutton_emoji_partial_match.set_value(value) + settings_emoji_partial_match_length_cb(None, 'partial-match-length') + adjustment = self.__spinbutton_emoji_partial_match.get_adjustment() + adjustment.connect('value-changed', adjustment_value_changed_cb) + self.__settings_emoji.connect('changed::partial-match-length', + settings_emoji_partial_match_length_cb) + + self.__hbox_emoji_partial_match = self.__builder.get_object( + 'hbox_emoji_partial_match') + self.__settings_emoji.bind('has-partial-match', + self.__hbox_emoji_partial_match, + 'sensitive', + Gio.SettingsBindFlags.GET) + self.__radiobutton_emoji_prefix_match = self.__builder.get_object( + 'radiobutton_emoji_prefix_match') + self.__radiobutton_emoji_suffix_match = self.__builder.get_object( + 'radiobutton_emoji_suffix_match') + self.__radiobutton_emoji_contain_match = self.__builder.get_object( + 'radiobutton_emoji_contain_match') + + def radiobuton_emoji_partial_match_cb(obj): + key = 'partial-match-condition' + condition = 0 + if not obj.get_active(): + return + if obj == self.__radiobutton_emoji_prefix_match: + condition = 0 + elif obj == self.__radiobutton_emoji_suffix_match: + condition = 1 + elif obj == self.__radiobutton_emoji_contain_match: + condition = 2 + else: + print('Wrong emoji partial match object') + return + self.__settings_emoji.set_int(key, condition) + def settings_emoji_partial_match_condition_cb(settings, key): + value = self.__settings_emoji.get_int(key) + obj = None + if value == 0: + obj = self.__radiobutton_emoji_prefix_match + elif value == 1: + obj = self.__radiobutton_emoji_suffix_match + elif value == 2: + obj = self.__radiobutton_emoji_contain_match + else: + print('Wrong emoji partial match condition') + return + if obj.get_active(): + return + obj.set_active(True) + + settings_emoji_partial_match_condition_cb(None, + 'partial-match-condition') + self.__radiobutton_emoji_prefix_match.connect( + 'toggled', + radiobuton_emoji_partial_match_cb) + self.__radiobutton_emoji_suffix_match.connect( + 'toggled', + radiobuton_emoji_partial_match_cb) + self.__radiobutton_emoji_contain_match.connect( + 'toggled', + radiobuton_emoji_partial_match_cb) + self.__settings_emoji.connect('changed::partial-match-condition', + settings_emoji_partial_match_condition_cb) + def __init_ui(self): # add icon search path self.__window = self.__builder.get_object("window_preferences") self.__window.connect("delete-event", Gtk.main_quit) + self.__window.connect("notify::window", self.__gdk_window_set_cb) self.__button_close = self.__builder.get_object("button_close") self.__button_close.connect("clicked", Gtk.main_quit) - # auto start ibus - self.__checkbutton_auto_start = self.__builder.get_object( - "checkbutton_auto_start") - self.__checkbutton_auto_start.set_active(self.__is_auto_start()) - self.__checkbutton_auto_start.connect("toggled", - self.__checkbutton_auto_start_toggled_cb) - - self.__config = self.__bus.get_config() - - self.__init_hotkey() + self.__init_hotkeys() self.__init_panel() self.__init_general() + self.__init_emoji() + + def __gdk_window_set_cb(self, object, pspec): + window = object.get_window() + if type(window) != GdkX11.X11Window: + return + s = '%u' % GdkX11.X11Window.get_xid(window) + GLib.setenv('IBUS_SETUP_XID', s, True) def __combobox_notify_active_engine_cb(self, combobox, property): engine = self.__combobox.get_active_engine() @@ -254,7 +506,7 @@ def __get_engine_setup_exec_args(self, engine): args = setup.split() args.insert(1, path.basename(args[0])) return args - name = str(engine.name) + name = str(engine.get_name()) libexecdir = os.environ['IBUS_LIBEXECDIR'] setup_path = (libexecdir + '/' + 'ibus-setup-' if libexecdir != None \ else 'ibus-setup-') + name.split(':')[0] @@ -267,7 +519,7 @@ def __treeview_notify_cb(self, treeview, prop): if prop.name not in ("active-engine", "engines"): return - engines = self.__treeview.get_engines() + engines = self.__treeview.get_sorted_engines() engine = self.__treeview.get_active_engine() self.__builder.get_object("button_engine_remove").set_sensitive(engine != None) @@ -275,25 +527,39 @@ def __treeview_notify_cb(self, treeview, prop): self.__builder.get_object("button_engine_up").set_sensitive(engine not in engines[:1]) self.__builder.get_object("button_engine_down").set_sensitive(engine not in engines[-1:]) - # obj = self.__builder.get_object("button_engine_preferences") - # if len(self.__get_engine_setup_exec_args(engine)) != 0: - # obj.set_sensitive(True) - # else: - # obj.set_sensitive(False) + obj = self.__builder.get_object("button_engine_preferences") + if len(self.__get_engine_setup_exec_args(engine)) != 0: + obj.set_sensitive(True) + else: + obj.set_sensitive(False) if prop.name == "engines": - engine_names = map(lambda e: e.get_name(), engines) - value = GLib.Variant.new_strv(engine_names) - self.__config.set_value("general", "preload_engines", value) + engines = self.__treeview.get_engines() + engine_names = [e.get_name() for e in engines] + self.__settings_general.set_strv('preload-engines', engine_names) def __button_engine_add_cb(self, button): + dialog = EngineDialog(transient_for = self.__window) + dialog.set_engines(self.__engines) + id = dialog.run() + + if id != Gtk.ResponseType.APPLY: + dialog.destroy() + return + + engine = dialog.get_selected_engine() + dialog.destroy() + + self.__treeview.append_engine(engine) + + def __button_engine_add_cb_deprecate(self, button): engine = self.__combobox.get_active_engine() self.__treeview.append_engine(engine) def __button_engine_about_cb(self, button): engine = self.__treeview.get_active_engine() if engine: - about = EngineAbout(engine) + about = EngineAbout(engine = engine, transient_for = self.__window) about.run() about.destroy() @@ -302,8 +568,8 @@ def __button_engine_preferences_cb(self, button): args = self.__get_engine_setup_exec_args(engine) if len(args) == 0: return - name = engine.name - if name in self.__engine_setup_exec_list.keys(): + name = engine.get_name() + if name in list(self.__engine_setup_exec_list.keys()): try: wpid, sts = os.waitpid(self.__engine_setup_exec_list[name], os.WNOHANG) @@ -316,48 +582,64 @@ def __button_engine_preferences_cb(self, button): self.__engine_setup_exec_list[name] = os.spawnl(os.P_NOWAIT, *args) def __init_bus(self): - try: - self.__bus = IBus.Bus() - # self.__bus.connect("config-value-changed", self.__config_value_changed_cb) - # self.__bus.connect("config-reloaded", self.__config_reloaded_cb) - # self.__bus.config_add_watch("/general") - # self.__bus.config_add_watch("/general/hotkey") - # self.__bus.config_add_watch("/panel") - except: - while self.__bus == None: - message = _("IBus daemon is not started. Do you want to start it now?") - dlg = Gtk.MessageDialog(type = Gtk.MESSAGE_QUESTION, - buttons = Gtk.ButtonsType.YES_NO, - message_format = message) - id = dlg.run() - dlg.destroy() - self.__flush_gtk_events() - if id != Gtk.ResponseType.YES: - sys.exit(0) - pid = os.spawnlp(os.P_NOWAIT, "ibus-daemon", "ibus-daemon", "--xim") - time.sleep(1) - try: - self.__bus = IBus.Bus() - except: - continue - message = _("IBus has been started! " - "If you can not use IBus, please add below lines in $HOME/.bashrc, and relogin your desktop.\n" - " export GTK_IM_MODULE=ibus\n" - " export XMODIFIERS=@im=ibus\n" - " export QT_IM_MODULE=ibus" - ) - dlg = Gtk.MessageDialog(type = Gtk.MESSAGE_INFO, - buttons = Gtk.ButtonsType.OK, - message_format = message) - id = dlg.run() - dlg.destroy() - self.__flush_gtk_events() + self.__bus = IBus.Bus() + if self.__bus.is_connected(): + return + + message = _("The IBus daemon is not running. Do you wish to start it?") + dlg = Gtk.MessageDialog(message_type = Gtk.MessageType.QUESTION, + buttons = Gtk.ButtonsType.YES_NO, + text = message) + id = dlg.run() + dlg.destroy() + self.__flush_gtk_events() + if id != Gtk.ResponseType.YES: + sys.exit(0) + + main_loop = GLib.MainLoop() + + timeout = 5 + GLib.timeout_add_seconds(timeout, lambda *args: main_loop.quit()) + self.__bus.connect("connected", lambda *args: main_loop.quit()) + + os.spawnlp(os.P_NOWAIT, "ibus-daemon", "ibus-daemon", "--xim", "--daemonize") + + main_loop.run() + + if self.__bus.is_connected(): + message = _("IBus has been started! " + "If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop.\n" + " export GTK_IM_MODULE=ibus\n" + " export XMODIFIERS=@im=ibus\n" + " export QT_IM_MODULE=ibus" + ) + dlg = Gtk.MessageDialog(message_type = Gtk.MessageType.INFO, + buttons = Gtk.ButtonsType.OK, + text = message) + id = dlg.run() + dlg.destroy() + self.__flush_gtk_events() + else: + # Translators: %d == 5 currently + message = _("IBus daemon could not be started in %d seconds.") + dlg = Gtk.MessageDialog(message_type = Gtk.MessageType.INFO, + buttons = Gtk.ButtonsType.OK, + text = message % timeout) + id = dlg.run() + dlg.destroy() + self.__flush_gtk_events() + sys.exit(0) def __shortcut_button_clicked_cb(self, button, name, section, _name, entry): - buttons = (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, - Gtk.STOCK_OK, Gtk.ResponseType.OK) - title = _("Select keyboard shortcut for %s") % _(name) - dialog = keyboardshortcut.KeyboardShortcutSelectionDialog(buttons = buttons, title = title) + buttons = (_("_Cancel"), Gtk.ResponseType.CANCEL, + _("_OK"), Gtk.ResponseType.OK) + title1 = _("Select keyboard shortcut for %s") + # Translators: Title of the window + title2 = _("switching input methods") + title = title1 % title2 + dialog = keyboardshortcut.KeyboardShortcutSelectionDialog( + title = title, transient_for = self.__window) + dialog.add_buttons(*buttons) text = entry.get_text() if text: shortcuts = text.split("; ") @@ -369,11 +651,73 @@ def __shortcut_button_clicked_cb(self, button, name, section, _name, entry): dialog.destroy() if id != Gtk.ResponseType.OK: return - self.__config.set_value(section, _name, GLib.Variant.new_strv(shortcuts)) + if section == 'panel/emoji': + self.__settings_emoji.set_strv(name, shortcuts) + else: + self.__settings_hotkey.set_strv(name, shortcuts) text = "; ".join(shortcuts) entry.set_text(text) - entry.set_tooltip_text(text) - + tooltip = "\n".join(shortcuts) + tooltip += "\n" + \ + _("Use shortcut with shift to switch to the previous input method") + entry.set_tooltip_text(tooltip) + + def __init_available_gtk_themes(self): + path_list = [] + path_list.append(os.path.join(GLib.get_home_dir(), ".themes")) + path_list.append(os.path.join(GLib.get_user_data_dir(), "themes")) + path_list.extend(list(map(lambda x: os.path.join( + x, "themes"), GLib.get_system_data_dirs()))) + theme_name_list = [] + gtk_theme_path = [] + for path in path_list: + gtk_theme_path.extend(glob.glob(path + "/*/gtk-*/gtk.css")) + for path in gtk_theme_path: + theme_name_list.append(os.path.basename( + os.path.dirname(os.path.dirname(path)))) + + theme_name_list.extend([ + 'Adwaita', 'HighContrast', 'HighContrastInverse' + ]) + theme_name_list = list(set(theme_name_list)) + theme_name_list.sort() + + return theme_name_list + + def __on_combobox_custom_theme_changed(self, combobox): + tree_iter = self.__combobox_custom_theme.get_active_iter() + if tree_iter is not None: + model = self.__combobox_custom_theme.get_model() + theme_name = model[tree_iter][0] + self.__settings_panel.set_string('custom-theme', theme_name) + + def __init_available_gtk_icons(self): + path_list = [] + path_list.append(os.path.join(GLib.get_home_dir(), ".icons")) + path_list.append(os.path.join(GLib.get_user_data_dir(), "icons")) + path_list.extend(list(map(lambda x: os.path.join( + x, "icons"), GLib.get_system_data_dirs()))) + icon_name_list = [] + gtk_icon_path = [] + for path in path_list: + gtk_icon_path.extend(glob.glob(path + "/*/index.theme")) + for path in gtk_icon_path: + dir = os.path.dirname(path) + if not os.path.exists(os.path.join(dir, "cursors")): + icon_name_list.append(os.path.basename(dir)) + + icon_name_list.extend(["Adwaita"]) + icon_name_list = list(set(icon_name_list)) + icon_name_list.sort() + + return icon_name_list + + def __on_combobox_custom_icon_changed(self, combobox): + tree_iter = self.__combobox_custom_icon.get_active_iter() + if tree_iter is not None: + model = self.__combobox_custom_icon.get_model() + icon_name = model[tree_iter][0] + self.__settings_panel.set_string('custom-icon', icon_name) def __item_started_column_toggled_cb(self, cell, path_str, model): @@ -385,10 +729,11 @@ def __item_started_column_toggled_cb(self, cell, path_str, model): if data[DATA_STARTED] == False: try: self.__bus.register_start_engine(data[DATA_LANG], data[DATA_NAME]) - except Exception, e: - dlg = Gtk.MessageDialog(type = Gtk.MESSAGE_ERROR, + except Exception as e: + dlg = Gtk.MessageDialog(message_type = Gtk.MessageType.ERROR, + transient_for = self.__window, buttons = Gtk.ButtonsType.CLOSE, - message_format = str(e)) + text = str(e)) dlg.run() dlg.destroy() self.__flush_gtk_events() @@ -396,10 +741,11 @@ def __item_started_column_toggled_cb(self, cell, path_str, model): else: try: self.__bus.register_stop_engine(data[DATA_LANG], data[DATA_NAME]) - except Exception, e: - dlg = Gtk.MessageDialog(type = Gtk.MESSAGE_ERROR, + except Exception as e: + dlg = Gtk.MessageDialog(message_type = Gtk.MessageType.ERROR, + transient_for = self.__window, buttons = Gtk.ButtonsType.CLOSE, - message_format = str(e)) + text = str(e)) dlg.run() dlg.destroy() self.__flush_gtk_events() @@ -421,106 +767,17 @@ def __item_preload_column_toggled_cb(self, cell, path_str, model): if data[DATA_PRELOAD]: if engine not in self.__preload_engines: self.__preload_engines.add(engine) - value = GLib.Variant.new_strv(list(self.__preload_engines)) - self.__config.set_value("general", "preload_engines", value) + self.__settings_general.set_strv('preload-engines', + list(self.__preload_engines)) else: if engine in self.__preload_engines: self.__preload_engines.remove(engine) - value = GLib.Variant.new_strv(list(self.__preload_engines)) - self.__config.set_value("general", "preload_engines", value) + self.__settings_general.set_strv('preload-engines', + list(self.__preload_engines)) # set new value model.set(iter, COLUMN_PRELOAD, data[DATA_PRELOAD]) - def __is_auto_start(self): - link_file = path.join(BaseDirectory.xdg_config_home, "autostart/IBus.desktop") - ibus_desktop = path.join(os.getenv("IBUS_PREFIX"), "share/applications/IBus.desktop") - - if not path.exists(link_file): - return False - if not path.islink(link_file): - return False - if path.realpath(link_file) != ibus_desktop: - return False - return True - - def __checkbutton_auto_start_toggled_cb(self, button): - auto_start_dir = path.join(BaseDirectory.xdg_config_home, "autostart") - if not path.isdir(auto_start_dir): - os.makedirs(auto_start_dir) - - link_file = path.join(BaseDirectory.xdg_config_home, "autostart/IBus.desktop") - ibus_desktop = path.join(os.getenv("IBUS_PREFIX"), "share/applications/IBus.desktop") - # unlink file - try: - os.unlink(link_file) - except: - pass - if self.__checkbutton_auto_start.get_active(): - os.symlink(ibus_desktop, link_file) - - def __combobox_lookup_table_orientation_changed_cb(self, combobox): - self.__config.set_value( - "panel", "lookup_table_orientation", - GLib.Variant.new_int32(self.__combobox_lookup_table_orientation.get_active())) - - def __combobox_panel_show_changed_cb(self, combobox): - self.__config.set_value( - "panel", "show", - GLib.Variant.new_int32(self.__combobox_panel_show.get_active())) - - def __combobox_panel_position_changed_cb(self, combobox): - self.__config.set_value( - "panel", "position", - GLib.Variant.new_int32(self.__combobox_panel_position.get_active())) - - def __checkbutton_custom_font_toggled_cb(self, button): - if self.__checkbutton_custom_font.get_active(): - self.__fontbutton_custom_font.set_sensitive(True) - self.__config.set_value("panel", "use_custom_font", - GLib.Variant.new_boolean(True)) - else: - self.__fontbutton_custom_font.set_sensitive(False) - self.__config.set_value("panel", "use_custom_font", - GLib.Variant.new_boolean(False)) - - def __fontbutton_custom_font_notify_cb(self, button, arg): - font_name = self.__fontbutton_custom_font.get_font_name() - font_name = unicode(font_name, "utf-8") - self.__config.set_value("panel", "custom_font", - GLib.Variant.new_string(font_name)) - - def __checkbutton_show_icon_on_systray_toggled_cb(self, button): - value = self.__checkbutton_show_icon_on_systray.get_active() - value = GLib.Variant.new_boolean(value) - self.__config.set_value("panel", "show_icon_on_systray", value) - - def __checkbutton_show_im_name_toggled_cb(self, button): - value = self.__checkbutton_show_im_name.get_active() - value = GLib.Variant.new_boolean(value) - self.__config.set_value("panel", "show_im_name", value) - - def __checkbutton_embed_preedit_text_toggled_cb(self, button): - value = self.__checkbutton_embed_preedit_text.get_active() - value = GLib.Variant.new_boolean(value) - self.__config.set_value("general", "embed_preedit_text", value) - - def __checkbutton_use_sys_layout_toggled_cb(self, button): - value = self.__checkbutton_use_sys_layout.get_active() - value = GLib.Variant.new_boolean(value) - self.__config.set_value("general", "use_system_keyboard_layout", value) - - def __checkbutton_use_global_engine_toggled_cb(self, button): - value = self.__checkbutton_use_global_engine.get_active() - value = GLib.Variant.new_boolean(value) - self.__config.set_value("general", "use_global_engine", value) - - def __config_value_changed_cb(self, bus, section, name, value): - pass - - def __config_reloaded_cb(self, bus): - pass - def __sigusr1_cb(self, *args): self.__window.present() @@ -530,7 +787,13 @@ def run(self): Gtk.main() if __name__ == "__main__": - locale.setlocale(locale.LC_ALL, '') - i18n_init() + try: + locale.setlocale(locale.LC_ALL, '') + except locale.Error: + print("Using the fallback 'C' locale", file=sys.stderr) + locale.setlocale(locale.LC_ALL, 'C') + + i18n.init_textdomain(DOMAINNAME) + i18n.init_textdomain('xkeyboard-config') setup = Setup() setup.run() diff --git a/setup/setup.ui b/setup/setup.ui index e37cb323a..6ded20616 100644 --- a/setup/setup.ui +++ b/setup/setup.ui @@ -1,7 +1,6 @@ - + - - + @@ -16,920 +15,1166 @@ - + - + - Embedded in menu + Top left corner - When active + Top right corner - Always + Bottom left corner + + + Bottom right corner + + + Custom - + - + - Top left corner + Do not show - Top right corner - - - Bottom left corner + Hide automatically - Bottom right corner - - - Custom + Always + + + + + + + + + + + + + + 3.0 + 1.0 + 255.0 + 1.0 + 10.0 + 10.0 + + False 12 IBus Preferences False center-always ibus-setup + + True - - True + vertical + True + False 12 True True - + + vertical + True + False + 18 + 12 + 12 + 12 + 12 + + + True + False + 0 + none + + + True + False + 12 + 6 + 6 + 12 + + + True + False + The shortcut keys for switching to next input method in the list + start + Next input method: + + + 0 + 0 + + + + + True + False + False + The shortcut keys for switching to previous input method in the list + start + Previous input method: + + + 0 + 1 + + + + + horizontal + True + False + 6 + True + + + True + True + False + + + True + True + 0 + + + + + ... + False + True + True + False + False + True + + + False + True + 1 + + + + + 1 + 0 + + + + + horizontal + True + False + 6 + True + + + > True + False + True + False + + + True + True + 0 + + + + + ... + False + True + False + True + False + False + True + + + False + True + 1 + + + + + 1 + 1 + + + + + True + False + The shortcut keys for turning input method on or off + start + Enable or disable: + + + 0 + 2 + + + + + True + False + start + Enable: + + + 0 + 3 + + + + + horizontal + True + False + 6 + True + + + True + True + False + + + True + True + 0 + + + + + ... + False + True + True + True + False + True + + + False + True + 1 + + + + + 1 + 3 + + + + + True + False + start + Disable: + + + 0 + 4 + + + + + horizontal + True + False + 6 + True + + + True + True + False + + + True + True + 0 + + + + + ... + False + True + True + True + False + True + + + False + True + 1 + + + + + 1 + 4 + + + + + + + True + False + <b>Keyboard Shortcuts</b> + True + + + + + False + True + 0 + + + + + True + False + 0 + none + + + True + False + 12 + 6 + 6 + 12 + + + True + False + Set the orientation of candidates in lookup table + start + Candidates orientation: + right + True + + + 0 + 0 + + + + + True + False + model_candidates_orientation + True + + + + 0 + + + + + 1 + 0 + + + + + True + False + Set the behavior of ibus how to show or hide language bar + start + Show property panel: + right + True + + + 0 + 1 + + + + + False + True + start + Language panel position: + right + True + + + 0 + 2 + + + + + True + False + model_panel_show_mode + True + + + + 0 + + + + + 1 + 1 + + + + + False + True + model_panel_position + True + + + + 0 + + + + + 1 + 2 + + + + + Show icon on system tray + False + True + True + False + Show icon on system tray + False + start + True + True + + + 0 + 3 + 2 + + + + + Show input method name on language bar + False + True + True + False + Show input method's name on language bar when check the checkbox + False + start + True + True + + + 0 + 4 + 2 + + + + + Embed preedit text in application window + False + True + True + False + Embed the preedit text of input method in the application window + False + start + True + True + + + 0 + 5 + 2 + + + + + Use custom font: + False + True + True + False + False + True + start + True + True + + + 0 + 6 + + + + + True + True + True + False + True + + + 1 + 6 + + + + + + + True + False + <b>Font and Style</b> + True + + + + + False + True + 1 + + + + + + + True + False + General + + + False + + + + + vertical True - 12 - 12 - 12 - 12 + False + 12 + 12 + 12 + 12 - + + horizontal True - vertical - 18 + False - + True - 0 - none + False - + + vertical True - 6 - 12 + False + 6 - + True - 5 - 2 - 12 - 6 - - - True - The shortcut keys for switching to next input method in the list - 0 - Next input method: - - - 3 - 4 - GTK_FILL - GTK_FILL - - - - - True - False - The shortcut keys for switching to previous input method in the list - 0 - Previous input method: - - - 4 - 5 - GTK_FILL - GTK_FILL - - - - - True - 6 - - - True - True - False - - - 0 - - - - - ... - True - True - False - True - - - False - 1 - - - - - 1 - 2 - - - - - True - 6 - - - True - True - False - - - 0 - - - - - ... - True - True - False - True - - - False - 1 - - - - - 1 - 2 - 3 - 4 - - - - - True - 6 - - - True - False - True - False - - - 0 - - - - - ... - True - False - True - False - True - - - False - 1 - - - - - 1 - 2 - 4 - 5 - - - - - True - The shortcut keys for turning input method on or off - 0 - Enable or disable: - - - GTK_FILL - GTK_FILL - - - - - True - 0 - Enable: - - - 1 - 2 - GTK_FILL - GTK_FILL - - - - - True - 6 - - - True - True - False - - - 0 - - - - - ... - True - True - True - True - - - False - 1 - - - - - 1 - 2 - 1 - 2 - - + False - + True - 0 - Disable: - - 2 - 3 - GTK_FILL - GTK_FILL - + + + False + True + 0 + + + + + 240 + 300 + True + True + in - + True - 6 - - - True - True - False - - - 0 - - - - - ... - True - True - True - True - - - False - 1 - - + True - - 1 - 2 - 2 - 3 - + + True + True + 1 + - - - True - <b>Keyboard Shortcuts</b> - True - - - False + True + True 0 - + + vertical True - 0 - none + False + 5 + start + 12 - + + _Add + True + False True - 6 - 12 - - - True - 7 - 2 - 12 - 6 - - - True - Set the orientation of candidates in lookup table - 0 - Candidates orientation: - right - - - GTK_FILL - - - - - True - model_candidates_orientation - - - - 0 - - - - - 1 - 2 - - - - - True - Set the behavior of ibus how to show or hide language bar - 0 - Show language panel: - right - - - 1 - 2 - GTK_FILL - - - - - True - 0 - Language panel position: - right - - - 2 - 3 - GTK_FILL - - - - - True - model_panel_show_mode - - - - 0 - - - - - 1 - 2 - 1 - 2 - - - - - True - model_panel_position - - - - 0 - - - - - 1 - 2 - 2 - 3 - - - - - Show icon on system tray - True - True - False - Show icon on system tray - True - - - 2 - 3 - 4 - GTK_FILL - - - - - Show input method name on language bar - True - True - False - Show input method's name on language bar when check the checkbox - True - - - 2 - 4 - 5 - GTK_FILL - - - - - Embed preedit text in application window - True - True - False - Embed the preedit text of input method in the application window - True - - - 2 - 5 - 6 - GTK_FILL - - - - - Use custom font: - True - True - False - True - True - - - 6 - 7 - GTK_FILL - - - - - True - True - True - - - 1 - 2 - 6 - 7 - - - - + False + True + True + Add the selected input method into the enabled input methods + False + + + False + False + 0 + + + + + _Remove + True + False + True + False + True + True + Remove the selected input method from the enabled input methods + False + + + False + False + 1 + + + + + _Up + True + False + True + False + True + True + Move up the selected input method in the enabled input methods list + False + + + False + False + 2 + + + + + _Down + True + False + True + False + True + True + Move down the selected input method in the enabled input methods + False + + + False + False + 3 + + + + + _About + True + False + True + False + True + True + Show information of the selected input method + False + + False + False + 4 + - - + + + _Preferences + True + False True - <b>Font and Style</b> - True + False + True + True + Show setup of the selected input method + False + + False + False + 5 + False + True + 1 + + + + + True + True + 0 + + + + + horizontal + True + False + 6 + 6 + + + True + False + dialog-information + 2 + + + False + True + 0 + + + + + True + False + + 0 + True + 74 + <small><i>The active input method can be switched around from the selected ones in the above list by pressing the keyboard shortcut keys or clicking the panel icon.</i></small> + True + + + + True + True 1 + + False + True + 1 + + + 1 + - + True - General + False + Input Method + 1 False - + + vertical True - 12 - 12 - 12 - 12 + False + 18 + 12 + 12 + 12 + 12 - + True - vertical + False + 0 + none - + True + False + 12 + 6 + 6 + 12 - + True - - - True - vertical - 6 - - - True - - - True - - - - - False - 0 - - - - - 240 - 300 - True - True - automatic - automatic - in - - - True - True - - - - - 1 - - - - + False + The shortcut keys to enable conversions of emoji annotations or Unicode names + start + Emoji annotation: - 0 + 0 + 0 - + + horizontal True - 12 + False + 6 + true - + True - vertical - 5 - start - - - gtk-add - True - False - True - True - Add the selected input method into the enabled input methods - True - - - False - False - 0 - - - - - gtk-remove - True - False - True - True - Remove the selected input method from the enabled input methods - True - - - False - False - 1 - - - - - gtk-go-up - True - False - True - True - Move up the selected input method in the enabled input methods list - True - - - False - False - 2 - - - - - gtk-go-down - True - False - True - True - Move down the selected input method in the enabled input methods - True - - - False - False - 3 - - - - - gtk-about - True - False - True - True - Show information of the selected input method - True - - - False - False - 4 - - - - - gtk-preferences - True - False - True - True - Show setup of the selected input method - True - - - False - False - 5 - - + True + False + + + True + True + 0 + + + + + ... + False + True + True + False + False + True + + False + True + 1 + - False - 1 + 1 + 0 + + + + + True + False + The shortcut keys to enable Unicode code point conversions + start + Unicode code point: + + + 0 + 1 - - - 0 - - - - - True - 6 - + + horizontal True + False 6 + true - + True - gtk-info - 2 + True + False - False + True + True 0 - + + ... + False True - 0 - <small><i>The default input method is the top one in the list. -You may use up/down buttons to change it.</i></small> - True + True + False + False + True + False + True 1 + + 1 + 1 + - - False - 1 - + + + + True + False + <b>Keyboard Shortcuts</b> + True + + + False + True + 0 + - - - 1 - - - - - True - Input Method - - - 1 - False - - - - - True - 12 - 12 - 12 - 12 - + True - vertical + False + 0 + none - + True - 0 - none + False + 12 + 6 + 6 + 12 + false - + True - 12 - - - True - 6 - 12 - - - True - vertical - 6 - - - Use system keyboard layout - True - True - False - Use system keyboard (XKB) layout - True - - - False - False - 0 - - - - - - + False + Set a font of Unicode candidates on the emoji dialog + start + Unicode font: + right + + 0 + - - + + True - <b>Keyboard Layout</b> - True + True + True + False + + 1 + + + + + + True + False + Set a language of emoji annotations on the emoji dialog + start + Emoji annotation language: + right + + + 0 + 1 + + + + + True + True + True + False + + + 1 + 1 + + + + + Match emoji annotations partially with the following condition and more than the number of characters: + False + True + True + False + If emoji annotations can be matched with a partial string instead of the exact match + False + start + True + + + 0 + 2 + 2 + + + + + adjustment_emoji_partial_match + 3.0 + True + True + False + start + + + 0 + 2 + 3 + - - - False - False - 0 - - - - - True - 0 - none - + + horizontal True - 12 + False + 6 - + + Prefix match True - 6 - 12 - - - True - vertical - 6 - - - Share the same input method among all applications - True - True - False - True - - - False - False - 0 - - - - + True + False + start + + False + True + 0 + + + + + Suffix match + radiobutton_emoji_prefix_match + True + True + False + start + + + False + True + 1 + + + + + Containing match + radiobutton_emoji_prefix_match + True + True + False + start + + + False + True + 2 + - - - - True - <b>Global input method settings</b> - True - + + 0 + 2 + 4 + - - False - False - 1 - + + + + True + False + <b>Font and Style</b> + True + + + False + True + 1 + @@ -937,65 +1182,246 @@ You may use up/down buttons to change it.</i></small> - + True - Advanced + False + Emoji - 3 + 2 False - - True + vertical + True + False + 12 + 12 + 12 + 12 - + + True + False + 0 + none + + + vertical + True + False + 6 + 6 + 24 + + + Use system keyboard layout + False + True + True + False + Use system keyboard (XKB) layout + False + start + True + + + False + False + 0 + + + + + + + True + False + <b>Keyboard Layout</b> + True + + + + + False + False + 0 + - + True - <big><b>IBus</b></big> -<small>The intelligent input bus</small> -Homepage: http://code.google.com/p/ibus - - - - - True - center + False + 0 + none + + + vertical + True + False + 6 + 6 + 24 + + + Share the same input method among all applications + False + True + True + False + False + start + True + + + False + False + 0 + + + + + + + True + False + <b>Global input method settings</b> + True + + + False + False 1 - True + True + False 0 none - + + vertical True - 6 - 12 + False + 6 + 6 + 24 - - Start ibus on login + + Choose glyphs with input method's language on candidate window + False True True False - True + Choose glyphs with the input method's language on the candidate window for the duplicated code points + False + start True + + False + False + 0 + + + + + True + False + 12 + 6 + + + Use custom theme: + Choose a theme of the candidate window + False + True + True + False + False + True + start + True + True + + + 0 + 0 + + + + + True + False + model_custom_theme + True + + + + 0 + + + + + 1 + 0 + + + + + Use custom icon: + Choose a theme of the arrow buttons on the candidate window + False + True + True + False + False + True + start + True + + + 0 + 1 + + + + + True + False + model_custom_icon + + + + 0 + + + + + 1 + 1 + + + + + False + False + 1 + - + True - <b>Startup</b> + False + <b>Font and Theme</b> True @@ -1011,33 +1437,61 @@ Homepage: http://code.google.com/p/ibus 3 + + + True + False + Advanced + + + 3 + False + + + + + vertical + False + True + + + 4 + + True + False About - 3 + 4 False + True + True 0 - + + horizontal True + False 12 end - gtk-close + _Close + True + False True True False - True + False False @@ -1048,6 +1502,7 @@ Homepage: http://code.google.com/p/ibus False + True 1 diff --git a/src/Makefile.am b/src/Makefile.am index b4d0dcf40..578694b52 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -2,27 +2,32 @@ # # ibus - The Input Bus # -# Copyright (c) 2007-2010 Peng Huang -# Copyright (c) 2007-2010 Red Hat, Inc. +# Copyright (c) 2007-2015 Peng Huang +# Copyright (c) 2015-2021 Takao Fujiwara +# Copyright (c) 2007-2017 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA NULL = -SUBDIRS = . tests +if ENABLE_TESTS +TESTS_DIR = tests +endif + +SUBDIRS = . $(TESTS_DIR) # libibus = libibus-@IBUS_API_VERSION@.la libibus = libibus-1.0.la @@ -36,16 +41,20 @@ INTROSPECTION_COMPILER_ARGS = \ $(NULL) INTROSPECTION_GIRS = CLEANFILES = +noinst_PROGRAMS = # C preprocessor flags -AM_CPPFLAGS = \ - -DG_LOG_DOMAIN=\"IBUS\" \ - @GLIB2_CFLAGS@ \ - @GOBJECT2_CFLAGS@ \ - @GIO2_CFLAGS@ \ - -DIBUS_DATA_DIR=\"$(pkgdatadir)\" \ - -DIBUS_COMPILATION \ - -DISOCODES_PREFIX=\"$(ISOCODES_PREFIX)\" \ +AM_CPPFLAGS = \ + -DG_LOG_DOMAIN=\"IBUS\" \ + @GLIB2_CFLAGS@ \ + @GOBJECT2_CFLAGS@ \ + @GIO2_CFLAGS@ \ + -DIBUS_CACHE_DIR=\""$(localstatedir)/cache/ibus"\" \ + -DIBUS_DATA_DIR=\"$(pkgdatadir)\" \ + -DIBUS_DISABLE_DEPRECATION_WARNINGS \ + -DIBUS_COMPILATION \ + -DISOCODES_PREFIX=\"$(ISOCODES_PREFIX)\" \ + -DX11_DATA_PREFIX=\"$(X11_PREFIX)\" \ $(NULL) # ibus library @@ -63,122 +72,140 @@ libibus_1_0_la_LDFLAGS = \ $(NULL) ibus_sources = \ - ibusshare.c \ - ibusobject.c \ - ibusserializable.c \ - ibusproxy.c \ - ibusservice.c \ - ibusfactory.c \ - ibusengine.c \ - ibuserror.c \ - ibustext.c \ - ibuskeymap.c \ + ibusaccelgroup.c \ ibusattribute.c \ ibusattrlist.c \ - ibusproperty.c \ - ibusproplist.c \ - ibuslookuptable.c \ - ibusinputcontext.c \ + ibusbus.c \ + ibuscomponent.c \ ibusconfig.c \ ibusconfigservice.c \ - ibuspanelservice.c \ - ibusbus.c \ + ibusemoji.c \ + ibusengine.c \ + ibusenginedesc.c \ + ibusenginesimple.c \ + ibuserror.c \ + ibusfactory.c \ + ibushotkey.c \ + ibusinputcontext.c \ + ibuskeymap.c \ ibuskeynames.c \ ibuskeyuni.c \ - ibushotkey.c \ - ibusxml.c \ - ibusenginedesc.c \ + ibuslookuptable.c \ + ibusobject.c \ ibusobservedpath.c \ - ibuscomponent.c \ + ibuspanelservice.c \ + ibusproperty.c \ + ibusproplist.c \ + ibusproxy.c \ + ibusregistry.c \ + ibusserializable.c \ + ibusservice.c \ + ibusshare.c \ + ibustext.c \ + ibusunicode.c \ ibusutil.c \ - ibusenginesimple.c \ - $(NULL) + ibusxevent.c \ + ibusxml.c \ + $(NULL) libibus_1_0_la_SOURCES = \ - $(ibus_sources) \ - ibusmarshalers.c \ + ibuscomposetable.c \ ibusenumtypes.c \ + ibusmarshalers.c \ + $(ibus_sources) \ $(NULL) ibus_marshalers_sources = \ - ibusmarshalers.h \ ibusmarshalers.c \ + ibusmarshalers.h \ $(NULL) ibus_enumtypes_sources = \ - ibusenumtypes.h \ ibusenumtypes.c \ + ibusenumtypes.h \ $(NULL) ibus_headers = \ ibus.h \ - ibusversion.h \ - ibusshare.h \ - ibusdebug.h \ - ibusobject.h \ - ibusserializable.h \ - ibusproxy.h \ - ibusservice.h \ - ibusfactory.h \ - ibusengine.h \ - ibuserror.h \ - ibustext.h \ - ibuskeymap.h \ + ibusaccelgroup.h \ ibusattribute.h \ ibusattrlist.h \ - ibusproperty.h \ - ibusproplist.h \ - ibuslookuptable.h \ - ibusinputcontext.h \ + ibusbus.h \ + ibuscomponent.h \ ibusconfig.h \ ibusconfigservice.h \ - ibuspanelservice.h \ - ibuskeysyms.h \ - ibuskeysyms-compat.h \ - ibuskeys.h \ - ibustypes.h \ - ibusbus.h \ - ibushotkey.h \ - ibusxml.h \ + ibusdebug.h \ + ibusemoji.h \ + ibusengine.h \ ibusenginedesc.h \ + ibusenginesimple.h \ + ibuserror.h \ + ibusfactory.h \ + ibushotkey.h \ + ibusinputcontext.h \ + ibuskeymap.h \ + ibuskeys.h \ + ibuskeysyms-compat.h \ + ibuskeysyms.h \ + ibuslookuptable.h \ + ibusobject.h \ ibusobservedpath.h \ - ibuscomponent.h \ + ibuspanelservice.h \ + ibusproperty.h \ + ibusproplist.h \ + ibusproxy.h \ + ibusregistry.h \ + ibusserializable.h \ + ibusservice.h \ + ibusshare.h \ + ibustext.h \ + ibustypes.h \ + ibusunicode.h \ ibusutil.h \ - ibusenginesimple.h \ + ibusxevent.h \ + ibusxml.h \ $(NULL) ibusincludedir = $(includedir)/ibus-@IBUS_API_VERSION@ ibus_public_headers = \ $(ibus_headers) \ ibusenumtypes.h \ + ibusversion.h \ $(NULL) ibusinclude_HEADERS = \ $(ibus_public_headers) \ $(NULL) -ibus_privite_headers = \ - ibusinternal.h \ - keyname-table.h \ - gtkimcontextsimpleseqs.h \ +ibus_private_headers = \ + gtkimcontextsimpleseqs.h \ + ibuscomposetable.h \ + ibusemojigen.h \ + ibusenginesimpleprivate.h \ + ibusinternal.h \ + ibusunicodegen.h \ + keyname-table.h \ $(NULL) noinst_HEADERS = \ - $(ibus_privite_headers) \ + $(ibus_private_headers) \ $(NULL) -BUILT_SOURCES = \ - ibusmarshalers.h \ - ibusmarshalers.c \ - ibusenumtypes.h \ - ibusenumtypes.c \ +BUILT_SOURCES = \ + $(ibus_marshalers_sources) \ + $(ibus_enumtypes_sources) \ $(NULL) if HAVE_INTROSPECTION -introspection_files = \ - $(ibus_public_headers) \ +introspection_sources = \ + $(ibus_headers) \ $(ibus_sources) \ - ibusenumtypes.c \ - ibusenumtypes.h \ + $(NULL) +built_introspection_sources = \ + $(ibus_enumtypes_sources) \ + ibusversion.h \ $(NULL) IBus-1.0.gir: $(libibus) Makefile IBus_1_0_gir_SCANNERFLAGS = --pkg-export=ibus-1.0 $(IBUS_GIR_SCANNERFLAGS) IBus_1_0_gir_INCLUDES = GLib-2.0 GObject-2.0 Gio-2.0 IBus_1_0_gir_LIBS = $(libibus) -IBus_1_0_gir_FILES = $(addprefix $(srcdir)/,$(introspection_files)) -IBus_1_0_gir_CFLAGS = -DIBUS_COMPILATION +IBus_1_0_gir_FILES = \ + $(addprefix $(srcdir)/,$(introspection_sources)) \ + $(addprefix $(builddir)/,$(built_introspection_sources)) \ + $(NULL) +IBus_1_0_gir_CFLAGS = -DIBUS_COMPILATION -I$(srcdir) -I$(builddir) INTROSPECTION_GIRS += IBus-1.0.gir girdir = $(datadir)/gir-1.0 @@ -215,11 +242,154 @@ ibusmarshalers.c: ibusmarshalers.h ibusmarshalers.list $(GLIB_GENMARSHAL) --prefix=_ibus_marshal $(srcdir)/ibusmarshalers.list --body --internal) > $@.tmp && \ mv $@.tmp $@ +if ENABLE_EMOJI_DICT +AM_CPPFLAGS += -DENABLE_EMOJI_DICT + +dictdir = $(pkgdatadir)/dicts +LANG_FILES = $(basename $(notdir $(wildcard $(EMOJI_ANNOTATION_DIR)/*.xml))) +EMOJI_DICT_FILES = $(patsubst %,dicts/emoji-%.dict,$(LANG_FILES)) +# emoji-root.dict, emoji-sr_Cyrl.dict have no contents. +dict_DATA = $(EMOJI_DICT_FILES) + +noinst_PROGRAMS += emoji-parser + +dicts/emoji-%.dict: emoji-parser + $(AM_V_at)if test x"$(LANG_FILES)" = x ; then \ + echo "WARNING: Not found $(EMOJI_ANNOTATION_DIR)/en.xml" 1>&2; \ + fi; \ + if test -f $@; then \ + echo "Already exists $@"; \ + exit 0; \ + fi; \ + if test -f \ + "$(EMOJI_ANNOTATION_DIR)/../annotationsDerived/$*.xml" ; then \ + xml_derived_option="--xml-derived $(EMOJI_ANNOTATION_DIR)/../annotationsDerived/$*.xml"; \ + plus_comment="derived"; \ + fi; \ + is_skip=0; \ + if test x"$*" = xen ; then \ + $(builddir)/emoji-parser \ + --unicode-emoji-dir $(UNICODE_EMOJI_DIR) \ + --xml $(EMOJI_ANNOTATION_DIR)/$*.xml \ + $$xml_derived_option \ + --xml-ascii $(top_srcdir)/data/annotations/en_ascii.xml \ + --out-category ibusemojigen.h \ + --out $@; \ + else \ + $(builddir)/emoji-parser \ + --unicode-emoji-dir $(UNICODE_EMOJI_DIR) \ + --xml $(EMOJI_ANNOTATION_DIR)/$*.xml \ + $$xml_derived_option \ + --out $@; \ + retval=$$?; \ + if test $$retval -eq 99 ; then \ + is_skip=1; \ + touch $@; \ + elif test $$retval -ne 0 ; then \ + echo "Fail to generate $@"; \ + abrt; \ + fi; \ + fi; \ + if test $$is_skip -eq 0 ; then \ + echo "Generated $$plus_comment $@"; \ + else \ + echo "Skip $$plus_comment $@"; \ + fi; + +ibusemojigen.h: + $(MAKE) $(AM_MAKEFLAGS) dicts/emoji-en.dict + +# We put dicts/emoji-%.dict as the make target for the parallel build +# and the make target has to be genarated even if the file size is zero. +# But we don't want to install the zero size files and delete them +# in install-data-hook. +install-data-hook: + $(AM_V_at)list='$(wildcard dicts/*.dict)'; \ + test -n "$(dictdir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -s "$$d$$p"; then continue; fi; \ + basename "$$p"; \ + done | \ + while read file; do \ + if test -f "$(DESTDIR)$(dictdir)/$$file"; then \ + echo "Delete $(DESTDIR)$(dictdir)/$$file"; \ + rm "$(DESTDIR)$(dictdir)/$$file" || exit $$?; \ + fi; \ + done + +emoji_parser_SOURCES = \ + emoji-parser.c \ + $(NULL) +emoji_parser_CFLAGS = \ + $(GLIB2_CFLAGS) \ + $(GOBJECT2_CFLAGS) \ + $(NULL) +emoji_parser_LDADD = \ + $(libibus) \ + $(GLIB2_LIBS) \ + $(GOBJECT2_LIBS) \ + $(NULL) + +clean-local: + -rm -rf dicts + $(NULL) +endif + +if ENABLE_UNICODE_DICT +unicodedir = $(pkgdatadir)/dicts +unicode_DATA = dicts/unicode-names.dict dicts/unicode-blocks.dict +noinst_PROGRAMS += unicode-parser + +dicts/unicode-names.dict: unicode-parser + $(AM_V_at)input_file="$(UCD_DIR)/NamesList.txt"; \ + if test ! -f "$$input_file" ; then \ + echo "WARNING: Not found $$input_file" 1>&2; \ + else \ + $(builddir)/unicode-parser \ + --input-names-list $$input_file \ + --output-names-list $@; \ + echo "Generated $@"; \ + fi; + +dicts/unicode-blocks.dict: unicode-parser + $(AM_V_at)input_file="$(UCD_DIR)/Blocks.txt"; \ + if test ! -f "$$input_file" ; then \ + echo "WARNING: Not found $$input_file" 1>&2; \ + else \ + $(builddir)/unicode-parser \ + --input-blocks $$input_file \ + --output-blocks-trans ibusunicodegen.h \ + --output-blocks $@; \ + echo "Generated $@"; \ + fi; + +ibusunicodegen.h: + $(MAKE) $(AM_MAKEFLAGS) dicts/unicode-blocks.dict + +unicode_parser_SOURCES = \ + unicode-parser.c \ + $(NULL) +unicode_parser_CFLAGS = \ + $(GLIB2_CFLAGS) \ + $(NULL) +unicode_parser_LDADD = \ + $(GLIB2_LIBS) \ + $(libibus) \ + $(NULL) + +clean-local: + -rm -rf dicts + $(NULL) +endif + EXTRA_DIST = \ + emoji-parser.c \ ibusversion.h.in \ ibusmarshalers.list \ ibusenumtypes.h.template \ ibusenumtypes.c.template \ + unicode-parser.c \ $(NULL) CLEANFILES += \ @@ -228,7 +398,15 @@ CLEANFILES += \ stamp-ibusenumtypes.h \ $(NULL) +MAINTAINERCLEANFILES = \ + ibusemojigen.h \ + ibusunicodegen.h \ + dicts/emoji-en.dict \ + dicts/unicode-blocks.dict \ + $(NULL) + DISTCLEANFILES = \ + $(MAINTAINERCLEANFILES) \ ibusversion.h \ $(NULL) diff --git a/src/compose-parse.py b/src/compose-parse.py new file mode 100755 index 000000000..b90e16d0c --- /dev/null +++ b/src/compose-parse.py @@ -0,0 +1,1067 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# compose-parse.py, version 1.5 +# +# multifunction script that helps manage the compose sequence table in GTK+ (gtk/gtkimcontextsimple.c) +# the script produces statistics and information about the whole process, run with --help for more. +# +# You may need to switch your python installation to utf-8, if you get 'ascii' codec errors. +# +# Complain to Simos Xenitellis (simos@gnome.org, http://simos.info/blog) for this craft. + +from re import findall, match, split, sub +from string import atoi +from unicodedata import normalize +from urllib import urlretrieve +from os.path import isfile, getsize +from copy import copy + +import sys +import getopt + +# We grab files off the web, left and right. +URL_COMPOSE = 'http://cgit.freedesktop.org/xorg/lib/libX11/plain/nls/en_US.UTF-8/Compose.pre' +URL_KEYSYMSTXT = "http://www.cl.cam.ac.uk/~mgk25/ucs/keysyms.txt" +URL_GDKKEYSYMSH = "http://git.gnome.org/browse/gtk%2B/plain/gdk/gdkkeysyms.h" +URL_UNICODEDATATXT = 'http://www.unicode.org/Public/6.0.0/ucd/UnicodeData.txt' +FILENAME_COMPOSE_SUPPLEMENTARY = 'gtk-compose-lookaside.txt' + +# We currently support keysyms of size 2; once upstream xorg gets sorted, +# we might produce some tables with size 2 and some with size 4. +SIZEOFINT = 2 + +# Current max compose sequence length; in case it gets increased. +WIDTHOFCOMPOSETABLE = 5 + +keysymdatabase = {} +keysymunicodedatabase = {} +unicodedatabase = {} + +headerfile_start = """/* GTK - The GIMP Tool Kit + * Copyright (C) 2007, 2008 GNOME Foundation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + */ + +/* + * File auto-generated from script found at http://bugzilla.gnome.org/show_bug.cgi?id=321896 + * using the input files + * Input : http://cgit.freedesktop.org/xorg/lib/libX11/plain/nls/en_US.UTF-8/Compose.pre + * Input : http://www.cl.cam.ac.uk/~mgk25/ucs/keysyms.txt + * Input : http://www.unicode.org/Public/UNIDATA/UnicodeData.txt + * + * This table is optimised for space and requires special handling to access the content. + * This table is used solely by http://svn.gnome.org/viewcvs/gtk%2B/trunk/gtk/gtkimcontextsimple.c + * + * The resulting file is placed at http://svn.gnome.org/viewcvs/gtk%2B/trunk/gtk/gtkimcontextsimpleseqs.h + * This file is described in bug report http://bugzilla.gnome.org/show_bug.cgi?id=321896 + */ + +/* + * Modified by the GTK+ Team and others 2007, 2008. See the AUTHORS + * file for a list of people on the GTK+ Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GTK+ at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __GTK_IM_CONTEXT_SIMPLE_SEQS_H__ +#define __GTK_IM_CONTEXT_SIMPLE_SEQS_H__ + +/* === These are the original comments of the file; we keep for historical purposes === + * + * The following table was generated from the X compose tables include with + * XFree86 4.0 using a set of Perl scripts. Contact Owen Taylor + * to obtain the relevant perl scripts. + * + * The following compose letter letter sequences confliced + * Dstroke/dstroke and ETH/eth; resolved to Dstroke (Croation, Vietnamese, Lappish), over + * ETH (Icelandic, Faroese, old English, IPA) [ D- -D d- -d ] + * Amacron/amacron and ordfeminine; resolved to ordfeminine [ _A A_ a_ _a ] + * Amacron/amacron and Atilde/atilde; resolved to atilde [ -A A- a- -a ] + * Omacron/Omacron and masculine; resolved to masculine [ _O O_ o_ _o ] + * Omacron/omacron and Otilde/atilde; resolved to otilde [ -O O- o- -o ] + * + * [ Amacron and Omacron are in Latin-4 (Baltic). ordfeminine and masculine are used for + * spanish. atilde and otilde are used at least for Portuguese ] + * + * at and Aring; resolved to Aring [ AA ] + * guillemotleft and caron; resolved to guillemotleft [ << ] + * ogonek and cedilla; resolved to cedilla [ ,, ] + * + * This probably should be resolved by first checking an additional set of compose tables + * that depend on the locale or selected input method. + */ + +static const guint16 gtk_compose_seqs_compact[] = {""" + +headerfile_end = """}; + +#endif /* __GTK_IM_CONTEXT_SIMPLE_SEQS_H__ */ +""" + +declare_compose_sequence_32bit_first = """}; + +static const guint16 gtk_compose_seqs_compact_32bit_first[] = {""" + +declare_compose_sequence_32bit_second = """}; + +static const guint32 gtk_compose_seqs_compact_32bit_second[] = {""" + +def stringtohex(str): return atoi(str, 16) + +def factorial(n): + if n <= 1: + return 1 + else: + return n * factorial(n-1) + +def uniq(*args) : + """ Performs a uniq operation on a list or lists """ + theInputList = [] + for theList in args: + theInputList += theList + theFinalList = [] + for elem in theInputList: + if elem not in theFinalList: + theFinalList.append(elem) + return theFinalList + + + +def all_permutations(seq): + """ Borrowed from http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/252178 """ + """ Produces all permutations of the items of a list """ + if len(seq) <=1: + yield seq + else: + for perm in all_permutations(seq[1:]): + for i in range(len(perm)+1): + #nb str[0:1] works in both string and list contexts + yield perm[:i] + seq[0:1] + perm[i:] + +def usage(): + print """compose-parse available parameters: + -h, --help this craft + -s, --statistics show overall statistics (both algorithmic, non-algorithmic) + -a, --algorithmic show sequences saved with algorithmic optimisation + -g, --gtk show entries that go to GTK+ + -u, --unicodedatatxt show compose sequences derived from UnicodeData.txt (from unicode.org) + -v, --verbose show verbose output + -p, --plane1 show plane1 compose sequences + -n, --numeric when used with --gtk, create file with numeric values only + -e, --gtk-expanded when used with --gtk, create file that repeats first column; not usable in GTK+ + + Default is to show statistics. + """ + +try: + opts, args = getopt.getopt(sys.argv[1:], "pvgashune", ["help", "algorithmic", "statistics", "unicodedatatxt", + "stats", "gtk", "verbose", "plane1", "numeric", "gtk-expanded"]) +except: + usage() + sys.exit(2) + +opt_statistics = False +opt_algorithmic = False +opt_gtk = False +opt_unicodedatatxt = False +opt_verbose = False +opt_plane1 = False +opt_numeric = False +opt_gtkexpanded = False + +for o, a in opts: + if o in ("-h", "--help"): + usage() + sys.exit() + if o in ("-s", "--statistics"): + opt_statistics = True + if o in ("-a", "--algorithmic"): + opt_algorithmic = True + if o in ("-g", "--gtk"): + opt_gtk = True + if o in ("-u", "--unicodedatatxt"): + opt_unicodedatatxt = True + if o in ("-v", "--verbose"): + opt_verbose = True + if o in ("-p", "--plane1"): + opt_plane1 = True + if o in ("-n", "--numeric"): + opt_numeric = True + if o in ("-e", "--gtk-expanded"): + opt_gtkexpanded = True + +if not opt_algorithmic and not opt_gtk and not opt_unicodedatatxt: + opt_statistics = True + +def download_hook(blocks_transferred, block_size, file_size): + """ A download hook to provide some feedback when downloading """ + if blocks_transferred == 0: + if file_size > 0: + if opt_verbose: + print "Downloading", file_size, "bytes: ", + else: + if opt_verbose: + print "Downloading: ", + sys.stdout.write('#') + sys.stdout.flush() + + +def download_file(url): + """ Downloads a file provided a URL. Returns the filename. """ + """ Borks on failure """ + localfilename = url.split('/')[-1] + if not isfile(localfilename) or getsize(localfilename) <= 0: + if opt_verbose: + print "Downloading ", url, "..." + try: + urlretrieve(url, localfilename, download_hook) + except IOError, (errno, strerror): + print "I/O error(%s): %s" % (errno, strerror) + sys.exit(-1) + except: + print "Unexpected error: ", sys.exc_info()[0] + sys.exit(-1) + print " done." + else: + if opt_verbose: + print "Using cached file for ", url + return localfilename + +def process_gdkkeysymsh(): + """ Opens the gdkkeysyms.h file from GTK+/gdk/gdkkeysyms.h """ + """ Fills up keysymdb with contents """ + filename_gdkkeysymsh = download_file(URL_GDKKEYSYMSH) + try: + gdkkeysymsh = open(filename_gdkkeysymsh, 'r') + except IOError, (errno, strerror): + print "I/O error(%s): %s" % (errno, strerror) + sys.exit(-1) + except: + print "Unexpected error: ", sys.exc_info()[0] + sys.exit(-1) + + """ Parse the gdkkeysyms.h file and place contents in keysymdb """ + linenum_gdkkeysymsh = 0 + keysymdb = {} + for line in gdkkeysymsh.readlines(): + linenum_gdkkeysymsh += 1 + line = line.strip() + if line == "" or not match('^#define GDK_KEY_', line): + continue + components = split('\s+', line) + if len(components) < 3: + print "Invalid line %(linenum)d in %(filename)s: %(line)s"\ + % {'linenum': linenum_gdkkeysymsh, 'filename': filename_gdkkeysymsh, 'line': line} + print "Was expecting 3 items in the line" + sys.exit(-1) + if not match('^GDK_KEY_', components[1]): + print "Invalid line %(linenum)d in %(filename)s: %(line)s"\ + % {'linenum': linenum_gdkkeysymsh, 'filename': filename_gdkkeysymsh, 'line': line} + print "Was expecting a keysym starting with GDK_KEY_" + sys.exit(-1) + if match('^0x[0-9a-fA-F]+$', components[2]): + unival = long(components[2][2:], 16) + if unival == 0: + continue + keysymdb[components[1][8:]] = unival + else: + print "Invalid line %(linenum)d in %(filename)s: %(line)s"\ + % {'linenum': linenum_gdkkeysymsh, 'filename': filename_gdkkeysymsh, 'line': line} + print "Was expecting a hexadecimal number at the end of the line" + sys.exit(-1) + gdkkeysymsh.close() + + """ Patch up the keysymdb with some of our own stuff """ + + """ This is for a missing keysym from the currently upstream file """ + ###keysymdb['dead_stroke'] = 0x338 + + """ This is for a missing keysym from the currently upstream file """ + ###keysymdb['dead_belowring'] = 0x323 + ###keysymdb['dead_belowmacron'] = 0x331 + ###keysymdb['dead_belowcircumflex'] = 0x32d + ###keysymdb['dead_belowtilde'] = 0x330 + ###keysymdb['dead_belowbreve'] = 0x32e + ###keysymdb['dead_belowdiaeresis'] = 0x324 + + """ This is^Wwas preferential treatment for Greek """ + # keysymdb['dead_tilde'] = 0x342 + """ This is^was preferential treatment for Greek """ + #keysymdb['combining_tilde'] = 0x342 + + """ Fixing VoidSymbol """ + keysymdb['VoidSymbol'] = 0xFFFF + + return keysymdb + +def process_keysymstxt(): + """ Grabs and opens the keysyms.txt file that Markus Kuhn maintains """ + """ This file keeps a record between keysyms <-> unicode chars """ + filename_keysymstxt = download_file(URL_KEYSYMSTXT) + try: + keysymstxt = open(filename_keysymstxt, 'r') + except IOError, (errno, strerror): + print "I/O error(%s): %s" % (errno, strerror) + sys.exit(-1) + except: + print "Unexpected error: ", sys.exc_info()[0] + sys.exit(-1) + + """ Parse the keysyms.txt file and place content in keysymdb """ + linenum_keysymstxt = 0 + keysymdb = {} + for line in keysymstxt.readlines(): + linenum_keysymstxt += 1 + line = line.strip() + if line == "" or match('^#', line): + continue + components = split('\s+', line) + if len(components) < 5: + print "Invalid line %(linenum)d in %(filename)s: %(line)s'"\ + % {'linenum': linenum_keysymstxt, 'filename': filename_keysymstxt, 'line': line} + print "Was expecting 5 items in the line" + sys.exit(-1) + if match('^U[0-9a-fA-F]+$', components[1]): + unival = long(components[1][1:], 16) + if unival == 0: + continue + keysymdb[components[4]] = unival + keysymstxt.close() + + """ Patch up the keysymdb with some of our own stuff """ + """ This is for a missing keysym from the currently upstream file """ + keysymdb['dead_belowring'] = 0x323 + keysymdb['dead_belowmacron'] = 0x331 + keysymdb['dead_belowcircumflex'] = 0x32d + keysymdb['dead_belowtilde'] = 0x330 + keysymdb['dead_belowbreve'] = 0x32e + keysymdb['dead_belowdiaeresis'] = 0x324 + + """ This is preferential treatment for Greek """ + """ => we get more savings if used for Greek """ + # keysymdb['dead_tilde'] = 0x342 + """ This is preferential treatment for Greek """ + # keysymdb['combining_tilde'] = 0x342 + + """ This is for a missing keysym from Markus Kuhn's db """ + keysymdb['dead_stroke'] = 0x338 + """ This is for a missing keysym from Markus Kuhn's db """ + keysymdb['Oslash'] = 0x0d8 + """ This is for a missing keysym from Markus Kuhn's db """ + keysymdb['Ssharp'] = 0x1e9e + + """ This is for a missing (recently added) keysym """ + keysymdb['dead_psili'] = 0x313 + """ This is for a missing (recently added) keysym """ + keysymdb['dead_dasia'] = 0x314 + + """ Allows to import Multi_key sequences """ + keysymdb['Multi_key'] = 0xff20 + + keysymdb['zerosubscript'] = 0x2080 + keysymdb['onesubscript'] = 0x2081 + keysymdb['twosubscript'] = 0x2082 + keysymdb['threesubscript'] = 0x2083 + keysymdb['foursubscript'] = 0x2084 + keysymdb['fivesubscript'] = 0x2085 + keysymdb['sixsubscript'] = 0x2086 + keysymdb['sevensubscript'] = 0x2087 + keysymdb['eightsubscript'] = 0x2088 + keysymdb['ninesubscript'] = 0x2089 + keysymdb['dead_doublegrave'] = 0x030F + keysymdb['dead_invertedbreve'] = 0x0311 + keysymdb['dead_belowcomma'] = 0xfe6e + keysymdb['dead_currency'] = 0xfe6f + keysymdb['dead_greek'] = 0xfe8c + + return keysymdb + +def keysymvalue(keysym, file = "n/a", linenum = 0): + """ Extracts a value from the keysym """ + """ Find the value of keysym, using the data from keysyms """ + """ Use file and linenum to when reporting errors """ + if keysym == "": + return 0 + if keysymdatabase.has_key(keysym): + return keysymdatabase[keysym] + elif keysym[0] == 'U' and match('[0-9a-fA-F]+$', keysym[1:]): + return atoi(keysym[1:], 16) + elif keysym[:2] == '0x' and match('[0-9a-fA-F]+$', keysym[2:]): + return atoi(keysym[2:], 16) + else: + print 'keysymvalue: UNKNOWN{%(keysym)s}' % { "keysym": keysym } + #return -1 + sys.exit(-1) + +def keysymunicodevalue(keysym, file = "n/a", linenum = 0): + """ Extracts a value from the keysym """ + """ Find the value of keysym, using the data from keysyms """ + """ Use file and linenum to when reporting errors """ + if keysym == "": + return 0 + if keysymunicodedatabase.has_key(keysym): + return keysymunicodedatabase[keysym] + elif keysym[0] == 'U' and match('[0-9a-fA-F]+$', keysym[1:]): + return atoi(keysym[1:], 16) + elif keysym[:2] == '0x' and match('[0-9a-fA-F]+$', keysym[2:]): + return atoi(keysym[2:], 16) + else: + print 'keysymunicodevalue: UNKNOWN{%(keysym)s}' % { "keysym": keysym } + sys.exit(-1) + +def rename_combining(seq): + filtered_sequence = [] + for ks in seq: + if findall('^combining_', ks): + ks = sub('^combining_', 'dead_', ks) + if ks == 'dead_double_grave': + ks = 'dead_doublegrave' + if ks == 'dead_inverted_breve': + ks = 'dead_invertedbreve' + filtered_sequence.append(ks) + return filtered_sequence + + +keysymunicodedatabase = process_keysymstxt() +keysymdatabase = process_gdkkeysymsh() + +""" Grab and open the compose file from upstream """ +filename_compose = download_file(URL_COMPOSE) +try: + composefile = open(filename_compose, 'r') +except IOError, (errno, strerror): + print "I/O error(%s): %s" % (errno, strerror) + sys.exit(-1) +except: + print "Unexpected error: ", sys.exc_info()[0] + sys.exit(-1) + +""" Look if there is a lookaside (supplementary) compose file in the current + directory, and if so, open, then merge with upstream Compose file. +""" +xorg_compose_sequences_raw = [] +for seq in composefile.readlines(): + xorg_compose_sequences_raw.append(seq) + +try: + composefile_lookaside = open(FILENAME_COMPOSE_SUPPLEMENTARY, 'r') + for seq in composefile_lookaside.readlines(): + xorg_compose_sequences_raw.append(seq) +except IOError, (errno, strerror): + if opt_verbose: + print "I/O error(%s): %s" % (errno, strerror) + print "Did not find lookaside compose file. Continuing..." +except: + print "Unexpected error: ", sys.exc_info()[0] + sys.exit(-1) + +""" Parse the compose file in xorg_compose_sequences""" +xorg_compose_sequences = [] +xorg_compose_sequences_32bit = [] +xorg_compose_sequences_algorithmic = [] +linenum_compose = 0 +comment_nest_depth = 0 +for line in xorg_compose_sequences_raw: + linenum_compose += 1 + line = line.strip() + if match("^XCOMM", line) or match("^#", line): + continue + + line = sub(r"\/\*([^\*]*|[\*][^/])\*\/", "", line) + + comment_start = line.find("/*") + + if comment_start >= 0: + if comment_nest_depth == 0: + line = line[:comment_start] + else: + line = "" + + comment_nest_depth += 1 + else: + comment_end = line.find("*/") + + if comment_end >= 0: + comment_nest_depth -= 1 + + if comment_nest_depth < 0: + print "Invalid comment %(linenum_compose)d in %(filename)s: \ + Closing '*/' without opening '/*'" % { "linenum_compose": linenum_compose, "filename": filename_compose } + exit(-1) + + if comment_nest_depth > 0: + line = "" + else: + line = line[comment_end + 2:] + + if line is "": + continue + + #line = line[:-1] + components = split(':', line, 1) + if len(components) != 2: + print "Invalid line %(linenum_compose)d in %(filename)s: No sequence\ + /value pair found" % { "linenum_compose": linenum_compose, "filename": filename_compose } + exit(-1) + (seq, val ) = split(':', line, 1) + seq = seq.strip() + val = val.strip() + raw_sequence = findall('\w+', seq) + values = split('\s+', val) + unichar_temp = split('"', values[0]) + unichar_utf8 = unichar_temp[1] + # The line of "U17ff" in Compose.pre includes a unichar only + codepointstr = values[1] if len(values) > 1 else '' + codepoint = 0 + codepoints = [] + enable_32bit = False + if raw_sequence[0][0] == 'U' and match('[0-9a-fA-F]+$', raw_sequence[0][1:]): + raw_sequence[0] = '0x' + raw_sequence[0][1:] + if match('^U[0-9a-fA-F]+$', codepointstr): + codepoint = long(codepointstr[1:], 16) + if codepoint > 0xFFFF: + codepoints.append(codepoint) + codepoint = 0 + enable_32bit = True + elif keysymunicodedatabase.has_key(codepointstr): + #if keysymdatabase[codepointstr] != keysymunicodedatabase[codepointstr]: + #print "DIFFERENCE: 0x%(a)X 0x%(b)X" % { "a": keysymdatabase[codepointstr], "b": keysymunicodedatabase[codepointstr]}, + #print raw_sequence, codepointstr + codepoint = keysymunicodedatabase[codepointstr] + else: + unichars = unicode(unichar_utf8, 'utf-8') + if len(unichars) > 1 or ord(unichars[0]) > 0xFFFF: + enable_32bit = True + for unichar in unichars: + codepoints.append(ord(unichar)) + else: + codepoint = ord(unichars[0]); + sequence = rename_combining(raw_sequence) + reject_this = False + for i in sequence: + if keysymvalue(i) > 0xFFFF: + reject_this = True + if opt_plane1: + print sequence + break + if keysymvalue(i) < 0: + reject_this = True + break + if reject_this: + continue + if "U0342" in sequence or \ + "U0313" in sequence or \ + "U0314" in sequence or \ + "0x0313" in sequence or \ + "0x0342" in sequence or \ + "0x0314" in sequence: + continue + if "Multi_key" not in sequence: + if True: + original_sequence = copy(sequence) + stats_sequence = copy(sequence) + base = sequence.pop() + basechar = keysymvalue(base, filename_compose, linenum_compose) + + if basechar < 0xFFFF: + counter = 1 + unisequence = [] + not_normalised = True + skipping_this = False + for i in range(0, len(sequence)): + """ If the sequence has dead_tilde and is for Greek, we don't do algorithmically + because of lack of dead_perispomeni (i.e. conflict) + """ + bc = basechar + """if sequence[-1] == "dead_tilde" and (bc >= 0x370 and bc <= 0x3ff) or (bc >= 0x1f00 and bc <= 0x1fff): + skipping_this = True + break + if sequence[-1] == "dead_horn" and (bc >= 0x370 and bc <= 0x3ff) or (bc >= 0x1f00 and bc <= 0x1fff): + skipping_this = True + break + if sequence[-1] == "dead_ogonek" and (bc >= 0x370 and bc <= 0x3ff) or (bc >= 0x1f00 and bc <= 0x1fff): + skipping_this = True + break + if sequence[-1] == "dead_psili": + sequence[i] = "dead_horn" + if sequence[-1] == "dead_dasia": + sequence[-1] = "dead_ogonek" + """ + unisequence.append(unichr(keysymunicodevalue(sequence.pop(), filename_compose, linenum_compose))) + + if skipping_this: + unisequence = [] + for perm in all_permutations(unisequence): + # print counter, original_sequence, unichr(basechar) + "".join(perm) + # print counter, map(unichr, perm) + normalized = normalize('NFC', unichr(basechar) + "".join(perm)) + if len(normalized) == 1: + # print 'Base: %(base)s [%(basechar)s], produces [%(unichar)s] (0x%(codepoint)04X)' \ + # % { "base": base, "basechar": unichr(basechar), "unichar": unichar, "codepoint": codepoint }, + # print "Normalized: [%(normalized)s] SUCCESS %(c)d" % { "normalized": normalized, "c": counter } + stats_sequence_data = map(keysymunicodevalue, stats_sequence) + stats_sequence_data.append(normalized) + xorg_compose_sequences_algorithmic.append(stats_sequence_data) + not_normalised = False + break; + counter += 1 + if not_normalised: + if enable_32bit: + for cp in codepoints: + original_sequence.append(cp) + length = len(codepoints) + original_sequence.append(length) + xorg_compose_sequences_32bit.append(original_sequence) + else: + original_sequence.append(codepoint) + original_sequence.append(1) + xorg_compose_sequences.append(original_sequence) + + else: + print "Error in base char !?!" + exit(-2) + else: + if enable_32bit: + for cp in codepoints: + sequence.append(cp) + length = len(codepoints) + sequence.append(length) + xorg_compose_sequences_32bit.append(sequence) + else: + sequence.append(codepoint) + sequence.append(1) + xorg_compose_sequences.append(sequence) + +def sequence_cmp(x, y): + length_x = len(x) - x[-1] - 1 + length_y = len(y) - y[-1] - 1 + if keysymvalue(x[0]) > keysymvalue(y[0]): + return 1 + elif keysymvalue(x[0]) < keysymvalue(y[0]): + return -1 + elif length_x > length_y: + return 1 + elif length_x < length_y: + return -1 + elif keysymvalue(x[1]) > keysymvalue(y[1]): + return 1 + elif keysymvalue(x[1]) < keysymvalue(y[1]): + return -1 + for i in range(2, length_x): + if keysymvalue(x[i]) > keysymvalue(y[i]): + return 1 + elif keysymvalue(x[i]) < keysymvalue(y[i]): + return -1 + return 0 + +def sequence_unicode_cmp(x, y): + length_x = len(x) - x[-1] - 1 + length_y = len(y) - y[-1] - 1 + if keysymunicodevalue(x[0]) > keysymunicodevalue(y[0]): + return 1 + elif keysymunicodevalue(x[0]) < keysymunicodevalue(y[0]): + return -1 + elif length_x > length_y: + return 1 + elif length_x < length_y: + return -1 + elif keysymunicodevalue(x[1]) > keysymunicodevalue(y[1]): + return 1 + elif keysymunicodevalue(x[1]) < keysymunicodevalue(y[1]): + return -1 + for i in range(2, length_x): + if keysymunicodevalue(x[i]) > keysymunicodevalue(y[i]): + return 1 + elif keysymunicodevalue(x[i]) < keysymunicodevalue(y[i]): + return -1 + return 0 + +def sequence_algorithmic_cmp(x, y): + if len(x) < len(y): + return -1 + elif len(x) > len(y): + return 1 + else: + for i in range(len(x)): + if x[i] < y[i]: + return -1 + elif x[i] > y[i]: + return 1 + return 0 + + +xorg_compose_sequences.sort(sequence_cmp) +xorg_compose_sequences_32bit.sort(sequence_cmp) + +def num_of_keysyms(seq): + value_length = seq[-1] + return len(seq) - value_length - 1 + + +def check_max_width_of_compose_table(compose_sequences): + for sequence in xorg_compose_sequences: + num = num_of_keysyms(sequence) + global WIDTHOFCOMPOSETABLE + if num > WIDTHOFCOMPOSETABLE: + print("Extend the sequence length: %s" % num) + WIDTHOFCOMPOSETABLE = num + +def make_compose_sequences_unique(compose_sequences): + xorg_compose_sequences_uniqued = [] + first_time = True + item = None + for next_item in compose_sequences: + if first_time: + first_time = False + item = next_item + xorg_compose_sequences_uniqued.append(next_item) + if sequence_unicode_cmp(item, next_item) != 0: + xorg_compose_sequences_uniqued.append(next_item) + item = next_item + + return copy(xorg_compose_sequences_uniqued) + +check_max_width_of_compose_table(xorg_compose_sequences) +check_max_width_of_compose_table(xorg_compose_sequences_32bit) + +xorg_compose_sequences = make_compose_sequences_unique(xorg_compose_sequences) +xorg_compose_sequences_32bit = make_compose_sequences_unique(xorg_compose_sequences_32bit) + +counter_multikey = 0 +for item in xorg_compose_sequences + xorg_compose_sequences_32bit: + length = item[-1] + if findall('Multi_key', "".join(item[:len(item) - length - 1])) != []: + counter_multikey += 1 + +xorg_compose_sequences_algorithmic.sort(sequence_algorithmic_cmp) +xorg_compose_sequences_algorithmic_uniqued = uniq(xorg_compose_sequences_algorithmic) + +firstitem = "" +num_first_keysyms = 0 +num_first_keysyms_32bit = 0 +zeroes = 0 +num_entries = 0 +num_algorithmic_greek = 0 +for sequence in xorg_compose_sequences: + if keysymvalue(firstitem) != keysymvalue(sequence[0]): + firstitem = sequence[0] + num_first_keysyms += 1 + # max length of sequences + length of unichar(== 1) - length of the + # current sequence + common offset (== 1) + zeroes += WIDTHOFCOMPOSETABLE - num_of_keysyms(sequence) + num_entries += 1 + +firstitem = "" +for sequence in xorg_compose_sequences_32bit: + if keysymvalue(firstitem) != keysymvalue(sequence[0]): + firstitem = sequence[0] + num_first_keysyms_32bit += 1 + +for sequence in xorg_compose_sequences_algorithmic_uniqued: + ch = ord(sequence[-1:][0]) + if ch >= 0x370 and ch <= 0x3ff or ch >= 0x1f00 and ch <= 0x1fff: + num_algorithmic_greek += 1 + + +if opt_algorithmic: + for sequence in xorg_compose_sequences_algorithmic_uniqued: + letter = "".join(sequence[-1:]) + print '0x%(cp)04X, %(uni)s, seq: [ <0x%(base)04X>,' % { 'cp': ord(unicode(letter)), 'uni': letter.encode('utf-8'), 'base': sequence[-2] }, + for elem in sequence[:-2]: + print "<0x%(keysym)04X>," % { 'keysym': elem }, + """ Yeah, verified... We just want to keep the output similar to -u, so we can compare/sort easily """ + print "], recomposed as", letter.encode('utf-8'), "verified" + +def convert_UnotationToHex(arg): + if isinstance(arg, str): + if match('^U[0-9A-F][0-9A-F][0-9A-F][0-9A-F]$', arg): + return sub('^U', '0x', arg) + return arg + +def addprefix_GDK(arg): + if match('^0x', arg): + return '%(arg)s, ' % { 'arg': arg } + elif match('^U[0-9A-F][0-9A-F][0-9A-F][0-9A-F]$', arg.upper()): + keysym = '' + for k, c in keysymunicodedatabase.items(): + if c == keysymvalue(arg): + keysym = k + break + if keysym != '': + return 'IBUS_KEY_%(arg)s, ' % { 'arg': keysym } + else: + return '0x%(arg)04X, ' % { 'arg': keysymvalue(arg) } + else: + return 'IBUS_KEY_%(arg)s, ' % { 'arg': arg } + +def make_compose_table(compose_sequences, + compose_table, + ct_second_part, + start_offset, + is_32bit): + first_keysym = "" + sequence = [] + we_finished = False + counter = 0 + + sequence_iterator = iter(compose_sequences) + sequence = sequence_iterator.next() + while True: + first_keysym = sequence[0] # Set the first keysym + compose_table_sequence = [first_keysym] + \ + map(lambda x: 0, range(WIDTHOFCOMPOSETABLE)) + compose_table.append(compose_table_sequence) + while sequence[0] == first_keysym: + compose_table[counter][num_of_keysyms(sequence)-1] += 1 + try: + sequence = sequence_iterator.next() + except StopIteration: + we_finished = True + break + if we_finished: + break + counter += 1 + + ct_index = start_offset + for line_num in range(len(compose_table)): + for i in range(WIDTHOFCOMPOSETABLE): + occurrences = compose_table[line_num][i+1] + compose_table[line_num][i+1] = ct_index + # If not 32bit, i + 1 is the next index in for loop + # and i + 2 is the next index + unichar size (== 1) + # If 32bit, i + 1 is the next index in for loop + # and i + 3 is the next index + unichar index size + # (== 1) + unichar length size (== 1) + if is_32bit: + ct_index += occurrences * (i+3) + else: + ct_index += occurrences * (i+2) + + for sequence in compose_sequences: + ct_second_part.append(map(convert_UnotationToHex, sequence)) + + +def print_compose_table_keysyms(compose_table): + for i in compose_table: + if opt_gtkexpanded: + print "0x%(ks)04X," % { "ks": keysymvalue(i[0]) }, + print '%(str)s' % { 'str': "".join(map(lambda x : str(x) + ", ", i[1:])) } + elif not match('^0x', i[0]): + print 'IBUS_KEY_%(str)s' % { 'str': "".join(map(lambda x : str(x) + ", ", i)) } + else: + print '%(str)s' % { 'str': "".join(map(lambda x : str(x) + ", ", i)) } + + +def print_compose_table_values(ct_second_part, is_32bit, is_second): + i = 0 + for s in ct_second_part: + length = s[-1] + seq_length = len(s) - length - 1 + if opt_numeric: + if not is_32bit or not is_second: + for ks in s[:seq_length][1:]: + print '0x%(seq)04X,' % { 'seq': keysymvalue(ks) }, + if is_32bit and not is_second: + print '%(i)d, %(l)d,' % { 'i':i, 'l':length } + if not is_32bit or is_second: + for v in range(seq_length, seq_length + length): + print '0x%(cp)04X,' % { 'cp':s[v] }, + print '' + elif opt_gtkexpanded: + if not is_32bit or not is_second: + print '%(seq)s' % { 'seq': "".join(map(addprefix_GDK, s[:seq_length][1:])) }, + if is_32bit and not is_second: + print '%(i)d, %(l)d,' % { 'i':i, 'l':length } + if not is_32bit or is_second: + for v in range(seq_length, seq_length + length): + print '0x%(cp)04X,' % { 'cp':s[v] }, + print '' + else: + if not is_32bit or not is_second: + print '%(seq)s' % { 'seq': "".join(map(addprefix_GDK, s[:seq_length][1:])) }, + if is_32bit and not is_second: + print '%(i)d, %(l)d,' % { 'i':i, 'l':length } + if not is_32bit or is_second: + for v in range(seq_length, seq_length + length): + print '0x%(cp)04X,' % { 'cp':s[v] }, + print '' + i += length + + +def compose_gtk(): + compose_table = [] + compose_table_32bit = [] + ct_second_part = [] + ct_second_part_32bit = [] + start_offset = num_first_keysyms * (WIDTHOFCOMPOSETABLE+1) + + make_compose_table(xorg_compose_sequences, + compose_table, + ct_second_part, + start_offset, + False) + print headerfile_start + print_compose_table_keysyms(compose_table) + print_compose_table_values(ct_second_part, False, False) + if len(xorg_compose_sequences_32bit) == 0: + print headerfile_end + return + print declare_compose_sequence_32bit_first + start_offset = num_first_keysyms_32bit * (WIDTHOFCOMPOSETABLE+1) + make_compose_table(xorg_compose_sequences_32bit, + compose_table_32bit, + ct_second_part_32bit, + start_offset, + True) + print_compose_table_keysyms(compose_table_32bit) + print_compose_table_values(ct_second_part_32bit, True, False) + print declare_compose_sequence_32bit_second + print_compose_table_values(ct_second_part_32bit, True, True) + print headerfile_end + + +if opt_gtk: + compose_gtk() + + +def redecompose(codepoint): + (name, decomposition, combiningclass) = unicodedatabase[codepoint] + if decomposition[0] == '' or decomposition[0] == '0': + return [codepoint] + if match('<\w+>', decomposition[0]): + numdecomposition = map(stringtohex, decomposition[1:]) + return map(redecompose, numdecomposition) + numdecomposition = map(stringtohex, decomposition) + return map(redecompose, numdecomposition) + +def process_unicodedata_file(verbose = False): + """ Grab from wget http://www.unicode.org/Public/UNIDATA/UnicodeData.txt """ + filename_unicodedatatxt = download_file(URL_UNICODEDATATXT) + try: + unicodedatatxt = open(filename_unicodedatatxt, 'r') + except IOError, (errno, strerror): + print "I/O error(%s): %s" % (errno, strerror) + sys.exit(-1) + except: + print "Unexpected error: ", sys.exc_info()[0] + sys.exit(-1) + for line in unicodedatatxt.readlines(): + if line[0] == "" or line[0] == '#': + continue + line = line[:-1] + uniproperties = split(';', line) + codepoint = stringtohex(uniproperties[0]) + """ We don't do Plane 1 or CJK blocks. The latter require reading additional files. """ + if codepoint > 0xFFFF or (codepoint >= 0x4E00 and codepoint <= 0x9FFF) or (codepoint >= 0xF900 and codepoint <= 0xFAFF): + continue + name = uniproperties[1] + category = uniproperties[2] + combiningclass = uniproperties[3] + decomposition = uniproperties[5] + unicodedatabase[codepoint] = [name, split('\s+', decomposition), combiningclass] + + counter_combinations = 0 + counter_combinations_greek = 0 + counter_entries = 0 + counter_entries_greek = 0 + + for item in unicodedatabase.keys(): + (name, decomposition, combiningclass) = unicodedatabase[item] + if decomposition[0] == '': + continue + print name, "is empty" + elif match('<\w+>', decomposition[0]): + continue + print name, "has weird", decomposition[0] + else: + sequence = map(stringtohex, decomposition) + chrsequence = map(unichr, sequence) + normalized = normalize('NFC', "".join(chrsequence)) + + """ print name, sequence, "Combining: ", "".join(chrsequence), normalized, len(normalized), """ + decomposedsequence = [] + for subseq in map(redecompose, sequence): + for seqitem in subseq: + if isinstance(seqitem, list): + for i in seqitem: + if isinstance(i, list): + for j in i: + decomposedsequence.append(j) + else: + decomposedsequence.append(i) + else: + decomposedsequence.append(seqitem) + recomposedchar = normalize('NFC', "".join(map(unichr, decomposedsequence))) + if len(recomposedchar) == 1 and len(decomposedsequence) > 1: + counter_entries += 1 + counter_combinations += factorial(len(decomposedsequence)-1) + ch = item + if ch >= 0x370 and ch <= 0x3ff or ch >= 0x1f00 and ch <= 0x1fff: + counter_entries_greek += 1 + counter_combinations_greek += factorial(len(decomposedsequence)-1) + if verbose: + print "0x%(cp)04X, %(uni)c, seq:" % { 'cp':item, 'uni':unichr(item) }, + print "[", + for elem in decomposedsequence: + print '<0x%(hex)04X>,' % { 'hex': elem }, + print "], recomposed as", recomposedchar, + if unichr(item) == recomposedchar: + print "verified" + + if verbose == False: + print "Unicode statistics from UnicodeData.txt" + print "Number of entries that can be algorithmically produced :", counter_entries + print " of which are for Greek :", counter_entries_greek + print "Number of compose sequence combinations requiring :", counter_combinations + print " of which are for Greek :", counter_combinations_greek + print "Note: We do not include partial compositions, " + print "thus the slight discrepancy in the figures" + print + +if opt_unicodedatatxt: + process_unicodedata_file(True) + +if opt_statistics: + print + print "Total number of compose sequences (from file) :", len(xorg_compose_sequences) + len(xorg_compose_sequences_algorithmic) + print " of which can be expressed algorithmically :", len(xorg_compose_sequences_algorithmic) + print " of which cannot be expressed algorithmically :", len(xorg_compose_sequences) + print " of which have Multi_key :", counter_multikey + print + print "Algorithmic (stats for Xorg Compose file)" + print "Number of sequences off due to algo from file (len(array)) :", len(xorg_compose_sequences_algorithmic) + print "Number of sequences off due to algo (uniq(sort(array))) :", len(xorg_compose_sequences_algorithmic_uniqued) + print " of which are for Greek :", num_algorithmic_greek + print + process_unicodedata_file() + print "Not algorithmic (stats from Xorg Compose file)" + print "Number of sequences :", len(xorg_compose_sequences) + print "Flat array looks like :", len(xorg_compose_sequences), "rows of 6 integers (2 bytes per int, or 12 bytes per row)" + print "Flat array would have taken up (in bytes) :", num_entries * 2 * 6, "bytes from the GTK+ library" + print "Number of items in flat array :", len(xorg_compose_sequences) * 6 + print " of which are zeroes :", zeroes, "or ", (100 * zeroes) / (len(xorg_compose_sequences) * 6), " per cent" + print "Number of different first items :", num_first_keysyms + print "Number of different first items 32bit :", num_first_keysyms_32bit + print "Number of max keysym sequences :", WIDTHOFCOMPOSETABLE + print "Number of max bytes (if using flat array) :", num_entries * 2 * 6 + print "Number of savings :", zeroes * 2 - num_first_keysyms * 2 * 5 + print + print "Memory needs if both algorithmic+optimised table in latest Xorg compose file" + print " :", num_entries * 2 * 6 - zeroes * 2 + num_first_keysyms * 2 * 5 + print + print "Existing (old) implementation in GTK+" + print "Number of sequences in old gtkimcontextsimple.c :", 691 + print "The existing (old) implementation in GTK+ takes up :", 691 * 2 * 12, "bytes" diff --git a/src/emoji-parser.c b/src/emoji-parser.c new file mode 100644 index 000000000..36d36e057 --- /dev/null +++ b/src/emoji-parser.c @@ -0,0 +1,1305 @@ +/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ +/* vim:set et sts=4: */ +/* ibus - The Input Bus + * Copyright (C) 2016-2021 Takao Fujiwara + * Copyright (C) 2016 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +/* Convert /usr/share/unicode/cldr/common/annotations/\*.xml and + * /usr/share/unicode/emoji/emoji-test.txt + * to the dictionary file which look up the Emoji from the annotation. + * Get *.xml from https://github.com/fujiwarat/cldr-emoji-annotation + * or http://www.unicode.org/repos/cldr/trunk/common/annotations . + * Get emoji-test.txt from http://unicode.org/Public/emoji/4.0/ . + * en.xml is used for the Unicode annotations and emoji-test.txt is used + * for the category, e.g. "Smileys & People". + * ASCII emoji annotations are saved in ../data/annotations/en_ascii.xml + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include + +#ifdef HAVE_JSON_GLIB1 +#include +#endif + +#ifdef HAVE_LOCALE_H +#include +#endif + +#include + +#include "ibusemoji.h" + +/* This file has 21 lines about the license at the top of the file. */ +#define LICENSE_LINES 21 + +typedef enum { + EMOJI_STRICT, + EMOJI_VARIANT, + EMOJI_NOVARIANT +} EmojiDataSearchType; + +typedef struct _EmojiData EmojiData; +struct _EmojiData { + gchar *emoji; + gchar *emoji_alternates; + GSList *annotations; + gboolean is_annotation; + gchar *description; + gboolean is_tts; + gchar *category; + gchar *subcategory; + gboolean is_derived; + GSList *list; + EmojiDataSearchType search_type; +}; + +typedef struct _NoTransData NoTransData; +struct _NoTransData { + const gchar *xml_file; + const gchar *xml_derived_file; + GSList *emoji_list; +}; + +static gchar *unicode_emoji_version; + + +static void +init_annotations (IBusEmojiData *emoji, + gpointer user_data) +{ + g_return_if_fail (IBUS_IS_EMOJI_DATA (emoji)); + ibus_emoji_data_set_annotations (emoji, NULL); + ibus_emoji_data_set_description (emoji, ""); +} + +static void +check_no_trans (IBusEmojiData *emoji, + NoTransData *no_trans_data) +{ + const gchar *str = NULL; + g_return_if_fail (IBUS_IS_EMOJI_DATA (emoji)); + if (ibus_emoji_data_get_annotations (emoji) != NULL) + return; + str = ibus_emoji_data_get_emoji (emoji); + if (g_getenv ("IBUS_EMOJI_PARSER_DEBUG") != NULL) { + gchar *basename = NULL; + if (no_trans_data->xml_file) + basename = g_path_get_basename (no_trans_data->xml_file); + else if (no_trans_data->xml_derived_file) + basename = g_path_get_basename (no_trans_data->xml_derived_file); + else + basename = g_strdup ("WRONG FILE"); + g_warning ("Not found emoji %s in the file %s", str, basename); + g_free (basename); + } + no_trans_data->emoji_list = + g_slist_append (no_trans_data->emoji_list, g_strdup (str)); +} + +int +strcmp_ibus_emoji_data_str (IBusEmojiData *emoji, + const gchar *str) +{ + g_return_val_if_fail (IBUS_IS_EMOJI_DATA (emoji), -1); + return g_strcmp0 (ibus_emoji_data_get_emoji (emoji), str); +} + +static void +delete_emoji_from_list (const gchar *str, + GSList **list) +{ + IBusEmojiData *emoji; + + g_return_if_fail (list != NULL); + GSList *p = g_slist_find_custom (*list, + str, + (GCompareFunc)strcmp_ibus_emoji_data_str); + g_return_if_fail (p != NULL); + emoji = p->data; + *list = g_slist_remove (*list, emoji); + g_object_unref (emoji); +} + +static void +reset_emoji_element (EmojiData *data) +{ + g_assert (data != NULL); + + g_clear_pointer (&data->emoji, g_free); + g_clear_pointer (&data->emoji_alternates, g_free); + g_slist_free_full (data->annotations, g_free); + data->annotations = NULL; + g_clear_pointer (&data->description, g_free); +} + +/** + * strcmp_novariant: + * + * Return 0 between non-fully-qualified and fully-qualified emojis. + * E.g. U+1F3CC-200D-2642 and U+1F3CC-FE0F-200D-2642-FE0F + * in case @a_variant or @b_variant == U+FE0F + */ +gint +strcmp_novariant (const gchar *a, + const gchar *b, + gunichar a_variant, + gunichar b_variant) +{ + gint retval; + GString *buff = NULL;; + gchar *head = NULL; + gchar *p; + gchar *variant = NULL; + gchar *substr = NULL; + + if (a_variant > 0) { + if (g_utf8_strchr (a, -1, a_variant) != NULL) { + buff = g_string_new (NULL); + p = head = g_strdup (a); + while (*p != '\0') { + if ((variant = g_utf8_strchr (p, -1, a_variant)) == NULL) { + g_string_append (buff, p); + break; + } + if (p != variant) { + substr = g_strndup (p, variant - p); + g_string_append (buff, substr); + g_free (substr); + } + p = g_utf8_next_char (variant); + } + retval = g_strcmp0 (buff->str, b); + g_string_free (buff, TRUE); + g_free (head); + return retval; + } else { + return -1; + } + } else if (b_variant > 0) { + if (g_utf8_strchr (b, -1, b_variant) != NULL) { + buff = g_string_new (NULL); + p = head = g_strdup (b); + while (*p != '\0') { + if ((variant = g_utf8_strchr (p, -1, b_variant)) == NULL) { + g_string_append (buff, p); + break; + } + if (p != variant) { + substr = g_strndup (p, variant - p); + g_string_append (buff, substr); + g_free (substr); + } + p = g_utf8_next_char (variant); + } + retval = g_strcmp0 (a, buff->str); + g_string_free (buff, TRUE); + g_free (head); + return retval; + } else { + return -1; + } + } + return g_strcmp0 (a, b); +} + +gint +find_emoji_data_list (IBusEmojiData *a, + EmojiData *b) +{ + const gchar *a_str; + + g_return_val_if_fail (IBUS_IS_EMOJI_DATA (a), 0); + + a_str = ibus_emoji_data_get_emoji (a); + switch (b->search_type) { + case EMOJI_VARIANT: + if (strcmp_novariant (a_str, b->emoji, 0xfe0e, 0) == 0) + return 0; + else if (strcmp_novariant (a_str, b->emoji, 0xfe0f, 0) == 0) + return 0; + else + return -1; + break; + case EMOJI_NOVARIANT: + if (strcmp_novariant (a_str, b->emoji, 0, 0xfe0e) == 0) + return 0; + else if (strcmp_novariant (a_str, b->emoji, 0, 0xfe0f) == 0) + return 0; + else + return -1; + break; + default:; + } + return g_strcmp0 (a_str, b->emoji); +} + +static void +emoji_data_update_object (EmojiData *data, + IBusEmojiData *emoji) +{ + GSList *src_annotations = data->annotations; + GSList *dest_annotations = ibus_emoji_data_get_annotations (emoji); + GSList *l; + gboolean updated_annotations = FALSE; + for (l = src_annotations; l; l = l->next) { + GSList *duplicated = g_slist_find_custom (dest_annotations, + l->data, + (GCompareFunc) g_strcmp0); + if (duplicated == NULL) { + dest_annotations = g_slist_append (dest_annotations, + g_strdup (l->data)); + updated_annotations = TRUE; + } + } + if (updated_annotations) { + ibus_emoji_data_set_annotations ( + emoji, + g_slist_copy_deep (dest_annotations, + (GCopyFunc) g_strdup, + NULL)); + } + if (data->description) + ibus_emoji_data_set_description (emoji, data->description); +} + +static void +emoji_data_new_object (EmojiData *data) +{ + IBusEmojiData *emoji = + ibus_emoji_data_new ("emoji", + data->emoji, + "annotations", + data->annotations, + "description", + data->description ? data->description : "", + "category", + data->category ? data->category : "", + NULL); + data->list = g_slist_append (data->list, emoji); +} + +static void +update_emoji_list (EmojiData *data, + gboolean base_update) +{ + GSList *list; + gboolean has_strict = FALSE; + data->search_type = EMOJI_STRICT; + list = g_slist_find_custom ( + data->list, + data, + (GCompareFunc) find_emoji_data_list); + if (list) { + emoji_data_update_object (data, list->data); + has_strict = TRUE; + } else if (base_update) { + emoji_data_new_object (data); + return; + } + if (g_utf8_strchr (data->emoji, -1, 0xfe0e) == NULL && + g_utf8_strchr (data->emoji, -1, 0xfe0f) == NULL) { + data->search_type = EMOJI_VARIANT; + list = g_slist_find_custom ( + data->list, + data, + (GCompareFunc) find_emoji_data_list); + if (list) { + emoji_data_update_object (data, list->data); + return; + } + } else { + data->search_type = EMOJI_NOVARIANT; + list = g_slist_find_custom ( + data->list, + data, + (GCompareFunc) find_emoji_data_list); + if (list) { + emoji_data_update_object (data, list->data); + return; + } + } + if (!has_strict) + emoji_data_new_object (data); +} + +static void +unicode_annotations_start_element_cb (GMarkupParseContext *context, + const gchar *element_name, + const gchar **attribute_names, + const gchar **attribute_values, + gpointer user_data, + GError **error) +{ + EmojiData *data = (EmojiData *) user_data; + int i; + const gchar *attribute; + const gchar *value; + + g_assert (data != NULL); + + if (g_strcmp0 (element_name, "annotation") != 0) + return; + + reset_emoji_element (data); + + for (i = 0; (attribute = attribute_names[i]) != NULL; i++) { + value = attribute_values[i]; + + if (g_strcmp0 (attribute, "cp") == 0) { + if (value == NULL || *value == '\0') { + g_warning ("cp='' in unicode.org annotations file"); + return; + } else if (value[0] == '[' && value[strlen(value) - 1] == ']') { + g_warning ("cp!='[emoji]' is an old format in unicode.org" + " annotations file"); + data->emoji = g_strndup (value + 1, strlen(value) - 2); + } else { + data->emoji = g_strdup (value); + } + } + /* tts seems 'text to speach' and it would be a description + * instead of annotation. + */ + else if (g_strcmp0 (attribute, "type") == 0) { + if (g_strcmp0 (value, "tts") == 0) { + data->is_tts = TRUE; + } + } + } + + data->is_annotation = TRUE; +} + +static void +unicode_annotations_end_element_cb (GMarkupParseContext *context, + const gchar *element_name, + gpointer user_data, + GError **error) +{ + EmojiData *data = (EmojiData *) user_data; + + g_assert (data != NULL); + if (!data->is_annotation) + return; + + update_emoji_list (data, FALSE); + data->is_annotation = FALSE; + data->is_tts = FALSE; +} + +void +unicode_annotations_text_cb (GMarkupParseContext *context, + const gchar *text, + gsize text_len, + gpointer user_data, + GError **error) +{ + EmojiData *data = (EmojiData *) user_data; + gchar **annotations = NULL; + const gchar *annotation; + int i; + + g_assert (data != NULL); + if (!data->is_annotation) + return; + if (data->is_tts) { + if (data->description) { + g_warning ("Duplicated 'tts' is found: %s: %s", + data->description, text); + g_clear_pointer (&data->description, g_free); + } + data->description = g_strdup (text); + return; + } + annotations = g_strsplit (text, " | ", -1); + for (i = 0; (annotation = annotations[i]) != NULL; i++) { + GSList *duplicated = g_slist_find_custom (data->annotations, + annotation, + (GCompareFunc) g_strcmp0); + if (duplicated == NULL) { + data->annotations = g_slist_prepend (data->annotations, + g_strdup (annotation)); + } + } + g_strfreev (annotations); +} + +static gboolean +unicode_annotations_parse_xml_file (const gchar *filename, + GSList **list, + gboolean is_derived) +{ + gchar *content = NULL; + gsize length = 0; + GError *error = NULL; + const static GMarkupParser parser = { + unicode_annotations_start_element_cb, + unicode_annotations_end_element_cb, + unicode_annotations_text_cb, + NULL, + NULL + }; + GMarkupParseContext *context = NULL; + EmojiData data = { 0, }; + + g_return_val_if_fail (filename != NULL, FALSE); + g_return_val_if_fail (list != NULL, FALSE); + + if (!g_file_get_contents (filename, &content, &length, &error)) { + g_warning ("Failed to load %s: %s", filename, + error ? error->message : ""); + goto failed_to_parse_unicode_annotations; + } + + data.list = *list; + data.is_derived = is_derived; + + context = g_markup_parse_context_new (&parser, 0, &data, NULL); + if (!g_markup_parse_context_parse (context, content, length, &error)) { + g_warning ("Failed to parse %s: %s", filename, error->message); + goto failed_to_parse_unicode_annotations; + } + + reset_emoji_element (&data); + g_markup_parse_context_free (context); + g_free (content); + *list = data.list; + return TRUE; + +failed_to_parse_unicode_annotations: + if (error) + g_error_free (error); + if (data.list) + g_slist_free (data.list); + if (context) + g_markup_parse_context_free (context); + g_free (content); + return FALSE; +} + +static gboolean +unicode_emoji_test_parse_unicode (const gchar *line, + EmojiData *data) +{ + GString *emoji = NULL; + gchar *endptr = NULL; + guint32 uch; + static gchar outbuf[8] = { 0, }; + + g_return_val_if_fail (line != NULL, FALSE); + + emoji = g_string_new (NULL); + while (line && *line) { + uch = g_ascii_strtoull (line, &endptr, 16); + outbuf[g_unichar_to_utf8 (uch, outbuf)] = '\0'; + g_string_append (emoji, outbuf); + if (*endptr == '\0') { + break; + } + line = endptr + 1; + while (*line == ' ') + line++; + endptr = NULL; + } + + data->emoji = g_string_free (emoji, FALSE); + return TRUE; +} + +static gboolean +unicode_emoji_test_parse_description (const gchar *line, + EmojiData *data) +{ + g_return_val_if_fail (line != NULL, FALSE); + + /* skip spaces */ + while (*line == ' ') + line++; + /* skip emoji */ + while (*line != ' ') + line++; + /* skip spaces */ + while (*line == ' ') + line++; + if (*line == '\0') + return FALSE; + data->description = g_strdup (line); + return TRUE; +} + +#define EMOJI_VERSION_TAG "# Version: " +#define EMOJI_GROUP_TAG "# group: " +#define EMOJI_SUBGROUP_TAG "# subgroup: " +#define EMOJI_NON_FULLY_QUALIFIED_TAG "non-fully-qualified" + +static gboolean +unicode_emoji_test_parse_line (const gchar *line, + EmojiData *data) +{ + int tag_length; + gchar **segments = NULL; + + g_return_val_if_fail (line != NULL, FALSE); + + tag_length = strlen (EMOJI_VERSION_TAG); + if (strlen (line) > tag_length && + g_ascii_strncasecmp (line, EMOJI_VERSION_TAG, tag_length) == 0) { + unicode_emoji_version = g_strdup (line + tag_length); + return TRUE; + } + tag_length = strlen (EMOJI_GROUP_TAG); + if (strlen (line) > tag_length && + g_ascii_strncasecmp (line, EMOJI_GROUP_TAG, tag_length) == 0) { + g_free (data->category); + g_clear_pointer (&data->subcategory, g_free); + data->category = g_strdup (line + tag_length); + return TRUE; + } + tag_length = strlen (EMOJI_SUBGROUP_TAG); + if (strlen (line) > tag_length && + g_ascii_strncasecmp (line, EMOJI_SUBGROUP_TAG, tag_length) == 0) { + g_free (data->subcategory); + data->subcategory = g_strdup (line + tag_length); + return TRUE; + } + if (*line == '#') + return TRUE; + segments = g_strsplit (line, "; ", 2); + if (segments[1] == NULL) { + g_warning ("No qualified line\n"); + goto failed_to_parse_unicode_emoji_test_line; + return FALSE; + } + tag_length = strlen (EMOJI_NON_FULLY_QUALIFIED_TAG); + /* Ignore the non-fully-qualified emoji */ + if (g_ascii_strncasecmp (segments[1], EMOJI_NON_FULLY_QUALIFIED_TAG, + tag_length) == 0) { + g_strfreev (segments); + return TRUE; + } + unicode_emoji_test_parse_unicode (segments[0], data); + g_strfreev (segments); + segments = g_strsplit (line, "# ", 2); + if (segments[1] == NULL) { + g_warning ("No description line\n"); + goto failed_to_parse_unicode_emoji_test_line; + return FALSE; + } + unicode_emoji_test_parse_description (segments[1], data); + g_clear_pointer (&segments, g_strfreev); + if (data->annotations == NULL) { + if (data->subcategory) { + int i; + gchar *amp; + segments = g_strsplit(data->subcategory, "-", -1); + for (i = 0; segments && segments[i]; i++) { + if ((amp = strchr (segments[i], '&')) != NULL) { + if (amp - segments[i] <= 1) { + g_warning ("Wrong ampersand"); + goto failed_to_parse_unicode_emoji_test_line; + } + data->annotations = g_slist_append ( + data->annotations, + g_strndup (segments[i], amp - segments[i] - 1)); + data->annotations = g_slist_append ( + data->annotations, + g_strdup (amp + 1)); + continue; + } + data->annotations = g_slist_append (data->annotations, + g_strdup (segments[i])); + } + g_clear_pointer (&segments, g_strfreev); + } else { + g_warning ("No subcategory line\n"); + goto failed_to_parse_unicode_emoji_test_line; + } + } + update_emoji_list (data, TRUE); + reset_emoji_element (data); + return TRUE; + +failed_to_parse_unicode_emoji_test_line: + if (segments) + g_strfreev (segments); + reset_emoji_element (data); + return FALSE; +} + +#undef EMOJI_VERSION_TAG +#undef EMOJI_GROUP_TAG +#undef EMOJI_SUBGROUP_TAG +#undef EMOJI_NON_FULLY_QUALIFIED_TAG + +static gboolean +unicode_emoji_test_parse_file (const gchar *filename, + GSList **list) +{ + gchar *content = NULL; + gsize length = 0; + GError *error = NULL; + gchar *head, *end, *line; + int n = 1; + EmojiData data = { 0, }; + + g_return_val_if_fail (filename != NULL, FALSE); + g_return_val_if_fail (list != NULL, FALSE); + + if (!g_file_get_contents (filename, &content, &length, &error)) { + g_warning ("Failed to load %s: %s", + filename, error ? error->message : ""); + goto failed_to_parse_unicode_emoji_test; + } + end = content; + while (*end == '\n' && end - content < length) { + end++; + n++; + } + head = end; + data.list = *list; + while (end - content < length) { + while (*end != '\n' && end - content < length) + end++; + if (end - content >= length) + break; + line = g_strndup (head, end - head); + if (!unicode_emoji_test_parse_line (line, &data)) + g_warning ("parse error #%d in %s version %s: %s", + n, filename, + unicode_emoji_version ? unicode_emoji_version : "(null)", + line); + while (*end == '\n' && end - content < length) { + end++; + n++; + } + g_free (line); + head = end; + } + g_free (content); + g_free (unicode_emoji_version); + *list = data.list; + return TRUE; + +failed_to_parse_unicode_emoji_test: + if (error) + g_error_free (error); + g_clear_pointer (&content, g_free); + return FALSE; +} + +static gboolean +unicode_emoji_parse_dir (const gchar *dirname, + GSList **list) +{ + gchar *filename = NULL; + g_return_val_if_fail (dirname != NULL, FALSE); + g_return_val_if_fail (list != NULL, FALSE); + + filename = g_build_path ("/", dirname, "emoji-test.txt", NULL); + if (!unicode_emoji_test_parse_file (filename, list)) { + g_free (filename); + return FALSE; + } + g_free (filename); + return TRUE; +} + +#ifdef HAVE_JSON_GLIB1 +static gboolean +parse_emojione_unicode (JsonNode *node, + EmojiData *data, + gboolean is_alternates) +{ + const gchar *str, *unicode; + gchar *endptr = NULL; + guint32 uch; + static gchar outbuf[8] = { 0, }; + GString *emoji; + + if (json_node_get_node_type (node) != JSON_NODE_VALUE) { + g_warning ("'unicode' element is not string"); + return FALSE; + } + + emoji = g_string_new (NULL); + str = unicode = json_node_get_string (node); + while (str && *str) { + uch = g_ascii_strtoull (str, &endptr, 16); + outbuf[g_unichar_to_utf8 (uch, outbuf)] = '\0'; + g_string_append (emoji, outbuf); + if (*endptr == '\0') { + break; + } else { + switch (*endptr) { + case '-': + endptr++; + break; + default: + g_warning ("Failed to parse unicode %s", unicode); + } + } + str = endptr; + endptr = NULL; + } + + if (is_alternates) + data->emoji_alternates = g_string_free (emoji, FALSE); + else + data->emoji = g_string_free (emoji, FALSE); + + return TRUE; +} + +static gboolean +parse_emojione_shortname (JsonNode *node, + EmojiData *data) +{ +#if 0 + const gchar *shortname; + gchar *head, *s; + int length; + GSList *duplicated; + + if (json_node_get_node_type (node) != JSON_NODE_VALUE) { + g_warning ("'shortname' element is not string"); + return FALSE; + } + + /* The format is ':short_name:' */ + shortname = json_node_get_string (node); + if (shortname == 0 || *shortname == '\0') + return TRUE; + if (*shortname != ':') { + g_warning ("'shortname' format is different: %s", shortname); + return FALSE; + } + + length = strlen (shortname); + head = g_new0 (gchar, length); + strcpy (head, shortname + 1); + for (s = head; *s; s++) { + if (*s == ':') { + *s = '\0'; + break; + } else if (*s == '_') { + *s = ' '; + } + } + + if (head == NULL || *head == '\0') { + g_warning ("'shortname' format is different: %s", shortname); + g_free (head); + return FALSE; + } + + duplicated = g_slist_find_custom (data->annotations, + head, + (GCompareFunc) g_strcmp0); + if (duplicated == NULL) { + data->annotations = g_slist_prepend (data->annotations, + head); + } else { + g_free (head); + } + +#endif + return TRUE; +} + +static gboolean +parse_emojione_name (JsonNode *node, + EmojiData *data) +{ + const gchar *name; + + if (json_node_get_node_type (node) != JSON_NODE_VALUE) { + g_warning ("'name' element is not string"); + return FALSE; + } + + name = json_node_get_string (node); + + if (name == NULL || *name == '\0') + return TRUE; + + data->description = g_strdup (name); + + return TRUE; +} + +static gboolean +parse_emojione_category (JsonNode *node, + EmojiData *data) +{ + const gchar *category; + GSList *duplicated; + + if (json_node_get_node_type (node) != JSON_NODE_VALUE) { + g_warning ("'category' element is not string"); + return FALSE; + } + + category = json_node_get_string (node); + + if (category == NULL || *category == '\0') + return TRUE; + + data->category = g_strdup (category); + duplicated = g_slist_find_custom (data->annotations, + category, + (GCompareFunc) g_strcmp0); + if (duplicated == NULL) { + data->annotations = g_slist_prepend (data->annotations, + g_strdup (category)); + } + + return TRUE; +} + +#ifdef EMOJIONE_ALIASES_ASCII_PRINT +static gchar * +text_to_entity (const gchar *text) +{ + gchar *p; + GString *buff = g_string_new (NULL); + for (p = text; *p; p++) { + switch (*p) { + case '<': + g_string_append (buff, "<"); + break; + case '>': + g_string_append (buff, ">"); + break; + case '&': + g_string_append (buff, "&"); + break; + default: + g_string_append_c (buff, *p); + } + } + g_string_free (buff, FALSE); +} +#endif + +static gboolean +parse_emojione_aliases_ascii (JsonNode *node, + EmojiData *data) +{ + JsonArray *aliases_ascii; + guint i, length; + + if (json_node_get_node_type (node) != JSON_NODE_ARRAY) { + g_warning ("'aliases_ascii' element is not array"); + return FALSE; + } + + aliases_ascii = json_node_get_array (node); + length = json_array_get_length (aliases_ascii); + for (i = 0; i < length; i++) { +#ifdef EMOJIONE_ALIASES_ASCII_PRINT + if (i == 0) + printf (" ", data->emoji); +#endif + const gchar *alias = json_array_get_string_element (aliases_ascii, i); + GSList *duplicated = g_slist_find_custom (data->annotations, + alias, + (GCompareFunc) g_strcmp0); + if (duplicated == NULL) { +#ifdef EMOJIONE_ALIASES_ASCII_PRINT + gchar *entity = text_to_entity (alias); + if (i != length - 1) + printf ("%s | ", entity); + else + printf ("%s\n", entity); + g_free (entity); +#endif + data->annotations = g_slist_prepend (data->annotations, + g_strdup (alias)); + } + } + + return TRUE; +} + +static gboolean +parse_emojione_keywords (JsonNode *node, + EmojiData *data) +{ +#if 0 + JsonArray *keywords; + guint i, length; + + if (json_node_get_node_type (node) != JSON_NODE_ARRAY) { + g_warning ("'keywords' element is not array"); + return FALSE; + } + + keywords = json_node_get_array (node); + length = json_array_get_length (keywords); + for (i = 0; i < length; i++) { + const gchar *keyword = json_array_get_string_element (keywords, i); + GSList *duplicated = g_slist_find_custom (data->annotations, + keyword, + (GCompareFunc) g_strcmp0); + if (duplicated == NULL) { + data->annotations = g_slist_prepend (data->annotations, + g_strdup (keyword)); + } + } + +#endif + return TRUE; +} + +static gboolean +parse_emojione_emoji_data (JsonNode *node, + const gchar *member, + EmojiData *data) +{ + if (g_strcmp0 (member, "unicode") == 0) + return parse_emojione_unicode (node, data, FALSE); + else if (g_strcmp0 (member, "unicode_alt") == 0) + return parse_emojione_unicode (node, data, TRUE); + else if (g_strcmp0 (member, "unicode_alternates") == 0) + return parse_emojione_unicode (node, data, TRUE); + else if (g_strcmp0 (member, "shortname") == 0) + return parse_emojione_shortname (node, data); + else if (g_strcmp0 (member, "name") == 0) + return parse_emojione_name (node, data); + else if (g_strcmp0 (member, "category") == 0) + return parse_emojione_category (node, data); + else if (g_strcmp0 (member, "aliases_ascii") == 0) + return parse_emojione_aliases_ascii (node, data); + else if (g_strcmp0 (member, "keywords") == 0) + return parse_emojione_keywords (node, data); + return TRUE; +} + +static gboolean +parse_emojione_element (JsonNode *node, + EmojiData *data) +{ + JsonObject *object; + GList *members, *m; + + if (json_node_get_node_type (node) != JSON_NODE_OBJECT) { + return FALSE; + } + + reset_emoji_element (data); + + object = json_node_get_object (node); + m = members = json_object_get_members (object); + while (m) { + const gchar *member = (const gchar *) m->data; + if (!parse_emojione_emoji_data (json_object_get_member (object, member), + member, + data)) { + g_list_free (members); + return FALSE; + } + m = m->next; + } + g_list_free (members); + + update_emoji_list (data, TRUE); + + return TRUE; +} + +static gboolean +emojione_parse_json_file (const gchar *filename, + GSList **list) +{ + JsonParser *parser = json_parser_new (); + JsonNode *node; + JsonObject *object; + GList *members, *m; + GError *error = NULL; + EmojiData data = { 0, }; + + g_return_val_if_fail (filename != NULL, FALSE); + g_return_val_if_fail (list != NULL, FALSE); + + if (!json_parser_load_from_file (parser, filename, &error)) { + g_error ("%s", error->message); + g_error_free (error); + goto fail_to_json_file; + } + + node = json_parser_get_root (parser); + if (json_node_get_node_type (node) != JSON_NODE_OBJECT) { + g_warning ("Json file does not have Json object %s", filename); + goto fail_to_json_file; + } + + object = json_node_get_object (node); + members = json_object_get_members (object); + data.list = *list; + + m = members; + while (m) { + const gchar *member = (const gchar *) m->data; + if (!parse_emojione_element (json_object_get_member (object, member), + &data)) { + g_warning ("Failed to parse member '%s' in %s", member, filename); + } + m = m->next; + } + + g_list_free (members); + reset_emoji_element (&data); + g_object_unref (parser); + *list = data.list; + + return TRUE; + +fail_to_json_file: + g_object_unref (parser); + return FALSE; +} +#endif /* HAVE_JSON_GLIB1 */ + +static void +emoji_data_list_unify_categories (IBusEmojiData *data, + GSList **list) +{ + g_return_if_fail (IBUS_IS_EMOJI_DATA (data)); + g_return_if_fail (list != NULL); + + const gchar *category = ibus_emoji_data_get_category (data); + if (*category == '\0') + return; + if (g_slist_find_custom (*list, category, (GCompareFunc)g_strcmp0) == NULL) + *list = g_slist_append (*list, g_strdup (category)); +} + +static void +category_list_dump (const gchar *category, + GString *buff) +{ + gchar *line; + g_return_if_fail (buff != NULL); + + line = g_strdup_printf (" N_(\"%s\"),\n", category); + g_string_append (buff, line); + g_free (line); +} + +static void +category_file_save (const gchar *filename, + GSList *list) +{ + gchar *content = NULL; + gsize length = 0; + GError *error = NULL; + gchar *p, *substr; + GString *buff = NULL; + int i; + GSList *list_categories = NULL; + + g_return_if_fail (filename != NULL); + g_return_if_fail (list != NULL); + + g_slist_foreach (list, (GFunc)emoji_data_list_unify_categories, &list_categories); + if (list_categories == NULL) { + g_warning ("Not found categories in IBusEmojiData list"); + return; + } + + if (!g_file_get_contents (__FILE__, &content, &length, &error)) { + g_warning ("Failed to load %s: %s", __FILE__, error->message); + g_clear_pointer (&error, g_error_free); + return; + } + buff = g_string_new (NULL); + p = content; + for (i = 0; i < LICENSE_LINES; i++, p++) { + if ((p = strchr (p, '\n')) == NULL) + break; + } + if (p != NULL) { + substr = g_strndup (content, p - content); + g_string_append (buff, substr); + g_free (substr); + g_string_append_c (buff, '\n'); + } + g_clear_pointer (&content, g_free); + + g_string_append (buff, "\n"); + substr = g_strdup_printf ("/* This file is generated by %s. */", __FILE__); + g_string_append (buff, substr); + g_free (substr); + g_string_append (buff, "\n"); + g_string_append (buff, "include \n"); + g_string_append (buff, "\n"); + g_string_append (buff, "#ifndef __IBUS_EMOJI_GEN_H_\n"); + g_string_append (buff, "#define __IBUS_EMOJI_GEN_H_\n"); + g_string_append (buff, "const static char *unicode_emoji_categories[] = {\n"); + list_categories = g_slist_sort (list_categories, (GCompareFunc)g_strcmp0); + g_slist_foreach (list_categories, (GFunc)category_list_dump, buff); + g_slist_free (list_categories); + g_string_append (buff, "};\n"); + g_string_append (buff, "#endif\n"); + + if (!g_file_set_contents (filename, buff->str, -1, &error)) { + g_warning ("Failed to save emoji category file %s: %s", filename, error->message); + g_error_free (error); + } + + g_string_free (buff, TRUE); +} + +int +main (int argc, char *argv[]) +{ + gchar *prgname; +#ifdef HAVE_JSON_GLIB1 + gchar *json_file = NULL; +#endif + gchar *emoji_dir = NULL; + gchar *xml_file = NULL; + gchar *xml_derived_file = NULL; + gchar *xml_ascii_file = NULL; + gchar *output = NULL; + gchar *output_category = NULL; + GOptionEntry entries[] = { +#ifdef HAVE_JSON_GLIB1 + { "json", 'j', 0, G_OPTION_ARG_STRING, &json_file, + "Parse Emoji One JSON file", + "JSON" + }, +#endif + { "unicode-emoji-dir", 'd', 0, G_OPTION_ARG_STRING, &emoji_dir, + "Parse Emoji files in DIRECTORY which includes emoji-test.txt " \ + "emoji-sequences.txt emoji-zwj-sequences.txt in unicode.org", + "DIRECTORY" + }, + { "out", 'o', 0, G_OPTION_ARG_STRING, &output, + "Save the emoji data as FILE", + "FILE" + }, + { "out-category", 'C', 0, G_OPTION_ARG_STRING, &output_category, + "Save the translatable categories as FILE", + "FILE" + }, + { "xml", 'x', 0, G_OPTION_ARG_STRING, &xml_file, + "Parse Unocode.org ANNOTATIONS file", + "ANNOTATIONS" + }, + { "xml-derived", 'X', 0, G_OPTION_ARG_STRING, &xml_derived_file, + "Parse Unocode.org derived ANNOTATIONS file", + "ANNOTATIONS" + }, + { "xml-ascii", 'A', 0, G_OPTION_ARG_STRING, &xml_ascii_file, + "Parse ASCII ANNOTATIONS file", + "ANNOTATIONS" + }, + { NULL } + }; + GOptionContext *context; + GError *error = NULL; + GSList *list = NULL; + gboolean is_en = TRUE; + +#ifdef HAVE_LOCALE_H + /* To output emoji warnings. */ + setlocale (LC_ALL, ""); +#endif + + prgname = g_path_get_basename (argv[0]); + g_set_prgname (prgname); + g_free (prgname); + + context = g_option_context_new (NULL); + g_option_context_add_main_entries (context, entries, NULL); + + if (argc < 3) { + g_print ("%s", g_option_context_get_help (context, TRUE, NULL)); + g_option_context_free (context); + return -1; + } + + if (!g_option_context_parse (context, &argc, &argv, &error)) { + g_warning ("Failed options: %s", error->message); + g_error_free (error); + return -1; + } + g_option_context_free (context); + +#ifdef HAVE_JSON_GLIB1 + if (json_file) + emojione_parse_json_file (json_file, &list); +#endif + if (emoji_dir) + unicode_emoji_parse_dir (emoji_dir, &list); + if (list) { +#define CHECK_IS_EN(file) if ((file)) { \ + gchar *basename = g_path_get_basename ((file)); \ + is_en = (g_ascii_strncasecmp (basename, "en.", 3) == 0) ? \ + TRUE : FALSE; \ + g_free (basename); \ +} + + CHECK_IS_EN(xml_derived_file); + CHECK_IS_EN(xml_file); +#undef CHECK_IS_EN + + /* Use English emoji-test.txt to get fully-qualified. */ + if (!is_en) + g_slist_foreach (list, (GFunc)init_annotations, NULL); + } + if (xml_file) + unicode_annotations_parse_xml_file (xml_file, &list, FALSE); + if (xml_derived_file) + unicode_annotations_parse_xml_file (xml_derived_file, &list, TRUE); + if (xml_ascii_file) + unicode_annotations_parse_xml_file (xml_ascii_file, &list, FALSE); + if (list != NULL && !is_en) { + /* If emoji-test.txt has an emoji but $lang.xml does not, clear it + * since the language dicts do not want English annotations. + */ + NoTransData no_trans_data = { + xml_file, + xml_derived_file, + NULL + }; + g_slist_foreach (list, (GFunc)check_no_trans, &no_trans_data); + if (no_trans_data.emoji_list) { + g_slist_foreach (no_trans_data.emoji_list, + (GFunc)delete_emoji_from_list, + &list); + g_slist_free_full (no_trans_data.emoji_list, g_free); + } + } + if (list != NULL && output) + ibus_emoji_data_save (output, list); + if (list != NULL && output_category) + category_file_save (output_category, list); + if (list) + g_slist_free (list); + else + return 99; + + return 0; +} diff --git a/src/gtkimcontextsimpleseqs.h b/src/gtkimcontextsimpleseqs.h index fab1c6a96..ffa5f1256 100644 --- a/src/gtkimcontextsimpleseqs.h +++ b/src/gtkimcontextsimpleseqs.h @@ -12,15 +12,13 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library. If not, see . */ /* * File auto-generated from script found at http://bugzilla.gnome.org/show_bug.cgi?id=321896 * using the input files - * Input : http://gitweb.freedesktop.org/?p=xorg/lib/libX11.git;a=blob_plain;f=nls/en_US.UTF-8/Compose.pre + * Input : http://cgit.freedesktop.org/xorg/lib/libX11/plain/nls/en_US.UTF-8/Compose.pre * Input : http://www.cl.cam.ac.uk/~mgk25/ucs/keysyms.txt * Input : http://www.unicode.org/Public/UNIDATA/UnicodeData.txt * @@ -67,4419 +65,5273 @@ */ static const guint16 gtk_compose_seqs_compact[] = { -IBUS_KEY_dead_stroke, 144, 232, 241, 241, 241, -IBUS_KEY_Greek_accentdieresis, 241, 245, 245, 245, 245, -IBUS_KEY_dead_grave, 245, 307, 394, 606, 606, -IBUS_KEY_dead_acute, 606, 670, 766, 1042, 1042, -IBUS_KEY_dead_circumflex, 1042, 1166, 1166, 1366, 1366, -IBUS_KEY_dead_tilde, 1366, 1450, 1513, 1653, 1653, -IBUS_KEY_dead_macron, 1653, 1699, 1699, 1771, 1771, -IBUS_KEY_dead_breve, 1771, 1821, 1821, 1845, 1845, -IBUS_KEY_dead_abovedot, 1845, 1875, 1878, 1910, 1910, -IBUS_KEY_dead_diaeresis, 1910, 1998, 2007, 2031, 2031, -IBUS_KEY_dead_abovering, 2031, 2041, 2041, 2041, 2041, -IBUS_KEY_dead_doubleacute, 2041, 2051, 2051, 2051, 2051, -IBUS_KEY_dead_caron, 2051, 2093, 2093, 2101, 2101, -IBUS_KEY_dead_cedilla, 2101, 2113, 2113, 2113, 2113, -IBUS_KEY_dead_ogonek, 2113, 2123, 2123, 2123, 2123, -IBUS_KEY_dead_iota, 2123, 2145, 2244, 2676, 3336, -IBUS_KEY_dead_voiced_sound, 3336, 3382, 3382, 3382, 3382, -IBUS_KEY_dead_semivoiced_sound, 3382, 3392, 3392, 3392, 3392, -IBUS_KEY_dead_belowdot, 3392, 3408, 3408, 3424, 3424, -IBUS_KEY_dead_hook, 3424, 3500, 3500, 3556, 3556, -IBUS_KEY_dead_horn, 3556, 3566, 3566, 3566, 3566, -IBUS_KEY_dead_psili, 3566, 3594, 3594, 3594, 3594, -IBUS_KEY_dead_dasia, 3594, 3626, 3626, 3626, 3626, -IBUS_KEY_Multi_key, 3626, 3626, 9566, 13274, 15139, -IBUS_KEY_space, 0x002F, -IBUS_KEY_2, 0x01BB, -IBUS_KEY_A, 0x023A, -IBUS_KEY_B, 0x0243, -IBUS_KEY_C, 0x023B, -IBUS_KEY_D, 0x0110, -IBUS_KEY_E, 0x0246, -IBUS_KEY_G, 0x01E4, -IBUS_KEY_H, 0x0126, -IBUS_KEY_I, 0x0197, -IBUS_KEY_J, 0x0248, -IBUS_KEY_L, 0x0141, -IBUS_KEY_O, 0x00D8, -IBUS_KEY_P, 0x2C63, -IBUS_KEY_R, 0x024C, -IBUS_KEY_T, 0x0166, -IBUS_KEY_U, 0x0244, -IBUS_KEY_Y, 0x024E, -IBUS_KEY_Z, 0x01B5, -IBUS_KEY_a, 0x2C65, -IBUS_KEY_b, 0x0180, -IBUS_KEY_c, 0x023C, -IBUS_KEY_d, 0x0111, -IBUS_KEY_e, 0x0247, -IBUS_KEY_g, 0x01E5, -IBUS_KEY_h, 0x0127, -IBUS_KEY_i, 0x0268, -IBUS_KEY_j, 0x0249, -IBUS_KEY_l, 0x0142, -IBUS_KEY_o, 0x00F8, -IBUS_KEY_p, 0x1D7D, -IBUS_KEY_r, 0x024D, -IBUS_KEY_t, 0x0167, -IBUS_KEY_u, 0x0289, -IBUS_KEY_y, 0x024F, -IBUS_KEY_z, 0x01B6, -IBUS_KEY_nobreakspace, 0x0338, -IBUS_KEY_Oacute, 0x01FE, -IBUS_KEY_oacute, 0x01FF, -0x0237, 0x025F, -0x0269, 0x1D7C, -IBUS_KEY_dead_stroke, 0x002F, -IBUS_KEY_lessthanequal, 0x2270, -IBUS_KEY_greaterthanequal, 0x2271, -IBUS_KEY_dead_acute, IBUS_KEY_O, 0x01FE, -IBUS_KEY_dead_acute, IBUS_KEY_o, 0x01FF, -IBUS_KEY_dead_abovedot, IBUS_KEY_j, 0x025F, -IBUS_KEY_Greek_iota, 0x0390, -IBUS_KEY_Greek_upsilon, 0x03B0, -IBUS_KEY_space, 0x0060, -IBUS_KEY_V, 0x01DB, -IBUS_KEY_v, 0x01DC, -IBUS_KEY_nobreakspace, 0x0300, -IBUS_KEY_Abreve, 0x1EB0, -IBUS_KEY_abreve, 0x1EB1, -IBUS_KEY_Emacron, 0x1E14, -IBUS_KEY_emacron, 0x1E15, -IBUS_KEY_Omacron, 0x1E50, -IBUS_KEY_omacron, 0x1E51, -IBUS_KEY_Cyrillic_ie, 0x0450, -IBUS_KEY_Cyrillic_i, 0x045D, -IBUS_KEY_Cyrillic_IE, 0x0400, -IBUS_KEY_Cyrillic_I, 0x040D, -IBUS_KEY_Greek_iotadieresis, 0x1FD2, -IBUS_KEY_Greek_upsilondieresis, 0x1FE2, -IBUS_KEY_Greek_ALPHA, 0x1FBA, -IBUS_KEY_Greek_EPSILON, 0x1FC8, -IBUS_KEY_Greek_ETA, 0x1FCA, -IBUS_KEY_Greek_IOTA, 0x1FDA, -IBUS_KEY_Greek_OMICRON, 0x1FF8, -IBUS_KEY_Greek_UPSILON, 0x1FEA, -IBUS_KEY_Greek_OMEGA, 0x1FFA, -IBUS_KEY_Greek_alpha, 0x1F70, -IBUS_KEY_Greek_epsilon, 0x1F72, -IBUS_KEY_Greek_eta, 0x1F74, -IBUS_KEY_Greek_iota, 0x1F76, -IBUS_KEY_Greek_omicron, 0x1F78, -IBUS_KEY_Greek_upsilon, 0x1F7A, -IBUS_KEY_Greek_omega, 0x1F7C, -IBUS_KEY_dead_grave, 0x0060, -IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_iota, 0x1FD2, -IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_upsilon, 0x1FE2, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F0A, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_EPSILON, 0x1F1A, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F2A, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_IOTA, 0x1F3A, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMICRON, 0x1F4A, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1F6A, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F02, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_epsilon, 0x1F12, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F22, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_iota, 0x1F32, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_omicron, 0x1F42, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_upsilon, 0x1F52, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1F62, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F0B, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_EPSILON, 0x1F1B, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F2B, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_IOTA, 0x1F3B, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMICRON, 0x1F4B, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_UPSILON, 0x1F5B, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1F6B, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F03, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_epsilon, 0x1F13, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F23, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_iota, 0x1F33, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omicron, 0x1F43, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_upsilon, 0x1F53, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1F63, -IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_U, 0x01DB, -IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_u, 0x01DC, -IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_Greek_iota, 0x1FD2, -IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_Greek_upsilon, 0x1FE2, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F0B, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_EPSILON, 0x1F1B, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F2B, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_IOTA, 0x1F3B, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMICRON, 0x1F4B, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_UPSILON, 0x1F5B, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1F6B, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F03, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_epsilon, 0x1F13, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F23, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_iota, 0x1F33, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_omicron, 0x1F43, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_upsilon, 0x1F53, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1F63, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F0A, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_EPSILON, 0x1F1A, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F2A, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_IOTA, 0x1F3A, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_OMICRON, 0x1F4A, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1F6A, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F02, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_epsilon, 0x1F12, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F22, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_iota, 0x1F32, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_omicron, 0x1F42, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_upsilon, 0x1F52, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1F62, -IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_O, 0x1EDC, -IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_U, 0x1EEA, -IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_o, 0x1EDD, -IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_u, 0x1EEB, -IBUS_KEY_Multi_key, IBUS_KEY_U, IBUS_KEY_A, 0x1EB0, -IBUS_KEY_Multi_key, IBUS_KEY_U, IBUS_KEY_a, 0x1EB1, -IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_A, 0x1EA6, -IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_E, 0x1EC0, -IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_O, 0x1ED2, -IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_a, 0x1EA7, -IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_e, 0x1EC1, -IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_o, 0x1ED3, -IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_E, 0x1E14, -IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_O, 0x1E50, -IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_e, 0x1E15, -IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_o, 0x1E51, -IBUS_KEY_Multi_key, IBUS_KEY_b, IBUS_KEY_A, 0x1EB0, -IBUS_KEY_Multi_key, IBUS_KEY_b, IBUS_KEY_a, 0x1EB1, -IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_E, 0x1E14, -IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_O, 0x1E50, -IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_e, 0x1E15, -IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_o, 0x1E51, -IBUS_KEY_space, 0x0027, -IBUS_KEY_V, 0x01D7, -IBUS_KEY_v, 0x01D8, -IBUS_KEY_nobreakspace, 0x0301, -IBUS_KEY_Abreve, 0x1EAE, -IBUS_KEY_abreve, 0x1EAF, -IBUS_KEY_Emacron, 0x1E16, -IBUS_KEY_emacron, 0x1E17, -IBUS_KEY_Utilde, 0x1E78, -IBUS_KEY_omacron, 0x1E53, -IBUS_KEY_utilde, 0x1E79, -IBUS_KEY_Cyrillic_ghe, 0x0453, -IBUS_KEY_Cyrillic_ka, 0x045C, -IBUS_KEY_Cyrillic_GHE, 0x0403, -IBUS_KEY_Cyrillic_KA, 0x040C, -IBUS_KEY_Greek_iotadieresis, 0x0390, -IBUS_KEY_Greek_upsilondieresis, 0x03B0, -IBUS_KEY_Greek_ALPHA, 0x0386, -IBUS_KEY_Greek_EPSILON, 0x0388, -IBUS_KEY_Greek_ETA, 0x0389, -IBUS_KEY_Greek_IOTA, 0x038A, -IBUS_KEY_Greek_OMICRON, 0x038C, -IBUS_KEY_Greek_UPSILON, 0x038E, -IBUS_KEY_Greek_OMEGA, 0x038F, -IBUS_KEY_Greek_alpha, 0x03AC, -IBUS_KEY_Greek_epsilon, 0x03AD, -IBUS_KEY_Greek_eta, 0x03AE, -IBUS_KEY_Greek_iota, 0x03AF, -IBUS_KEY_Greek_omicron, 0x03CC, -IBUS_KEY_Greek_upsilon, 0x03CD, -IBUS_KEY_Greek_omega, 0x03CE, -IBUS_KEY_dead_acute, 0x00B4, -IBUS_KEY_dead_stroke, IBUS_KEY_O, 0x01FE, -IBUS_KEY_dead_stroke, IBUS_KEY_o, 0x01FF, -IBUS_KEY_dead_diaeresis, IBUS_KEY_space, 0x0385, -IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_iota, 0x0390, -IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_upsilon, 0x03B0, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F0C, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_EPSILON, 0x1F1C, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F2C, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_IOTA, 0x1F3C, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMICRON, 0x1F4C, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1F6C, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F04, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_epsilon, 0x1F14, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F24, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_iota, 0x1F34, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_omicron, 0x1F44, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_upsilon, 0x1F54, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1F64, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F0D, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_EPSILON, 0x1F1D, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F2D, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_IOTA, 0x1F3D, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMICRON, 0x1F4D, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_UPSILON, 0x1F5D, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1F6D, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F05, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_epsilon, 0x1F15, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F25, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_iota, 0x1F35, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omicron, 0x1F45, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_upsilon, 0x1F55, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1F65, -IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_I, 0x1E2E, -IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_U, 0x01D7, -IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_i, 0x1E2F, -IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_u, 0x01D8, -IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_Greek_iota, 0x0390, -IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_Greek_upsilon, 0x03B0, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F0D, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_EPSILON, 0x1F1D, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F2D, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_IOTA, 0x1F3D, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMICRON, 0x1F4D, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_UPSILON, 0x1F5D, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1F6D, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F05, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_epsilon, 0x1F15, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F25, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_iota, 0x1F35, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_omicron, 0x1F45, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_upsilon, 0x1F55, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1F65, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F0C, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_EPSILON, 0x1F1C, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F2C, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_IOTA, 0x1F3C, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_OMICRON, 0x1F4C, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1F6C, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F04, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_epsilon, 0x1F14, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F24, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_iota, 0x1F34, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_omicron, 0x1F44, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_upsilon, 0x1F54, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1F64, -IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_O, 0x1EDA, -IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_U, 0x1EE8, -IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_o, 0x1EDB, -IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_u, 0x1EE9, -IBUS_KEY_Multi_key, IBUS_KEY_comma, IBUS_KEY_C, 0x1E08, -IBUS_KEY_Multi_key, IBUS_KEY_comma, IBUS_KEY_c, 0x1E09, -IBUS_KEY_Multi_key, IBUS_KEY_slash, IBUS_KEY_O, 0x01FE, -IBUS_KEY_Multi_key, IBUS_KEY_slash, IBUS_KEY_o, 0x01FF, -IBUS_KEY_Multi_key, IBUS_KEY_U, IBUS_KEY_A, 0x1EAE, -IBUS_KEY_Multi_key, IBUS_KEY_U, IBUS_KEY_a, 0x1EAF, -IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_A, 0x1EA4, -IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_E, 0x1EBE, -IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_O, 0x1ED0, -IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_a, 0x1EA5, -IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_e, 0x1EBF, -IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_o, 0x1ED1, -IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_E, 0x1E16, -IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_O, 0x1E52, -IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_e, 0x1E17, -IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_o, 0x1E53, -IBUS_KEY_Multi_key, IBUS_KEY_b, IBUS_KEY_A, 0x1EAE, -IBUS_KEY_Multi_key, IBUS_KEY_b, IBUS_KEY_a, 0x1EAF, -IBUS_KEY_Multi_key, IBUS_KEY_o, IBUS_KEY_A, 0x01FA, -IBUS_KEY_Multi_key, IBUS_KEY_o, IBUS_KEY_a, 0x01FB, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_O, 0x1E4C, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_U, 0x1E78, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_o, 0x1E4D, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_u, 0x1E79, -IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_E, 0x1E16, -IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_O, 0x1E52, -IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_e, 0x1E17, -IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_o, 0x1E53, -IBUS_KEY_Multi_key, IBUS_KEY_cedilla, IBUS_KEY_C, 0x1E08, -IBUS_KEY_Multi_key, IBUS_KEY_cedilla, IBUS_KEY_c, 0x1E09, -IBUS_KEY_Multi_key, IBUS_KEY_KP_Divide, IBUS_KEY_O, 0x01FE, -IBUS_KEY_Multi_key, IBUS_KEY_KP_Divide, IBUS_KEY_o, 0x01FF, -IBUS_KEY_space, 0x005E, -IBUS_KEY_parenleft, 0x207D, -IBUS_KEY_parenright, 0x207E, -IBUS_KEY_plus, 0x207A, -IBUS_KEY_minus, 0x207B, -IBUS_KEY_0, 0x2070, -IBUS_KEY_1, 0x00B9, -IBUS_KEY_2, 0x00B2, -IBUS_KEY_3, 0x00B3, -IBUS_KEY_4, 0x2074, -IBUS_KEY_5, 0x2075, -IBUS_KEY_6, 0x2076, -IBUS_KEY_7, 0x2077, -IBUS_KEY_8, 0x2078, -IBUS_KEY_9, 0x2079, -IBUS_KEY_equal, 0x207C, -IBUS_KEY_nobreakspace, 0x0302, -IBUS_KEY_Agrave, 0x1EA6, -IBUS_KEY_Aacute, 0x1EA4, -IBUS_KEY_Atilde, 0x1EAA, -IBUS_KEY_Egrave, 0x1EC0, -IBUS_KEY_Eacute, 0x1EBE, -IBUS_KEY_Ograve, 0x1ED2, -IBUS_KEY_Oacute, 0x1ED0, -IBUS_KEY_Otilde, 0x1ED6, -IBUS_KEY_agrave, 0x1EA7, -IBUS_KEY_aacute, 0x1EA5, -IBUS_KEY_atilde, 0x1EAB, -IBUS_KEY_egrave, 0x1EC1, -IBUS_KEY_eacute, 0x1EBF, -IBUS_KEY_ograve, 0x1ED3, -IBUS_KEY_oacute, 0x1ED1, -IBUS_KEY_otilde, 0x1ED7, -0x2212, 0x207B, -0x4E00, 0x3192, -0x4E01, 0x319C, -0x4E09, 0x3194, -0x4E0A, 0x3196, -0x4E0B, 0x3198, -0x4E19, 0x319B, -0x4E2D, 0x3197, -0x4E59, 0x319A, -0x4E8C, 0x3193, -0x4EBA, 0x319F, -0x56DB, 0x3195, -0x5730, 0x319E, -0x5929, 0x319D, -0x7532, 0x3199, -IBUS_KEY_dead_circumflex, 0x005E, -IBUS_KEY_KP_Space, 0x00B2, -IBUS_KEY_KP_Add, 0x207A, -IBUS_KEY_KP_0, 0x2070, -IBUS_KEY_KP_1, 0x00B9, -IBUS_KEY_KP_2, 0x00B2, -IBUS_KEY_KP_3, 0x00B3, -IBUS_KEY_KP_4, 0x2074, -IBUS_KEY_KP_5, 0x2075, -IBUS_KEY_KP_6, 0x2076, -IBUS_KEY_KP_7, 0x2077, -IBUS_KEY_KP_8, 0x2078, -IBUS_KEY_KP_9, 0x2079, -IBUS_KEY_KP_Equal, 0x207C, -IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_A, 0x1EAC, -IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_E, 0x1EC6, -IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_O, 0x1ED8, -IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_a, 0x1EAD, -IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_e, 0x1EC7, -IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_o, 0x1ED9, -IBUS_KEY_Multi_key, IBUS_KEY_S, IBUS_KEY_M, 0x2120, -IBUS_KEY_Multi_key, IBUS_KEY_S, IBUS_KEY_m, 0x2120, -IBUS_KEY_Multi_key, IBUS_KEY_T, IBUS_KEY_M, 0x2122, -IBUS_KEY_Multi_key, IBUS_KEY_T, IBUS_KEY_m, 0x2122, -IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_a, 0x00AA, -IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_h, 0x02B0, -IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_i, 0x2071, -IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_j, 0x02B2, -IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_l, 0x02E1, -IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_n, 0x207F, -IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_o, 0x00BA, -IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_r, 0x02B3, -IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_s, 0x02E2, -IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_w, 0x02B7, -IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_x, 0x02E3, -IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_y, 0x02B8, -IBUS_KEY_Multi_key, IBUS_KEY_underscore, 0x0263, 0x02E0, -IBUS_KEY_Multi_key, IBUS_KEY_underscore, 0x0266, 0x02B1, -IBUS_KEY_Multi_key, IBUS_KEY_underscore, 0x0279, 0x02B4, -IBUS_KEY_Multi_key, IBUS_KEY_underscore, 0x027B, 0x02B5, -IBUS_KEY_Multi_key, IBUS_KEY_underscore, 0x0281, 0x02B6, -IBUS_KEY_Multi_key, IBUS_KEY_underscore, 0x0295, 0x02E4, -IBUS_KEY_Multi_key, IBUS_KEY_s, IBUS_KEY_M, 0x2120, -IBUS_KEY_Multi_key, IBUS_KEY_s, IBUS_KEY_m, 0x2120, -IBUS_KEY_Multi_key, IBUS_KEY_t, IBUS_KEY_M, 0x2122, -IBUS_KEY_Multi_key, IBUS_KEY_t, IBUS_KEY_m, 0x2122, -IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_a, 0x00AA, -IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_h, 0x02B0, -IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_i, 0x2071, -IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_j, 0x02B2, -IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_l, 0x02E1, -IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_n, 0x207F, -IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_o, 0x00BA, -IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_r, 0x02B3, -IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_s, 0x02E2, -IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_w, 0x02B7, -IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_x, 0x02E3, -IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_y, 0x02B8, -IBUS_KEY_Multi_key, IBUS_KEY_underbar, 0x0263, 0x02E0, -IBUS_KEY_Multi_key, IBUS_KEY_underbar, 0x0266, 0x02B1, -IBUS_KEY_Multi_key, IBUS_KEY_underbar, 0x0279, 0x02B4, -IBUS_KEY_Multi_key, IBUS_KEY_underbar, 0x027B, 0x02B5, -IBUS_KEY_Multi_key, IBUS_KEY_underbar, 0x0281, 0x02B6, -IBUS_KEY_Multi_key, IBUS_KEY_underbar, 0x0295, 0x02E4, -IBUS_KEY_space, 0x007E, -IBUS_KEY_less, 0x2272, -IBUS_KEY_equal, 0x2243, -IBUS_KEY_greater, 0x2273, -IBUS_KEY_nobreakspace, 0x0303, -IBUS_KEY_Oacute, 0x1E4C, -IBUS_KEY_Odiaeresis, 0x1E4E, -IBUS_KEY_Uacute, 0x1E78, -IBUS_KEY_oacute, 0x1E4D, -IBUS_KEY_odiaeresis, 0x1E4F, -IBUS_KEY_uacute, 0x1E79, -IBUS_KEY_Abreve, 0x1EB4, -IBUS_KEY_abreve, 0x1EB5, -IBUS_KEY_Omacron, 0x022C, -IBUS_KEY_omacron, 0x022D, -IBUS_KEY_Greek_iotadieresis, 0x1FD7, -IBUS_KEY_Greek_upsilondieresis, 0x1FE7, -IBUS_KEY_Greek_alpha, 0x1FB6, -IBUS_KEY_Greek_eta, 0x1FC6, -IBUS_KEY_Greek_iota, 0x1FD6, -IBUS_KEY_Greek_upsilon, 0x1FE6, -IBUS_KEY_Greek_omega, 0x1FF6, -0x1F00, 0x1F06, -0x1F01, 0x1F07, -0x1F08, 0x1F0E, -0x1F09, 0x1F0F, -0x1F20, 0x1F26, -0x1F21, 0x1F27, -0x1F28, 0x1F2E, -0x1F29, 0x1F2F, -0x1F30, 0x1F36, -0x1F31, 0x1F37, -0x1F38, 0x1F3E, -0x1F39, 0x1F3F, -0x1F50, 0x1F56, -0x1F51, 0x1F57, -0x1F59, 0x1F5F, -0x1F60, 0x1F66, -0x1F61, 0x1F67, -0x1F68, 0x1F6E, -0x1F69, 0x1F6F, -IBUS_KEY_dead_tilde, 0x007E, -IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_iota, 0x1FD7, -IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_upsilon, 0x1FE7, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F0E, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F2E, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_IOTA, 0x1F3E, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1F6E, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F06, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F26, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_iota, 0x1F36, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_upsilon, 0x1F56, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1F66, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F0F, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F2F, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_IOTA, 0x1F3F, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_UPSILON, 0x1F5F, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1F6F, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F07, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F27, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_iota, 0x1F37, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_upsilon, 0x1F57, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1F67, -IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_Greek_iota, 0x1FD7, -IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_Greek_upsilon, 0x1FE7, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F0F, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F2F, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_IOTA, 0x1F3F, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_UPSILON, 0x1F5F, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1F6F, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F07, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F27, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_iota, 0x1F37, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_upsilon, 0x1F57, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1F67, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F0E, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F2E, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_IOTA, 0x1F3E, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1F6E, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F06, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F26, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_iota, 0x1F36, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_upsilon, 0x1F56, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1F66, -IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_O, 0x1EE0, -IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_U, 0x1EEE, -IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_o, 0x1EE1, -IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_u, 0x1EEF, -IBUS_KEY_Multi_key, IBUS_KEY_U, IBUS_KEY_A, 0x1EB4, -IBUS_KEY_Multi_key, IBUS_KEY_U, IBUS_KEY_a, 0x1EB5, -IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_A, 0x1EAA, -IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_E, 0x1EC4, -IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_O, 0x1ED6, -IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_a, 0x1EAB, -IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_e, 0x1EC5, -IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_o, 0x1ED7, -IBUS_KEY_Multi_key, IBUS_KEY_b, IBUS_KEY_A, 0x1EB4, -IBUS_KEY_Multi_key, IBUS_KEY_b, IBUS_KEY_a, 0x1EB5, -IBUS_KEY_space, 0x00AF, -IBUS_KEY_V, 0x01D5, -IBUS_KEY_v, 0x01D6, -IBUS_KEY_nobreakspace, 0x0304, -IBUS_KEY_Egrave, 0x1E14, -IBUS_KEY_Eacute, 0x1E16, -IBUS_KEY_Ograve, 0x1E50, -IBUS_KEY_Oacute, 0x1E52, -IBUS_KEY_egrave, 0x1E15, -IBUS_KEY_eacute, 0x1E17, -IBUS_KEY_ograve, 0x1E51, -IBUS_KEY_oacute, 0x1E53, -IBUS_KEY_Cyrillic_i, 0x04E3, -IBUS_KEY_Cyrillic_u, 0x04EF, -IBUS_KEY_Cyrillic_I, 0x04E2, -IBUS_KEY_Cyrillic_U, 0x04EE, -IBUS_KEY_Greek_ALPHA, 0x1FB9, -IBUS_KEY_Greek_IOTA, 0x1FD9, -IBUS_KEY_Greek_UPSILON, 0x1FE9, -IBUS_KEY_Greek_alpha, 0x1FB1, -IBUS_KEY_Greek_iota, 0x1FD1, -IBUS_KEY_Greek_upsilon, 0x1FE1, -IBUS_KEY_dead_macron, 0x00AF, -IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_L, 0x1E38, -IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_R, 0x1E5C, -IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_l, 0x1E39, -IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_r, 0x1E5D, -IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_A, 0x01DE, -IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_O, 0x022A, -IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_U, 0x01D5, -IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_a, 0x01DF, -IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_o, 0x022B, -IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_u, 0x01D6, -IBUS_KEY_Multi_key, IBUS_KEY_period, IBUS_KEY_A, 0x01E0, -IBUS_KEY_Multi_key, IBUS_KEY_period, IBUS_KEY_O, 0x0230, -IBUS_KEY_Multi_key, IBUS_KEY_period, IBUS_KEY_a, 0x01E1, -IBUS_KEY_Multi_key, IBUS_KEY_period, IBUS_KEY_o, 0x0231, -IBUS_KEY_Multi_key, IBUS_KEY_semicolon, IBUS_KEY_O, 0x01EC, -IBUS_KEY_Multi_key, IBUS_KEY_semicolon, IBUS_KEY_o, 0x01ED, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_O, 0x022C, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_o, 0x022D, -IBUS_KEY_space, 0x02D8, -IBUS_KEY_nobreakspace, 0x0306, -IBUS_KEY_Agrave, 0x1EB0, -IBUS_KEY_Aacute, 0x1EAE, -IBUS_KEY_Atilde, 0x1EB4, -IBUS_KEY_agrave, 0x1EB1, -IBUS_KEY_aacute, 0x1EAF, -IBUS_KEY_atilde, 0x1EB5, -IBUS_KEY_Cyrillic_a, 0x04D1, -IBUS_KEY_Cyrillic_ie, 0x04D7, -IBUS_KEY_Cyrillic_i, 0x0439, -IBUS_KEY_Cyrillic_u, 0x045E, -IBUS_KEY_Cyrillic_zhe, 0x04C2, -IBUS_KEY_Cyrillic_A, 0x04D0, -IBUS_KEY_Cyrillic_IE, 0x04D6, -IBUS_KEY_Cyrillic_I, 0x0419, -IBUS_KEY_Cyrillic_U, 0x040E, -IBUS_KEY_Cyrillic_ZHE, 0x04C1, -IBUS_KEY_Greek_ALPHA, 0x1FB8, -IBUS_KEY_Greek_IOTA, 0x1FD8, -IBUS_KEY_Greek_UPSILON, 0x1FE8, -IBUS_KEY_Greek_alpha, 0x1FB0, -IBUS_KEY_Greek_iota, 0x1FD0, -IBUS_KEY_Greek_upsilon, 0x1FE0, -IBUS_KEY_dead_breve, 0x02D8, -IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_A, 0x1EB6, -IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_a, 0x1EB7, -IBUS_KEY_Multi_key, IBUS_KEY_comma, IBUS_KEY_E, 0x1E1C, -IBUS_KEY_Multi_key, IBUS_KEY_comma, IBUS_KEY_e, 0x1E1D, -IBUS_KEY_Multi_key, IBUS_KEY_cedilla, IBUS_KEY_E, 0x1E1C, -IBUS_KEY_Multi_key, IBUS_KEY_cedilla, IBUS_KEY_e, 0x1E1D, -IBUS_KEY_space, 0x02D9, -IBUS_KEY_L, 0x013F, -IBUS_KEY_i, 0x0131, -IBUS_KEY_j, 0x0237, -IBUS_KEY_l, 0x0140, -IBUS_KEY_nobreakspace, 0x0307, -IBUS_KEY_Sacute, 0x1E64, -IBUS_KEY_Scaron, 0x1E66, -IBUS_KEY_sacute, 0x1E65, -IBUS_KEY_scaron, 0x1E67, -IBUS_KEY_Amacron, 0x01E0, -IBUS_KEY_Omacron, 0x0230, -IBUS_KEY_amacron, 0x01E1, -IBUS_KEY_omacron, 0x0231, -IBUS_KEY_dead_abovedot, 0x02D9, -IBUS_KEY_dead_stroke, IBUS_KEY_j, 0x025F, -IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_S, 0x1E68, -IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_s, 0x1E69, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_S, 0x1E64, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_s, 0x1E65, -IBUS_KEY_Multi_key, IBUS_KEY_c, IBUS_KEY_S, 0x1E66, -IBUS_KEY_Multi_key, IBUS_KEY_c, IBUS_KEY_s, 0x1E67, -IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_S, 0x1E64, -IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_s, 0x1E65, -IBUS_KEY_space, 0x0022, -IBUS_KEY_apostrophe, 0x0344, -IBUS_KEY_nobreakspace, 0x0308, -IBUS_KEY_acute, 0x0344, -IBUS_KEY_Iacute, 0x1E2E, -IBUS_KEY_Ugrave, 0x01DB, -IBUS_KEY_Uacute, 0x01D7, -IBUS_KEY_iacute, 0x1E2F, -IBUS_KEY_ugrave, 0x01DC, -IBUS_KEY_uacute, 0x01D8, -0x01D3, 0x01D9, -0x01D4, 0x01DA, -IBUS_KEY_Amacron, 0x01DE, -IBUS_KEY_Umacron, 0x1E7A, -IBUS_KEY_amacron, 0x01DF, -IBUS_KEY_omacron, 0x022B, -IBUS_KEY_umacron, 0x1E7B, -IBUS_KEY_Ukrainian_i, 0x0457, -IBUS_KEY_Ukrainian_I, 0x0407, -IBUS_KEY_Cyrillic_a, 0x04D3, -IBUS_KEY_Cyrillic_ie, 0x0451, -IBUS_KEY_Cyrillic_i, 0x04E5, -IBUS_KEY_Cyrillic_o, 0x04E7, -IBUS_KEY_Cyrillic_u, 0x04F1, -IBUS_KEY_Cyrillic_zhe, 0x04DD, -IBUS_KEY_Cyrillic_yeru, 0x04F9, -IBUS_KEY_Cyrillic_ze, 0x04DF, -IBUS_KEY_Cyrillic_e, 0x04ED, -IBUS_KEY_Cyrillic_che, 0x04F5, -IBUS_KEY_Cyrillic_A, 0x04D2, -IBUS_KEY_Cyrillic_IE, 0x0401, -IBUS_KEY_Cyrillic_I, 0x04E4, -IBUS_KEY_Cyrillic_O, 0x04E6, -IBUS_KEY_Cyrillic_U, 0x04F0, -IBUS_KEY_Cyrillic_ZHE, 0x04DC, -IBUS_KEY_Cyrillic_YERU, 0x04F8, -IBUS_KEY_Cyrillic_ZE, 0x04DE, -IBUS_KEY_Cyrillic_E, 0x04EC, -IBUS_KEY_Cyrillic_CHE, 0x04F4, -IBUS_KEY_Greek_IOTA, 0x03AA, -IBUS_KEY_Greek_UPSILON, 0x03AB, -IBUS_KEY_Greek_iota, 0x03CA, -IBUS_KEY_Greek_upsilon, 0x03CB, -IBUS_KEY_dead_diaeresis, 0x00A8, -IBUS_KEY_dead_acute, IBUS_KEY_space, 0x0385, -IBUS_KEY_dead_acute, IBUS_KEY_Greek_iota, 0x0390, -IBUS_KEY_dead_acute, IBUS_KEY_Greek_upsilon, 0x03B0, -IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_U, 0x1E7A, -IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_u, 0x1E7B, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_O, 0x1E4E, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_o, 0x1E4F, -IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_U, 0x1E7A, -IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_u, 0x1E7B, -IBUS_KEY_space, 0x00B0, -IBUS_KEY_nobreakspace, 0x030A, -IBUS_KEY_Aacute, 0x01FA, -IBUS_KEY_aacute, 0x01FB, -IBUS_KEY_dead_abovering, 0x00B0, -IBUS_KEY_space, 0x02DD, -IBUS_KEY_nobreakspace, 0x030B, -IBUS_KEY_Cyrillic_u, 0x04F3, -IBUS_KEY_Cyrillic_U, 0x04F2, -IBUS_KEY_dead_doubleacute, 0x02DD, -IBUS_KEY_space, 0x02C7, -IBUS_KEY_parenleft, 0x208D, -IBUS_KEY_parenright, 0x208E, -IBUS_KEY_plus, 0x208A, -IBUS_KEY_minus, 0x208B, -IBUS_KEY_0, 0x2080, -IBUS_KEY_1, 0x2081, -IBUS_KEY_2, 0x2082, -IBUS_KEY_3, 0x2083, -IBUS_KEY_4, 0x2084, -IBUS_KEY_5, 0x2085, -IBUS_KEY_6, 0x2086, -IBUS_KEY_7, 0x2087, -IBUS_KEY_8, 0x2088, -IBUS_KEY_9, 0x2089, -IBUS_KEY_equal, 0x208C, -IBUS_KEY_V, 0x01D9, -IBUS_KEY_v, 0x01DA, -IBUS_KEY_nobreakspace, 0x030C, -0x01F2, 0x01C5, -IBUS_KEY_dead_caron, 0x02C7, -IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_U, 0x01D9, -IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_u, 0x01DA, -IBUS_KEY_space, 0x00B8, -IBUS_KEY_nobreakspace, 0x0327, -IBUS_KEY_cent, 0x20B5, -IBUS_KEY_Cacute, 0x1E08, -IBUS_KEY_cacute, 0x1E09, -IBUS_KEY_dead_cedilla, 0x00B8, -IBUS_KEY_space, 0x02DB, -IBUS_KEY_nobreakspace, 0x0328, -IBUS_KEY_Omacron, 0x01EC, -IBUS_KEY_omacron, 0x01ED, -IBUS_KEY_dead_ogonek, 0x02DB, -IBUS_KEY_space, 0x037A, -IBUS_KEY_Greek_alphaaccent, 0x1FB4, -IBUS_KEY_Greek_etaaccent, 0x1FC4, -IBUS_KEY_Greek_omegaaccent, 0x1FF4, -IBUS_KEY_Greek_ALPHA, 0x1FBC, -IBUS_KEY_Greek_ETA, 0x1FCC, -IBUS_KEY_Greek_OMEGA, 0x1FFC, -IBUS_KEY_Greek_alpha, 0x1FB3, -IBUS_KEY_Greek_eta, 0x1FC3, -IBUS_KEY_Greek_omega, 0x1FF3, -IBUS_KEY_dead_iota, 0x037A, -IBUS_KEY_dead_grave, IBUS_KEY_Greek_alpha, 0x1FB2, -IBUS_KEY_dead_grave, IBUS_KEY_Greek_eta, 0x1FC2, -IBUS_KEY_dead_grave, IBUS_KEY_Greek_omega, 0x1FF2, -IBUS_KEY_dead_acute, IBUS_KEY_Greek_alpha, 0x1FB4, -IBUS_KEY_dead_acute, IBUS_KEY_Greek_eta, 0x1FC4, -IBUS_KEY_dead_acute, IBUS_KEY_Greek_omega, 0x1FF4, -IBUS_KEY_dead_tilde, IBUS_KEY_Greek_alpha, 0x1FB7, -IBUS_KEY_dead_tilde, IBUS_KEY_Greek_eta, 0x1FC7, -IBUS_KEY_dead_tilde, IBUS_KEY_Greek_omega, 0x1FF7, -IBUS_KEY_dead_tilde, 0x1F00, 0x1F86, -IBUS_KEY_dead_tilde, 0x1F01, 0x1F87, -IBUS_KEY_dead_tilde, 0x1F08, 0x1F8E, -IBUS_KEY_dead_tilde, 0x1F09, 0x1F8F, -IBUS_KEY_dead_tilde, 0x1F20, 0x1F96, -IBUS_KEY_dead_tilde, 0x1F21, 0x1F97, -IBUS_KEY_dead_tilde, 0x1F28, 0x1F9E, -IBUS_KEY_dead_tilde, 0x1F29, 0x1F9F, -IBUS_KEY_dead_tilde, 0x1F60, 0x1FA6, -IBUS_KEY_dead_tilde, 0x1F61, 0x1FA7, -IBUS_KEY_dead_tilde, 0x1F68, 0x1FAE, -IBUS_KEY_dead_tilde, 0x1F69, 0x1FAF, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F88, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F98, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FA8, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F80, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F90, -IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA0, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F89, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F99, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FA9, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F81, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F91, -IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA1, -IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8A, -IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9A, -IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAA, -IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F82, -IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F92, -IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA2, -IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8B, -IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9B, -IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAB, -IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F83, -IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F93, -IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA3, -IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8C, -IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9C, -IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAC, -IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F84, -IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F94, -IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA4, -IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8D, -IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9D, -IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAD, -IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F85, -IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F95, -IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA5, -IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8E, -IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9E, -IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAE, -IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F86, -IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F96, -IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA6, -IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8F, -IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9F, -IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAF, -IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F87, -IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F97, -IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA7, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_Greek_alpha, 0x1FB4, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_Greek_eta, 0x1FC4, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_Greek_omega, 0x1FF4, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F00, 0x1F84, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F01, 0x1F85, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F08, 0x1F8C, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F09, 0x1F8D, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F20, 0x1F94, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F21, 0x1F95, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F28, 0x1F9C, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F29, 0x1F9D, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F60, 0x1FA4, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F61, 0x1FA5, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F68, 0x1FAC, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F69, 0x1FAD, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F89, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F99, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FA9, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F81, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F91, -IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA1, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F88, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F98, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FA8, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F80, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F90, -IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA0, -IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_Greek_alpha, 0x1FB2, -IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_Greek_eta, 0x1FC2, -IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_Greek_omega, 0x1FF2, -IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F00, 0x1F82, -IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F01, 0x1F83, -IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F08, 0x1F8A, -IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F09, 0x1F8B, -IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F20, 0x1F92, -IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F21, 0x1F93, -IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F28, 0x1F9A, -IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F29, 0x1F9B, -IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F60, 0x1FA2, -IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F61, 0x1FA3, -IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F68, 0x1FAA, -IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F69, 0x1FAB, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_Greek_alpha, 0x1FB7, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_Greek_eta, 0x1FC7, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_Greek_omega, 0x1FF7, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F00, 0x1F86, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F01, 0x1F87, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F08, 0x1F8E, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F09, 0x1F8F, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F20, 0x1F96, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F21, 0x1F97, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F28, 0x1F9E, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F29, 0x1F9F, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F60, 0x1FA6, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F61, 0x1FA7, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F68, 0x1FAE, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F69, 0x1FAF, -IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_Greek_alpha, 0x1FB4, -IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_Greek_eta, 0x1FC4, -IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_Greek_omega, 0x1FF4, -IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F00, 0x1F84, -IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F01, 0x1F85, -IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F08, 0x1F8C, -IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F09, 0x1F8D, -IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F20, 0x1F94, -IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F21, 0x1F95, -IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F28, 0x1F9C, -IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F29, 0x1F9D, -IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F60, 0x1FA4, -IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F61, 0x1FA5, -IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F68, 0x1FAC, -IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F69, 0x1FAD, -IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8B, -IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9B, -IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAB, -IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F83, -IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F93, -IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA3, -IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8A, -IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9A, -IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAA, -IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F82, -IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F92, -IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA2, -IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8D, -IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9D, -IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAD, -IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F85, -IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F95, -IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA5, -IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8C, -IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9C, -IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAC, -IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F84, -IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F94, -IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA4, -IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8F, -IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9F, -IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAF, -IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F87, -IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F97, -IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA7, -IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8E, -IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9E, -IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAE, -IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F86, -IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F96, -IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA6, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8D, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9D, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAD, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F85, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F95, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA5, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8C, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9C, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAC, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F84, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F94, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA4, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8C, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9C, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAC, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F84, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F94, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA4, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8D, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9D, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAD, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F85, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F95, -IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA5, -IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8B, -IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9B, -IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAB, -IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F83, -IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F93, -IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA3, -IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8A, -IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9A, -IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAA, -IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F82, -IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F92, -IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA2, -IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8A, -IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9A, -IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAA, -IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F82, -IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F92, -IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA2, -IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8B, -IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9B, -IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAB, -IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F83, -IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F93, -IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA3, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8F, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9F, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAF, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F87, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F97, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA7, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8E, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9E, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAE, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F86, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F96, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA6, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8E, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9E, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAE, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F86, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F96, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA6, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8F, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9F, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAF, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F87, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F97, -IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA7, -IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8D, -IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9D, -IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAD, -IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F85, -IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F95, -IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA5, -IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8C, -IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9C, -IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAC, -IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F84, -IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F94, -IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA4, -IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8C, -IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9C, -IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAC, -IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F84, -IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F94, -IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA4, -IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8D, -IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9D, -IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAD, -IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F85, -IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F95, -IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA5, -IBUS_KEY_kana_WO, 0x30FA, -IBUS_KEY_kana_U, 0x30F4, -IBUS_KEY_kana_KA, 0x30AC, -IBUS_KEY_kana_KI, 0x30AE, -IBUS_KEY_kana_KU, 0x30B0, -IBUS_KEY_kana_KE, 0x30B2, -IBUS_KEY_kana_KO, 0x30B4, -IBUS_KEY_kana_SA, 0x30B6, -IBUS_KEY_kana_SHI, 0x30B8, -IBUS_KEY_kana_SU, 0x30BA, -IBUS_KEY_kana_SE, 0x30BC, -IBUS_KEY_kana_SO, 0x30BE, -IBUS_KEY_kana_TA, 0x30C0, -IBUS_KEY_kana_CHI, 0x30C2, -IBUS_KEY_kana_TSU, 0x30C5, -IBUS_KEY_kana_TE, 0x30C7, -IBUS_KEY_kana_TO, 0x30C9, -IBUS_KEY_kana_HA, 0x30D0, -IBUS_KEY_kana_HI, 0x30D3, -IBUS_KEY_kana_FU, 0x30D6, -IBUS_KEY_kana_HE, 0x30D9, -IBUS_KEY_kana_HO, 0x30DC, -IBUS_KEY_kana_WA, 0x30F7, -IBUS_KEY_kana_HA, 0x30D1, -IBUS_KEY_kana_HI, 0x30D4, -IBUS_KEY_kana_FU, 0x30D7, -IBUS_KEY_kana_HE, 0x30DA, -IBUS_KEY_kana_HO, 0x30DD, -IBUS_KEY_space, 0x0323, -IBUS_KEY_plus, 0x2A25, -IBUS_KEY_minus, 0x2A2A, -IBUS_KEY_equal, 0x2A66, -IBUS_KEY_nobreakspace, 0x0323, -IBUS_KEY_Abreve, 0x1EB6, -IBUS_KEY_abreve, 0x1EB7, -IBUS_KEY_dead_belowdot, 0x0323, -IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_O, 0x1EE2, -IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_U, 0x1EF0, -IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_o, 0x1EE3, -IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_u, 0x1EF1, -IBUS_KEY_space, 0x0309, -IBUS_KEY_B, 0x0181, -IBUS_KEY_C, 0x0187, -IBUS_KEY_D, 0x018A, -IBUS_KEY_F, 0x0191, -IBUS_KEY_G, 0x0193, -IBUS_KEY_K, 0x0198, -IBUS_KEY_M, 0x2C6E, -IBUS_KEY_N, 0x019D, -IBUS_KEY_P, 0x01A4, -IBUS_KEY_T, 0x01AC, -IBUS_KEY_V, 0x01B2, -IBUS_KEY_W, 0x2C72, -IBUS_KEY_Z, 0x0224, -IBUS_KEY_b, 0x0253, -IBUS_KEY_c, 0x0188, -IBUS_KEY_d, 0x0257, -IBUS_KEY_f, 0x0192, -IBUS_KEY_g, 0x0260, -IBUS_KEY_h, 0x0266, -IBUS_KEY_k, 0x0199, -IBUS_KEY_m, 0x0271, -IBUS_KEY_n, 0x0272, -IBUS_KEY_p, 0x01A5, -IBUS_KEY_q, 0x02A0, -IBUS_KEY_s, 0x0282, -IBUS_KEY_t, 0x01AD, -IBUS_KEY_v, 0x028B, -IBUS_KEY_w, 0x2C73, -IBUS_KEY_z, 0x0225, -IBUS_KEY_nobreakspace, 0x0309, -IBUS_KEY_Abreve, 0x1EB2, -IBUS_KEY_abreve, 0x1EB3, -0x0256, 0x1D91, -0x025C, 0x025D, -0x025F, 0x0284, -0x0279, 0x027B, -IBUS_KEY_dead_hook, 0x0309, -IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_O, 0x1EDE, -IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_U, 0x1EEC, -IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_o, 0x1EDF, -IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_u, 0x1EED, -IBUS_KEY_Multi_key, IBUS_KEY_U, IBUS_KEY_A, 0x1EB2, -IBUS_KEY_Multi_key, IBUS_KEY_U, IBUS_KEY_a, 0x1EB3, -IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_A, 0x1EA8, -IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_E, 0x1EC2, -IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_O, 0x1ED4, -IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_a, 0x1EA9, -IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_e, 0x1EC3, -IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_o, 0x1ED5, -IBUS_KEY_Multi_key, IBUS_KEY_b, IBUS_KEY_A, 0x1EB2, -IBUS_KEY_Multi_key, IBUS_KEY_b, IBUS_KEY_a, 0x1EB3, -IBUS_KEY_space, 0x031B, -IBUS_KEY_nobreakspace, 0x031B, -IBUS_KEY_Utilde, 0x1EEE, -IBUS_KEY_utilde, 0x1EEF, -IBUS_KEY_dead_horn, 0x031B, -IBUS_KEY_Greek_ALPHA, 0x1F08, -IBUS_KEY_Greek_EPSILON, 0x1F18, -IBUS_KEY_Greek_ETA, 0x1F28, -IBUS_KEY_Greek_IOTA, 0x1F38, -IBUS_KEY_Greek_OMICRON, 0x1F48, -IBUS_KEY_Greek_OMEGA, 0x1F68, -IBUS_KEY_Greek_alpha, 0x1F00, -IBUS_KEY_Greek_epsilon, 0x1F10, -IBUS_KEY_Greek_eta, 0x1F20, -IBUS_KEY_Greek_iota, 0x1F30, -IBUS_KEY_Greek_omicron, 0x1F40, -IBUS_KEY_Greek_rho, 0x1FE4, -IBUS_KEY_Greek_upsilon, 0x1F50, -IBUS_KEY_Greek_omega, 0x1F60, -IBUS_KEY_Greek_ALPHA, 0x1F09, -IBUS_KEY_Greek_EPSILON, 0x1F19, -IBUS_KEY_Greek_ETA, 0x1F29, -IBUS_KEY_Greek_IOTA, 0x1F39, -IBUS_KEY_Greek_OMICRON, 0x1F49, -IBUS_KEY_Greek_RHO, 0x1FEC, -IBUS_KEY_Greek_UPSILON, 0x1F59, -IBUS_KEY_Greek_OMEGA, 0x1F69, -IBUS_KEY_Greek_alpha, 0x1F01, -IBUS_KEY_Greek_epsilon, 0x1F11, -IBUS_KEY_Greek_eta, 0x1F21, -IBUS_KEY_Greek_iota, 0x1F31, -IBUS_KEY_Greek_omicron, 0x1F41, -IBUS_KEY_Greek_rho, 0x1FE5, -IBUS_KEY_Greek_upsilon, 0x1F51, -IBUS_KEY_Greek_omega, 0x1F61, -IBUS_KEY_space, IBUS_KEY_space, 0x00A0, -IBUS_KEY_space, IBUS_KEY_apostrophe, 0x0027, -IBUS_KEY_space, IBUS_KEY_parenleft, 0x02D8, -IBUS_KEY_space, IBUS_KEY_comma, 0x00B8, -IBUS_KEY_space, IBUS_KEY_minus, 0x007E, -IBUS_KEY_space, IBUS_KEY_period, 0x2008, -IBUS_KEY_space, IBUS_KEY_less, 0x02C7, -IBUS_KEY_space, IBUS_KEY_greater, 0x005E, -IBUS_KEY_space, IBUS_KEY_asciicircum, 0x005E, -IBUS_KEY_space, IBUS_KEY_grave, 0x0060, -IBUS_KEY_space, IBUS_KEY_asciitilde, 0x007E, -IBUS_KEY_exclam, IBUS_KEY_exclam, 0x00A1, -IBUS_KEY_exclam, IBUS_KEY_question, 0x203D, -IBUS_KEY_exclam, IBUS_KEY_A, 0x1EA0, -IBUS_KEY_exclam, IBUS_KEY_B, 0x1E04, -IBUS_KEY_exclam, IBUS_KEY_D, 0x1E0C, -IBUS_KEY_exclam, IBUS_KEY_E, 0x1EB8, -IBUS_KEY_exclam, IBUS_KEY_H, 0x1E24, -IBUS_KEY_exclam, IBUS_KEY_I, 0x1ECA, -IBUS_KEY_exclam, IBUS_KEY_K, 0x1E32, -IBUS_KEY_exclam, IBUS_KEY_L, 0x1E36, -IBUS_KEY_exclam, IBUS_KEY_M, 0x1E42, -IBUS_KEY_exclam, IBUS_KEY_N, 0x1E46, -IBUS_KEY_exclam, IBUS_KEY_O, 0x1ECC, -IBUS_KEY_exclam, IBUS_KEY_P, 0x00B6, -IBUS_KEY_exclam, IBUS_KEY_R, 0x1E5A, -IBUS_KEY_exclam, IBUS_KEY_S, 0x1E62, -IBUS_KEY_exclam, IBUS_KEY_T, 0x1E6C, -IBUS_KEY_exclam, IBUS_KEY_U, 0x1EE4, -IBUS_KEY_exclam, IBUS_KEY_V, 0x1E7E, -IBUS_KEY_exclam, IBUS_KEY_W, 0x1E88, -IBUS_KEY_exclam, IBUS_KEY_Y, 0x1EF4, -IBUS_KEY_exclam, IBUS_KEY_Z, 0x1E92, -IBUS_KEY_exclam, IBUS_KEY_asciicircum, 0x00A6, -IBUS_KEY_exclam, IBUS_KEY_a, 0x1EA1, -IBUS_KEY_exclam, IBUS_KEY_b, 0x1E05, -IBUS_KEY_exclam, IBUS_KEY_d, 0x1E0D, -IBUS_KEY_exclam, IBUS_KEY_e, 0x1EB9, -IBUS_KEY_exclam, IBUS_KEY_h, 0x1E25, -IBUS_KEY_exclam, IBUS_KEY_i, 0x1ECB, -IBUS_KEY_exclam, IBUS_KEY_k, 0x1E33, -IBUS_KEY_exclam, IBUS_KEY_l, 0x1E37, -IBUS_KEY_exclam, IBUS_KEY_m, 0x1E43, -IBUS_KEY_exclam, IBUS_KEY_n, 0x1E47, -IBUS_KEY_exclam, IBUS_KEY_o, 0x1ECD, -IBUS_KEY_exclam, IBUS_KEY_p, 0x00B6, -IBUS_KEY_exclam, IBUS_KEY_r, 0x1E5B, -IBUS_KEY_exclam, IBUS_KEY_s, 0x1E63, -IBUS_KEY_exclam, IBUS_KEY_t, 0x1E6D, -IBUS_KEY_exclam, IBUS_KEY_u, 0x1EE5, -IBUS_KEY_exclam, IBUS_KEY_v, 0x1E7F, -IBUS_KEY_exclam, IBUS_KEY_w, 0x1E89, -IBUS_KEY_exclam, IBUS_KEY_y, 0x1EF5, -IBUS_KEY_exclam, IBUS_KEY_z, 0x1E93, -IBUS_KEY_quotedbl, IBUS_KEY_quotedbl, 0x00A8, -IBUS_KEY_quotedbl, IBUS_KEY_apostrophe, 0x0344, -IBUS_KEY_quotedbl, IBUS_KEY_comma, 0x201E, -IBUS_KEY_quotedbl, IBUS_KEY_slash, 0x301E, -IBUS_KEY_quotedbl, IBUS_KEY_less, 0x201C, -IBUS_KEY_quotedbl, IBUS_KEY_greater, 0x201D, -IBUS_KEY_quotedbl, IBUS_KEY_A, 0x00C4, -IBUS_KEY_quotedbl, IBUS_KEY_E, 0x00CB, -IBUS_KEY_quotedbl, IBUS_KEY_H, 0x1E26, -IBUS_KEY_quotedbl, IBUS_KEY_I, 0x00CF, -IBUS_KEY_quotedbl, IBUS_KEY_O, 0x00D6, -IBUS_KEY_quotedbl, IBUS_KEY_U, 0x00DC, -IBUS_KEY_quotedbl, IBUS_KEY_W, 0x1E84, -IBUS_KEY_quotedbl, IBUS_KEY_X, 0x1E8C, -IBUS_KEY_quotedbl, IBUS_KEY_Y, 0x0178, -IBUS_KEY_quotedbl, IBUS_KEY_backslash, 0x301D, -IBUS_KEY_quotedbl, IBUS_KEY_a, 0x00E4, -IBUS_KEY_quotedbl, IBUS_KEY_e, 0x00EB, -IBUS_KEY_quotedbl, IBUS_KEY_h, 0x1E27, -IBUS_KEY_quotedbl, IBUS_KEY_i, 0x00EF, -IBUS_KEY_quotedbl, IBUS_KEY_o, 0x00F6, -IBUS_KEY_quotedbl, IBUS_KEY_t, 0x1E97, -IBUS_KEY_quotedbl, IBUS_KEY_u, 0x00FC, -IBUS_KEY_quotedbl, IBUS_KEY_w, 0x1E85, -IBUS_KEY_quotedbl, IBUS_KEY_x, 0x1E8D, -IBUS_KEY_quotedbl, IBUS_KEY_y, 0x00FF, -IBUS_KEY_quotedbl, IBUS_KEY_acute, 0x0344, -IBUS_KEY_quotedbl, IBUS_KEY_Otilde, 0x1E4E, -IBUS_KEY_quotedbl, IBUS_KEY_otilde, 0x1E4F, -IBUS_KEY_quotedbl, 0x03D2, 0x03D4, -IBUS_KEY_quotedbl, IBUS_KEY_Umacron, 0x1E7A, -IBUS_KEY_quotedbl, IBUS_KEY_umacron, 0x1E7B, -IBUS_KEY_quotedbl, 0x04D8, 0x04DA, -IBUS_KEY_quotedbl, 0x04D9, 0x04DB, -IBUS_KEY_quotedbl, 0x04E8, 0x04EA, -IBUS_KEY_quotedbl, 0x04E9, 0x04EB, -IBUS_KEY_quotedbl, IBUS_KEY_Ukrainian_i, 0x0457, -IBUS_KEY_quotedbl, IBUS_KEY_Ukrainian_I, 0x0407, -IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_a, 0x04D3, -IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_ie, 0x0451, -IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_i, 0x04E5, -IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_o, 0x04E7, -IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_u, 0x04F1, -IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_zhe, 0x04DD, -IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_yeru, 0x04F9, -IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_ze, 0x04DF, -IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_e, 0x04ED, -IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_che, 0x04F5, -IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_A, 0x04D2, -IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_IE, 0x0401, -IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_I, 0x04E4, -IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_O, 0x04E6, -IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_U, 0x04F0, -IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_ZHE, 0x04DC, -IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_YERU, 0x04F8, -IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_ZE, 0x04DE, -IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_E, 0x04EC, -IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_CHE, 0x04F4, -IBUS_KEY_quotedbl, IBUS_KEY_Greek_IOTA, 0x03AA, -IBUS_KEY_quotedbl, IBUS_KEY_Greek_UPSILON, 0x03AB, -IBUS_KEY_quotedbl, IBUS_KEY_Greek_iota, 0x03CA, -IBUS_KEY_quotedbl, IBUS_KEY_Greek_upsilon, 0x03CB, -IBUS_KEY_quotedbl, IBUS_KEY_dead_acute, 0x0344, -IBUS_KEY_numbersign, IBUS_KEY_numbersign, 0x266F, -IBUS_KEY_numbersign, IBUS_KEY_b, 0x266D, -IBUS_KEY_numbersign, IBUS_KEY_f, 0x266E, -IBUS_KEY_percent, IBUS_KEY_o, 0x2030, -IBUS_KEY_apostrophe, IBUS_KEY_space, 0x0027, -IBUS_KEY_apostrophe, IBUS_KEY_apostrophe, 0x00B4, -IBUS_KEY_apostrophe, IBUS_KEY_comma, 0x201A, -IBUS_KEY_apostrophe, IBUS_KEY_less, 0x2018, -IBUS_KEY_apostrophe, IBUS_KEY_greater, 0x2019, -IBUS_KEY_apostrophe, IBUS_KEY_A, 0x00C1, -IBUS_KEY_apostrophe, IBUS_KEY_C, 0x0106, -IBUS_KEY_apostrophe, IBUS_KEY_E, 0x00C9, -IBUS_KEY_apostrophe, IBUS_KEY_G, 0x01F4, -IBUS_KEY_apostrophe, IBUS_KEY_I, 0x00CD, -IBUS_KEY_apostrophe, IBUS_KEY_K, 0x1E30, -IBUS_KEY_apostrophe, IBUS_KEY_L, 0x0139, -IBUS_KEY_apostrophe, IBUS_KEY_M, 0x1E3E, -IBUS_KEY_apostrophe, IBUS_KEY_N, 0x0143, -IBUS_KEY_apostrophe, IBUS_KEY_O, 0x00D3, -IBUS_KEY_apostrophe, IBUS_KEY_P, 0x1E54, -IBUS_KEY_apostrophe, IBUS_KEY_R, 0x0154, -IBUS_KEY_apostrophe, IBUS_KEY_S, 0x015A, -IBUS_KEY_apostrophe, IBUS_KEY_U, 0x00DA, -IBUS_KEY_apostrophe, IBUS_KEY_W, 0x1E82, -IBUS_KEY_apostrophe, IBUS_KEY_Y, 0x00DD, -IBUS_KEY_apostrophe, IBUS_KEY_Z, 0x0179, -IBUS_KEY_apostrophe, IBUS_KEY_a, 0x00E1, -IBUS_KEY_apostrophe, IBUS_KEY_c, 0x0107, -IBUS_KEY_apostrophe, IBUS_KEY_e, 0x00E9, -IBUS_KEY_apostrophe, IBUS_KEY_g, 0x01F5, -IBUS_KEY_apostrophe, IBUS_KEY_i, 0x00ED, -IBUS_KEY_apostrophe, IBUS_KEY_k, 0x1E31, -IBUS_KEY_apostrophe, IBUS_KEY_l, 0x013A, -IBUS_KEY_apostrophe, IBUS_KEY_m, 0x1E3F, -IBUS_KEY_apostrophe, IBUS_KEY_n, 0x0144, -IBUS_KEY_apostrophe, IBUS_KEY_o, 0x00F3, -IBUS_KEY_apostrophe, IBUS_KEY_p, 0x1E55, -IBUS_KEY_apostrophe, IBUS_KEY_r, 0x0155, -IBUS_KEY_apostrophe, IBUS_KEY_s, 0x015B, -IBUS_KEY_apostrophe, IBUS_KEY_u, 0x00FA, -IBUS_KEY_apostrophe, IBUS_KEY_w, 0x1E83, -IBUS_KEY_apostrophe, IBUS_KEY_y, 0x00FD, -IBUS_KEY_apostrophe, IBUS_KEY_z, 0x017A, -IBUS_KEY_apostrophe, IBUS_KEY_Acircumflex, 0x1EA4, -IBUS_KEY_apostrophe, IBUS_KEY_Aring, 0x01FA, -IBUS_KEY_apostrophe, IBUS_KEY_AE, 0x01FC, -IBUS_KEY_apostrophe, IBUS_KEY_Ccedilla, 0x1E08, -IBUS_KEY_apostrophe, IBUS_KEY_Ecircumflex, 0x1EBE, -IBUS_KEY_apostrophe, IBUS_KEY_Idiaeresis, 0x1E2E, -IBUS_KEY_apostrophe, IBUS_KEY_Ocircumflex, 0x1ED0, -IBUS_KEY_apostrophe, IBUS_KEY_Otilde, 0x1E4C, -IBUS_KEY_apostrophe, IBUS_KEY_Ooblique, 0x01FE, -IBUS_KEY_apostrophe, IBUS_KEY_Udiaeresis, 0x01D7, -IBUS_KEY_apostrophe, IBUS_KEY_acircumflex, 0x1EA5, -IBUS_KEY_apostrophe, IBUS_KEY_aring, 0x01FB, -IBUS_KEY_apostrophe, IBUS_KEY_ae, 0x01FD, -IBUS_KEY_apostrophe, IBUS_KEY_ccedilla, 0x1E09, -IBUS_KEY_apostrophe, IBUS_KEY_ecircumflex, 0x1EBF, -IBUS_KEY_apostrophe, IBUS_KEY_idiaeresis, 0x1E2F, -IBUS_KEY_apostrophe, IBUS_KEY_ocircumflex, 0x1ED1, -IBUS_KEY_apostrophe, IBUS_KEY_otilde, 0x1E4D, -IBUS_KEY_apostrophe, IBUS_KEY_oslash, 0x01FF, -IBUS_KEY_apostrophe, IBUS_KEY_udiaeresis, 0x01D8, -IBUS_KEY_apostrophe, IBUS_KEY_Abreve, 0x1EAE, -IBUS_KEY_apostrophe, IBUS_KEY_abreve, 0x1EAF, -IBUS_KEY_apostrophe, IBUS_KEY_Emacron, 0x1E16, -IBUS_KEY_apostrophe, IBUS_KEY_emacron, 0x1E17, -IBUS_KEY_apostrophe, IBUS_KEY_Omacron, 0x1E52, -IBUS_KEY_apostrophe, IBUS_KEY_Utilde, 0x1E78, -IBUS_KEY_apostrophe, IBUS_KEY_omacron, 0x1E53, -IBUS_KEY_apostrophe, IBUS_KEY_utilde, 0x1E79, -IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_ghe, 0x0453, -IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_ka, 0x045C, -IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_GHE, 0x0403, -IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_KA, 0x040C, -IBUS_KEY_apostrophe, IBUS_KEY_Greek_iotadieresis, 0x0390, -IBUS_KEY_apostrophe, IBUS_KEY_Greek_upsilondieresis, 0x03B0, -IBUS_KEY_apostrophe, IBUS_KEY_Greek_ALPHA, 0x0386, -IBUS_KEY_apostrophe, IBUS_KEY_Greek_EPSILON, 0x0388, -IBUS_KEY_apostrophe, IBUS_KEY_Greek_ETA, 0x0389, -IBUS_KEY_apostrophe, IBUS_KEY_Greek_IOTA, 0x038A, -IBUS_KEY_apostrophe, IBUS_KEY_Greek_OMICRON, 0x038C, -IBUS_KEY_apostrophe, IBUS_KEY_Greek_UPSILON, 0x038E, -IBUS_KEY_apostrophe, IBUS_KEY_Greek_OMEGA, 0x038F, -IBUS_KEY_apostrophe, IBUS_KEY_Greek_alpha, 0x03AC, -IBUS_KEY_apostrophe, IBUS_KEY_Greek_epsilon, 0x03AD, -IBUS_KEY_apostrophe, IBUS_KEY_Greek_eta, 0x03AE, -IBUS_KEY_apostrophe, IBUS_KEY_Greek_iota, 0x03AF, -IBUS_KEY_apostrophe, IBUS_KEY_Greek_omicron, 0x03CC, -IBUS_KEY_apostrophe, IBUS_KEY_Greek_upsilon, 0x03CD, -IBUS_KEY_apostrophe, IBUS_KEY_Greek_omega, 0x03CE, -IBUS_KEY_apostrophe, 0x1F00, 0x1F04, -IBUS_KEY_apostrophe, 0x1F01, 0x1F05, -IBUS_KEY_apostrophe, 0x1F08, 0x1F0C, -IBUS_KEY_apostrophe, 0x1F09, 0x1F0D, -IBUS_KEY_apostrophe, 0x1F10, 0x1F14, -IBUS_KEY_apostrophe, 0x1F11, 0x1F15, -IBUS_KEY_apostrophe, 0x1F18, 0x1F1C, -IBUS_KEY_apostrophe, 0x1F19, 0x1F1D, -IBUS_KEY_apostrophe, 0x1F20, 0x1F24, -IBUS_KEY_apostrophe, 0x1F21, 0x1F25, -IBUS_KEY_apostrophe, 0x1F28, 0x1F2C, -IBUS_KEY_apostrophe, 0x1F29, 0x1F2D, -IBUS_KEY_apostrophe, 0x1F30, 0x1F34, -IBUS_KEY_apostrophe, 0x1F31, 0x1F35, -IBUS_KEY_apostrophe, 0x1F38, 0x1F3C, -IBUS_KEY_apostrophe, 0x1F39, 0x1F3D, -IBUS_KEY_apostrophe, 0x1F40, 0x1F44, -IBUS_KEY_apostrophe, 0x1F41, 0x1F45, -IBUS_KEY_apostrophe, 0x1F48, 0x1F4C, -IBUS_KEY_apostrophe, 0x1F49, 0x1F4D, -IBUS_KEY_apostrophe, 0x1F50, 0x1F54, -IBUS_KEY_apostrophe, 0x1F51, 0x1F55, -IBUS_KEY_apostrophe, 0x1F59, 0x1F5D, -IBUS_KEY_apostrophe, 0x1F60, 0x1F64, -IBUS_KEY_apostrophe, 0x1F61, 0x1F65, -IBUS_KEY_apostrophe, 0x1F68, 0x1F6C, -IBUS_KEY_apostrophe, 0x1F69, 0x1F6D, -IBUS_KEY_parenleft, IBUS_KEY_space, 0x02D8, -IBUS_KEY_parenleft, IBUS_KEY_parenleft, 0x005B, -IBUS_KEY_parenleft, IBUS_KEY_minus, 0x007B, -IBUS_KEY_parenleft, IBUS_KEY_A, 0x0102, -IBUS_KEY_parenleft, IBUS_KEY_G, 0x011E, -IBUS_KEY_parenleft, IBUS_KEY_a, 0x0103, -IBUS_KEY_parenleft, IBUS_KEY_c, 0x00A9, -IBUS_KEY_parenleft, IBUS_KEY_g, 0x011F, -IBUS_KEY_parenleft, IBUS_KEY_r, 0x00AE, -IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F09, -IBUS_KEY_parenleft, IBUS_KEY_Greek_EPSILON, 0x1F19, -IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F29, -IBUS_KEY_parenleft, IBUS_KEY_Greek_IOTA, 0x1F39, -IBUS_KEY_parenleft, IBUS_KEY_Greek_OMICRON, 0x1F49, -IBUS_KEY_parenleft, IBUS_KEY_Greek_RHO, 0x1FEC, -IBUS_KEY_parenleft, IBUS_KEY_Greek_UPSILON, 0x1F59, -IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1F69, -IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F01, -IBUS_KEY_parenleft, IBUS_KEY_Greek_epsilon, 0x1F11, -IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F21, -IBUS_KEY_parenleft, IBUS_KEY_Greek_iota, 0x1F31, -IBUS_KEY_parenleft, IBUS_KEY_Greek_omicron, 0x1F41, -IBUS_KEY_parenleft, IBUS_KEY_Greek_rho, 0x1FE5, -IBUS_KEY_parenleft, IBUS_KEY_Greek_upsilon, 0x1F51, -IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1F61, -IBUS_KEY_parenright, IBUS_KEY_parenright, 0x005D, -IBUS_KEY_parenright, IBUS_KEY_minus, 0x007D, -IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F08, -IBUS_KEY_parenright, IBUS_KEY_Greek_EPSILON, 0x1F18, -IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F28, -IBUS_KEY_parenright, IBUS_KEY_Greek_IOTA, 0x1F38, -IBUS_KEY_parenright, IBUS_KEY_Greek_OMICRON, 0x1F48, -IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1F68, -IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F00, -IBUS_KEY_parenright, IBUS_KEY_Greek_epsilon, 0x1F10, -IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F20, -IBUS_KEY_parenright, IBUS_KEY_Greek_iota, 0x1F30, -IBUS_KEY_parenright, IBUS_KEY_Greek_omicron, 0x1F40, -IBUS_KEY_parenright, IBUS_KEY_Greek_rho, 0x1FE4, -IBUS_KEY_parenright, IBUS_KEY_Greek_upsilon, 0x1F50, -IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1F60, -IBUS_KEY_asterisk, IBUS_KEY_0, 0x00B0, -IBUS_KEY_asterisk, IBUS_KEY_A, 0x00C5, -IBUS_KEY_asterisk, IBUS_KEY_U, 0x016E, -IBUS_KEY_asterisk, IBUS_KEY_a, 0x00E5, -IBUS_KEY_asterisk, IBUS_KEY_u, 0x016F, -IBUS_KEY_plus, IBUS_KEY_plus, 0x0023, -IBUS_KEY_plus, IBUS_KEY_minus, 0x00B1, -IBUS_KEY_plus, IBUS_KEY_O, 0x01A0, -IBUS_KEY_plus, IBUS_KEY_U, 0x01AF, -IBUS_KEY_plus, IBUS_KEY_o, 0x01A1, -IBUS_KEY_plus, IBUS_KEY_u, 0x01B0, -IBUS_KEY_comma, IBUS_KEY_space, 0x00B8, -IBUS_KEY_comma, IBUS_KEY_quotedbl, 0x201E, -IBUS_KEY_comma, IBUS_KEY_apostrophe, 0x201A, -IBUS_KEY_comma, IBUS_KEY_comma, 0x00B8, -IBUS_KEY_comma, IBUS_KEY_minus, 0x00AC, -IBUS_KEY_comma, IBUS_KEY_A, 0x0104, -IBUS_KEY_comma, IBUS_KEY_C, 0x00C7, -IBUS_KEY_comma, IBUS_KEY_D, 0x1E10, -IBUS_KEY_comma, IBUS_KEY_E, 0x0118, -IBUS_KEY_comma, IBUS_KEY_G, 0x0122, -IBUS_KEY_comma, IBUS_KEY_H, 0x1E28, -IBUS_KEY_comma, IBUS_KEY_I, 0x012E, -IBUS_KEY_comma, IBUS_KEY_K, 0x0136, -IBUS_KEY_comma, IBUS_KEY_L, 0x013B, -IBUS_KEY_comma, IBUS_KEY_N, 0x0145, -IBUS_KEY_comma, IBUS_KEY_R, 0x0156, -IBUS_KEY_comma, IBUS_KEY_S, 0x015E, -IBUS_KEY_comma, IBUS_KEY_T, 0x0162, -IBUS_KEY_comma, IBUS_KEY_U, 0x0172, -IBUS_KEY_comma, IBUS_KEY_a, 0x0105, -IBUS_KEY_comma, IBUS_KEY_c, 0x00E7, -IBUS_KEY_comma, IBUS_KEY_d, 0x1E11, -IBUS_KEY_comma, IBUS_KEY_e, 0x0119, -IBUS_KEY_comma, IBUS_KEY_g, 0x0123, -IBUS_KEY_comma, IBUS_KEY_h, 0x1E29, -IBUS_KEY_comma, IBUS_KEY_i, 0x012F, -IBUS_KEY_comma, IBUS_KEY_k, 0x0137, -IBUS_KEY_comma, IBUS_KEY_l, 0x013C, -IBUS_KEY_comma, IBUS_KEY_n, 0x0146, -IBUS_KEY_comma, IBUS_KEY_r, 0x0157, -IBUS_KEY_comma, IBUS_KEY_s, 0x015F, -IBUS_KEY_comma, IBUS_KEY_t, 0x0163, -IBUS_KEY_comma, IBUS_KEY_u, 0x0173, -IBUS_KEY_minus, IBUS_KEY_space, 0x007E, -IBUS_KEY_minus, IBUS_KEY_parenleft, 0x007B, -IBUS_KEY_minus, IBUS_KEY_parenright, 0x007D, -IBUS_KEY_minus, IBUS_KEY_plus, 0x00B1, -IBUS_KEY_minus, IBUS_KEY_comma, 0x00AC, -IBUS_KEY_minus, IBUS_KEY_colon, 0x00F7, -IBUS_KEY_minus, IBUS_KEY_greater, 0x2192, -IBUS_KEY_minus, IBUS_KEY_A, 0x00C3, -IBUS_KEY_minus, IBUS_KEY_D, 0x0110, -IBUS_KEY_minus, IBUS_KEY_E, 0x0112, -IBUS_KEY_minus, IBUS_KEY_I, 0x012A, -IBUS_KEY_minus, IBUS_KEY_L, 0x00A3, -IBUS_KEY_minus, IBUS_KEY_N, 0x00D1, -IBUS_KEY_minus, IBUS_KEY_O, 0x00D5, -IBUS_KEY_minus, IBUS_KEY_U, 0x016A, -IBUS_KEY_minus, IBUS_KEY_Y, 0x00A5, -IBUS_KEY_minus, IBUS_KEY_asciicircum, 0x00AF, -IBUS_KEY_minus, IBUS_KEY_a, 0x0101, -IBUS_KEY_minus, IBUS_KEY_d, 0x0111, -IBUS_KEY_minus, IBUS_KEY_e, 0x0113, -IBUS_KEY_minus, IBUS_KEY_i, 0x012B, -IBUS_KEY_minus, IBUS_KEY_l, 0x00A3, -IBUS_KEY_minus, IBUS_KEY_n, 0x00F1, -IBUS_KEY_minus, IBUS_KEY_o, 0x014D, -IBUS_KEY_minus, IBUS_KEY_u, 0x016B, -IBUS_KEY_minus, IBUS_KEY_y, 0x00A5, -IBUS_KEY_period, IBUS_KEY_minus, 0x00B7, -IBUS_KEY_period, IBUS_KEY_period, 0x2026, -IBUS_KEY_period, IBUS_KEY_less, 0x2039, -IBUS_KEY_period, IBUS_KEY_equal, 0x2022, -IBUS_KEY_period, IBUS_KEY_greater, 0x203A, -IBUS_KEY_period, IBUS_KEY_A, 0x0226, -IBUS_KEY_period, IBUS_KEY_B, 0x1E02, -IBUS_KEY_period, IBUS_KEY_C, 0x010A, -IBUS_KEY_period, IBUS_KEY_D, 0x1E0A, -IBUS_KEY_period, IBUS_KEY_E, 0x0116, -IBUS_KEY_period, IBUS_KEY_F, 0x1E1E, -IBUS_KEY_period, IBUS_KEY_G, 0x0120, -IBUS_KEY_period, IBUS_KEY_H, 0x1E22, -IBUS_KEY_period, IBUS_KEY_I, 0x0130, -IBUS_KEY_period, IBUS_KEY_M, 0x1E40, -IBUS_KEY_period, IBUS_KEY_N, 0x1E44, -IBUS_KEY_period, IBUS_KEY_O, 0x022E, -IBUS_KEY_period, IBUS_KEY_P, 0x1E56, -IBUS_KEY_period, IBUS_KEY_R, 0x1E58, -IBUS_KEY_period, IBUS_KEY_S, 0x1E60, -IBUS_KEY_period, IBUS_KEY_T, 0x1E6A, -IBUS_KEY_period, IBUS_KEY_W, 0x1E86, -IBUS_KEY_period, IBUS_KEY_X, 0x1E8A, -IBUS_KEY_period, IBUS_KEY_Y, 0x1E8E, -IBUS_KEY_period, IBUS_KEY_Z, 0x017B, -IBUS_KEY_period, IBUS_KEY_asciicircum, 0x00B7, -IBUS_KEY_period, IBUS_KEY_a, 0x0227, -IBUS_KEY_period, IBUS_KEY_b, 0x1E03, -IBUS_KEY_period, IBUS_KEY_c, 0x010B, -IBUS_KEY_period, IBUS_KEY_d, 0x1E0B, -IBUS_KEY_period, IBUS_KEY_e, 0x0117, -IBUS_KEY_period, IBUS_KEY_f, 0x1E1F, -IBUS_KEY_period, IBUS_KEY_g, 0x0121, -IBUS_KEY_period, IBUS_KEY_h, 0x1E23, -IBUS_KEY_period, IBUS_KEY_i, 0x0131, -IBUS_KEY_period, IBUS_KEY_m, 0x1E41, -IBUS_KEY_period, IBUS_KEY_n, 0x1E45, -IBUS_KEY_period, IBUS_KEY_o, 0x022F, -IBUS_KEY_period, IBUS_KEY_p, 0x1E57, -IBUS_KEY_period, IBUS_KEY_r, 0x1E59, -IBUS_KEY_period, IBUS_KEY_s, 0x1E61, -IBUS_KEY_period, IBUS_KEY_t, 0x1E6B, -IBUS_KEY_period, IBUS_KEY_w, 0x1E87, -IBUS_KEY_period, IBUS_KEY_x, 0x1E8B, -IBUS_KEY_period, IBUS_KEY_y, 0x1E8F, -IBUS_KEY_period, IBUS_KEY_z, 0x017C, -IBUS_KEY_period, 0x017F, 0x1E9B, -IBUS_KEY_period, IBUS_KEY_Sacute, 0x1E64, -IBUS_KEY_period, IBUS_KEY_Scaron, 0x1E66, -IBUS_KEY_period, IBUS_KEY_sacute, 0x1E65, -IBUS_KEY_period, IBUS_KEY_scaron, 0x1E67, -IBUS_KEY_period, 0x1E62, 0x1E68, -IBUS_KEY_period, 0x1E63, 0x1E69, -IBUS_KEY_slash, IBUS_KEY_slash, 0x005C, -IBUS_KEY_slash, IBUS_KEY_less, 0x005C, -IBUS_KEY_slash, IBUS_KEY_equal, 0x2260, -IBUS_KEY_slash, IBUS_KEY_C, 0x20A1, -IBUS_KEY_slash, IBUS_KEY_D, 0x0110, -IBUS_KEY_slash, IBUS_KEY_G, 0x01E4, -IBUS_KEY_slash, IBUS_KEY_H, 0x0126, -IBUS_KEY_slash, IBUS_KEY_I, 0x0197, -IBUS_KEY_slash, IBUS_KEY_L, 0x0141, -IBUS_KEY_slash, IBUS_KEY_O, 0x00D8, -IBUS_KEY_slash, IBUS_KEY_T, 0x0166, -IBUS_KEY_slash, IBUS_KEY_U, 0x00B5, -IBUS_KEY_slash, IBUS_KEY_Z, 0x01B5, -IBUS_KEY_slash, IBUS_KEY_asciicircum, 0x007C, -IBUS_KEY_slash, IBUS_KEY_b, 0x0180, -IBUS_KEY_slash, IBUS_KEY_c, 0x00A2, -IBUS_KEY_slash, IBUS_KEY_d, 0x0111, -IBUS_KEY_slash, IBUS_KEY_g, 0x01E5, -IBUS_KEY_slash, IBUS_KEY_h, 0x0127, -IBUS_KEY_slash, IBUS_KEY_i, 0x0268, -IBUS_KEY_slash, IBUS_KEY_l, 0x0142, -IBUS_KEY_slash, IBUS_KEY_m, 0x20A5, -IBUS_KEY_slash, IBUS_KEY_o, 0x00F8, -IBUS_KEY_slash, IBUS_KEY_t, 0x0167, -IBUS_KEY_slash, IBUS_KEY_u, 0x00B5, -IBUS_KEY_slash, IBUS_KEY_z, 0x01B6, -IBUS_KEY_slash, 0x0294, 0x02A1, -IBUS_KEY_slash, 0x04AE, 0x04B0, -IBUS_KEY_slash, 0x04AF, 0x04B1, -IBUS_KEY_slash, IBUS_KEY_Cyrillic_ghe, 0x0493, -IBUS_KEY_slash, IBUS_KEY_Cyrillic_ka, 0x049F, -IBUS_KEY_slash, IBUS_KEY_Cyrillic_GHE, 0x0492, -IBUS_KEY_slash, IBUS_KEY_Cyrillic_KA, 0x049E, -IBUS_KEY_slash, IBUS_KEY_leftarrow, 0x219A, -IBUS_KEY_slash, IBUS_KEY_rightarrow, 0x219B, -IBUS_KEY_slash, 0x2194, 0x21AE, -IBUS_KEY_0, IBUS_KEY_asterisk, 0x00B0, -IBUS_KEY_0, IBUS_KEY_C, 0x00A9, -IBUS_KEY_0, IBUS_KEY_S, 0x00A7, -IBUS_KEY_0, IBUS_KEY_X, 0x00A4, -IBUS_KEY_0, IBUS_KEY_asciicircum, 0x00B0, -IBUS_KEY_0, IBUS_KEY_c, 0x00A9, -IBUS_KEY_0, IBUS_KEY_s, 0x00A7, -IBUS_KEY_0, IBUS_KEY_x, 0x00A4, -IBUS_KEY_1, IBUS_KEY_2, 0x00BD, -IBUS_KEY_1, IBUS_KEY_3, 0x2153, -IBUS_KEY_1, IBUS_KEY_4, 0x00BC, -IBUS_KEY_1, IBUS_KEY_5, 0x2155, -IBUS_KEY_1, IBUS_KEY_6, 0x2159, -IBUS_KEY_1, IBUS_KEY_8, 0x215B, -IBUS_KEY_1, IBUS_KEY_S, 0x00B9, -IBUS_KEY_1, IBUS_KEY_asciicircum, 0x00B9, -IBUS_KEY_1, IBUS_KEY_s, 0x00B9, -IBUS_KEY_2, IBUS_KEY_3, 0x2154, -IBUS_KEY_2, IBUS_KEY_5, 0x2156, -IBUS_KEY_2, IBUS_KEY_S, 0x00B2, -IBUS_KEY_2, IBUS_KEY_asciicircum, 0x00B2, -IBUS_KEY_2, IBUS_KEY_s, 0x00B2, -IBUS_KEY_3, IBUS_KEY_4, 0x00BE, -IBUS_KEY_3, IBUS_KEY_5, 0x2157, -IBUS_KEY_3, IBUS_KEY_8, 0x215C, -IBUS_KEY_3, IBUS_KEY_S, 0x00B3, -IBUS_KEY_3, IBUS_KEY_asciicircum, 0x00B3, -IBUS_KEY_3, IBUS_KEY_s, 0x00B3, -IBUS_KEY_4, IBUS_KEY_5, 0x2158, -IBUS_KEY_5, IBUS_KEY_6, 0x215A, -IBUS_KEY_5, IBUS_KEY_8, 0x215D, -IBUS_KEY_7, IBUS_KEY_8, 0x215E, -IBUS_KEY_colon, IBUS_KEY_parenleft, 0x2639, -IBUS_KEY_colon, IBUS_KEY_parenright, 0x263A, -IBUS_KEY_colon, IBUS_KEY_minus, 0x00F7, -IBUS_KEY_semicolon, IBUS_KEY_A, 0x0104, -IBUS_KEY_semicolon, IBUS_KEY_E, 0x0118, -IBUS_KEY_semicolon, IBUS_KEY_I, 0x012E, -IBUS_KEY_semicolon, IBUS_KEY_O, 0x01EA, -IBUS_KEY_semicolon, IBUS_KEY_U, 0x0172, -IBUS_KEY_semicolon, IBUS_KEY_a, 0x0105, -IBUS_KEY_semicolon, IBUS_KEY_e, 0x0119, -IBUS_KEY_semicolon, IBUS_KEY_i, 0x012F, -IBUS_KEY_semicolon, IBUS_KEY_o, 0x01EB, -IBUS_KEY_semicolon, IBUS_KEY_u, 0x0173, -IBUS_KEY_less, IBUS_KEY_space, 0x02C7, -IBUS_KEY_less, IBUS_KEY_quotedbl, 0x201C, -IBUS_KEY_less, IBUS_KEY_apostrophe, 0x2018, -IBUS_KEY_less, IBUS_KEY_minus, 0x2190, -IBUS_KEY_less, IBUS_KEY_slash, 0x005C, -IBUS_KEY_less, IBUS_KEY_3, 0x2665, -IBUS_KEY_less, IBUS_KEY_less, 0x00AB, -IBUS_KEY_less, IBUS_KEY_equal, 0x2264, -IBUS_KEY_less, IBUS_KEY_C, 0x010C, -IBUS_KEY_less, IBUS_KEY_D, 0x010E, -IBUS_KEY_less, IBUS_KEY_E, 0x011A, -IBUS_KEY_less, IBUS_KEY_L, 0x013D, -IBUS_KEY_less, IBUS_KEY_N, 0x0147, -IBUS_KEY_less, IBUS_KEY_R, 0x0158, -IBUS_KEY_less, IBUS_KEY_S, 0x0160, -IBUS_KEY_less, IBUS_KEY_T, 0x0164, -IBUS_KEY_less, IBUS_KEY_Z, 0x017D, -IBUS_KEY_less, IBUS_KEY_c, 0x010D, -IBUS_KEY_less, IBUS_KEY_d, 0x010F, -IBUS_KEY_less, IBUS_KEY_e, 0x011B, -IBUS_KEY_less, IBUS_KEY_l, 0x013E, -IBUS_KEY_less, IBUS_KEY_n, 0x0148, -IBUS_KEY_less, IBUS_KEY_r, 0x0159, -IBUS_KEY_less, IBUS_KEY_s, 0x0161, -IBUS_KEY_less, IBUS_KEY_t, 0x0165, -IBUS_KEY_less, IBUS_KEY_z, 0x017E, -IBUS_KEY_less, 0x0338, 0x226E, -IBUS_KEY_equal, IBUS_KEY_slash, 0x2260, -IBUS_KEY_equal, IBUS_KEY_C, 0x20AC, -IBUS_KEY_equal, IBUS_KEY_E, 0x20AC, -IBUS_KEY_equal, IBUS_KEY_L, 0x20A4, -IBUS_KEY_equal, IBUS_KEY_N, 0x20A6, -IBUS_KEY_equal, IBUS_KEY_O, 0x0150, -IBUS_KEY_equal, IBUS_KEY_U, 0x0170, -IBUS_KEY_equal, IBUS_KEY_W, 0x20A9, -IBUS_KEY_equal, IBUS_KEY_Y, 0x00A5, -IBUS_KEY_equal, IBUS_KEY_c, 0x20AC, -IBUS_KEY_equal, IBUS_KEY_e, 0x20AC, -IBUS_KEY_equal, IBUS_KEY_l, 0x00A3, -IBUS_KEY_equal, IBUS_KEY_o, 0x0151, -IBUS_KEY_equal, IBUS_KEY_u, 0x0171, -IBUS_KEY_equal, IBUS_KEY_y, 0x00A5, -IBUS_KEY_equal, 0x0338, 0x2260, -IBUS_KEY_equal, IBUS_KEY_Cyrillic_u, 0x04F3, -IBUS_KEY_equal, IBUS_KEY_Cyrillic_IE, 0x20AC, -IBUS_KEY_equal, IBUS_KEY_Cyrillic_ES, 0x20AC, -IBUS_KEY_equal, IBUS_KEY_Cyrillic_U, 0x04F2, -IBUS_KEY_greater, IBUS_KEY_space, 0x005E, -IBUS_KEY_greater, IBUS_KEY_quotedbl, 0x201D, -IBUS_KEY_greater, IBUS_KEY_apostrophe, 0x2019, -IBUS_KEY_greater, IBUS_KEY_equal, 0x2265, -IBUS_KEY_greater, IBUS_KEY_greater, 0x00BB, -IBUS_KEY_greater, IBUS_KEY_A, 0x00C2, -IBUS_KEY_greater, IBUS_KEY_E, 0x00CA, -IBUS_KEY_greater, IBUS_KEY_I, 0x00CE, -IBUS_KEY_greater, IBUS_KEY_O, 0x00D4, -IBUS_KEY_greater, IBUS_KEY_U, 0x00DB, -IBUS_KEY_greater, IBUS_KEY_a, 0x00E2, -IBUS_KEY_greater, IBUS_KEY_e, 0x00EA, -IBUS_KEY_greater, IBUS_KEY_i, 0x00EE, -IBUS_KEY_greater, IBUS_KEY_o, 0x00F4, -IBUS_KEY_greater, IBUS_KEY_u, 0x00FB, -IBUS_KEY_greater, 0x0338, 0x226F, -IBUS_KEY_question, IBUS_KEY_exclam, 0x2E18, -IBUS_KEY_question, IBUS_KEY_question, 0x00BF, -IBUS_KEY_question, IBUS_KEY_A, 0x1EA2, -IBUS_KEY_question, IBUS_KEY_E, 0x1EBA, -IBUS_KEY_question, IBUS_KEY_I, 0x1EC8, -IBUS_KEY_question, IBUS_KEY_O, 0x1ECE, -IBUS_KEY_question, IBUS_KEY_U, 0x1EE6, -IBUS_KEY_question, IBUS_KEY_Y, 0x1EF6, -IBUS_KEY_question, IBUS_KEY_a, 0x1EA3, -IBUS_KEY_question, IBUS_KEY_e, 0x1EBB, -IBUS_KEY_question, IBUS_KEY_i, 0x1EC9, -IBUS_KEY_question, IBUS_KEY_o, 0x1ECF, -IBUS_KEY_question, IBUS_KEY_u, 0x1EE7, -IBUS_KEY_question, IBUS_KEY_y, 0x1EF7, -IBUS_KEY_question, IBUS_KEY_Acircumflex, 0x1EA8, -IBUS_KEY_question, IBUS_KEY_Ecircumflex, 0x1EC2, -IBUS_KEY_question, IBUS_KEY_Ocircumflex, 0x1ED4, -IBUS_KEY_question, IBUS_KEY_acircumflex, 0x1EA9, -IBUS_KEY_question, IBUS_KEY_ecircumflex, 0x1EC3, -IBUS_KEY_question, IBUS_KEY_ocircumflex, 0x1ED5, -IBUS_KEY_question, IBUS_KEY_Abreve, 0x1EB2, -IBUS_KEY_question, IBUS_KEY_abreve, 0x1EB3, -IBUS_KEY_A, IBUS_KEY_quotedbl, 0x00C4, -IBUS_KEY_A, IBUS_KEY_apostrophe, 0x00C1, -IBUS_KEY_A, IBUS_KEY_parenleft, 0x0102, -IBUS_KEY_A, IBUS_KEY_asterisk, 0x00C5, -IBUS_KEY_A, IBUS_KEY_comma, 0x0104, -IBUS_KEY_A, IBUS_KEY_minus, 0x00C3, -IBUS_KEY_A, IBUS_KEY_greater, 0x00C2, -IBUS_KEY_A, IBUS_KEY_A, 0x00C5, -IBUS_KEY_A, IBUS_KEY_E, 0x00C6, -IBUS_KEY_A, IBUS_KEY_T, 0x0040, -IBUS_KEY_A, IBUS_KEY_asciicircum, 0x00C2, -IBUS_KEY_A, IBUS_KEY_underscore, 0x00AA, -IBUS_KEY_A, IBUS_KEY_grave, 0x00C0, -IBUS_KEY_A, IBUS_KEY_asciitilde, 0x00C3, -IBUS_KEY_A, IBUS_KEY_diaeresis, 0x00C4, -IBUS_KEY_A, IBUS_KEY_acute, 0x00C1, -IBUS_KEY_B, IBUS_KEY_period, 0x1E02, -IBUS_KEY_C, IBUS_KEY_apostrophe, 0x0106, -IBUS_KEY_C, IBUS_KEY_comma, 0x00C7, -IBUS_KEY_C, IBUS_KEY_period, 0x010A, -IBUS_KEY_C, IBUS_KEY_slash, 0x20A1, -IBUS_KEY_C, IBUS_KEY_0, 0x00A9, -IBUS_KEY_C, IBUS_KEY_less, 0x010C, -IBUS_KEY_C, IBUS_KEY_equal, 0x20AC, -IBUS_KEY_C, IBUS_KEY_E, 0x20A0, -IBUS_KEY_C, IBUS_KEY_O, 0x00A9, -IBUS_KEY_C, IBUS_KEY_o, 0x00A9, -IBUS_KEY_C, IBUS_KEY_r, 0x20A2, -IBUS_KEY_C, IBUS_KEY_bar, 0x00A2, -IBUS_KEY_D, IBUS_KEY_minus, 0x0110, -IBUS_KEY_D, IBUS_KEY_period, 0x1E0A, -IBUS_KEY_D, IBUS_KEY_less, 0x010E, -IBUS_KEY_D, IBUS_KEY_H, 0x00D0, -IBUS_KEY_E, IBUS_KEY_quotedbl, 0x00CB, -IBUS_KEY_E, IBUS_KEY_apostrophe, 0x00C9, -IBUS_KEY_E, IBUS_KEY_comma, 0x0118, -IBUS_KEY_E, IBUS_KEY_minus, 0x0112, -IBUS_KEY_E, IBUS_KEY_period, 0x0116, -IBUS_KEY_E, IBUS_KEY_less, 0x011A, -IBUS_KEY_E, IBUS_KEY_equal, 0x20AC, -IBUS_KEY_E, IBUS_KEY_greater, 0x00CA, -IBUS_KEY_E, IBUS_KEY_asciicircum, 0x00CA, -IBUS_KEY_E, IBUS_KEY_underscore, 0x0112, -IBUS_KEY_E, IBUS_KEY_grave, 0x00C8, -IBUS_KEY_E, IBUS_KEY_diaeresis, 0x00CB, -IBUS_KEY_E, IBUS_KEY_acute, 0x00C9, -IBUS_KEY_F, IBUS_KEY_period, 0x1E1E, -IBUS_KEY_F, IBUS_KEY_r, 0x20A3, -IBUS_KEY_G, IBUS_KEY_parenleft, 0x011E, -IBUS_KEY_G, IBUS_KEY_comma, 0x0122, -IBUS_KEY_G, IBUS_KEY_period, 0x0120, -IBUS_KEY_G, IBUS_KEY_U, 0x011E, -IBUS_KEY_G, IBUS_KEY_breve, 0x011E, -IBUS_KEY_I, IBUS_KEY_quotedbl, 0x00CF, -IBUS_KEY_I, IBUS_KEY_apostrophe, 0x00CD, -IBUS_KEY_I, IBUS_KEY_comma, 0x012E, -IBUS_KEY_I, IBUS_KEY_minus, 0x012A, -IBUS_KEY_I, IBUS_KEY_period, 0x0130, -IBUS_KEY_I, IBUS_KEY_greater, 0x00CE, -IBUS_KEY_I, IBUS_KEY_asciicircum, 0x00CE, -IBUS_KEY_I, IBUS_KEY_underscore, 0x012A, -IBUS_KEY_I, IBUS_KEY_grave, 0x00CC, -IBUS_KEY_I, IBUS_KEY_asciitilde, 0x0128, -IBUS_KEY_I, IBUS_KEY_diaeresis, 0x00CF, -IBUS_KEY_I, IBUS_KEY_acute, 0x00CD, -IBUS_KEY_K, IBUS_KEY_comma, 0x0136, -IBUS_KEY_L, IBUS_KEY_apostrophe, 0x0139, -IBUS_KEY_L, IBUS_KEY_comma, 0x013B, -IBUS_KEY_L, IBUS_KEY_minus, 0x00A3, -IBUS_KEY_L, IBUS_KEY_slash, 0x0141, -IBUS_KEY_L, IBUS_KEY_less, 0x013D, -IBUS_KEY_L, IBUS_KEY_equal, 0x00A3, -IBUS_KEY_L, IBUS_KEY_V, 0x007C, -IBUS_KEY_M, IBUS_KEY_period, 0x1E40, -IBUS_KEY_N, IBUS_KEY_apostrophe, 0x0143, -IBUS_KEY_N, IBUS_KEY_comma, 0x0145, -IBUS_KEY_N, IBUS_KEY_minus, 0x00D1, -IBUS_KEY_N, IBUS_KEY_less, 0x0147, -IBUS_KEY_N, IBUS_KEY_equal, 0x20A6, -IBUS_KEY_N, IBUS_KEY_G, 0x014A, -IBUS_KEY_N, IBUS_KEY_O, 0x2116, -IBUS_KEY_N, IBUS_KEY_o, 0x2116, -IBUS_KEY_N, IBUS_KEY_asciitilde, 0x00D1, -IBUS_KEY_O, IBUS_KEY_quotedbl, 0x00D6, -IBUS_KEY_O, IBUS_KEY_apostrophe, 0x00D3, -IBUS_KEY_O, IBUS_KEY_minus, 0x00D5, -IBUS_KEY_O, IBUS_KEY_slash, 0x00D8, -IBUS_KEY_O, IBUS_KEY_greater, 0x00D4, -IBUS_KEY_O, IBUS_KEY_A, 0x24B6, -IBUS_KEY_O, IBUS_KEY_C, 0x00A9, -IBUS_KEY_O, IBUS_KEY_E, 0x0152, -IBUS_KEY_O, IBUS_KEY_R, 0x00AE, -IBUS_KEY_O, IBUS_KEY_S, 0x00A7, -IBUS_KEY_O, IBUS_KEY_X, 0x00A4, -IBUS_KEY_O, IBUS_KEY_asciicircum, 0x00D4, -IBUS_KEY_O, IBUS_KEY_underscore, 0x00BA, -IBUS_KEY_O, IBUS_KEY_grave, 0x00D2, -IBUS_KEY_O, IBUS_KEY_c, 0x00A9, -IBUS_KEY_O, IBUS_KEY_r, 0x00AE, -IBUS_KEY_O, IBUS_KEY_x, 0x00A4, -IBUS_KEY_O, IBUS_KEY_asciitilde, 0x00D5, -IBUS_KEY_O, IBUS_KEY_diaeresis, 0x00D6, -IBUS_KEY_O, IBUS_KEY_acute, 0x00D3, -IBUS_KEY_P, IBUS_KEY_exclam, 0x00B6, -IBUS_KEY_P, IBUS_KEY_period, 0x1E56, -IBUS_KEY_P, IBUS_KEY_P, 0x00B6, -IBUS_KEY_P, IBUS_KEY_t, 0x20A7, -IBUS_KEY_R, IBUS_KEY_apostrophe, 0x0154, -IBUS_KEY_R, IBUS_KEY_comma, 0x0156, -IBUS_KEY_R, IBUS_KEY_less, 0x0158, -IBUS_KEY_R, IBUS_KEY_O, 0x00AE, -IBUS_KEY_R, IBUS_KEY_s, 0x20A8, -IBUS_KEY_S, IBUS_KEY_exclam, 0x00A7, -IBUS_KEY_S, IBUS_KEY_apostrophe, 0x015A, -IBUS_KEY_S, IBUS_KEY_comma, 0x015E, -IBUS_KEY_S, IBUS_KEY_period, 0x1E60, -IBUS_KEY_S, IBUS_KEY_0, 0x00A7, -IBUS_KEY_S, IBUS_KEY_1, 0x00B9, -IBUS_KEY_S, IBUS_KEY_2, 0x00B2, -IBUS_KEY_S, IBUS_KEY_3, 0x00B3, -IBUS_KEY_S, IBUS_KEY_less, 0x0160, -IBUS_KEY_S, IBUS_KEY_M, 0x2120, -IBUS_KEY_S, IBUS_KEY_O, 0x00A7, -IBUS_KEY_S, IBUS_KEY_S, 0x1E9E, -IBUS_KEY_S, IBUS_KEY_m, 0x2120, -IBUS_KEY_S, IBUS_KEY_cedilla, 0x015E, -IBUS_KEY_T, IBUS_KEY_minus, 0x0166, -IBUS_KEY_T, IBUS_KEY_period, 0x1E6A, -IBUS_KEY_T, IBUS_KEY_slash, 0x0166, -IBUS_KEY_T, IBUS_KEY_less, 0x0164, -IBUS_KEY_T, IBUS_KEY_H, 0x00DE, -IBUS_KEY_T, IBUS_KEY_M, 0x2122, -IBUS_KEY_T, IBUS_KEY_m, 0x2122, -IBUS_KEY_U, IBUS_KEY_quotedbl, 0x00DC, -IBUS_KEY_U, IBUS_KEY_apostrophe, 0x00DA, -IBUS_KEY_U, IBUS_KEY_asterisk, 0x016E, -IBUS_KEY_U, IBUS_KEY_comma, 0x0172, -IBUS_KEY_U, IBUS_KEY_minus, 0x016A, -IBUS_KEY_U, IBUS_KEY_slash, 0x00B5, -IBUS_KEY_U, IBUS_KEY_greater, 0x00DB, -IBUS_KEY_U, IBUS_KEY_A, 0x0102, -IBUS_KEY_U, IBUS_KEY_E, 0x0114, -IBUS_KEY_U, IBUS_KEY_G, 0x011E, -IBUS_KEY_U, IBUS_KEY_I, 0x012C, -IBUS_KEY_U, IBUS_KEY_O, 0x014E, -IBUS_KEY_U, IBUS_KEY_U, 0x016C, -IBUS_KEY_U, IBUS_KEY_asciicircum, 0x00DB, -IBUS_KEY_U, IBUS_KEY_underscore, 0x016A, -IBUS_KEY_U, IBUS_KEY_grave, 0x00D9, -IBUS_KEY_U, IBUS_KEY_a, 0x0103, -IBUS_KEY_U, IBUS_KEY_e, 0x0115, -IBUS_KEY_U, IBUS_KEY_g, 0x011F, -IBUS_KEY_U, IBUS_KEY_i, 0x012D, -IBUS_KEY_U, IBUS_KEY_o, 0x014F, -IBUS_KEY_U, IBUS_KEY_u, 0x016D, -IBUS_KEY_U, IBUS_KEY_asciitilde, 0x0168, -IBUS_KEY_U, IBUS_KEY_diaeresis, 0x00DC, -IBUS_KEY_U, IBUS_KEY_acute, 0x00DA, -IBUS_KEY_U, 0x0228, 0x1E1C, -IBUS_KEY_U, 0x0229, 0x1E1D, -IBUS_KEY_U, IBUS_KEY_Cyrillic_a, 0x04D1, -IBUS_KEY_U, IBUS_KEY_Cyrillic_ie, 0x04D7, -IBUS_KEY_U, IBUS_KEY_Cyrillic_i, 0x0439, -IBUS_KEY_U, IBUS_KEY_Cyrillic_u, 0x045E, -IBUS_KEY_U, IBUS_KEY_Cyrillic_zhe, 0x04C2, -IBUS_KEY_U, IBUS_KEY_Cyrillic_A, 0x04D0, -IBUS_KEY_U, IBUS_KEY_Cyrillic_IE, 0x04D6, -IBUS_KEY_U, IBUS_KEY_Cyrillic_I, 0x0419, -IBUS_KEY_U, IBUS_KEY_Cyrillic_U, 0x040E, -IBUS_KEY_U, IBUS_KEY_Cyrillic_ZHE, 0x04C1, -IBUS_KEY_U, IBUS_KEY_Greek_ALPHA, 0x1FB8, -IBUS_KEY_U, IBUS_KEY_Greek_IOTA, 0x1FD8, -IBUS_KEY_U, IBUS_KEY_Greek_UPSILON, 0x1FE8, -IBUS_KEY_U, IBUS_KEY_Greek_alpha, 0x1FB0, -IBUS_KEY_U, IBUS_KEY_Greek_iota, 0x1FD0, -IBUS_KEY_U, IBUS_KEY_Greek_upsilon, 0x1FE0, -IBUS_KEY_U, 0x1EA0, 0x1EB6, -IBUS_KEY_U, 0x1EA1, 0x1EB7, -IBUS_KEY_V, IBUS_KEY_L, 0x007C, -IBUS_KEY_W, IBUS_KEY_equal, 0x20A9, -IBUS_KEY_W, IBUS_KEY_asciicircum, 0x0174, -IBUS_KEY_X, IBUS_KEY_0, 0x00A4, -IBUS_KEY_X, IBUS_KEY_O, 0x00A4, -IBUS_KEY_X, IBUS_KEY_o, 0x00A4, -IBUS_KEY_Y, IBUS_KEY_quotedbl, 0x0178, -IBUS_KEY_Y, IBUS_KEY_apostrophe, 0x00DD, -IBUS_KEY_Y, IBUS_KEY_minus, 0x00A5, -IBUS_KEY_Y, IBUS_KEY_equal, 0x00A5, -IBUS_KEY_Y, IBUS_KEY_asciicircum, 0x0176, -IBUS_KEY_Y, IBUS_KEY_diaeresis, 0x0178, -IBUS_KEY_Y, IBUS_KEY_acute, 0x00DD, -IBUS_KEY_Z, IBUS_KEY_apostrophe, 0x0179, -IBUS_KEY_Z, IBUS_KEY_period, 0x017B, -IBUS_KEY_Z, IBUS_KEY_less, 0x017D, -IBUS_KEY_asciicircum, IBUS_KEY_space, 0x005E, -IBUS_KEY_asciicircum, IBUS_KEY_parenleft, 0x207D, -IBUS_KEY_asciicircum, IBUS_KEY_parenright, 0x207E, -IBUS_KEY_asciicircum, IBUS_KEY_plus, 0x207A, -IBUS_KEY_asciicircum, IBUS_KEY_minus, 0x00AF, -IBUS_KEY_asciicircum, IBUS_KEY_period, 0x00B7, -IBUS_KEY_asciicircum, IBUS_KEY_slash, 0x007C, -IBUS_KEY_asciicircum, IBUS_KEY_0, 0x2070, -IBUS_KEY_asciicircum, IBUS_KEY_1, 0x00B9, -IBUS_KEY_asciicircum, IBUS_KEY_2, 0x00B2, -IBUS_KEY_asciicircum, IBUS_KEY_3, 0x00B3, -IBUS_KEY_asciicircum, IBUS_KEY_4, 0x2074, -IBUS_KEY_asciicircum, IBUS_KEY_5, 0x2075, -IBUS_KEY_asciicircum, IBUS_KEY_6, 0x2076, -IBUS_KEY_asciicircum, IBUS_KEY_7, 0x2077, -IBUS_KEY_asciicircum, IBUS_KEY_8, 0x2078, -IBUS_KEY_asciicircum, IBUS_KEY_9, 0x2079, -IBUS_KEY_asciicircum, IBUS_KEY_equal, 0x207C, -IBUS_KEY_asciicircum, IBUS_KEY_A, 0x00C2, -IBUS_KEY_asciicircum, IBUS_KEY_C, 0x0108, -IBUS_KEY_asciicircum, IBUS_KEY_E, 0x00CA, -IBUS_KEY_asciicircum, IBUS_KEY_G, 0x011C, -IBUS_KEY_asciicircum, IBUS_KEY_H, 0x0124, -IBUS_KEY_asciicircum, IBUS_KEY_I, 0x00CE, -IBUS_KEY_asciicircum, IBUS_KEY_J, 0x0134, -IBUS_KEY_asciicircum, IBUS_KEY_O, 0x00D4, -IBUS_KEY_asciicircum, IBUS_KEY_S, 0x015C, -IBUS_KEY_asciicircum, IBUS_KEY_U, 0x00DB, -IBUS_KEY_asciicircum, IBUS_KEY_W, 0x0174, -IBUS_KEY_asciicircum, IBUS_KEY_Y, 0x0176, -IBUS_KEY_asciicircum, IBUS_KEY_Z, 0x1E90, -IBUS_KEY_asciicircum, IBUS_KEY_underscore, 0x00AF, -IBUS_KEY_asciicircum, IBUS_KEY_a, 0x00E2, -IBUS_KEY_asciicircum, IBUS_KEY_c, 0x0109, -IBUS_KEY_asciicircum, IBUS_KEY_e, 0x00EA, -IBUS_KEY_asciicircum, IBUS_KEY_g, 0x011D, -IBUS_KEY_asciicircum, IBUS_KEY_h, 0x0125, -IBUS_KEY_asciicircum, IBUS_KEY_i, 0x00EE, -IBUS_KEY_asciicircum, IBUS_KEY_j, 0x0135, -IBUS_KEY_asciicircum, IBUS_KEY_o, 0x00F4, -IBUS_KEY_asciicircum, IBUS_KEY_s, 0x015D, -IBUS_KEY_asciicircum, IBUS_KEY_u, 0x00FB, -IBUS_KEY_asciicircum, IBUS_KEY_w, 0x0175, -IBUS_KEY_asciicircum, IBUS_KEY_y, 0x0177, -IBUS_KEY_asciicircum, IBUS_KEY_z, 0x1E91, -IBUS_KEY_asciicircum, 0x1EA0, 0x1EAC, -IBUS_KEY_asciicircum, 0x1EA1, 0x1EAD, -IBUS_KEY_asciicircum, 0x1EB8, 0x1EC6, -IBUS_KEY_asciicircum, 0x1EB9, 0x1EC7, -IBUS_KEY_asciicircum, 0x1ECC, 0x1ED8, -IBUS_KEY_asciicircum, 0x1ECD, 0x1ED9, -IBUS_KEY_asciicircum, 0x2212, 0x207B, -IBUS_KEY_asciicircum, 0x4E00, 0x3192, -IBUS_KEY_asciicircum, 0x4E01, 0x319C, -IBUS_KEY_asciicircum, 0x4E09, 0x3194, -IBUS_KEY_asciicircum, 0x4E0A, 0x3196, -IBUS_KEY_asciicircum, 0x4E0B, 0x3198, -IBUS_KEY_asciicircum, 0x4E19, 0x319B, -IBUS_KEY_asciicircum, 0x4E2D, 0x3197, -IBUS_KEY_asciicircum, 0x4E59, 0x319A, -IBUS_KEY_asciicircum, 0x4E8C, 0x3193, -IBUS_KEY_asciicircum, 0x4EBA, 0x319F, -IBUS_KEY_asciicircum, 0x56DB, 0x3195, -IBUS_KEY_asciicircum, 0x5730, 0x319E, -IBUS_KEY_asciicircum, 0x5929, 0x319D, -IBUS_KEY_asciicircum, 0x7532, 0x3199, -IBUS_KEY_asciicircum, IBUS_KEY_KP_Space, 0x00B2, -IBUS_KEY_asciicircum, IBUS_KEY_KP_Add, 0x207A, -IBUS_KEY_asciicircum, IBUS_KEY_KP_0, 0x2070, -IBUS_KEY_asciicircum, IBUS_KEY_KP_1, 0x00B9, -IBUS_KEY_asciicircum, IBUS_KEY_KP_2, 0x00B2, -IBUS_KEY_asciicircum, IBUS_KEY_KP_3, 0x00B3, -IBUS_KEY_asciicircum, IBUS_KEY_KP_4, 0x2074, -IBUS_KEY_asciicircum, IBUS_KEY_KP_5, 0x2075, -IBUS_KEY_asciicircum, IBUS_KEY_KP_6, 0x2076, -IBUS_KEY_asciicircum, IBUS_KEY_KP_7, 0x2077, -IBUS_KEY_asciicircum, IBUS_KEY_KP_8, 0x2078, -IBUS_KEY_asciicircum, IBUS_KEY_KP_9, 0x2079, -IBUS_KEY_asciicircum, IBUS_KEY_KP_Equal, 0x207C, -IBUS_KEY_underscore, IBUS_KEY_parenleft, 0x208D, -IBUS_KEY_underscore, IBUS_KEY_parenright, 0x208E, -IBUS_KEY_underscore, IBUS_KEY_plus, 0x208A, -IBUS_KEY_underscore, IBUS_KEY_0, 0x2080, -IBUS_KEY_underscore, IBUS_KEY_1, 0x2081, -IBUS_KEY_underscore, IBUS_KEY_2, 0x2082, -IBUS_KEY_underscore, IBUS_KEY_3, 0x2083, -IBUS_KEY_underscore, IBUS_KEY_4, 0x2084, -IBUS_KEY_underscore, IBUS_KEY_5, 0x2085, -IBUS_KEY_underscore, IBUS_KEY_6, 0x2086, -IBUS_KEY_underscore, IBUS_KEY_7, 0x2087, -IBUS_KEY_underscore, IBUS_KEY_8, 0x2088, -IBUS_KEY_underscore, IBUS_KEY_9, 0x2089, -IBUS_KEY_underscore, IBUS_KEY_equal, 0x208C, -IBUS_KEY_underscore, IBUS_KEY_A, 0x0100, -IBUS_KEY_underscore, IBUS_KEY_E, 0x0112, -IBUS_KEY_underscore, IBUS_KEY_G, 0x1E20, -IBUS_KEY_underscore, IBUS_KEY_I, 0x012A, -IBUS_KEY_underscore, IBUS_KEY_O, 0x014C, -IBUS_KEY_underscore, IBUS_KEY_U, 0x016A, -IBUS_KEY_underscore, IBUS_KEY_Y, 0x0232, -IBUS_KEY_underscore, IBUS_KEY_asciicircum, 0x00AF, -IBUS_KEY_underscore, IBUS_KEY_underscore, 0x00AF, -IBUS_KEY_underscore, IBUS_KEY_a, 0x0101, -IBUS_KEY_underscore, IBUS_KEY_e, 0x0113, -IBUS_KEY_underscore, IBUS_KEY_g, 0x1E21, -IBUS_KEY_underscore, IBUS_KEY_i, 0x012B, -IBUS_KEY_underscore, IBUS_KEY_o, 0x014D, -IBUS_KEY_underscore, IBUS_KEY_u, 0x016B, -IBUS_KEY_underscore, IBUS_KEY_y, 0x0233, -IBUS_KEY_underscore, IBUS_KEY_Adiaeresis, 0x01DE, -IBUS_KEY_underscore, IBUS_KEY_AE, 0x01E2, -IBUS_KEY_underscore, IBUS_KEY_Otilde, 0x022C, -IBUS_KEY_underscore, IBUS_KEY_Odiaeresis, 0x022A, -IBUS_KEY_underscore, IBUS_KEY_Udiaeresis, 0x01D5, -IBUS_KEY_underscore, IBUS_KEY_adiaeresis, 0x01DF, -IBUS_KEY_underscore, IBUS_KEY_ae, 0x01E3, -IBUS_KEY_underscore, IBUS_KEY_otilde, 0x022D, -IBUS_KEY_underscore, IBUS_KEY_odiaeresis, 0x022B, -IBUS_KEY_underscore, IBUS_KEY_udiaeresis, 0x01D6, -IBUS_KEY_underscore, 0x01EA, 0x01EC, -IBUS_KEY_underscore, 0x01EB, 0x01ED, -IBUS_KEY_underscore, 0x0226, 0x01E0, -IBUS_KEY_underscore, 0x0227, 0x01E1, -IBUS_KEY_underscore, 0x022E, 0x0230, -IBUS_KEY_underscore, 0x022F, 0x0231, -IBUS_KEY_underscore, IBUS_KEY_Cyrillic_i, 0x04E3, -IBUS_KEY_underscore, IBUS_KEY_Cyrillic_u, 0x04EF, -IBUS_KEY_underscore, IBUS_KEY_Cyrillic_I, 0x04E2, -IBUS_KEY_underscore, IBUS_KEY_Cyrillic_U, 0x04EE, -IBUS_KEY_underscore, IBUS_KEY_Greek_ALPHA, 0x1FB9, -IBUS_KEY_underscore, IBUS_KEY_Greek_IOTA, 0x1FD9, -IBUS_KEY_underscore, IBUS_KEY_Greek_UPSILON, 0x1FE9, -IBUS_KEY_underscore, IBUS_KEY_Greek_alpha, 0x1FB1, -IBUS_KEY_underscore, IBUS_KEY_Greek_iota, 0x1FD1, -IBUS_KEY_underscore, IBUS_KEY_Greek_upsilon, 0x1FE1, -IBUS_KEY_underscore, 0x1E36, 0x1E38, -IBUS_KEY_underscore, 0x1E37, 0x1E39, -IBUS_KEY_underscore, 0x1E5A, 0x1E5C, -IBUS_KEY_underscore, 0x1E5B, 0x1E5D, -IBUS_KEY_underscore, 0x2212, 0x208B, -IBUS_KEY_underscore, IBUS_KEY_KP_Space, 0x2082, -IBUS_KEY_underscore, IBUS_KEY_KP_Add, 0x208A, -IBUS_KEY_underscore, IBUS_KEY_KP_0, 0x2080, -IBUS_KEY_underscore, IBUS_KEY_KP_1, 0x2081, -IBUS_KEY_underscore, IBUS_KEY_KP_2, 0x2082, -IBUS_KEY_underscore, IBUS_KEY_KP_3, 0x2083, -IBUS_KEY_underscore, IBUS_KEY_KP_4, 0x2084, -IBUS_KEY_underscore, IBUS_KEY_KP_5, 0x2085, -IBUS_KEY_underscore, IBUS_KEY_KP_6, 0x2086, -IBUS_KEY_underscore, IBUS_KEY_KP_7, 0x2087, -IBUS_KEY_underscore, IBUS_KEY_KP_8, 0x2088, -IBUS_KEY_underscore, IBUS_KEY_KP_9, 0x2089, -IBUS_KEY_underscore, IBUS_KEY_KP_Equal, 0x208C, -IBUS_KEY_grave, IBUS_KEY_space, 0x0060, -IBUS_KEY_grave, IBUS_KEY_A, 0x00C0, -IBUS_KEY_grave, IBUS_KEY_E, 0x00C8, -IBUS_KEY_grave, IBUS_KEY_I, 0x00CC, -IBUS_KEY_grave, IBUS_KEY_N, 0x01F8, -IBUS_KEY_grave, IBUS_KEY_O, 0x00D2, -IBUS_KEY_grave, IBUS_KEY_U, 0x00D9, -IBUS_KEY_grave, IBUS_KEY_W, 0x1E80, -IBUS_KEY_grave, IBUS_KEY_Y, 0x1EF2, -IBUS_KEY_grave, IBUS_KEY_a, 0x00E0, -IBUS_KEY_grave, IBUS_KEY_e, 0x00E8, -IBUS_KEY_grave, IBUS_KEY_i, 0x00EC, -IBUS_KEY_grave, IBUS_KEY_n, 0x01F9, -IBUS_KEY_grave, IBUS_KEY_o, 0x00F2, -IBUS_KEY_grave, IBUS_KEY_u, 0x00F9, -IBUS_KEY_grave, IBUS_KEY_w, 0x1E81, -IBUS_KEY_grave, IBUS_KEY_y, 0x1EF3, -IBUS_KEY_grave, IBUS_KEY_Acircumflex, 0x1EA6, -IBUS_KEY_grave, IBUS_KEY_Ecircumflex, 0x1EC0, -IBUS_KEY_grave, IBUS_KEY_Ocircumflex, 0x1ED2, -IBUS_KEY_grave, IBUS_KEY_Udiaeresis, 0x01DB, -IBUS_KEY_grave, IBUS_KEY_acircumflex, 0x1EA7, -IBUS_KEY_grave, IBUS_KEY_ecircumflex, 0x1EC1, -IBUS_KEY_grave, IBUS_KEY_ocircumflex, 0x1ED3, -IBUS_KEY_grave, IBUS_KEY_udiaeresis, 0x01DC, -IBUS_KEY_grave, IBUS_KEY_Abreve, 0x1EB0, -IBUS_KEY_grave, IBUS_KEY_abreve, 0x1EB1, -IBUS_KEY_grave, IBUS_KEY_Emacron, 0x1E14, -IBUS_KEY_grave, IBUS_KEY_emacron, 0x1E15, -IBUS_KEY_grave, IBUS_KEY_Omacron, 0x1E50, -IBUS_KEY_grave, IBUS_KEY_omacron, 0x1E51, -IBUS_KEY_grave, IBUS_KEY_Cyrillic_ie, 0x0450, -IBUS_KEY_grave, IBUS_KEY_Cyrillic_i, 0x045D, -IBUS_KEY_grave, IBUS_KEY_Cyrillic_IE, 0x0400, -IBUS_KEY_grave, IBUS_KEY_Cyrillic_I, 0x040D, -IBUS_KEY_grave, IBUS_KEY_Greek_iotadieresis, 0x1FD2, -IBUS_KEY_grave, IBUS_KEY_Greek_upsilondieresis, 0x1FE2, -IBUS_KEY_grave, IBUS_KEY_Greek_ALPHA, 0x1FBA, -IBUS_KEY_grave, IBUS_KEY_Greek_EPSILON, 0x1FC8, -IBUS_KEY_grave, IBUS_KEY_Greek_ETA, 0x1FCA, -IBUS_KEY_grave, IBUS_KEY_Greek_IOTA, 0x1FDA, -IBUS_KEY_grave, IBUS_KEY_Greek_OMICRON, 0x1FF8, -IBUS_KEY_grave, IBUS_KEY_Greek_UPSILON, 0x1FEA, -IBUS_KEY_grave, IBUS_KEY_Greek_OMEGA, 0x1FFA, -IBUS_KEY_grave, IBUS_KEY_Greek_alpha, 0x1F70, -IBUS_KEY_grave, IBUS_KEY_Greek_epsilon, 0x1F72, -IBUS_KEY_grave, IBUS_KEY_Greek_eta, 0x1F74, -IBUS_KEY_grave, IBUS_KEY_Greek_iota, 0x1F76, -IBUS_KEY_grave, IBUS_KEY_Greek_omicron, 0x1F78, -IBUS_KEY_grave, IBUS_KEY_Greek_upsilon, 0x1F7A, -IBUS_KEY_grave, IBUS_KEY_Greek_omega, 0x1F7C, -IBUS_KEY_grave, 0x1F00, 0x1F02, -IBUS_KEY_grave, 0x1F01, 0x1F03, -IBUS_KEY_grave, 0x1F08, 0x1F0A, -IBUS_KEY_grave, 0x1F09, 0x1F0B, -IBUS_KEY_grave, 0x1F10, 0x1F12, -IBUS_KEY_grave, 0x1F11, 0x1F13, -IBUS_KEY_grave, 0x1F18, 0x1F1A, -IBUS_KEY_grave, 0x1F19, 0x1F1B, -IBUS_KEY_grave, 0x1F20, 0x1F22, -IBUS_KEY_grave, 0x1F21, 0x1F23, -IBUS_KEY_grave, 0x1F28, 0x1F2A, -IBUS_KEY_grave, 0x1F29, 0x1F2B, -IBUS_KEY_grave, 0x1F30, 0x1F32, -IBUS_KEY_grave, 0x1F31, 0x1F33, -IBUS_KEY_grave, 0x1F38, 0x1F3A, -IBUS_KEY_grave, 0x1F39, 0x1F3B, -IBUS_KEY_grave, 0x1F40, 0x1F42, -IBUS_KEY_grave, 0x1F41, 0x1F43, -IBUS_KEY_grave, 0x1F48, 0x1F4A, -IBUS_KEY_grave, 0x1F49, 0x1F4B, -IBUS_KEY_grave, 0x1F50, 0x1F52, -IBUS_KEY_grave, 0x1F51, 0x1F53, -IBUS_KEY_grave, 0x1F59, 0x1F5B, -IBUS_KEY_grave, 0x1F60, 0x1F62, -IBUS_KEY_grave, 0x1F61, 0x1F63, -IBUS_KEY_grave, 0x1F68, 0x1F6A, -IBUS_KEY_grave, 0x1F69, 0x1F6B, -IBUS_KEY_a, IBUS_KEY_quotedbl, 0x00E4, -IBUS_KEY_a, IBUS_KEY_apostrophe, 0x00E1, -IBUS_KEY_a, IBUS_KEY_parenleft, 0x0103, -IBUS_KEY_a, IBUS_KEY_asterisk, 0x00E5, -IBUS_KEY_a, IBUS_KEY_comma, 0x0105, -IBUS_KEY_a, IBUS_KEY_minus, 0x0101, -IBUS_KEY_a, IBUS_KEY_greater, 0x00E2, -IBUS_KEY_a, IBUS_KEY_asciicircum, 0x00E2, -IBUS_KEY_a, IBUS_KEY_underscore, 0x00AA, -IBUS_KEY_a, IBUS_KEY_grave, 0x00E0, -IBUS_KEY_a, IBUS_KEY_a, 0x00E5, -IBUS_KEY_a, IBUS_KEY_e, 0x00E6, -IBUS_KEY_a, IBUS_KEY_asciitilde, 0x00E3, -IBUS_KEY_a, IBUS_KEY_diaeresis, 0x00E4, -IBUS_KEY_a, IBUS_KEY_acute, 0x00E1, -IBUS_KEY_b, IBUS_KEY_period, 0x1E03, -IBUS_KEY_b, IBUS_KEY_A, 0x0102, -IBUS_KEY_b, IBUS_KEY_E, 0x0114, -IBUS_KEY_b, IBUS_KEY_G, 0x011E, -IBUS_KEY_b, IBUS_KEY_I, 0x012C, -IBUS_KEY_b, IBUS_KEY_O, 0x014E, -IBUS_KEY_b, IBUS_KEY_U, 0x016C, -IBUS_KEY_b, IBUS_KEY_a, 0x0103, -IBUS_KEY_b, IBUS_KEY_e, 0x0115, -IBUS_KEY_b, IBUS_KEY_g, 0x011F, -IBUS_KEY_b, IBUS_KEY_i, 0x012D, -IBUS_KEY_b, IBUS_KEY_o, 0x014F, -IBUS_KEY_b, IBUS_KEY_u, 0x016D, -IBUS_KEY_b, 0x0228, 0x1E1C, -IBUS_KEY_b, 0x0229, 0x1E1D, -IBUS_KEY_b, IBUS_KEY_Cyrillic_a, 0x04D1, -IBUS_KEY_b, IBUS_KEY_Cyrillic_ie, 0x04D7, -IBUS_KEY_b, IBUS_KEY_Cyrillic_i, 0x0439, -IBUS_KEY_b, IBUS_KEY_Cyrillic_u, 0x045E, -IBUS_KEY_b, IBUS_KEY_Cyrillic_zhe, 0x04C2, -IBUS_KEY_b, IBUS_KEY_Cyrillic_A, 0x04D0, -IBUS_KEY_b, IBUS_KEY_Cyrillic_IE, 0x04D6, -IBUS_KEY_b, IBUS_KEY_Cyrillic_I, 0x0419, -IBUS_KEY_b, IBUS_KEY_Cyrillic_U, 0x040E, -IBUS_KEY_b, IBUS_KEY_Cyrillic_ZHE, 0x04C1, -IBUS_KEY_b, IBUS_KEY_Greek_ALPHA, 0x1FB8, -IBUS_KEY_b, IBUS_KEY_Greek_IOTA, 0x1FD8, -IBUS_KEY_b, IBUS_KEY_Greek_UPSILON, 0x1FE8, -IBUS_KEY_b, IBUS_KEY_Greek_alpha, 0x1FB0, -IBUS_KEY_b, IBUS_KEY_Greek_iota, 0x1FD0, -IBUS_KEY_b, IBUS_KEY_Greek_upsilon, 0x1FE0, -IBUS_KEY_b, 0x1EA0, 0x1EB6, -IBUS_KEY_b, 0x1EA1, 0x1EB7, -IBUS_KEY_c, IBUS_KEY_apostrophe, 0x0107, -IBUS_KEY_c, IBUS_KEY_comma, 0x00E7, -IBUS_KEY_c, IBUS_KEY_period, 0x010B, -IBUS_KEY_c, IBUS_KEY_slash, 0x00A2, -IBUS_KEY_c, IBUS_KEY_0, 0x00A9, -IBUS_KEY_c, IBUS_KEY_less, 0x010D, -IBUS_KEY_c, IBUS_KEY_equal, 0x20AC, -IBUS_KEY_c, IBUS_KEY_A, 0x01CD, -IBUS_KEY_c, IBUS_KEY_C, 0x010C, -IBUS_KEY_c, IBUS_KEY_D, 0x010E, -IBUS_KEY_c, IBUS_KEY_E, 0x011A, -IBUS_KEY_c, IBUS_KEY_G, 0x01E6, -IBUS_KEY_c, IBUS_KEY_H, 0x021E, -IBUS_KEY_c, IBUS_KEY_I, 0x01CF, -IBUS_KEY_c, IBUS_KEY_K, 0x01E8, -IBUS_KEY_c, IBUS_KEY_L, 0x013D, -IBUS_KEY_c, IBUS_KEY_N, 0x0147, -IBUS_KEY_c, IBUS_KEY_O, 0x01D1, -IBUS_KEY_c, IBUS_KEY_R, 0x0158, -IBUS_KEY_c, IBUS_KEY_S, 0x0160, -IBUS_KEY_c, IBUS_KEY_T, 0x0164, -IBUS_KEY_c, IBUS_KEY_U, 0x01D3, -IBUS_KEY_c, IBUS_KEY_Z, 0x017D, -IBUS_KEY_c, IBUS_KEY_a, 0x01CE, -IBUS_KEY_c, IBUS_KEY_c, 0x010D, -IBUS_KEY_c, IBUS_KEY_d, 0x010F, -IBUS_KEY_c, IBUS_KEY_e, 0x011B, -IBUS_KEY_c, IBUS_KEY_g, 0x01E7, -IBUS_KEY_c, IBUS_KEY_h, 0x021F, -IBUS_KEY_c, IBUS_KEY_i, 0x01D0, -IBUS_KEY_c, IBUS_KEY_j, 0x01F0, -IBUS_KEY_c, IBUS_KEY_k, 0x01E9, -IBUS_KEY_c, IBUS_KEY_l, 0x013E, -IBUS_KEY_c, IBUS_KEY_n, 0x0148, -IBUS_KEY_c, IBUS_KEY_o, 0x01D2, -IBUS_KEY_c, IBUS_KEY_r, 0x0159, -IBUS_KEY_c, IBUS_KEY_s, 0x0161, -IBUS_KEY_c, IBUS_KEY_t, 0x0165, -IBUS_KEY_c, IBUS_KEY_u, 0x01D4, -IBUS_KEY_c, IBUS_KEY_z, 0x017E, -IBUS_KEY_c, IBUS_KEY_bar, 0x00A2, -IBUS_KEY_c, IBUS_KEY_Udiaeresis, 0x01D9, -IBUS_KEY_c, IBUS_KEY_udiaeresis, 0x01DA, -IBUS_KEY_c, 0x01B7, 0x01EE, -IBUS_KEY_c, 0x0292, 0x01EF, -IBUS_KEY_d, IBUS_KEY_minus, 0x20AB, -IBUS_KEY_d, IBUS_KEY_period, 0x1E0B, -IBUS_KEY_d, IBUS_KEY_less, 0x010F, -IBUS_KEY_d, IBUS_KEY_h, 0x00F0, -IBUS_KEY_e, IBUS_KEY_quotedbl, 0x00EB, -IBUS_KEY_e, IBUS_KEY_apostrophe, 0x00E9, -IBUS_KEY_e, IBUS_KEY_comma, 0x0119, -IBUS_KEY_e, IBUS_KEY_minus, 0x0113, -IBUS_KEY_e, IBUS_KEY_period, 0x0117, -IBUS_KEY_e, IBUS_KEY_less, 0x011B, -IBUS_KEY_e, IBUS_KEY_equal, 0x20AC, -IBUS_KEY_e, IBUS_KEY_greater, 0x00EA, -IBUS_KEY_e, IBUS_KEY_asciicircum, 0x00EA, -IBUS_KEY_e, IBUS_KEY_underscore, 0x0113, -IBUS_KEY_e, IBUS_KEY_grave, 0x00E8, -IBUS_KEY_e, IBUS_KEY_e, 0x0259, -IBUS_KEY_e, IBUS_KEY_diaeresis, 0x00EB, -IBUS_KEY_e, IBUS_KEY_acute, 0x00E9, -IBUS_KEY_f, IBUS_KEY_period, 0x1E1F, -IBUS_KEY_f, IBUS_KEY_S, 0x017F, -IBUS_KEY_f, IBUS_KEY_s, 0x017F, -IBUS_KEY_g, IBUS_KEY_parenleft, 0x011F, -IBUS_KEY_g, IBUS_KEY_comma, 0x0123, -IBUS_KEY_g, IBUS_KEY_period, 0x0121, -IBUS_KEY_g, IBUS_KEY_U, 0x011F, -IBUS_KEY_g, IBUS_KEY_breve, 0x011F, -IBUS_KEY_i, IBUS_KEY_quotedbl, 0x00EF, -IBUS_KEY_i, IBUS_KEY_apostrophe, 0x00ED, -IBUS_KEY_i, IBUS_KEY_comma, 0x012F, -IBUS_KEY_i, IBUS_KEY_minus, 0x012B, -IBUS_KEY_i, IBUS_KEY_period, 0x0131, -IBUS_KEY_i, IBUS_KEY_greater, 0x00EE, -IBUS_KEY_i, IBUS_KEY_asciicircum, 0x00EE, -IBUS_KEY_i, IBUS_KEY_underscore, 0x012B, -IBUS_KEY_i, IBUS_KEY_grave, 0x00EC, -IBUS_KEY_i, IBUS_KEY_asciitilde, 0x0129, -IBUS_KEY_i, IBUS_KEY_diaeresis, 0x00EF, -IBUS_KEY_i, IBUS_KEY_acute, 0x00ED, -IBUS_KEY_k, IBUS_KEY_comma, 0x0137, -IBUS_KEY_k, IBUS_KEY_k, 0x0138, -IBUS_KEY_l, IBUS_KEY_apostrophe, 0x013A, -IBUS_KEY_l, IBUS_KEY_comma, 0x013C, -IBUS_KEY_l, IBUS_KEY_minus, 0x00A3, -IBUS_KEY_l, IBUS_KEY_slash, 0x0142, -IBUS_KEY_l, IBUS_KEY_less, 0x013E, -IBUS_KEY_l, IBUS_KEY_equal, 0x00A3, -IBUS_KEY_l, IBUS_KEY_v, 0x007C, -IBUS_KEY_m, IBUS_KEY_period, 0x1E41, -IBUS_KEY_m, IBUS_KEY_slash, 0x20A5, -IBUS_KEY_m, IBUS_KEY_u, 0x00B5, -IBUS_KEY_n, IBUS_KEY_apostrophe, 0x0144, -IBUS_KEY_n, IBUS_KEY_comma, 0x0146, -IBUS_KEY_n, IBUS_KEY_minus, 0x00F1, -IBUS_KEY_n, IBUS_KEY_less, 0x0148, -IBUS_KEY_n, IBUS_KEY_g, 0x014B, -IBUS_KEY_n, IBUS_KEY_asciitilde, 0x00F1, -IBUS_KEY_o, IBUS_KEY_quotedbl, 0x00F6, -IBUS_KEY_o, IBUS_KEY_apostrophe, 0x00F3, -IBUS_KEY_o, IBUS_KEY_minus, 0x014D, -IBUS_KEY_o, IBUS_KEY_slash, 0x00F8, -IBUS_KEY_o, IBUS_KEY_greater, 0x00F4, -IBUS_KEY_o, IBUS_KEY_A, 0x00C5, -IBUS_KEY_o, IBUS_KEY_C, 0x00A9, -IBUS_KEY_o, IBUS_KEY_R, 0x00AE, -IBUS_KEY_o, IBUS_KEY_U, 0x016E, -IBUS_KEY_o, IBUS_KEY_X, 0x00A4, -IBUS_KEY_o, IBUS_KEY_asciicircum, 0x00F4, -IBUS_KEY_o, IBUS_KEY_underscore, 0x00BA, -IBUS_KEY_o, IBUS_KEY_grave, 0x00F2, -IBUS_KEY_o, IBUS_KEY_a, 0x00E5, -IBUS_KEY_o, IBUS_KEY_c, 0x00A9, -IBUS_KEY_o, IBUS_KEY_e, 0x0153, -IBUS_KEY_o, IBUS_KEY_o, 0x00B0, -IBUS_KEY_o, IBUS_KEY_r, 0x00AE, -IBUS_KEY_o, IBUS_KEY_s, 0x00A7, -IBUS_KEY_o, IBUS_KEY_u, 0x016F, -IBUS_KEY_o, IBUS_KEY_w, 0x1E98, -IBUS_KEY_o, IBUS_KEY_x, 0x00A4, -IBUS_KEY_o, IBUS_KEY_y, 0x1E99, -IBUS_KEY_o, IBUS_KEY_asciitilde, 0x00F5, -IBUS_KEY_o, IBUS_KEY_diaeresis, 0x00F6, -IBUS_KEY_o, IBUS_KEY_acute, 0x00F3, -IBUS_KEY_p, IBUS_KEY_exclam, 0x00B6, -IBUS_KEY_p, IBUS_KEY_period, 0x1E57, -IBUS_KEY_r, IBUS_KEY_apostrophe, 0x0155, -IBUS_KEY_r, IBUS_KEY_comma, 0x0157, -IBUS_KEY_r, IBUS_KEY_less, 0x0159, -IBUS_KEY_s, IBUS_KEY_exclam, 0x00A7, -IBUS_KEY_s, IBUS_KEY_apostrophe, 0x015B, -IBUS_KEY_s, IBUS_KEY_comma, 0x015F, -IBUS_KEY_s, IBUS_KEY_period, 0x1E61, -IBUS_KEY_s, IBUS_KEY_0, 0x00A7, -IBUS_KEY_s, IBUS_KEY_1, 0x00B9, -IBUS_KEY_s, IBUS_KEY_2, 0x00B2, -IBUS_KEY_s, IBUS_KEY_3, 0x00B3, -IBUS_KEY_s, IBUS_KEY_less, 0x0161, -IBUS_KEY_s, IBUS_KEY_M, 0x2120, -IBUS_KEY_s, IBUS_KEY_m, 0x2120, -IBUS_KEY_s, IBUS_KEY_o, 0x00A7, -IBUS_KEY_s, IBUS_KEY_s, 0x00DF, -IBUS_KEY_s, IBUS_KEY_cedilla, 0x015F, -IBUS_KEY_t, IBUS_KEY_minus, 0x0167, -IBUS_KEY_t, IBUS_KEY_period, 0x1E6B, -IBUS_KEY_t, IBUS_KEY_slash, 0x0167, -IBUS_KEY_t, IBUS_KEY_less, 0x0165, -IBUS_KEY_t, IBUS_KEY_M, 0x2122, -IBUS_KEY_t, IBUS_KEY_h, 0x00FE, -IBUS_KEY_t, IBUS_KEY_m, 0x2122, -IBUS_KEY_u, IBUS_KEY_quotedbl, 0x00FC, -IBUS_KEY_u, IBUS_KEY_apostrophe, 0x00FA, -IBUS_KEY_u, IBUS_KEY_asterisk, 0x016F, -IBUS_KEY_u, IBUS_KEY_comma, 0x0173, -IBUS_KEY_u, IBUS_KEY_minus, 0x016B, -IBUS_KEY_u, IBUS_KEY_slash, 0x00B5, -IBUS_KEY_u, IBUS_KEY_greater, 0x00FB, -IBUS_KEY_u, IBUS_KEY_asciicircum, 0x00FB, -IBUS_KEY_u, IBUS_KEY_underscore, 0x016B, -IBUS_KEY_u, IBUS_KEY_grave, 0x00F9, -IBUS_KEY_u, IBUS_KEY_u, 0x016D, -IBUS_KEY_u, IBUS_KEY_asciitilde, 0x0169, -IBUS_KEY_u, IBUS_KEY_diaeresis, 0x00FC, -IBUS_KEY_u, IBUS_KEY_acute, 0x00FA, -IBUS_KEY_v, IBUS_KEY_Z, 0x017D, -IBUS_KEY_v, IBUS_KEY_l, 0x007C, -IBUS_KEY_v, IBUS_KEY_z, 0x017E, -IBUS_KEY_w, IBUS_KEY_asciicircum, 0x0175, -IBUS_KEY_x, IBUS_KEY_0, 0x00A4, -IBUS_KEY_x, IBUS_KEY_O, 0x00A4, -IBUS_KEY_x, IBUS_KEY_o, 0x00A4, -IBUS_KEY_x, IBUS_KEY_x, 0x00D7, -IBUS_KEY_y, IBUS_KEY_quotedbl, 0x00FF, -IBUS_KEY_y, IBUS_KEY_apostrophe, 0x00FD, -IBUS_KEY_y, IBUS_KEY_minus, 0x00A5, -IBUS_KEY_y, IBUS_KEY_equal, 0x00A5, -IBUS_KEY_y, IBUS_KEY_asciicircum, 0x0177, -IBUS_KEY_y, IBUS_KEY_diaeresis, 0x00FF, -IBUS_KEY_y, IBUS_KEY_acute, 0x00FD, -IBUS_KEY_z, IBUS_KEY_apostrophe, 0x017A, -IBUS_KEY_z, IBUS_KEY_period, 0x017C, -IBUS_KEY_z, IBUS_KEY_less, 0x017E, -IBUS_KEY_bar, IBUS_KEY_C, 0x00A2, -IBUS_KEY_bar, IBUS_KEY_c, 0x00A2, -IBUS_KEY_asciitilde, IBUS_KEY_space, 0x007E, -IBUS_KEY_asciitilde, IBUS_KEY_A, 0x00C3, -IBUS_KEY_asciitilde, IBUS_KEY_E, 0x1EBC, -IBUS_KEY_asciitilde, IBUS_KEY_I, 0x0128, -IBUS_KEY_asciitilde, IBUS_KEY_N, 0x00D1, -IBUS_KEY_asciitilde, IBUS_KEY_O, 0x00D5, -IBUS_KEY_asciitilde, IBUS_KEY_U, 0x0168, -IBUS_KEY_asciitilde, IBUS_KEY_V, 0x1E7C, -IBUS_KEY_asciitilde, IBUS_KEY_Y, 0x1EF8, -IBUS_KEY_asciitilde, IBUS_KEY_a, 0x00E3, -IBUS_KEY_asciitilde, IBUS_KEY_e, 0x1EBD, -IBUS_KEY_asciitilde, IBUS_KEY_i, 0x0129, -IBUS_KEY_asciitilde, IBUS_KEY_n, 0x00F1, -IBUS_KEY_asciitilde, IBUS_KEY_o, 0x00F5, -IBUS_KEY_asciitilde, IBUS_KEY_u, 0x0169, -IBUS_KEY_asciitilde, IBUS_KEY_v, 0x1E7D, -IBUS_KEY_asciitilde, IBUS_KEY_y, 0x1EF9, -IBUS_KEY_asciitilde, IBUS_KEY_Acircumflex, 0x1EAA, -IBUS_KEY_asciitilde, IBUS_KEY_Ecircumflex, 0x1EC4, -IBUS_KEY_asciitilde, IBUS_KEY_Ocircumflex, 0x1ED6, -IBUS_KEY_asciitilde, IBUS_KEY_acircumflex, 0x1EAB, -IBUS_KEY_asciitilde, IBUS_KEY_ecircumflex, 0x1EC5, -IBUS_KEY_asciitilde, IBUS_KEY_ocircumflex, 0x1ED7, -IBUS_KEY_asciitilde, IBUS_KEY_Abreve, 0x1EB4, -IBUS_KEY_asciitilde, IBUS_KEY_abreve, 0x1EB5, -IBUS_KEY_asciitilde, IBUS_KEY_Greek_iotadieresis, 0x1FD7, -IBUS_KEY_asciitilde, IBUS_KEY_Greek_upsilondieresis, 0x1FE7, -IBUS_KEY_asciitilde, IBUS_KEY_Greek_alpha, 0x1FB6, -IBUS_KEY_asciitilde, IBUS_KEY_Greek_eta, 0x1FC6, -IBUS_KEY_asciitilde, IBUS_KEY_Greek_iota, 0x1FD6, -IBUS_KEY_asciitilde, IBUS_KEY_Greek_upsilon, 0x1FE6, -IBUS_KEY_asciitilde, IBUS_KEY_Greek_omega, 0x1FF6, -IBUS_KEY_asciitilde, 0x1F00, 0x1F06, -IBUS_KEY_asciitilde, 0x1F01, 0x1F07, -IBUS_KEY_asciitilde, 0x1F08, 0x1F0E, -IBUS_KEY_asciitilde, 0x1F09, 0x1F0F, -IBUS_KEY_asciitilde, 0x1F20, 0x1F26, -IBUS_KEY_asciitilde, 0x1F21, 0x1F27, -IBUS_KEY_asciitilde, 0x1F28, 0x1F2E, -IBUS_KEY_asciitilde, 0x1F29, 0x1F2F, -IBUS_KEY_asciitilde, 0x1F30, 0x1F36, -IBUS_KEY_asciitilde, 0x1F31, 0x1F37, -IBUS_KEY_asciitilde, 0x1F38, 0x1F3E, -IBUS_KEY_asciitilde, 0x1F39, 0x1F3F, -IBUS_KEY_asciitilde, 0x1F50, 0x1F56, -IBUS_KEY_asciitilde, 0x1F51, 0x1F57, -IBUS_KEY_asciitilde, 0x1F59, 0x1F5F, -IBUS_KEY_asciitilde, 0x1F60, 0x1F66, -IBUS_KEY_asciitilde, 0x1F61, 0x1F67, -IBUS_KEY_asciitilde, 0x1F68, 0x1F6E, -IBUS_KEY_asciitilde, 0x1F69, 0x1F6F, -IBUS_KEY_diaeresis, IBUS_KEY_apostrophe, 0x0385, -IBUS_KEY_diaeresis, IBUS_KEY_A, 0x00C4, -IBUS_KEY_diaeresis, IBUS_KEY_E, 0x00CB, -IBUS_KEY_diaeresis, IBUS_KEY_I, 0x00CF, -IBUS_KEY_diaeresis, IBUS_KEY_O, 0x00D6, -IBUS_KEY_diaeresis, IBUS_KEY_U, 0x00DC, -IBUS_KEY_diaeresis, IBUS_KEY_Y, 0x0178, -IBUS_KEY_diaeresis, IBUS_KEY_grave, 0x1FED, -IBUS_KEY_diaeresis, IBUS_KEY_a, 0x00E4, -IBUS_KEY_diaeresis, IBUS_KEY_e, 0x00EB, -IBUS_KEY_diaeresis, IBUS_KEY_i, 0x00EF, -IBUS_KEY_diaeresis, IBUS_KEY_o, 0x00F6, -IBUS_KEY_diaeresis, IBUS_KEY_u, 0x00FC, -IBUS_KEY_diaeresis, IBUS_KEY_y, 0x00FF, -IBUS_KEY_diaeresis, IBUS_KEY_asciitilde, 0x1FC1, -IBUS_KEY_diaeresis, IBUS_KEY_acute, 0x0385, -IBUS_KEY_diaeresis, IBUS_KEY_dead_grave, 0x1FED, -IBUS_KEY_diaeresis, IBUS_KEY_dead_acute, 0x0385, -IBUS_KEY_diaeresis, IBUS_KEY_dead_tilde, 0x1FC1, -IBUS_KEY_macron, IBUS_KEY_A, 0x0100, -IBUS_KEY_macron, IBUS_KEY_E, 0x0112, -IBUS_KEY_macron, IBUS_KEY_G, 0x1E20, -IBUS_KEY_macron, IBUS_KEY_I, 0x012A, -IBUS_KEY_macron, IBUS_KEY_O, 0x014C, -IBUS_KEY_macron, IBUS_KEY_U, 0x016A, -IBUS_KEY_macron, IBUS_KEY_Y, 0x0232, -IBUS_KEY_macron, IBUS_KEY_a, 0x0101, -IBUS_KEY_macron, IBUS_KEY_e, 0x0113, -IBUS_KEY_macron, IBUS_KEY_g, 0x1E21, -IBUS_KEY_macron, IBUS_KEY_i, 0x012B, -IBUS_KEY_macron, IBUS_KEY_o, 0x014D, -IBUS_KEY_macron, IBUS_KEY_u, 0x016B, -IBUS_KEY_macron, IBUS_KEY_y, 0x0233, -IBUS_KEY_macron, IBUS_KEY_Adiaeresis, 0x01DE, -IBUS_KEY_macron, IBUS_KEY_AE, 0x01E2, -IBUS_KEY_macron, IBUS_KEY_Otilde, 0x022C, -IBUS_KEY_macron, IBUS_KEY_Odiaeresis, 0x022A, -IBUS_KEY_macron, IBUS_KEY_Udiaeresis, 0x01D5, -IBUS_KEY_macron, IBUS_KEY_adiaeresis, 0x01DF, -IBUS_KEY_macron, IBUS_KEY_ae, 0x01E3, -IBUS_KEY_macron, IBUS_KEY_otilde, 0x022D, -IBUS_KEY_macron, IBUS_KEY_odiaeresis, 0x022B, -IBUS_KEY_macron, IBUS_KEY_udiaeresis, 0x01D6, -IBUS_KEY_macron, 0x01EA, 0x01EC, -IBUS_KEY_macron, 0x01EB, 0x01ED, -IBUS_KEY_macron, 0x0226, 0x01E0, -IBUS_KEY_macron, 0x0227, 0x01E1, -IBUS_KEY_macron, 0x022E, 0x0230, -IBUS_KEY_macron, 0x022F, 0x0231, -IBUS_KEY_macron, IBUS_KEY_Cyrillic_i, 0x04E3, -IBUS_KEY_macron, IBUS_KEY_Cyrillic_u, 0x04EF, -IBUS_KEY_macron, IBUS_KEY_Cyrillic_I, 0x04E2, -IBUS_KEY_macron, IBUS_KEY_Cyrillic_U, 0x04EE, -IBUS_KEY_macron, IBUS_KEY_Greek_ALPHA, 0x1FB9, -IBUS_KEY_macron, IBUS_KEY_Greek_IOTA, 0x1FD9, -IBUS_KEY_macron, IBUS_KEY_Greek_UPSILON, 0x1FE9, -IBUS_KEY_macron, IBUS_KEY_Greek_alpha, 0x1FB1, -IBUS_KEY_macron, IBUS_KEY_Greek_iota, 0x1FD1, -IBUS_KEY_macron, IBUS_KEY_Greek_upsilon, 0x1FE1, -IBUS_KEY_macron, 0x1E36, 0x1E38, -IBUS_KEY_macron, 0x1E37, 0x1E39, -IBUS_KEY_macron, 0x1E5A, 0x1E5C, -IBUS_KEY_macron, 0x1E5B, 0x1E5D, -IBUS_KEY_acute, IBUS_KEY_A, 0x00C1, -IBUS_KEY_acute, IBUS_KEY_C, 0x0106, -IBUS_KEY_acute, IBUS_KEY_E, 0x00C9, -IBUS_KEY_acute, IBUS_KEY_G, 0x01F4, -IBUS_KEY_acute, IBUS_KEY_I, 0x00CD, -IBUS_KEY_acute, IBUS_KEY_K, 0x1E30, -IBUS_KEY_acute, IBUS_KEY_L, 0x0139, -IBUS_KEY_acute, IBUS_KEY_M, 0x1E3E, -IBUS_KEY_acute, IBUS_KEY_N, 0x0143, -IBUS_KEY_acute, IBUS_KEY_O, 0x00D3, -IBUS_KEY_acute, IBUS_KEY_P, 0x1E54, -IBUS_KEY_acute, IBUS_KEY_R, 0x0154, -IBUS_KEY_acute, IBUS_KEY_S, 0x015A, -IBUS_KEY_acute, IBUS_KEY_U, 0x00DA, -IBUS_KEY_acute, IBUS_KEY_W, 0x1E82, -IBUS_KEY_acute, IBUS_KEY_Y, 0x00DD, -IBUS_KEY_acute, IBUS_KEY_Z, 0x0179, -IBUS_KEY_acute, IBUS_KEY_a, 0x00E1, -IBUS_KEY_acute, IBUS_KEY_c, 0x0107, -IBUS_KEY_acute, IBUS_KEY_e, 0x00E9, -IBUS_KEY_acute, IBUS_KEY_g, 0x01F5, -IBUS_KEY_acute, IBUS_KEY_i, 0x00ED, -IBUS_KEY_acute, IBUS_KEY_k, 0x1E31, -IBUS_KEY_acute, IBUS_KEY_l, 0x013A, -IBUS_KEY_acute, IBUS_KEY_m, 0x1E3F, -IBUS_KEY_acute, IBUS_KEY_n, 0x0144, -IBUS_KEY_acute, IBUS_KEY_o, 0x00F3, -IBUS_KEY_acute, IBUS_KEY_p, 0x1E55, -IBUS_KEY_acute, IBUS_KEY_r, 0x0155, -IBUS_KEY_acute, IBUS_KEY_s, 0x015B, -IBUS_KEY_acute, IBUS_KEY_u, 0x00FA, -IBUS_KEY_acute, IBUS_KEY_w, 0x1E83, -IBUS_KEY_acute, IBUS_KEY_y, 0x00FD, -IBUS_KEY_acute, IBUS_KEY_z, 0x017A, -IBUS_KEY_acute, IBUS_KEY_Acircumflex, 0x1EA4, -IBUS_KEY_acute, IBUS_KEY_Aring, 0x01FA, -IBUS_KEY_acute, IBUS_KEY_AE, 0x01FC, -IBUS_KEY_acute, IBUS_KEY_Ccedilla, 0x1E08, -IBUS_KEY_acute, IBUS_KEY_Ecircumflex, 0x1EBE, -IBUS_KEY_acute, IBUS_KEY_Idiaeresis, 0x1E2E, -IBUS_KEY_acute, IBUS_KEY_Ocircumflex, 0x1ED0, -IBUS_KEY_acute, IBUS_KEY_Otilde, 0x1E4C, -IBUS_KEY_acute, IBUS_KEY_Ooblique, 0x01FE, -IBUS_KEY_acute, IBUS_KEY_Udiaeresis, 0x01D7, -IBUS_KEY_acute, IBUS_KEY_acircumflex, 0x1EA5, -IBUS_KEY_acute, IBUS_KEY_aring, 0x01FB, -IBUS_KEY_acute, IBUS_KEY_ae, 0x01FD, -IBUS_KEY_acute, IBUS_KEY_ccedilla, 0x1E09, -IBUS_KEY_acute, IBUS_KEY_ecircumflex, 0x1EBF, -IBUS_KEY_acute, IBUS_KEY_idiaeresis, 0x1E2F, -IBUS_KEY_acute, IBUS_KEY_ocircumflex, 0x1ED1, -IBUS_KEY_acute, IBUS_KEY_otilde, 0x1E4D, -IBUS_KEY_acute, IBUS_KEY_oslash, 0x01FF, -IBUS_KEY_acute, IBUS_KEY_udiaeresis, 0x01D8, -IBUS_KEY_acute, IBUS_KEY_Abreve, 0x1EAE, -IBUS_KEY_acute, IBUS_KEY_abreve, 0x1EAF, -IBUS_KEY_acute, IBUS_KEY_Emacron, 0x1E16, -IBUS_KEY_acute, IBUS_KEY_emacron, 0x1E17, -IBUS_KEY_acute, IBUS_KEY_Omacron, 0x1E52, -IBUS_KEY_acute, IBUS_KEY_Utilde, 0x1E78, -IBUS_KEY_acute, IBUS_KEY_omacron, 0x1E53, -IBUS_KEY_acute, IBUS_KEY_utilde, 0x1E79, -IBUS_KEY_acute, IBUS_KEY_Cyrillic_ghe, 0x0453, -IBUS_KEY_acute, IBUS_KEY_Cyrillic_ka, 0x045C, -IBUS_KEY_acute, IBUS_KEY_Cyrillic_GHE, 0x0403, -IBUS_KEY_acute, IBUS_KEY_Cyrillic_KA, 0x040C, -IBUS_KEY_acute, IBUS_KEY_Greek_iotadieresis, 0x0390, -IBUS_KEY_acute, IBUS_KEY_Greek_upsilondieresis, 0x03B0, -IBUS_KEY_acute, IBUS_KEY_Greek_ALPHA, 0x0386, -IBUS_KEY_acute, IBUS_KEY_Greek_EPSILON, 0x0388, -IBUS_KEY_acute, IBUS_KEY_Greek_ETA, 0x0389, -IBUS_KEY_acute, IBUS_KEY_Greek_IOTA, 0x038A, -IBUS_KEY_acute, IBUS_KEY_Greek_OMICRON, 0x038C, -IBUS_KEY_acute, IBUS_KEY_Greek_UPSILON, 0x038E, -IBUS_KEY_acute, IBUS_KEY_Greek_OMEGA, 0x038F, -IBUS_KEY_acute, IBUS_KEY_Greek_alpha, 0x03AC, -IBUS_KEY_acute, IBUS_KEY_Greek_epsilon, 0x03AD, -IBUS_KEY_acute, IBUS_KEY_Greek_eta, 0x03AE, -IBUS_KEY_acute, IBUS_KEY_Greek_iota, 0x03AF, -IBUS_KEY_acute, IBUS_KEY_Greek_omicron, 0x03CC, -IBUS_KEY_acute, IBUS_KEY_Greek_upsilon, 0x03CD, -IBUS_KEY_acute, IBUS_KEY_Greek_omega, 0x03CE, -IBUS_KEY_acute, 0x1F00, 0x1F04, -IBUS_KEY_acute, 0x1F01, 0x1F05, -IBUS_KEY_acute, 0x1F08, 0x1F0C, -IBUS_KEY_acute, 0x1F09, 0x1F0D, -IBUS_KEY_acute, 0x1F10, 0x1F14, -IBUS_KEY_acute, 0x1F11, 0x1F15, -IBUS_KEY_acute, 0x1F18, 0x1F1C, -IBUS_KEY_acute, 0x1F19, 0x1F1D, -IBUS_KEY_acute, 0x1F20, 0x1F24, -IBUS_KEY_acute, 0x1F21, 0x1F25, -IBUS_KEY_acute, 0x1F28, 0x1F2C, -IBUS_KEY_acute, 0x1F29, 0x1F2D, -IBUS_KEY_acute, 0x1F30, 0x1F34, -IBUS_KEY_acute, 0x1F31, 0x1F35, -IBUS_KEY_acute, 0x1F38, 0x1F3C, -IBUS_KEY_acute, 0x1F39, 0x1F3D, -IBUS_KEY_acute, 0x1F40, 0x1F44, -IBUS_KEY_acute, 0x1F41, 0x1F45, -IBUS_KEY_acute, 0x1F48, 0x1F4C, -IBUS_KEY_acute, 0x1F49, 0x1F4D, -IBUS_KEY_acute, 0x1F50, 0x1F54, -IBUS_KEY_acute, 0x1F51, 0x1F55, -IBUS_KEY_acute, 0x1F59, 0x1F5D, -IBUS_KEY_acute, 0x1F60, 0x1F64, -IBUS_KEY_acute, 0x1F61, 0x1F65, -IBUS_KEY_acute, 0x1F68, 0x1F6C, -IBUS_KEY_acute, 0x1F69, 0x1F6D, -IBUS_KEY_cedilla, IBUS_KEY_C, 0x00C7, -IBUS_KEY_cedilla, IBUS_KEY_D, 0x1E10, -IBUS_KEY_cedilla, IBUS_KEY_E, 0x0228, -IBUS_KEY_cedilla, IBUS_KEY_G, 0x0122, -IBUS_KEY_cedilla, IBUS_KEY_H, 0x1E28, -IBUS_KEY_cedilla, IBUS_KEY_K, 0x0136, -IBUS_KEY_cedilla, IBUS_KEY_L, 0x013B, -IBUS_KEY_cedilla, IBUS_KEY_N, 0x0145, -IBUS_KEY_cedilla, IBUS_KEY_R, 0x0156, -IBUS_KEY_cedilla, IBUS_KEY_S, 0x015E, -IBUS_KEY_cedilla, IBUS_KEY_T, 0x0162, -IBUS_KEY_cedilla, IBUS_KEY_c, 0x00E7, -IBUS_KEY_cedilla, IBUS_KEY_d, 0x1E11, -IBUS_KEY_cedilla, IBUS_KEY_e, 0x0229, -IBUS_KEY_cedilla, IBUS_KEY_g, 0x0123, -IBUS_KEY_cedilla, IBUS_KEY_h, 0x1E29, -IBUS_KEY_cedilla, IBUS_KEY_k, 0x0137, -IBUS_KEY_cedilla, IBUS_KEY_l, 0x013C, -IBUS_KEY_cedilla, IBUS_KEY_n, 0x0146, -IBUS_KEY_cedilla, IBUS_KEY_r, 0x0157, -IBUS_KEY_cedilla, IBUS_KEY_s, 0x015F, -IBUS_KEY_cedilla, IBUS_KEY_t, 0x0163, -IBUS_KEY_breve, IBUS_KEY_G, 0x011E, -IBUS_KEY_breve, IBUS_KEY_g, 0x011F, -0x05B4, IBUS_KEY_hebrew_yod, 0xFB1D, -0x05B7, 0x05F2, 0xFB1F, -0x05B7, IBUS_KEY_hebrew_aleph, 0xFB2E, -0x05B8, IBUS_KEY_hebrew_aleph, 0xFB2F, -0x05B9, IBUS_KEY_hebrew_waw, 0xFB4B, -0x05BC, IBUS_KEY_hebrew_aleph, 0xFB30, -0x05BC, IBUS_KEY_hebrew_beth, 0xFB31, -0x05BC, IBUS_KEY_hebrew_gimmel, 0xFB32, -0x05BC, IBUS_KEY_hebrew_daleth, 0xFB33, -0x05BC, IBUS_KEY_hebrew_he, 0xFB34, -0x05BC, IBUS_KEY_hebrew_waw, 0xFB35, -0x05BC, IBUS_KEY_hebrew_zayin, 0xFB36, -0x05BC, IBUS_KEY_hebrew_teth, 0xFB38, -0x05BC, IBUS_KEY_hebrew_yod, 0xFB39, -0x05BC, IBUS_KEY_hebrew_finalkaph, 0xFB3A, -0x05BC, IBUS_KEY_hebrew_kaph, 0xFB3B, -0x05BC, IBUS_KEY_hebrew_lamed, 0xFB3C, -0x05BC, IBUS_KEY_hebrew_mem, 0xFB3E, -0x05BC, IBUS_KEY_hebrew_nun, 0xFB40, -0x05BC, IBUS_KEY_hebrew_samekh, 0xFB41, -0x05BC, IBUS_KEY_hebrew_finalpe, 0xFB43, -0x05BC, IBUS_KEY_hebrew_pe, 0xFB44, -0x05BC, IBUS_KEY_hebrew_zadi, 0xFB46, -0x05BC, IBUS_KEY_hebrew_qoph, 0xFB47, -0x05BC, IBUS_KEY_hebrew_resh, 0xFB48, -0x05BC, IBUS_KEY_hebrew_shin, 0xFB49, -0x05BC, IBUS_KEY_hebrew_taw, 0xFB4A, -0x05BF, IBUS_KEY_hebrew_beth, 0xFB4C, -0x05BF, IBUS_KEY_hebrew_kaph, 0xFB4D, -0x05BF, IBUS_KEY_hebrew_pe, 0xFB4E, -0x05C1, IBUS_KEY_hebrew_shin, 0xFB2A, -0x05C1, 0xFB49, 0xFB2C, -0x05C2, IBUS_KEY_hebrew_shin, 0xFB2B, -0x05C2, 0xFB49, 0xFB2D, -0x0653, IBUS_KEY_Arabic_alef, 0x0622, -0x0654, IBUS_KEY_Arabic_alef, 0x0623, -0x0654, IBUS_KEY_Arabic_waw, 0x0624, -0x0654, IBUS_KEY_Arabic_yeh, 0x0626, -0x0654, 0x06C1, 0x06C2, -0x0654, 0x06D2, 0x06D3, -0x0654, 0x06D5, 0x06C0, -0x0655, IBUS_KEY_Arabic_alef, 0x0625, -IBUS_KEY_Cyrillic_pe, IBUS_KEY_Cyrillic_a, 0x00A7, -IBUS_KEY_Cyrillic_IE, IBUS_KEY_equal, 0x20AC, -IBUS_KEY_Cyrillic_EN, IBUS_KEY_Cyrillic_o, 0x2116, -IBUS_KEY_Cyrillic_EN, IBUS_KEY_Cyrillic_O, 0x2116, -IBUS_KEY_Cyrillic_ES, IBUS_KEY_equal, 0x20AC, -IBUS_KEY_Greek_ALPHA, IBUS_KEY_apostrophe, 0x0386, -IBUS_KEY_Greek_EPSILON, IBUS_KEY_apostrophe, 0x0388, -IBUS_KEY_Greek_ETA, IBUS_KEY_apostrophe, 0x0389, -IBUS_KEY_Greek_IOTA, IBUS_KEY_quotedbl, 0x03AA, -IBUS_KEY_Greek_IOTA, IBUS_KEY_apostrophe, 0x038A, -IBUS_KEY_Greek_OMICRON, IBUS_KEY_apostrophe, 0x038C, -IBUS_KEY_Greek_UPSILON, IBUS_KEY_quotedbl, 0x03AB, -IBUS_KEY_Greek_UPSILON, IBUS_KEY_apostrophe, 0x038E, -IBUS_KEY_Greek_OMEGA, IBUS_KEY_apostrophe, 0x038F, -IBUS_KEY_Greek_alpha, IBUS_KEY_apostrophe, 0x03AC, -IBUS_KEY_Greek_epsilon, IBUS_KEY_apostrophe, 0x03AD, -IBUS_KEY_Greek_eta, IBUS_KEY_apostrophe, 0x03AE, -IBUS_KEY_Greek_iota, IBUS_KEY_quotedbl, 0x03CA, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x03AF, -IBUS_KEY_Greek_iota, IBUS_KEY_Greek_alphaaccent, 0x1FB4, -IBUS_KEY_Greek_iota, IBUS_KEY_Greek_etaaccent, 0x1FC4, -IBUS_KEY_Greek_iota, IBUS_KEY_Greek_omegaaccent, 0x1FF4, -IBUS_KEY_Greek_iota, IBUS_KEY_Greek_ALPHA, 0x1FBC, -IBUS_KEY_Greek_iota, IBUS_KEY_Greek_ETA, 0x1FCC, -IBUS_KEY_Greek_iota, IBUS_KEY_Greek_OMEGA, 0x1FFC, -IBUS_KEY_Greek_iota, IBUS_KEY_Greek_alpha, 0x1FB3, -IBUS_KEY_Greek_iota, IBUS_KEY_Greek_eta, 0x1FC3, -IBUS_KEY_Greek_iota, IBUS_KEY_Greek_omega, 0x1FF3, -IBUS_KEY_Greek_iota, 0x1F00, 0x1F80, -IBUS_KEY_Greek_iota, 0x1F01, 0x1F81, -IBUS_KEY_Greek_iota, 0x1F02, 0x1F82, -IBUS_KEY_Greek_iota, 0x1F03, 0x1F83, -IBUS_KEY_Greek_iota, 0x1F04, 0x1F84, -IBUS_KEY_Greek_iota, 0x1F05, 0x1F85, -IBUS_KEY_Greek_iota, 0x1F06, 0x1F86, -IBUS_KEY_Greek_iota, 0x1F07, 0x1F87, -IBUS_KEY_Greek_iota, 0x1F08, 0x1F88, -IBUS_KEY_Greek_iota, 0x1F09, 0x1F89, -IBUS_KEY_Greek_iota, 0x1F0A, 0x1F8A, -IBUS_KEY_Greek_iota, 0x1F0B, 0x1F8B, -IBUS_KEY_Greek_iota, 0x1F0C, 0x1F8C, -IBUS_KEY_Greek_iota, 0x1F0D, 0x1F8D, -IBUS_KEY_Greek_iota, 0x1F0E, 0x1F8E, -IBUS_KEY_Greek_iota, 0x1F0F, 0x1F8F, -IBUS_KEY_Greek_iota, 0x1F20, 0x1F90, -IBUS_KEY_Greek_iota, 0x1F21, 0x1F91, -IBUS_KEY_Greek_iota, 0x1F22, 0x1F92, -IBUS_KEY_Greek_iota, 0x1F23, 0x1F93, -IBUS_KEY_Greek_iota, 0x1F24, 0x1F94, -IBUS_KEY_Greek_iota, 0x1F25, 0x1F95, -IBUS_KEY_Greek_iota, 0x1F26, 0x1F96, -IBUS_KEY_Greek_iota, 0x1F27, 0x1F97, -IBUS_KEY_Greek_iota, 0x1F28, 0x1F98, -IBUS_KEY_Greek_iota, 0x1F29, 0x1F99, -IBUS_KEY_Greek_iota, 0x1F2A, 0x1F9A, -IBUS_KEY_Greek_iota, 0x1F2B, 0x1F9B, -IBUS_KEY_Greek_iota, 0x1F2C, 0x1F9C, -IBUS_KEY_Greek_iota, 0x1F2D, 0x1F9D, -IBUS_KEY_Greek_iota, 0x1F2E, 0x1F9E, -IBUS_KEY_Greek_iota, 0x1F2F, 0x1F9F, -IBUS_KEY_Greek_iota, 0x1F60, 0x1FA0, -IBUS_KEY_Greek_iota, 0x1F61, 0x1FA1, -IBUS_KEY_Greek_iota, 0x1F62, 0x1FA2, -IBUS_KEY_Greek_iota, 0x1F63, 0x1FA3, -IBUS_KEY_Greek_iota, 0x1F64, 0x1FA4, -IBUS_KEY_Greek_iota, 0x1F65, 0x1FA5, -IBUS_KEY_Greek_iota, 0x1F66, 0x1FA6, -IBUS_KEY_Greek_iota, 0x1F67, 0x1FA7, -IBUS_KEY_Greek_iota, 0x1F68, 0x1FA8, -IBUS_KEY_Greek_iota, 0x1F69, 0x1FA9, -IBUS_KEY_Greek_iota, 0x1F6A, 0x1FAA, -IBUS_KEY_Greek_iota, 0x1F6B, 0x1FAB, -IBUS_KEY_Greek_iota, 0x1F6C, 0x1FAC, -IBUS_KEY_Greek_iota, 0x1F6D, 0x1FAD, -IBUS_KEY_Greek_iota, 0x1F6E, 0x1FAE, -IBUS_KEY_Greek_iota, 0x1F6F, 0x1FAF, -IBUS_KEY_Greek_iota, 0x1F70, 0x1FB2, -IBUS_KEY_Greek_iota, 0x1F74, 0x1FC2, -IBUS_KEY_Greek_iota, 0x1F7C, 0x1FF2, -IBUS_KEY_Greek_iota, 0x1FB6, 0x1FB7, -IBUS_KEY_Greek_iota, 0x1FC6, 0x1FC7, -IBUS_KEY_Greek_iota, 0x1FF6, 0x1FF7, -IBUS_KEY_Greek_omicron, IBUS_KEY_apostrophe, 0x03CC, -IBUS_KEY_Greek_upsilon, IBUS_KEY_quotedbl, 0x03CB, -IBUS_KEY_Greek_upsilon, IBUS_KEY_apostrophe, 0x03CD, -IBUS_KEY_Greek_omega, IBUS_KEY_apostrophe, 0x03CE, -IBUS_KEY_lessthanequal, 0x0338, 0x2270, -IBUS_KEY_greaterthanequal, 0x0338, 0x2271, -IBUS_KEY_approximate, 0x0338, 0x2247, -IBUS_KEY_identical, 0x0338, 0x2262, -IBUS_KEY_includedin, 0x0338, 0x2284, -IBUS_KEY_includes, 0x0338, 0x2285, -0x093C, 0x0915, 0x0958, -0x093C, 0x0916, 0x0959, -0x093C, 0x0917, 0x095A, -0x093C, 0x091C, 0x095B, -0x093C, 0x0921, 0x095C, -0x093C, 0x0922, 0x095D, -0x093C, 0x0928, 0x0929, -0x093C, 0x092B, 0x095E, -0x093C, 0x092F, 0x095F, -0x093C, 0x0930, 0x0931, -0x093C, 0x0933, 0x0934, -0x09BC, 0x09A1, 0x09DC, -0x09BC, 0x09A2, 0x09DD, -0x09BC, 0x09AF, 0x09DF, -0x09C7, 0x09BE, 0x09CB, -0x09C7, 0x09D7, 0x09CC, -0x0A3C, 0x0A16, 0x0A59, -0x0A3C, 0x0A17, 0x0A5A, -0x0A3C, 0x0A1C, 0x0A5B, -0x0A3C, 0x0A2B, 0x0A5E, -0x0A3C, 0x0A32, 0x0A33, -0x0A3C, 0x0A38, 0x0A36, -0x0B3C, 0x0B21, 0x0B5C, -0x0B3C, 0x0B22, 0x0B5D, -0x0B47, 0x0B3E, 0x0B4B, -0x0B47, 0x0B56, 0x0B48, -0x0B47, 0x0B57, 0x0B4C, -IBUS_KEY_leftcaret, 0x0338, 0x226E, -IBUS_KEY_rightcaret, 0x0338, 0x226F, -IBUS_KEY_underbar, IBUS_KEY_parenleft, 0x208D, -IBUS_KEY_underbar, IBUS_KEY_parenright, 0x208E, -IBUS_KEY_underbar, IBUS_KEY_plus, 0x208A, -IBUS_KEY_underbar, IBUS_KEY_0, 0x2080, -IBUS_KEY_underbar, IBUS_KEY_1, 0x2081, -IBUS_KEY_underbar, IBUS_KEY_2, 0x2082, -IBUS_KEY_underbar, IBUS_KEY_3, 0x2083, -IBUS_KEY_underbar, IBUS_KEY_4, 0x2084, -IBUS_KEY_underbar, IBUS_KEY_5, 0x2085, -IBUS_KEY_underbar, IBUS_KEY_6, 0x2086, -IBUS_KEY_underbar, IBUS_KEY_7, 0x2087, -IBUS_KEY_underbar, IBUS_KEY_8, 0x2088, -IBUS_KEY_underbar, IBUS_KEY_9, 0x2089, -IBUS_KEY_underbar, IBUS_KEY_equal, 0x208C, -0x0BC6, 0x0BBE, 0x0BCA, -0x0BC6, 0x0BD7, 0x0BCC, -IBUS_KEY_underbar, 0x2212, 0x208B, -IBUS_KEY_underbar, IBUS_KEY_KP_Space, 0x2082, -IBUS_KEY_underbar, IBUS_KEY_KP_Add, 0x208A, -IBUS_KEY_underbar, IBUS_KEY_KP_0, 0x2080, -IBUS_KEY_underbar, IBUS_KEY_KP_1, 0x2081, -IBUS_KEY_underbar, IBUS_KEY_KP_2, 0x2082, -IBUS_KEY_underbar, IBUS_KEY_KP_3, 0x2083, -IBUS_KEY_underbar, IBUS_KEY_KP_4, 0x2084, -IBUS_KEY_underbar, IBUS_KEY_KP_5, 0x2085, -IBUS_KEY_underbar, IBUS_KEY_KP_6, 0x2086, -IBUS_KEY_underbar, IBUS_KEY_KP_7, 0x2087, -IBUS_KEY_underbar, IBUS_KEY_KP_8, 0x2088, -IBUS_KEY_underbar, IBUS_KEY_KP_9, 0x2089, -IBUS_KEY_underbar, IBUS_KEY_KP_Equal, 0x208C, -0x0BC7, 0x0BBE, 0x0BCB, -0x0BD7, 0x0B92, 0x0B94, -IBUS_KEY_rightshoe, 0x0338, 0x2285, -IBUS_KEY_leftshoe, 0x0338, 0x2284, -IBUS_KEY_righttack, 0x0338, 0x22AC, -0x0C46, 0x0C56, 0x0C48, -0x0CBF, 0x0CD5, 0x0CC0, -0x0CC6, 0x0CC2, 0x0CCA, -0x0CC6, 0x0CD5, 0x0CC7, -0x0CC6, 0x0CD6, 0x0CC8, -0x0CCA, 0x0CD5, 0x0CCB, -0x0D46, 0x0D3E, 0x0D4A, -0x0D46, 0x0D57, 0x0D4C, -0x0D47, 0x0D3E, 0x0D4B, -0x0DD9, 0x0DCA, 0x0DDA, -0x0DD9, 0x0DCF, 0x0DDC, -0x0DD9, 0x0DDF, 0x0DDE, -0x0DDC, 0x0DCA, 0x0DDD, -0x0F71, 0x0F72, 0x0F73, -0x0F71, 0x0F74, 0x0F75, -0x0F71, 0x0F80, 0x0F81, -0x0F90, 0x0FB5, 0x0FB9, -0x0F92, 0x0FB7, 0x0F93, -0x0F9C, 0x0FB7, 0x0F9D, -0x0FA1, 0x0FB7, 0x0FA2, -0x0FA6, 0x0FB7, 0x0FA7, -0x0FAB, 0x0FB7, 0x0FAC, -0x0FB2, 0x0F80, 0x0F76, -0x0FB3, 0x0F80, 0x0F78, -0x0FB5, 0x0F40, 0x0F69, -0x0FB7, 0x0F42, 0x0F43, -0x0FB7, 0x0F4C, 0x0F4D, -0x0FB7, 0x0F51, 0x0F52, -0x0FB7, 0x0F56, 0x0F57, -0x0FB7, 0x0F5B, 0x0F5C, -0x102E, 0x1025, 0x1026, -0x1100, 0x1100, 0x1101, -0x1102, 0x1100, 0x1113, -0x1102, 0x1102, 0x1114, -0x1102, 0x1103, 0x1115, -0x1102, 0x1107, 0x1116, -0x1103, 0x1100, 0x1117, -0x1103, 0x1103, 0x1104, -0x1105, 0x1102, 0x1118, -0x1105, 0x1105, 0x1119, -0x1105, 0x110B, 0x111B, -0x1105, 0x1112, 0x111A, -0x1106, 0x1107, 0x111C, -0x1106, 0x110B, 0x111D, -0x1107, 0x1100, 0x111E, -0x1107, 0x1102, 0x111F, -0x1107, 0x1103, 0x1120, -0x1107, 0x1107, 0x1108, -0x1107, 0x1109, 0x1121, -0x1107, 0x110A, 0x1125, -0x1107, 0x110B, 0x112B, -0x1107, 0x110C, 0x1127, -0x1107, 0x110E, 0x1128, -0x1107, 0x1110, 0x1129, -0x1107, 0x1111, 0x112A, -0x1107, 0x112B, 0x112C, -0x1107, 0x112D, 0x1122, -0x1107, 0x112F, 0x1123, -0x1107, 0x1132, 0x1124, -0x1107, 0x1136, 0x1126, -0x1108, 0x110B, 0x112C, -0x1109, 0x1100, 0x112D, -0x1109, 0x1102, 0x112E, -0x1109, 0x1103, 0x112F, -0x1109, 0x1105, 0x1130, -0x1109, 0x1106, 0x1131, -0x1109, 0x1107, 0x1132, -0x1109, 0x1109, 0x110A, -0x1109, 0x110A, 0x1134, -0x1109, 0x110B, 0x1135, -0x1109, 0x110C, 0x1136, -0x1109, 0x110E, 0x1137, -0x1109, 0x110F, 0x1138, -0x1109, 0x1110, 0x1139, -0x1109, 0x1111, 0x113A, -0x1109, 0x1112, 0x113B, -0x1109, 0x111E, 0x1133, -0x110A, 0x1109, 0x1134, -0x110B, 0x1100, 0x1141, -0x110B, 0x1103, 0x1142, -0x110B, 0x1106, 0x1143, -0x110B, 0x1107, 0x1144, -0x110B, 0x1109, 0x1145, -0x110B, 0x110B, 0x1147, -0x110B, 0x110C, 0x1148, -0x110B, 0x110E, 0x1149, -0x110B, 0x1110, 0x114A, -0x110B, 0x1111, 0x114B, -0x110B, 0x1140, 0x1146, -0x110C, 0x110B, 0x114D, -0x110C, 0x110C, 0x110D, -0x110E, 0x110F, 0x1152, -0x110E, 0x1112, 0x1153, -0x1111, 0x1107, 0x1156, -0x1111, 0x110B, 0x1157, -0x1112, 0x1112, 0x1158, -0x1121, 0x1100, 0x1122, -0x1121, 0x1103, 0x1123, -0x1121, 0x1107, 0x1124, -0x1121, 0x1109, 0x1125, -0x1121, 0x110C, 0x1126, -0x1132, 0x1100, 0x1133, -0x113C, 0x113C, 0x113D, -0x113E, 0x113E, 0x113F, -0x114E, 0x114E, 0x114F, -0x1150, 0x1150, 0x1151, -0x1161, 0x1169, 0x1176, -0x1161, 0x116E, 0x1177, -0x1161, 0x1175, 0x1162, -0x1163, 0x1169, 0x1178, -0x1163, 0x116D, 0x1179, -0x1163, 0x1175, 0x1164, -0x1165, 0x1169, 0x117A, -0x1165, 0x116E, 0x117B, -0x1165, 0x1173, 0x117C, -0x1165, 0x1175, 0x1166, -0x1167, 0x1169, 0x117D, -0x1167, 0x116E, 0x117E, -0x1167, 0x1175, 0x1168, -0x1169, 0x1161, 0x116A, -0x1169, 0x1162, 0x116B, -0x1169, 0x1165, 0x117F, -0x1169, 0x1166, 0x1180, -0x1169, 0x1168, 0x1181, -0x1169, 0x1169, 0x1182, -0x1169, 0x116E, 0x1183, -0x1169, 0x1175, 0x116C, -0x116A, 0x1175, 0x116B, -0x116D, 0x1163, 0x1184, -0x116D, 0x1164, 0x1185, -0x116D, 0x1167, 0x1186, -0x116D, 0x1169, 0x1187, -0x116D, 0x1175, 0x1188, -0x116E, 0x1161, 0x1189, -0x116E, 0x1162, 0x118A, -0x116E, 0x1165, 0x116F, -0x116E, 0x1166, 0x1170, -0x116E, 0x1168, 0x118C, -0x116E, 0x116E, 0x118D, -0x116E, 0x1175, 0x1171, -0x116E, 0x117C, 0x118B, -0x116F, 0x1173, 0x118B, -0x116F, 0x1175, 0x1170, -0x1172, 0x1161, 0x118E, -0x1172, 0x1165, 0x118F, -0x1172, 0x1166, 0x1190, -0x1172, 0x1167, 0x1191, -0x1172, 0x1168, 0x1192, -0x1172, 0x116E, 0x1193, -0x1172, 0x1175, 0x1194, -0x1173, 0x116E, 0x1195, -0x1173, 0x1173, 0x1196, -0x1173, 0x1175, 0x1174, -0x1174, 0x116E, 0x1197, -0x1175, 0x1161, 0x1198, -0x1175, 0x1163, 0x1199, -0x1175, 0x1169, 0x119A, -0x1175, 0x116E, 0x119B, -0x1175, 0x1173, 0x119C, -0x1175, 0x119E, 0x119D, -0x119E, 0x1165, 0x119F, -0x119E, 0x116E, 0x11A0, -0x119E, 0x1175, 0x11A1, -0x119E, 0x119E, 0x11A2, -0x11A8, 0x11A8, 0x11A9, -0x11A8, 0x11AF, 0x11C3, -0x11A8, 0x11BA, 0x11AA, -0x11A8, 0x11E7, 0x11C4, -0x11AA, 0x11A8, 0x11C4, -0x11AB, 0x11A8, 0x11C5, -0x11AB, 0x11AE, 0x11C6, -0x11AB, 0x11BA, 0x11C7, -0x11AB, 0x11BD, 0x11AC, -0x11AB, 0x11C0, 0x11C9, -0x11AB, 0x11C2, 0x11AD, -0x11AB, 0x11EB, 0x11C8, -0x11AE, 0x11A8, 0x11CA, -0x11AE, 0x11AF, 0x11CB, -0x11AF, 0x11A8, 0x11B0, -0x11AF, 0x11AA, 0x11CC, -0x11AF, 0x11AB, 0x11CD, -0x11AF, 0x11AE, 0x11CE, -0x11AF, 0x11AF, 0x11D0, -0x11AF, 0x11B7, 0x11B1, -0x11AF, 0x11B8, 0x11B2, -0x11AF, 0x11B9, 0x11D3, -0x11AF, 0x11BA, 0x11B3, -0x11AF, 0x11BB, 0x11D6, -0x11AF, 0x11BF, 0x11D8, -0x11AF, 0x11C0, 0x11B4, -0x11AF, 0x11C1, 0x11B5, -0x11AF, 0x11C2, 0x11B6, -0x11AF, 0x11DA, 0x11D1, -0x11AF, 0x11DD, 0x11D2, -0x11AF, 0x11E5, 0x11D4, -0x11AF, 0x11E6, 0x11D5, -0x11AF, 0x11EB, 0x11D7, -0x11AF, 0x11F9, 0x11D9, -0x11B0, 0x11BA, 0x11CC, -0x11B1, 0x11A8, 0x11D1, -0x11B1, 0x11BA, 0x11D2, -0x11B2, 0x11BA, 0x11D3, -0x11B2, 0x11BC, 0x11D5, -0x11B2, 0x11C2, 0x11D4, -0x11B3, 0x11BA, 0x11D6, -0x11B7, 0x11A8, 0x11DA, -0x11B7, 0x11AF, 0x11DB, -0x11B7, 0x11B8, 0x11DC, -0x11B7, 0x11BA, 0x11DD, -0x11B7, 0x11BB, 0x11DE, -0x11B7, 0x11BC, 0x11E2, -0x11B7, 0x11BE, 0x11E0, -0x11B7, 0x11C2, 0x11E1, -0x11B7, 0x11EB, 0x11DF, -0x11B8, 0x11AF, 0x11E3, -0x11B8, 0x11BA, 0x11B9, -0x11B8, 0x11BC, 0x11E6, -0x11B8, 0x11C1, 0x11E4, -0x11B8, 0x11C2, 0x11E5, -0x11BA, 0x11A8, 0x11E7, -0x11BA, 0x11AE, 0x11E8, -0x11BA, 0x11AF, 0x11E9, -0x11BA, 0x11B8, 0x11EA, -0x11BA, 0x11BA, 0x11BB, -0x11BC, 0x11A8, 0x11EC, -0x11BC, 0x11A9, 0x11ED, -0x11BC, 0x11BC, 0x11EE, -0x11BC, 0x11BF, 0x11EF, -0x11C1, 0x11B8, 0x11F3, -0x11C1, 0x11BC, 0x11F4, -0x11C2, 0x11AB, 0x11F5, -0x11C2, 0x11AF, 0x11F6, -0x11C2, 0x11B7, 0x11F7, -0x11C2, 0x11B8, 0x11F8, -0x11CE, 0x11C2, 0x11CF, -0x11DD, 0x11BA, 0x11DE, -0x11EC, 0x11A8, 0x11ED, -0x11F0, 0x11BA, 0x11F1, -0x11F0, 0x11EB, 0x11F2, -0x1FBF, IBUS_KEY_apostrophe, 0x1FCE, -0x1FBF, IBUS_KEY_grave, 0x1FCD, -0x1FBF, IBUS_KEY_asciitilde, 0x1FCF, -0x1FBF, IBUS_KEY_acute, 0x1FCE, -0x1FBF, IBUS_KEY_dead_grave, 0x1FCD, -0x1FBF, IBUS_KEY_dead_acute, 0x1FCE, -0x1FBF, IBUS_KEY_dead_tilde, 0x1FCF, -0x1FFE, IBUS_KEY_apostrophe, 0x1FDE, -0x1FFE, IBUS_KEY_grave, 0x1FDD, -0x1FFE, IBUS_KEY_asciitilde, 0x1FDF, -0x1FFE, IBUS_KEY_acute, 0x1FDE, -0x1FFE, IBUS_KEY_dead_grave, 0x1FDD, -0x1FFE, IBUS_KEY_dead_acute, 0x1FDE, -0x1FFE, IBUS_KEY_dead_tilde, 0x1FDF, -0x2203, 0x0338, 0x2204, -0x2208, 0x0338, 0x2209, -0x220B, 0x0338, 0x220C, -0x2223, 0x0338, 0x2224, -0x2225, 0x0338, 0x2226, -0x223C, 0x0338, 0x2241, -0x2243, 0x0338, 0x2244, -0x2248, 0x0338, 0x2249, -0x224D, 0x0338, 0x226D, -0x2272, 0x0338, 0x2274, -0x2273, 0x0338, 0x2275, -0x2276, 0x0338, 0x2278, -0x2277, 0x0338, 0x2279, -0x227A, 0x0338, 0x2280, -0x227B, 0x0338, 0x2281, -0x227C, 0x0338, 0x22E0, -0x227D, 0x0338, 0x22E1, -0x2286, 0x0338, 0x2288, -0x2287, 0x0338, 0x2289, -0x2291, 0x0338, 0x22E2, -0x2292, 0x0338, 0x22E3, -0x22A8, 0x0338, 0x22AD, -0x22A9, 0x0338, 0x22AE, -0x22AB, 0x0338, 0x22AF, -0x22B2, 0x0338, 0x22EA, -0x22B3, 0x0338, 0x22EB, -0x22B4, 0x0338, 0x22EC, -0x22B5, 0x0338, 0x22ED, -0x2ADD, 0x0338, 0x2ADC, -IBUS_KEY_KP_Divide, IBUS_KEY_D, 0x0110, -IBUS_KEY_KP_Divide, IBUS_KEY_G, 0x01E4, -IBUS_KEY_KP_Divide, IBUS_KEY_H, 0x0126, -IBUS_KEY_KP_Divide, IBUS_KEY_I, 0x0197, -IBUS_KEY_KP_Divide, IBUS_KEY_L, 0x0141, -IBUS_KEY_KP_Divide, IBUS_KEY_O, 0x00D8, -IBUS_KEY_KP_Divide, IBUS_KEY_T, 0x0166, -IBUS_KEY_KP_Divide, IBUS_KEY_Z, 0x01B5, -IBUS_KEY_KP_Divide, IBUS_KEY_b, 0x0180, -IBUS_KEY_KP_Divide, IBUS_KEY_d, 0x0111, -IBUS_KEY_KP_Divide, IBUS_KEY_g, 0x01E5, -IBUS_KEY_KP_Divide, IBUS_KEY_h, 0x0127, -IBUS_KEY_KP_Divide, IBUS_KEY_i, 0x0268, -IBUS_KEY_KP_Divide, IBUS_KEY_l, 0x0142, -IBUS_KEY_KP_Divide, IBUS_KEY_o, 0x00F8, -IBUS_KEY_KP_Divide, IBUS_KEY_t, 0x0167, -IBUS_KEY_KP_Divide, IBUS_KEY_z, 0x01B6, -IBUS_KEY_KP_Divide, 0x0294, 0x02A1, -IBUS_KEY_KP_Divide, 0x04AE, 0x04B0, -IBUS_KEY_KP_Divide, 0x04AF, 0x04B1, -IBUS_KEY_KP_Divide, IBUS_KEY_Cyrillic_ghe, 0x0493, -IBUS_KEY_KP_Divide, IBUS_KEY_Cyrillic_ka, 0x049F, -IBUS_KEY_KP_Divide, IBUS_KEY_Cyrillic_GHE, 0x0492, -IBUS_KEY_KP_Divide, IBUS_KEY_Cyrillic_KA, 0x049E, -IBUS_KEY_KP_Divide, IBUS_KEY_leftarrow, 0x219A, -IBUS_KEY_KP_Divide, IBUS_KEY_rightarrow, 0x219B, -IBUS_KEY_KP_Divide, 0x2194, 0x21AE, -IBUS_KEY_KP_Equal, 0x0338, 0x2260, -IBUS_KEY_exclam, IBUS_KEY_plus, IBUS_KEY_O, 0x1EE2, -IBUS_KEY_exclam, IBUS_KEY_plus, IBUS_KEY_U, 0x1EF0, -IBUS_KEY_exclam, IBUS_KEY_plus, IBUS_KEY_o, 0x1EE3, -IBUS_KEY_exclam, IBUS_KEY_plus, IBUS_KEY_u, 0x1EF1, -IBUS_KEY_exclam, IBUS_KEY_dead_horn, IBUS_KEY_O, 0x1EE2, -IBUS_KEY_exclam, IBUS_KEY_dead_horn, IBUS_KEY_U, 0x1EF0, -IBUS_KEY_exclam, IBUS_KEY_dead_horn, IBUS_KEY_o, 0x1EE3, -IBUS_KEY_exclam, IBUS_KEY_dead_horn, IBUS_KEY_u, 0x1EF1, -IBUS_KEY_quotedbl, IBUS_KEY_apostrophe, IBUS_KEY_space, 0x0385, -IBUS_KEY_quotedbl, IBUS_KEY_apostrophe, IBUS_KEY_Greek_iota, 0x0390, -IBUS_KEY_quotedbl, IBUS_KEY_apostrophe, IBUS_KEY_Greek_upsilon, 0x03B0, -IBUS_KEY_quotedbl, IBUS_KEY_underscore, IBUS_KEY_U, 0x1E7A, -IBUS_KEY_quotedbl, IBUS_KEY_underscore, IBUS_KEY_u, 0x1E7B, -IBUS_KEY_quotedbl, IBUS_KEY_asciitilde, IBUS_KEY_O, 0x1E4E, -IBUS_KEY_quotedbl, IBUS_KEY_asciitilde, IBUS_KEY_o, 0x1E4F, -IBUS_KEY_quotedbl, IBUS_KEY_macron, IBUS_KEY_U, 0x1E7A, -IBUS_KEY_quotedbl, IBUS_KEY_macron, IBUS_KEY_u, 0x1E7B, -IBUS_KEY_quotedbl, IBUS_KEY_dead_tilde, IBUS_KEY_O, 0x1E4E, -IBUS_KEY_quotedbl, IBUS_KEY_dead_tilde, IBUS_KEY_o, 0x1E4F, -IBUS_KEY_quotedbl, IBUS_KEY_dead_macron, IBUS_KEY_U, 0x1E7A, -IBUS_KEY_quotedbl, IBUS_KEY_dead_macron, IBUS_KEY_u, 0x1E7B, -IBUS_KEY_apostrophe, IBUS_KEY_quotedbl, IBUS_KEY_space, 0x0385, -IBUS_KEY_apostrophe, IBUS_KEY_quotedbl, IBUS_KEY_I, 0x1E2E, -IBUS_KEY_apostrophe, IBUS_KEY_quotedbl, IBUS_KEY_U, 0x01D7, -IBUS_KEY_apostrophe, IBUS_KEY_quotedbl, IBUS_KEY_i, 0x1E2F, -IBUS_KEY_apostrophe, IBUS_KEY_quotedbl, IBUS_KEY_u, 0x01D8, -IBUS_KEY_apostrophe, IBUS_KEY_quotedbl, IBUS_KEY_Greek_iota, 0x0390, -IBUS_KEY_apostrophe, IBUS_KEY_quotedbl, IBUS_KEY_Greek_upsilon, 0x03B0, -IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F0D, -IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_EPSILON, 0x1F1D, -IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F2D, -IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_IOTA, 0x1F3D, -IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMICRON, 0x1F4D, -IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_UPSILON, 0x1F5D, -IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1F6D, -IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F05, -IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_epsilon, 0x1F15, -IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F25, -IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_iota, 0x1F35, -IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_omicron, 0x1F45, -IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_upsilon, 0x1F55, -IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1F65, -IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F0C, -IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_EPSILON, 0x1F1C, -IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F2C, -IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_IOTA, 0x1F3C, -IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_OMICRON, 0x1F4C, -IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1F6C, -IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F04, -IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_epsilon, 0x1F14, -IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F24, -IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_iota, 0x1F34, -IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_omicron, 0x1F44, -IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_upsilon, 0x1F54, -IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1F64, -IBUS_KEY_apostrophe, IBUS_KEY_plus, IBUS_KEY_O, 0x1EDA, -IBUS_KEY_apostrophe, IBUS_KEY_plus, IBUS_KEY_U, 0x1EE8, -IBUS_KEY_apostrophe, IBUS_KEY_plus, IBUS_KEY_o, 0x1EDB, -IBUS_KEY_apostrophe, IBUS_KEY_plus, IBUS_KEY_u, 0x1EE9, -IBUS_KEY_apostrophe, IBUS_KEY_slash, IBUS_KEY_O, 0x01FE, -IBUS_KEY_apostrophe, IBUS_KEY_slash, IBUS_KEY_o, 0x01FF, -IBUS_KEY_apostrophe, IBUS_KEY_asciicircum, IBUS_KEY_A, 0x1EA4, -IBUS_KEY_apostrophe, IBUS_KEY_asciicircum, IBUS_KEY_E, 0x1EBE, -IBUS_KEY_apostrophe, IBUS_KEY_asciicircum, IBUS_KEY_O, 0x1ED0, -IBUS_KEY_apostrophe, IBUS_KEY_asciicircum, IBUS_KEY_a, 0x1EA5, -IBUS_KEY_apostrophe, IBUS_KEY_asciicircum, IBUS_KEY_e, 0x1EBF, -IBUS_KEY_apostrophe, IBUS_KEY_asciicircum, IBUS_KEY_o, 0x1ED1, -IBUS_KEY_apostrophe, IBUS_KEY_underscore, IBUS_KEY_E, 0x1E16, -IBUS_KEY_apostrophe, IBUS_KEY_underscore, IBUS_KEY_O, 0x1E52, -IBUS_KEY_apostrophe, IBUS_KEY_underscore, IBUS_KEY_e, 0x1E17, -IBUS_KEY_apostrophe, IBUS_KEY_underscore, IBUS_KEY_o, 0x1E53, -IBUS_KEY_apostrophe, IBUS_KEY_b, IBUS_KEY_A, 0x1EAE, -IBUS_KEY_apostrophe, IBUS_KEY_b, IBUS_KEY_a, 0x1EAF, -IBUS_KEY_apostrophe, IBUS_KEY_asciitilde, IBUS_KEY_O, 0x1E4C, -IBUS_KEY_apostrophe, IBUS_KEY_asciitilde, IBUS_KEY_U, 0x1E78, -IBUS_KEY_apostrophe, IBUS_KEY_asciitilde, IBUS_KEY_o, 0x1E4D, -IBUS_KEY_apostrophe, IBUS_KEY_asciitilde, IBUS_KEY_u, 0x1E79, -IBUS_KEY_apostrophe, IBUS_KEY_macron, IBUS_KEY_E, 0x1E16, -IBUS_KEY_apostrophe, IBUS_KEY_macron, IBUS_KEY_O, 0x1E52, -IBUS_KEY_apostrophe, IBUS_KEY_macron, IBUS_KEY_e, 0x1E17, -IBUS_KEY_apostrophe, IBUS_KEY_macron, IBUS_KEY_o, 0x1E53, -IBUS_KEY_apostrophe, IBUS_KEY_cedilla, IBUS_KEY_C, 0x1E08, -IBUS_KEY_apostrophe, IBUS_KEY_cedilla, IBUS_KEY_c, 0x1E09, -IBUS_KEY_apostrophe, IBUS_KEY_dead_circumflex, IBUS_KEY_A, 0x1EA4, -IBUS_KEY_apostrophe, IBUS_KEY_dead_circumflex, IBUS_KEY_E, 0x1EBE, -IBUS_KEY_apostrophe, IBUS_KEY_dead_circumflex, IBUS_KEY_O, 0x1ED0, -IBUS_KEY_apostrophe, IBUS_KEY_dead_circumflex, IBUS_KEY_a, 0x1EA5, -IBUS_KEY_apostrophe, IBUS_KEY_dead_circumflex, IBUS_KEY_e, 0x1EBF, -IBUS_KEY_apostrophe, IBUS_KEY_dead_circumflex, IBUS_KEY_o, 0x1ED1, -IBUS_KEY_apostrophe, IBUS_KEY_dead_tilde, IBUS_KEY_O, 0x1E4C, -IBUS_KEY_apostrophe, IBUS_KEY_dead_tilde, IBUS_KEY_U, 0x1E78, -IBUS_KEY_apostrophe, IBUS_KEY_dead_tilde, IBUS_KEY_o, 0x1E4D, -IBUS_KEY_apostrophe, IBUS_KEY_dead_tilde, IBUS_KEY_u, 0x1E79, -IBUS_KEY_apostrophe, IBUS_KEY_dead_macron, IBUS_KEY_E, 0x1E16, -IBUS_KEY_apostrophe, IBUS_KEY_dead_macron, IBUS_KEY_O, 0x1E52, -IBUS_KEY_apostrophe, IBUS_KEY_dead_macron, IBUS_KEY_e, 0x1E17, -IBUS_KEY_apostrophe, IBUS_KEY_dead_macron, IBUS_KEY_o, 0x1E53, -IBUS_KEY_apostrophe, IBUS_KEY_dead_breve, IBUS_KEY_A, 0x1EAE, -IBUS_KEY_apostrophe, IBUS_KEY_dead_breve, IBUS_KEY_a, 0x1EAF, -IBUS_KEY_apostrophe, IBUS_KEY_dead_diaeresis, IBUS_KEY_I, 0x1E2E, -IBUS_KEY_apostrophe, IBUS_KEY_dead_diaeresis, IBUS_KEY_U, 0x01D7, -IBUS_KEY_apostrophe, IBUS_KEY_dead_diaeresis, IBUS_KEY_i, 0x1E2F, -IBUS_KEY_apostrophe, IBUS_KEY_dead_diaeresis, IBUS_KEY_u, 0x01D8, -IBUS_KEY_apostrophe, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_iota, 0x0390, -IBUS_KEY_apostrophe, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_upsilon, 0x03B0, -IBUS_KEY_apostrophe, IBUS_KEY_dead_abovering, IBUS_KEY_A, 0x01FA, -IBUS_KEY_apostrophe, IBUS_KEY_dead_abovering, IBUS_KEY_a, 0x01FB, -IBUS_KEY_apostrophe, IBUS_KEY_dead_cedilla, IBUS_KEY_C, 0x1E08, -IBUS_KEY_apostrophe, IBUS_KEY_dead_cedilla, IBUS_KEY_c, 0x1E09, -IBUS_KEY_apostrophe, IBUS_KEY_dead_horn, IBUS_KEY_O, 0x1EDA, -IBUS_KEY_apostrophe, IBUS_KEY_dead_horn, IBUS_KEY_U, 0x1EE8, -IBUS_KEY_apostrophe, IBUS_KEY_dead_horn, IBUS_KEY_o, 0x1EDB, -IBUS_KEY_apostrophe, IBUS_KEY_dead_horn, IBUS_KEY_u, 0x1EE9, -IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F0C, -IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_EPSILON, 0x1F1C, -IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F2C, -IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_IOTA, 0x1F3C, -IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMICRON, 0x1F4C, -IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1F6C, -IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F04, -IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_epsilon, 0x1F14, -IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F24, -IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_iota, 0x1F34, -IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omicron, 0x1F44, -IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_upsilon, 0x1F54, -IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1F64, -IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F0D, -IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_EPSILON, 0x1F1D, -IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F2D, -IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_IOTA, 0x1F3D, -IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMICRON, 0x1F4D, -IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_UPSILON, 0x1F5D, -IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1F6D, -IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F05, -IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_epsilon, 0x1F15, -IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F25, -IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_iota, 0x1F35, -IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omicron, 0x1F45, -IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_upsilon, 0x1F55, -IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1F65, -IBUS_KEY_apostrophe, IBUS_KEY_KP_Divide, IBUS_KEY_O, 0x01FE, -IBUS_KEY_apostrophe, IBUS_KEY_KP_Divide, IBUS_KEY_o, 0x01FF, -IBUS_KEY_parenleft, IBUS_KEY_0, IBUS_KEY_parenright, 0x24EA, -IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_parenright, 0x2460, -IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_parenright, 0x2461, -IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_parenright, 0x2462, -IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_parenright, 0x2463, -IBUS_KEY_parenleft, IBUS_KEY_5, IBUS_KEY_parenright, 0x2464, -IBUS_KEY_parenleft, IBUS_KEY_6, IBUS_KEY_parenright, 0x2465, -IBUS_KEY_parenleft, IBUS_KEY_7, IBUS_KEY_parenright, 0x2466, -IBUS_KEY_parenleft, IBUS_KEY_8, IBUS_KEY_parenright, 0x2467, -IBUS_KEY_parenleft, IBUS_KEY_9, IBUS_KEY_parenright, 0x2468, -IBUS_KEY_parenleft, IBUS_KEY_A, IBUS_KEY_parenright, 0x24B6, -IBUS_KEY_parenleft, IBUS_KEY_B, IBUS_KEY_parenright, 0x24B7, -IBUS_KEY_parenleft, IBUS_KEY_C, IBUS_KEY_parenright, 0x24B8, -IBUS_KEY_parenleft, IBUS_KEY_D, IBUS_KEY_parenright, 0x24B9, -IBUS_KEY_parenleft, IBUS_KEY_E, IBUS_KEY_parenright, 0x24BA, -IBUS_KEY_parenleft, IBUS_KEY_F, IBUS_KEY_parenright, 0x24BB, -IBUS_KEY_parenleft, IBUS_KEY_G, IBUS_KEY_parenright, 0x24BC, -IBUS_KEY_parenleft, IBUS_KEY_H, IBUS_KEY_parenright, 0x24BD, -IBUS_KEY_parenleft, IBUS_KEY_I, IBUS_KEY_parenright, 0x24BE, -IBUS_KEY_parenleft, IBUS_KEY_J, IBUS_KEY_parenright, 0x24BF, -IBUS_KEY_parenleft, IBUS_KEY_K, IBUS_KEY_parenright, 0x24C0, -IBUS_KEY_parenleft, IBUS_KEY_L, IBUS_KEY_parenright, 0x24C1, -IBUS_KEY_parenleft, IBUS_KEY_M, IBUS_KEY_parenright, 0x24C2, -IBUS_KEY_parenleft, IBUS_KEY_N, IBUS_KEY_parenright, 0x24C3, -IBUS_KEY_parenleft, IBUS_KEY_O, IBUS_KEY_parenright, 0x24C4, -IBUS_KEY_parenleft, IBUS_KEY_P, IBUS_KEY_parenright, 0x24C5, -IBUS_KEY_parenleft, IBUS_KEY_Q, IBUS_KEY_parenright, 0x24C6, -IBUS_KEY_parenleft, IBUS_KEY_R, IBUS_KEY_parenright, 0x24C7, -IBUS_KEY_parenleft, IBUS_KEY_S, IBUS_KEY_parenright, 0x24C8, -IBUS_KEY_parenleft, IBUS_KEY_T, IBUS_KEY_parenright, 0x24C9, -IBUS_KEY_parenleft, IBUS_KEY_U, IBUS_KEY_parenright, 0x24CA, -IBUS_KEY_parenleft, IBUS_KEY_V, IBUS_KEY_parenright, 0x24CB, -IBUS_KEY_parenleft, IBUS_KEY_W, IBUS_KEY_parenright, 0x24CC, -IBUS_KEY_parenleft, IBUS_KEY_X, IBUS_KEY_parenright, 0x24CD, -IBUS_KEY_parenleft, IBUS_KEY_Y, IBUS_KEY_parenright, 0x24CE, -IBUS_KEY_parenleft, IBUS_KEY_Z, IBUS_KEY_parenright, 0x24CF, -IBUS_KEY_parenleft, IBUS_KEY_a, IBUS_KEY_parenright, 0x24D0, -IBUS_KEY_parenleft, IBUS_KEY_b, IBUS_KEY_parenright, 0x24D1, -IBUS_KEY_parenleft, IBUS_KEY_c, IBUS_KEY_parenright, 0x24D2, -IBUS_KEY_parenleft, IBUS_KEY_d, IBUS_KEY_parenright, 0x24D3, -IBUS_KEY_parenleft, IBUS_KEY_e, IBUS_KEY_parenright, 0x24D4, -IBUS_KEY_parenleft, IBUS_KEY_f, IBUS_KEY_parenright, 0x24D5, -IBUS_KEY_parenleft, IBUS_KEY_g, IBUS_KEY_parenright, 0x24D6, -IBUS_KEY_parenleft, IBUS_KEY_h, IBUS_KEY_parenright, 0x24D7, -IBUS_KEY_parenleft, IBUS_KEY_i, IBUS_KEY_parenright, 0x24D8, -IBUS_KEY_parenleft, IBUS_KEY_j, IBUS_KEY_parenright, 0x24D9, -IBUS_KEY_parenleft, IBUS_KEY_k, IBUS_KEY_parenright, 0x24DA, -IBUS_KEY_parenleft, IBUS_KEY_l, IBUS_KEY_parenright, 0x24DB, -IBUS_KEY_parenleft, IBUS_KEY_m, IBUS_KEY_parenright, 0x24DC, -IBUS_KEY_parenleft, IBUS_KEY_n, IBUS_KEY_parenright, 0x24DD, -IBUS_KEY_parenleft, IBUS_KEY_o, IBUS_KEY_parenright, 0x24DE, -IBUS_KEY_parenleft, IBUS_KEY_p, IBUS_KEY_parenright, 0x24DF, -IBUS_KEY_parenleft, IBUS_KEY_q, IBUS_KEY_parenright, 0x24E0, -IBUS_KEY_parenleft, IBUS_KEY_r, IBUS_KEY_parenright, 0x24E1, -IBUS_KEY_parenleft, IBUS_KEY_s, IBUS_KEY_parenright, 0x24E2, -IBUS_KEY_parenleft, IBUS_KEY_t, IBUS_KEY_parenright, 0x24E3, -IBUS_KEY_parenleft, IBUS_KEY_u, IBUS_KEY_parenright, 0x24E4, -IBUS_KEY_parenleft, IBUS_KEY_v, IBUS_KEY_parenright, 0x24E5, -IBUS_KEY_parenleft, IBUS_KEY_w, IBUS_KEY_parenright, 0x24E6, -IBUS_KEY_parenleft, IBUS_KEY_x, IBUS_KEY_parenright, 0x24E7, -IBUS_KEY_parenleft, IBUS_KEY_y, IBUS_KEY_parenright, 0x24E8, -IBUS_KEY_parenleft, IBUS_KEY_z, IBUS_KEY_parenright, 0x24E9, -IBUS_KEY_parenleft, IBUS_KEY_kana_WO, IBUS_KEY_parenright, 0x32FE, -IBUS_KEY_parenleft, IBUS_KEY_kana_A, IBUS_KEY_parenright, 0x32D0, -IBUS_KEY_parenleft, IBUS_KEY_kana_I, IBUS_KEY_parenright, 0x32D1, -IBUS_KEY_parenleft, IBUS_KEY_kana_U, IBUS_KEY_parenright, 0x32D2, -IBUS_KEY_parenleft, IBUS_KEY_kana_E, IBUS_KEY_parenright, 0x32D3, -IBUS_KEY_parenleft, IBUS_KEY_kana_O, IBUS_KEY_parenright, 0x32D4, -IBUS_KEY_parenleft, IBUS_KEY_kana_KA, IBUS_KEY_parenright, 0x32D5, -IBUS_KEY_parenleft, IBUS_KEY_kana_KI, IBUS_KEY_parenright, 0x32D6, -IBUS_KEY_parenleft, IBUS_KEY_kana_KU, IBUS_KEY_parenright, 0x32D7, -IBUS_KEY_parenleft, IBUS_KEY_kana_KE, IBUS_KEY_parenright, 0x32D8, -IBUS_KEY_parenleft, IBUS_KEY_kana_KO, IBUS_KEY_parenright, 0x32D9, -IBUS_KEY_parenleft, IBUS_KEY_kana_SA, IBUS_KEY_parenright, 0x32DA, -IBUS_KEY_parenleft, IBUS_KEY_kana_SHI, IBUS_KEY_parenright, 0x32DB, -IBUS_KEY_parenleft, IBUS_KEY_kana_SU, IBUS_KEY_parenright, 0x32DC, -IBUS_KEY_parenleft, IBUS_KEY_kana_SE, IBUS_KEY_parenright, 0x32DD, -IBUS_KEY_parenleft, IBUS_KEY_kana_SO, IBUS_KEY_parenright, 0x32DE, -IBUS_KEY_parenleft, IBUS_KEY_kana_TA, IBUS_KEY_parenright, 0x32DF, -IBUS_KEY_parenleft, IBUS_KEY_kana_CHI, IBUS_KEY_parenright, 0x32E0, -IBUS_KEY_parenleft, IBUS_KEY_kana_TSU, IBUS_KEY_parenright, 0x32E1, -IBUS_KEY_parenleft, IBUS_KEY_kana_TE, IBUS_KEY_parenright, 0x32E2, -IBUS_KEY_parenleft, IBUS_KEY_kana_TO, IBUS_KEY_parenright, 0x32E3, -IBUS_KEY_parenleft, IBUS_KEY_kana_NA, IBUS_KEY_parenright, 0x32E4, -IBUS_KEY_parenleft, IBUS_KEY_kana_NI, IBUS_KEY_parenright, 0x32E5, -IBUS_KEY_parenleft, IBUS_KEY_kana_NU, IBUS_KEY_parenright, 0x32E6, -IBUS_KEY_parenleft, IBUS_KEY_kana_NE, IBUS_KEY_parenright, 0x32E7, -IBUS_KEY_parenleft, IBUS_KEY_kana_NO, IBUS_KEY_parenright, 0x32E8, -IBUS_KEY_parenleft, IBUS_KEY_kana_HA, IBUS_KEY_parenright, 0x32E9, -IBUS_KEY_parenleft, IBUS_KEY_kana_HI, IBUS_KEY_parenright, 0x32EA, -IBUS_KEY_parenleft, IBUS_KEY_kana_FU, IBUS_KEY_parenright, 0x32EB, -IBUS_KEY_parenleft, IBUS_KEY_kana_HE, IBUS_KEY_parenright, 0x32EC, -IBUS_KEY_parenleft, IBUS_KEY_kana_HO, IBUS_KEY_parenright, 0x32ED, -IBUS_KEY_parenleft, IBUS_KEY_kana_MA, IBUS_KEY_parenright, 0x32EE, -IBUS_KEY_parenleft, IBUS_KEY_kana_MI, IBUS_KEY_parenright, 0x32EF, -IBUS_KEY_parenleft, IBUS_KEY_kana_MU, IBUS_KEY_parenright, 0x32F0, -IBUS_KEY_parenleft, IBUS_KEY_kana_ME, IBUS_KEY_parenright, 0x32F1, -IBUS_KEY_parenleft, IBUS_KEY_kana_MO, IBUS_KEY_parenright, 0x32F2, -IBUS_KEY_parenleft, IBUS_KEY_kana_YA, IBUS_KEY_parenright, 0x32F3, -IBUS_KEY_parenleft, IBUS_KEY_kana_YU, IBUS_KEY_parenright, 0x32F4, -IBUS_KEY_parenleft, IBUS_KEY_kana_YO, IBUS_KEY_parenright, 0x32F5, -IBUS_KEY_parenleft, IBUS_KEY_kana_RA, IBUS_KEY_parenright, 0x32F6, -IBUS_KEY_parenleft, IBUS_KEY_kana_RI, IBUS_KEY_parenright, 0x32F7, -IBUS_KEY_parenleft, IBUS_KEY_kana_RU, IBUS_KEY_parenright, 0x32F8, -IBUS_KEY_parenleft, IBUS_KEY_kana_RE, IBUS_KEY_parenright, 0x32F9, -IBUS_KEY_parenleft, IBUS_KEY_kana_RO, IBUS_KEY_parenright, 0x32FA, -IBUS_KEY_parenleft, IBUS_KEY_kana_WA, IBUS_KEY_parenright, 0x32FB, -IBUS_KEY_parenleft, 0x1100, IBUS_KEY_parenright, 0x3260, -IBUS_KEY_parenleft, 0x1102, IBUS_KEY_parenright, 0x3261, -IBUS_KEY_parenleft, 0x1103, IBUS_KEY_parenright, 0x3262, -IBUS_KEY_parenleft, 0x1105, IBUS_KEY_parenright, 0x3263, -IBUS_KEY_parenleft, 0x1106, IBUS_KEY_parenright, 0x3264, -IBUS_KEY_parenleft, 0x1107, IBUS_KEY_parenright, 0x3265, -IBUS_KEY_parenleft, 0x1109, IBUS_KEY_parenright, 0x3266, -IBUS_KEY_parenleft, 0x110B, IBUS_KEY_parenright, 0x3267, -IBUS_KEY_parenleft, 0x110C, IBUS_KEY_parenright, 0x3268, -IBUS_KEY_parenleft, 0x110E, IBUS_KEY_parenright, 0x3269, -IBUS_KEY_parenleft, 0x110F, IBUS_KEY_parenright, 0x326A, -IBUS_KEY_parenleft, 0x1110, IBUS_KEY_parenright, 0x326B, -IBUS_KEY_parenleft, 0x1111, IBUS_KEY_parenright, 0x326C, -IBUS_KEY_parenleft, 0x1112, IBUS_KEY_parenright, 0x326D, -IBUS_KEY_parenleft, 0x30F0, IBUS_KEY_parenright, 0x32FC, -IBUS_KEY_parenleft, 0x30F1, IBUS_KEY_parenright, 0x32FD, -IBUS_KEY_parenleft, 0x4E00, IBUS_KEY_parenright, 0x3280, -IBUS_KEY_parenleft, 0x4E03, IBUS_KEY_parenright, 0x3286, -IBUS_KEY_parenleft, 0x4E09, IBUS_KEY_parenright, 0x3282, -IBUS_KEY_parenleft, 0x4E0A, IBUS_KEY_parenright, 0x32A4, -IBUS_KEY_parenleft, 0x4E0B, IBUS_KEY_parenright, 0x32A6, -IBUS_KEY_parenleft, 0x4E2D, IBUS_KEY_parenright, 0x32A5, -IBUS_KEY_parenleft, 0x4E5D, IBUS_KEY_parenright, 0x3288, -IBUS_KEY_parenleft, 0x4E8C, IBUS_KEY_parenright, 0x3281, -IBUS_KEY_parenleft, 0x4E94, IBUS_KEY_parenright, 0x3284, -IBUS_KEY_parenleft, 0x4F01, IBUS_KEY_parenright, 0x32AD, -IBUS_KEY_parenleft, 0x4F11, IBUS_KEY_parenright, 0x32A1, -IBUS_KEY_parenleft, 0x512A, IBUS_KEY_parenright, 0x329D, -IBUS_KEY_parenleft, 0x516B, IBUS_KEY_parenright, 0x3287, -IBUS_KEY_parenleft, 0x516D, IBUS_KEY_parenright, 0x3285, -IBUS_KEY_parenleft, 0x5199, IBUS_KEY_parenright, 0x32A2, -IBUS_KEY_parenleft, 0x52B4, IBUS_KEY_parenright, 0x3298, -IBUS_KEY_parenleft, 0x533B, IBUS_KEY_parenright, 0x32A9, -IBUS_KEY_parenleft, 0x5341, IBUS_KEY_parenright, 0x3289, -IBUS_KEY_parenleft, 0x5354, IBUS_KEY_parenright, 0x32AF, -IBUS_KEY_parenleft, 0x5370, IBUS_KEY_parenright, 0x329E, -IBUS_KEY_parenleft, 0x53F3, IBUS_KEY_parenright, 0x32A8, -IBUS_KEY_parenleft, 0x540D, IBUS_KEY_parenright, 0x3294, -IBUS_KEY_parenleft, 0x56DB, IBUS_KEY_parenright, 0x3283, -IBUS_KEY_parenleft, 0x571F, IBUS_KEY_parenright, 0x328F, -IBUS_KEY_parenleft, 0x591C, IBUS_KEY_parenright, 0x32B0, -IBUS_KEY_parenleft, 0x5973, IBUS_KEY_parenright, 0x329B, -IBUS_KEY_parenleft, 0x5B66, IBUS_KEY_parenright, 0x32AB, -IBUS_KEY_parenleft, 0x5B97, IBUS_KEY_parenright, 0x32AA, -IBUS_KEY_parenleft, 0x5DE6, IBUS_KEY_parenright, 0x32A7, -IBUS_KEY_parenleft, 0x65E5, IBUS_KEY_parenright, 0x3290, -IBUS_KEY_parenleft, 0x6708, IBUS_KEY_parenright, 0x328A, -IBUS_KEY_parenleft, 0x6709, IBUS_KEY_parenright, 0x3292, -IBUS_KEY_parenleft, 0x6728, IBUS_KEY_parenright, 0x328D, -IBUS_KEY_parenleft, 0x682A, IBUS_KEY_parenright, 0x3291, -IBUS_KEY_parenleft, 0x6B63, IBUS_KEY_parenright, 0x32A3, -IBUS_KEY_parenleft, 0x6C34, IBUS_KEY_parenright, 0x328C, -IBUS_KEY_parenleft, 0x6CE8, IBUS_KEY_parenright, 0x329F, -IBUS_KEY_parenleft, 0x706B, IBUS_KEY_parenright, 0x328B, -IBUS_KEY_parenleft, 0x7279, IBUS_KEY_parenright, 0x3295, -IBUS_KEY_parenleft, 0x7537, IBUS_KEY_parenright, 0x329A, -IBUS_KEY_parenleft, 0x76E3, IBUS_KEY_parenright, 0x32AC, -IBUS_KEY_parenleft, 0x793E, IBUS_KEY_parenright, 0x3293, -IBUS_KEY_parenleft, 0x795D, IBUS_KEY_parenright, 0x3297, -IBUS_KEY_parenleft, 0x79D8, IBUS_KEY_parenright, 0x3299, -IBUS_KEY_parenleft, 0x8CA1, IBUS_KEY_parenright, 0x3296, -IBUS_KEY_parenleft, 0x8CC7, IBUS_KEY_parenright, 0x32AE, -IBUS_KEY_parenleft, 0x9069, IBUS_KEY_parenright, 0x329C, -IBUS_KEY_parenleft, 0x91D1, IBUS_KEY_parenright, 0x328E, -IBUS_KEY_parenleft, 0x9805, IBUS_KEY_parenright, 0x32A0, -IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_parenright, 0x2461, -IBUS_KEY_parenleft, IBUS_KEY_KP_0, IBUS_KEY_parenright, 0x24EA, -IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_parenright, 0x2460, -IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_parenright, 0x2461, -IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_parenright, 0x2462, -IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_parenright, 0x2463, -IBUS_KEY_parenleft, IBUS_KEY_KP_5, IBUS_KEY_parenright, 0x2464, -IBUS_KEY_parenleft, IBUS_KEY_KP_6, IBUS_KEY_parenright, 0x2465, -IBUS_KEY_parenleft, IBUS_KEY_KP_7, IBUS_KEY_parenright, 0x2466, -IBUS_KEY_parenleft, IBUS_KEY_KP_8, IBUS_KEY_parenright, 0x2467, -IBUS_KEY_parenleft, IBUS_KEY_KP_9, IBUS_KEY_parenright, 0x2468, -IBUS_KEY_minus, IBUS_KEY_minus, IBUS_KEY_space, 0x00AD, -IBUS_KEY_minus, IBUS_KEY_minus, IBUS_KEY_minus, 0x2014, -IBUS_KEY_minus, IBUS_KEY_minus, IBUS_KEY_period, 0x2013, -IBUS_KEY_period, IBUS_KEY_exclam, IBUS_KEY_S, 0x1E68, -IBUS_KEY_period, IBUS_KEY_exclam, IBUS_KEY_s, 0x1E69, -IBUS_KEY_period, IBUS_KEY_apostrophe, IBUS_KEY_S, 0x1E64, -IBUS_KEY_period, IBUS_KEY_apostrophe, IBUS_KEY_s, 0x1E65, -IBUS_KEY_period, IBUS_KEY_acute, IBUS_KEY_S, 0x1E64, -IBUS_KEY_period, IBUS_KEY_acute, IBUS_KEY_s, 0x1E65, -IBUS_KEY_period, IBUS_KEY_dead_acute, IBUS_KEY_S, 0x1E64, -IBUS_KEY_period, IBUS_KEY_dead_acute, IBUS_KEY_s, 0x1E65, -IBUS_KEY_period, IBUS_KEY_dead_caron, IBUS_KEY_S, 0x1E66, -IBUS_KEY_period, IBUS_KEY_dead_caron, IBUS_KEY_s, 0x1E67, -IBUS_KEY_period, IBUS_KEY_dead_belowdot, IBUS_KEY_S, 0x1E68, -IBUS_KEY_period, IBUS_KEY_dead_belowdot, IBUS_KEY_s, 0x1E69, -IBUS_KEY_question, IBUS_KEY_plus, IBUS_KEY_O, 0x1EDE, -IBUS_KEY_question, IBUS_KEY_plus, IBUS_KEY_U, 0x1EEC, -IBUS_KEY_question, IBUS_KEY_plus, IBUS_KEY_o, 0x1EDF, -IBUS_KEY_question, IBUS_KEY_plus, IBUS_KEY_u, 0x1EED, -IBUS_KEY_question, IBUS_KEY_asciicircum, IBUS_KEY_A, 0x1EA8, -IBUS_KEY_question, IBUS_KEY_asciicircum, IBUS_KEY_E, 0x1EC2, -IBUS_KEY_question, IBUS_KEY_asciicircum, IBUS_KEY_O, 0x1ED4, -IBUS_KEY_question, IBUS_KEY_asciicircum, IBUS_KEY_a, 0x1EA9, -IBUS_KEY_question, IBUS_KEY_asciicircum, IBUS_KEY_e, 0x1EC3, -IBUS_KEY_question, IBUS_KEY_asciicircum, IBUS_KEY_o, 0x1ED5, -IBUS_KEY_question, IBUS_KEY_b, IBUS_KEY_A, 0x1EB2, -IBUS_KEY_question, IBUS_KEY_b, IBUS_KEY_a, 0x1EB3, -IBUS_KEY_question, IBUS_KEY_dead_circumflex, IBUS_KEY_A, 0x1EA8, -IBUS_KEY_question, IBUS_KEY_dead_circumflex, IBUS_KEY_E, 0x1EC2, -IBUS_KEY_question, IBUS_KEY_dead_circumflex, IBUS_KEY_O, 0x1ED4, -IBUS_KEY_question, IBUS_KEY_dead_circumflex, IBUS_KEY_a, 0x1EA9, -IBUS_KEY_question, IBUS_KEY_dead_circumflex, IBUS_KEY_e, 0x1EC3, -IBUS_KEY_question, IBUS_KEY_dead_circumflex, IBUS_KEY_o, 0x1ED5, -IBUS_KEY_question, IBUS_KEY_dead_breve, IBUS_KEY_A, 0x1EB2, -IBUS_KEY_question, IBUS_KEY_dead_breve, IBUS_KEY_a, 0x1EB3, -IBUS_KEY_question, IBUS_KEY_dead_horn, IBUS_KEY_O, 0x1EDE, -IBUS_KEY_question, IBUS_KEY_dead_horn, IBUS_KEY_U, 0x1EEC, -IBUS_KEY_question, IBUS_KEY_dead_horn, IBUS_KEY_o, 0x1EDF, -IBUS_KEY_question, IBUS_KEY_dead_horn, IBUS_KEY_u, 0x1EED, -IBUS_KEY_U, IBUS_KEY_exclam, IBUS_KEY_A, 0x1EB6, -IBUS_KEY_U, IBUS_KEY_exclam, IBUS_KEY_a, 0x1EB7, -IBUS_KEY_U, IBUS_KEY_comma, IBUS_KEY_E, 0x1E1C, -IBUS_KEY_U, IBUS_KEY_comma, IBUS_KEY_e, 0x1E1D, -IBUS_KEY_U, IBUS_KEY_cedilla, IBUS_KEY_E, 0x1E1C, -IBUS_KEY_U, IBUS_KEY_cedilla, IBUS_KEY_e, 0x1E1D, -IBUS_KEY_U, IBUS_KEY_dead_cedilla, IBUS_KEY_E, 0x1E1C, -IBUS_KEY_U, IBUS_KEY_dead_cedilla, IBUS_KEY_e, 0x1E1D, -IBUS_KEY_U, IBUS_KEY_dead_belowdot, IBUS_KEY_A, 0x1EB6, -IBUS_KEY_U, IBUS_KEY_dead_belowdot, IBUS_KEY_a, 0x1EB7, -IBUS_KEY_asciicircum, IBUS_KEY_exclam, IBUS_KEY_A, 0x1EAC, -IBUS_KEY_asciicircum, IBUS_KEY_exclam, IBUS_KEY_E, 0x1EC6, -IBUS_KEY_asciicircum, IBUS_KEY_exclam, IBUS_KEY_O, 0x1ED8, -IBUS_KEY_asciicircum, IBUS_KEY_exclam, IBUS_KEY_a, 0x1EAD, -IBUS_KEY_asciicircum, IBUS_KEY_exclam, IBUS_KEY_e, 0x1EC7, -IBUS_KEY_asciicircum, IBUS_KEY_exclam, IBUS_KEY_o, 0x1ED9, -IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_a, 0x00AA, -IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_h, 0x02B0, -IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_i, 0x2071, -IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_j, 0x02B2, -IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_l, 0x02E1, -IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_n, 0x207F, -IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_o, 0x00BA, -IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_r, 0x02B3, -IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_s, 0x02E2, -IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_w, 0x02B7, -IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_x, 0x02E3, -IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_y, 0x02B8, -IBUS_KEY_asciicircum, IBUS_KEY_underscore, 0x0263, 0x02E0, -IBUS_KEY_asciicircum, IBUS_KEY_underscore, 0x0266, 0x02B1, -IBUS_KEY_asciicircum, IBUS_KEY_underscore, 0x0279, 0x02B4, -IBUS_KEY_asciicircum, IBUS_KEY_underscore, 0x027B, 0x02B5, -IBUS_KEY_asciicircum, IBUS_KEY_underscore, 0x0281, 0x02B6, -IBUS_KEY_asciicircum, IBUS_KEY_underscore, 0x0295, 0x02E4, -IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_a, 0x00AA, -IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_h, 0x02B0, -IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_i, 0x2071, -IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_j, 0x02B2, -IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_l, 0x02E1, -IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_n, 0x207F, -IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_o, 0x00BA, -IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_r, 0x02B3, -IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_s, 0x02E2, -IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_w, 0x02B7, -IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_x, 0x02E3, -IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_y, 0x02B8, -IBUS_KEY_asciicircum, IBUS_KEY_underbar, 0x0263, 0x02E0, -IBUS_KEY_asciicircum, IBUS_KEY_underbar, 0x0266, 0x02B1, -IBUS_KEY_asciicircum, IBUS_KEY_underbar, 0x0279, 0x02B4, -IBUS_KEY_asciicircum, IBUS_KEY_underbar, 0x027B, 0x02B5, -IBUS_KEY_asciicircum, IBUS_KEY_underbar, 0x0281, 0x02B6, -IBUS_KEY_asciicircum, IBUS_KEY_underbar, 0x0295, 0x02E4, -IBUS_KEY_asciicircum, IBUS_KEY_dead_belowdot, IBUS_KEY_A, 0x1EAC, -IBUS_KEY_asciicircum, IBUS_KEY_dead_belowdot, IBUS_KEY_E, 0x1EC6, -IBUS_KEY_asciicircum, IBUS_KEY_dead_belowdot, IBUS_KEY_O, 0x1ED8, -IBUS_KEY_asciicircum, IBUS_KEY_dead_belowdot, IBUS_KEY_a, 0x1EAD, -IBUS_KEY_asciicircum, IBUS_KEY_dead_belowdot, IBUS_KEY_e, 0x1EC7, -IBUS_KEY_asciicircum, IBUS_KEY_dead_belowdot, IBUS_KEY_o, 0x1ED9, -IBUS_KEY_underscore, IBUS_KEY_exclam, IBUS_KEY_L, 0x1E38, -IBUS_KEY_underscore, IBUS_KEY_exclam, IBUS_KEY_R, 0x1E5C, -IBUS_KEY_underscore, IBUS_KEY_exclam, IBUS_KEY_l, 0x1E39, -IBUS_KEY_underscore, IBUS_KEY_exclam, IBUS_KEY_r, 0x1E5D, -IBUS_KEY_underscore, IBUS_KEY_quotedbl, IBUS_KEY_A, 0x01DE, -IBUS_KEY_underscore, IBUS_KEY_quotedbl, IBUS_KEY_O, 0x022A, -IBUS_KEY_underscore, IBUS_KEY_quotedbl, IBUS_KEY_U, 0x01D5, -IBUS_KEY_underscore, IBUS_KEY_quotedbl, IBUS_KEY_a, 0x01DF, -IBUS_KEY_underscore, IBUS_KEY_quotedbl, IBUS_KEY_o, 0x022B, -IBUS_KEY_underscore, IBUS_KEY_quotedbl, IBUS_KEY_u, 0x01D6, -IBUS_KEY_underscore, IBUS_KEY_period, IBUS_KEY_A, 0x01E0, -IBUS_KEY_underscore, IBUS_KEY_period, IBUS_KEY_O, 0x0230, -IBUS_KEY_underscore, IBUS_KEY_period, IBUS_KEY_a, 0x01E1, -IBUS_KEY_underscore, IBUS_KEY_period, IBUS_KEY_o, 0x0231, -IBUS_KEY_underscore, IBUS_KEY_semicolon, IBUS_KEY_O, 0x01EC, -IBUS_KEY_underscore, IBUS_KEY_semicolon, IBUS_KEY_o, 0x01ED, -IBUS_KEY_underscore, IBUS_KEY_asciitilde, IBUS_KEY_O, 0x022C, -IBUS_KEY_underscore, IBUS_KEY_asciitilde, IBUS_KEY_o, 0x022D, -IBUS_KEY_underscore, IBUS_KEY_dead_tilde, IBUS_KEY_O, 0x022C, -IBUS_KEY_underscore, IBUS_KEY_dead_tilde, IBUS_KEY_o, 0x022D, -IBUS_KEY_underscore, IBUS_KEY_dead_abovedot, IBUS_KEY_A, 0x01E0, -IBUS_KEY_underscore, IBUS_KEY_dead_abovedot, IBUS_KEY_O, 0x0230, -IBUS_KEY_underscore, IBUS_KEY_dead_abovedot, IBUS_KEY_a, 0x01E1, -IBUS_KEY_underscore, IBUS_KEY_dead_abovedot, IBUS_KEY_o, 0x0231, -IBUS_KEY_underscore, IBUS_KEY_dead_diaeresis, IBUS_KEY_A, 0x01DE, -IBUS_KEY_underscore, IBUS_KEY_dead_diaeresis, IBUS_KEY_O, 0x022A, -IBUS_KEY_underscore, IBUS_KEY_dead_diaeresis, IBUS_KEY_U, 0x01D5, -IBUS_KEY_underscore, IBUS_KEY_dead_diaeresis, IBUS_KEY_a, 0x01DF, -IBUS_KEY_underscore, IBUS_KEY_dead_diaeresis, IBUS_KEY_o, 0x022B, -IBUS_KEY_underscore, IBUS_KEY_dead_diaeresis, IBUS_KEY_u, 0x01D6, -IBUS_KEY_underscore, IBUS_KEY_dead_ogonek, IBUS_KEY_O, 0x01EC, -IBUS_KEY_underscore, IBUS_KEY_dead_ogonek, IBUS_KEY_o, 0x01ED, -IBUS_KEY_underscore, IBUS_KEY_dead_belowdot, IBUS_KEY_L, 0x1E38, -IBUS_KEY_underscore, IBUS_KEY_dead_belowdot, IBUS_KEY_R, 0x1E5C, -IBUS_KEY_underscore, IBUS_KEY_dead_belowdot, IBUS_KEY_l, 0x1E39, -IBUS_KEY_underscore, IBUS_KEY_dead_belowdot, IBUS_KEY_r, 0x1E5D, -IBUS_KEY_grave, IBUS_KEY_quotedbl, IBUS_KEY_U, 0x01DB, -IBUS_KEY_grave, IBUS_KEY_quotedbl, IBUS_KEY_u, 0x01DC, -IBUS_KEY_grave, IBUS_KEY_quotedbl, IBUS_KEY_Greek_iota, 0x1FD2, -IBUS_KEY_grave, IBUS_KEY_quotedbl, IBUS_KEY_Greek_upsilon, 0x1FE2, -IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F0B, -IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_EPSILON, 0x1F1B, -IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F2B, -IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_IOTA, 0x1F3B, -IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMICRON, 0x1F4B, -IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_UPSILON, 0x1F5B, -IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1F6B, -IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F03, -IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_epsilon, 0x1F13, -IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F23, -IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_iota, 0x1F33, -IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_omicron, 0x1F43, -IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_upsilon, 0x1F53, -IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1F63, -IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F0A, -IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_EPSILON, 0x1F1A, -IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F2A, -IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_IOTA, 0x1F3A, -IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_OMICRON, 0x1F4A, -IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1F6A, -IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F02, -IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_epsilon, 0x1F12, -IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F22, -IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_iota, 0x1F32, -IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_omicron, 0x1F42, -IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_upsilon, 0x1F52, -IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1F62, -IBUS_KEY_grave, IBUS_KEY_plus, IBUS_KEY_O, 0x1EDC, -IBUS_KEY_grave, IBUS_KEY_plus, IBUS_KEY_U, 0x1EEA, -IBUS_KEY_grave, IBUS_KEY_plus, IBUS_KEY_o, 0x1EDD, -IBUS_KEY_grave, IBUS_KEY_plus, IBUS_KEY_u, 0x1EEB, -IBUS_KEY_grave, IBUS_KEY_asciicircum, IBUS_KEY_A, 0x1EA6, -IBUS_KEY_grave, IBUS_KEY_asciicircum, IBUS_KEY_E, 0x1EC0, -IBUS_KEY_grave, IBUS_KEY_asciicircum, IBUS_KEY_O, 0x1ED2, -IBUS_KEY_grave, IBUS_KEY_asciicircum, IBUS_KEY_a, 0x1EA7, -IBUS_KEY_grave, IBUS_KEY_asciicircum, IBUS_KEY_e, 0x1EC1, -IBUS_KEY_grave, IBUS_KEY_asciicircum, IBUS_KEY_o, 0x1ED3, -IBUS_KEY_grave, IBUS_KEY_underscore, IBUS_KEY_E, 0x1E14, -IBUS_KEY_grave, IBUS_KEY_underscore, IBUS_KEY_O, 0x1E50, -IBUS_KEY_grave, IBUS_KEY_underscore, IBUS_KEY_e, 0x1E15, -IBUS_KEY_grave, IBUS_KEY_underscore, IBUS_KEY_o, 0x1E51, -IBUS_KEY_grave, IBUS_KEY_b, IBUS_KEY_A, 0x1EB0, -IBUS_KEY_grave, IBUS_KEY_b, IBUS_KEY_a, 0x1EB1, -IBUS_KEY_grave, IBUS_KEY_macron, IBUS_KEY_E, 0x1E14, -IBUS_KEY_grave, IBUS_KEY_macron, IBUS_KEY_O, 0x1E50, -IBUS_KEY_grave, IBUS_KEY_macron, IBUS_KEY_e, 0x1E15, -IBUS_KEY_grave, IBUS_KEY_macron, IBUS_KEY_o, 0x1E51, -IBUS_KEY_grave, IBUS_KEY_dead_circumflex, IBUS_KEY_A, 0x1EA6, -IBUS_KEY_grave, IBUS_KEY_dead_circumflex, IBUS_KEY_E, 0x1EC0, -IBUS_KEY_grave, IBUS_KEY_dead_circumflex, IBUS_KEY_O, 0x1ED2, -IBUS_KEY_grave, IBUS_KEY_dead_circumflex, IBUS_KEY_a, 0x1EA7, -IBUS_KEY_grave, IBUS_KEY_dead_circumflex, IBUS_KEY_e, 0x1EC1, -IBUS_KEY_grave, IBUS_KEY_dead_circumflex, IBUS_KEY_o, 0x1ED3, -IBUS_KEY_grave, IBUS_KEY_dead_macron, IBUS_KEY_E, 0x1E14, -IBUS_KEY_grave, IBUS_KEY_dead_macron, IBUS_KEY_O, 0x1E50, -IBUS_KEY_grave, IBUS_KEY_dead_macron, IBUS_KEY_e, 0x1E15, -IBUS_KEY_grave, IBUS_KEY_dead_macron, IBUS_KEY_o, 0x1E51, -IBUS_KEY_grave, IBUS_KEY_dead_breve, IBUS_KEY_A, 0x1EB0, -IBUS_KEY_grave, IBUS_KEY_dead_breve, IBUS_KEY_a, 0x1EB1, -IBUS_KEY_grave, IBUS_KEY_dead_diaeresis, IBUS_KEY_U, 0x01DB, -IBUS_KEY_grave, IBUS_KEY_dead_diaeresis, IBUS_KEY_u, 0x01DC, -IBUS_KEY_grave, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_iota, 0x1FD2, -IBUS_KEY_grave, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_upsilon, 0x1FE2, -IBUS_KEY_grave, IBUS_KEY_dead_horn, IBUS_KEY_O, 0x1EDC, -IBUS_KEY_grave, IBUS_KEY_dead_horn, IBUS_KEY_U, 0x1EEA, -IBUS_KEY_grave, IBUS_KEY_dead_horn, IBUS_KEY_o, 0x1EDD, -IBUS_KEY_grave, IBUS_KEY_dead_horn, IBUS_KEY_u, 0x1EEB, -IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F0A, -IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_EPSILON, 0x1F1A, -IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F2A, -IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_IOTA, 0x1F3A, -IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMICRON, 0x1F4A, -IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1F6A, -IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F02, -IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_epsilon, 0x1F12, -IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F22, -IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_iota, 0x1F32, -IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omicron, 0x1F42, -IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_upsilon, 0x1F52, -IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1F62, -IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F0B, -IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_EPSILON, 0x1F1B, -IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F2B, -IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_IOTA, 0x1F3B, -IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMICRON, 0x1F4B, -IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_UPSILON, 0x1F5B, -IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1F6B, -IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F03, -IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_epsilon, 0x1F13, -IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F23, -IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_iota, 0x1F33, -IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omicron, 0x1F43, -IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_upsilon, 0x1F53, -IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1F63, -IBUS_KEY_b, IBUS_KEY_exclam, IBUS_KEY_A, 0x1EB6, -IBUS_KEY_b, IBUS_KEY_exclam, IBUS_KEY_a, 0x1EB7, -IBUS_KEY_b, IBUS_KEY_comma, IBUS_KEY_E, 0x1E1C, -IBUS_KEY_b, IBUS_KEY_comma, IBUS_KEY_e, 0x1E1D, -IBUS_KEY_b, IBUS_KEY_cedilla, IBUS_KEY_E, 0x1E1C, -IBUS_KEY_b, IBUS_KEY_cedilla, IBUS_KEY_e, 0x1E1D, -IBUS_KEY_b, IBUS_KEY_dead_cedilla, IBUS_KEY_E, 0x1E1C, -IBUS_KEY_b, IBUS_KEY_dead_cedilla, IBUS_KEY_e, 0x1E1D, -IBUS_KEY_b, IBUS_KEY_dead_belowdot, IBUS_KEY_A, 0x1EB6, -IBUS_KEY_b, IBUS_KEY_dead_belowdot, IBUS_KEY_a, 0x1EB7, -IBUS_KEY_c, IBUS_KEY_quotedbl, IBUS_KEY_U, 0x01D9, -IBUS_KEY_c, IBUS_KEY_quotedbl, IBUS_KEY_u, 0x01DA, -IBUS_KEY_c, IBUS_KEY_dead_diaeresis, IBUS_KEY_U, 0x01D9, -IBUS_KEY_c, IBUS_KEY_dead_diaeresis, IBUS_KEY_u, 0x01DA, -IBUS_KEY_o, IBUS_KEY_apostrophe, IBUS_KEY_A, 0x01FA, -IBUS_KEY_o, IBUS_KEY_apostrophe, IBUS_KEY_a, 0x01FB, -IBUS_KEY_asciitilde, IBUS_KEY_quotedbl, IBUS_KEY_Greek_iota, 0x1FD7, -IBUS_KEY_asciitilde, IBUS_KEY_quotedbl, IBUS_KEY_Greek_upsilon, 0x1FE7, -IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F0F, -IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F2F, -IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_IOTA, 0x1F3F, -IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_UPSILON, 0x1F5F, -IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1F6F, -IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F07, -IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F27, -IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_iota, 0x1F37, -IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_upsilon, 0x1F57, -IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1F67, -IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F0E, -IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F2E, -IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_IOTA, 0x1F3E, -IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1F6E, -IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F06, -IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F26, -IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_iota, 0x1F36, -IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_upsilon, 0x1F56, -IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1F66, -IBUS_KEY_asciitilde, IBUS_KEY_plus, IBUS_KEY_O, 0x1EE0, -IBUS_KEY_asciitilde, IBUS_KEY_plus, IBUS_KEY_U, 0x1EEE, -IBUS_KEY_asciitilde, IBUS_KEY_plus, IBUS_KEY_o, 0x1EE1, -IBUS_KEY_asciitilde, IBUS_KEY_plus, IBUS_KEY_u, 0x1EEF, -IBUS_KEY_asciitilde, IBUS_KEY_asciicircum, IBUS_KEY_A, 0x1EAA, -IBUS_KEY_asciitilde, IBUS_KEY_asciicircum, IBUS_KEY_E, 0x1EC4, -IBUS_KEY_asciitilde, IBUS_KEY_asciicircum, IBUS_KEY_O, 0x1ED6, -IBUS_KEY_asciitilde, IBUS_KEY_asciicircum, IBUS_KEY_a, 0x1EAB, -IBUS_KEY_asciitilde, IBUS_KEY_asciicircum, IBUS_KEY_e, 0x1EC5, -IBUS_KEY_asciitilde, IBUS_KEY_asciicircum, IBUS_KEY_o, 0x1ED7, -IBUS_KEY_asciitilde, IBUS_KEY_b, IBUS_KEY_A, 0x1EB4, -IBUS_KEY_asciitilde, IBUS_KEY_b, IBUS_KEY_a, 0x1EB5, -IBUS_KEY_asciitilde, IBUS_KEY_dead_circumflex, IBUS_KEY_A, 0x1EAA, -IBUS_KEY_asciitilde, IBUS_KEY_dead_circumflex, IBUS_KEY_E, 0x1EC4, -IBUS_KEY_asciitilde, IBUS_KEY_dead_circumflex, IBUS_KEY_O, 0x1ED6, -IBUS_KEY_asciitilde, IBUS_KEY_dead_circumflex, IBUS_KEY_a, 0x1EAB, -IBUS_KEY_asciitilde, IBUS_KEY_dead_circumflex, IBUS_KEY_e, 0x1EC5, -IBUS_KEY_asciitilde, IBUS_KEY_dead_circumflex, IBUS_KEY_o, 0x1ED7, -IBUS_KEY_asciitilde, IBUS_KEY_dead_breve, IBUS_KEY_A, 0x1EB4, -IBUS_KEY_asciitilde, IBUS_KEY_dead_breve, IBUS_KEY_a, 0x1EB5, -IBUS_KEY_asciitilde, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_iota, 0x1FD7, -IBUS_KEY_asciitilde, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_upsilon, 0x1FE7, -IBUS_KEY_asciitilde, IBUS_KEY_dead_horn, IBUS_KEY_O, 0x1EE0, -IBUS_KEY_asciitilde, IBUS_KEY_dead_horn, IBUS_KEY_U, 0x1EEE, -IBUS_KEY_asciitilde, IBUS_KEY_dead_horn, IBUS_KEY_o, 0x1EE1, -IBUS_KEY_asciitilde, IBUS_KEY_dead_horn, IBUS_KEY_u, 0x1EEF, -IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F0E, -IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F2E, -IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_IOTA, 0x1F3E, -IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1F6E, -IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F06, -IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F26, -IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_iota, 0x1F36, -IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_upsilon, 0x1F56, -IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1F66, -IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F0F, -IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F2F, -IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_IOTA, 0x1F3F, -IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_UPSILON, 0x1F5F, -IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1F6F, -IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F07, -IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F27, -IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_iota, 0x1F37, -IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_upsilon, 0x1F57, -IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1F67, -IBUS_KEY_macron, IBUS_KEY_exclam, IBUS_KEY_L, 0x1E38, -IBUS_KEY_macron, IBUS_KEY_exclam, IBUS_KEY_R, 0x1E5C, -IBUS_KEY_macron, IBUS_KEY_exclam, IBUS_KEY_l, 0x1E39, -IBUS_KEY_macron, IBUS_KEY_exclam, IBUS_KEY_r, 0x1E5D, -IBUS_KEY_macron, IBUS_KEY_quotedbl, IBUS_KEY_A, 0x01DE, -IBUS_KEY_macron, IBUS_KEY_quotedbl, IBUS_KEY_O, 0x022A, -IBUS_KEY_macron, IBUS_KEY_quotedbl, IBUS_KEY_U, 0x01D5, -IBUS_KEY_macron, IBUS_KEY_quotedbl, IBUS_KEY_a, 0x01DF, -IBUS_KEY_macron, IBUS_KEY_quotedbl, IBUS_KEY_o, 0x022B, -IBUS_KEY_macron, IBUS_KEY_quotedbl, IBUS_KEY_u, 0x01D6, -IBUS_KEY_macron, IBUS_KEY_period, IBUS_KEY_A, 0x01E0, -IBUS_KEY_macron, IBUS_KEY_period, IBUS_KEY_O, 0x0230, -IBUS_KEY_macron, IBUS_KEY_period, IBUS_KEY_a, 0x01E1, -IBUS_KEY_macron, IBUS_KEY_period, IBUS_KEY_o, 0x0231, -IBUS_KEY_macron, IBUS_KEY_semicolon, IBUS_KEY_O, 0x01EC, -IBUS_KEY_macron, IBUS_KEY_semicolon, IBUS_KEY_o, 0x01ED, -IBUS_KEY_macron, IBUS_KEY_asciitilde, IBUS_KEY_O, 0x022C, -IBUS_KEY_macron, IBUS_KEY_asciitilde, IBUS_KEY_o, 0x022D, -IBUS_KEY_macron, IBUS_KEY_dead_tilde, IBUS_KEY_O, 0x022C, -IBUS_KEY_macron, IBUS_KEY_dead_tilde, IBUS_KEY_o, 0x022D, -IBUS_KEY_macron, IBUS_KEY_dead_abovedot, IBUS_KEY_A, 0x01E0, -IBUS_KEY_macron, IBUS_KEY_dead_abovedot, IBUS_KEY_O, 0x0230, -IBUS_KEY_macron, IBUS_KEY_dead_abovedot, IBUS_KEY_a, 0x01E1, -IBUS_KEY_macron, IBUS_KEY_dead_abovedot, IBUS_KEY_o, 0x0231, -IBUS_KEY_macron, IBUS_KEY_dead_diaeresis, IBUS_KEY_A, 0x01DE, -IBUS_KEY_macron, IBUS_KEY_dead_diaeresis, IBUS_KEY_O, 0x022A, -IBUS_KEY_macron, IBUS_KEY_dead_diaeresis, IBUS_KEY_U, 0x01D5, -IBUS_KEY_macron, IBUS_KEY_dead_diaeresis, IBUS_KEY_a, 0x01DF, -IBUS_KEY_macron, IBUS_KEY_dead_diaeresis, IBUS_KEY_o, 0x022B, -IBUS_KEY_macron, IBUS_KEY_dead_diaeresis, IBUS_KEY_u, 0x01D6, -IBUS_KEY_macron, IBUS_KEY_dead_ogonek, IBUS_KEY_O, 0x01EC, -IBUS_KEY_macron, IBUS_KEY_dead_ogonek, IBUS_KEY_o, 0x01ED, -IBUS_KEY_macron, IBUS_KEY_dead_belowdot, IBUS_KEY_L, 0x1E38, -IBUS_KEY_macron, IBUS_KEY_dead_belowdot, IBUS_KEY_R, 0x1E5C, -IBUS_KEY_macron, IBUS_KEY_dead_belowdot, IBUS_KEY_l, 0x1E39, -IBUS_KEY_macron, IBUS_KEY_dead_belowdot, IBUS_KEY_r, 0x1E5D, -IBUS_KEY_acute, IBUS_KEY_quotedbl, IBUS_KEY_I, 0x1E2E, -IBUS_KEY_acute, IBUS_KEY_quotedbl, IBUS_KEY_U, 0x01D7, -IBUS_KEY_acute, IBUS_KEY_quotedbl, IBUS_KEY_i, 0x1E2F, -IBUS_KEY_acute, IBUS_KEY_quotedbl, IBUS_KEY_u, 0x01D8, -IBUS_KEY_acute, IBUS_KEY_quotedbl, IBUS_KEY_Greek_iota, 0x0390, -IBUS_KEY_acute, IBUS_KEY_quotedbl, IBUS_KEY_Greek_upsilon, 0x03B0, -IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F0D, -IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_EPSILON, 0x1F1D, -IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F2D, -IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_IOTA, 0x1F3D, -IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMICRON, 0x1F4D, -IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_UPSILON, 0x1F5D, -IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1F6D, -IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F05, -IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_epsilon, 0x1F15, -IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F25, -IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_iota, 0x1F35, -IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_omicron, 0x1F45, -IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_upsilon, 0x1F55, -IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1F65, -IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F0C, -IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_EPSILON, 0x1F1C, -IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F2C, -IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_IOTA, 0x1F3C, -IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_OMICRON, 0x1F4C, -IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1F6C, -IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F04, -IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_epsilon, 0x1F14, -IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F24, -IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_iota, 0x1F34, -IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_omicron, 0x1F44, -IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_upsilon, 0x1F54, -IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1F64, -IBUS_KEY_acute, IBUS_KEY_plus, IBUS_KEY_O, 0x1EDA, -IBUS_KEY_acute, IBUS_KEY_plus, IBUS_KEY_U, 0x1EE8, -IBUS_KEY_acute, IBUS_KEY_plus, IBUS_KEY_o, 0x1EDB, -IBUS_KEY_acute, IBUS_KEY_plus, IBUS_KEY_u, 0x1EE9, -IBUS_KEY_acute, IBUS_KEY_comma, IBUS_KEY_C, 0x1E08, -IBUS_KEY_acute, IBUS_KEY_comma, IBUS_KEY_c, 0x1E09, -IBUS_KEY_acute, IBUS_KEY_slash, IBUS_KEY_O, 0x01FE, -IBUS_KEY_acute, IBUS_KEY_slash, IBUS_KEY_o, 0x01FF, -IBUS_KEY_acute, IBUS_KEY_asciicircum, IBUS_KEY_A, 0x1EA4, -IBUS_KEY_acute, IBUS_KEY_asciicircum, IBUS_KEY_E, 0x1EBE, -IBUS_KEY_acute, IBUS_KEY_asciicircum, IBUS_KEY_O, 0x1ED0, -IBUS_KEY_acute, IBUS_KEY_asciicircum, IBUS_KEY_a, 0x1EA5, -IBUS_KEY_acute, IBUS_KEY_asciicircum, IBUS_KEY_e, 0x1EBF, -IBUS_KEY_acute, IBUS_KEY_asciicircum, IBUS_KEY_o, 0x1ED1, -IBUS_KEY_acute, IBUS_KEY_underscore, IBUS_KEY_E, 0x1E16, -IBUS_KEY_acute, IBUS_KEY_underscore, IBUS_KEY_O, 0x1E52, -IBUS_KEY_acute, IBUS_KEY_underscore, IBUS_KEY_e, 0x1E17, -IBUS_KEY_acute, IBUS_KEY_underscore, IBUS_KEY_o, 0x1E53, -IBUS_KEY_acute, IBUS_KEY_b, IBUS_KEY_A, 0x1EAE, -IBUS_KEY_acute, IBUS_KEY_b, IBUS_KEY_a, 0x1EAF, -IBUS_KEY_acute, IBUS_KEY_asciitilde, IBUS_KEY_O, 0x1E4C, -IBUS_KEY_acute, IBUS_KEY_asciitilde, IBUS_KEY_U, 0x1E78, -IBUS_KEY_acute, IBUS_KEY_asciitilde, IBUS_KEY_o, 0x1E4D, -IBUS_KEY_acute, IBUS_KEY_asciitilde, IBUS_KEY_u, 0x1E79, -IBUS_KEY_acute, IBUS_KEY_macron, IBUS_KEY_E, 0x1E16, -IBUS_KEY_acute, IBUS_KEY_macron, IBUS_KEY_O, 0x1E52, -IBUS_KEY_acute, IBUS_KEY_macron, IBUS_KEY_e, 0x1E17, -IBUS_KEY_acute, IBUS_KEY_macron, IBUS_KEY_o, 0x1E53, -IBUS_KEY_acute, IBUS_KEY_cedilla, IBUS_KEY_C, 0x1E08, -IBUS_KEY_acute, IBUS_KEY_cedilla, IBUS_KEY_c, 0x1E09, -IBUS_KEY_acute, IBUS_KEY_dead_circumflex, IBUS_KEY_A, 0x1EA4, -IBUS_KEY_acute, IBUS_KEY_dead_circumflex, IBUS_KEY_E, 0x1EBE, -IBUS_KEY_acute, IBUS_KEY_dead_circumflex, IBUS_KEY_O, 0x1ED0, -IBUS_KEY_acute, IBUS_KEY_dead_circumflex, IBUS_KEY_a, 0x1EA5, -IBUS_KEY_acute, IBUS_KEY_dead_circumflex, IBUS_KEY_e, 0x1EBF, -IBUS_KEY_acute, IBUS_KEY_dead_circumflex, IBUS_KEY_o, 0x1ED1, -IBUS_KEY_acute, IBUS_KEY_dead_tilde, IBUS_KEY_O, 0x1E4C, -IBUS_KEY_acute, IBUS_KEY_dead_tilde, IBUS_KEY_U, 0x1E78, -IBUS_KEY_acute, IBUS_KEY_dead_tilde, IBUS_KEY_o, 0x1E4D, -IBUS_KEY_acute, IBUS_KEY_dead_tilde, IBUS_KEY_u, 0x1E79, -IBUS_KEY_acute, IBUS_KEY_dead_macron, IBUS_KEY_E, 0x1E16, -IBUS_KEY_acute, IBUS_KEY_dead_macron, IBUS_KEY_O, 0x1E52, -IBUS_KEY_acute, IBUS_KEY_dead_macron, IBUS_KEY_e, 0x1E17, -IBUS_KEY_acute, IBUS_KEY_dead_macron, IBUS_KEY_o, 0x1E53, -IBUS_KEY_acute, IBUS_KEY_dead_breve, IBUS_KEY_A, 0x1EAE, -IBUS_KEY_acute, IBUS_KEY_dead_breve, IBUS_KEY_a, 0x1EAF, -IBUS_KEY_acute, IBUS_KEY_dead_diaeresis, IBUS_KEY_I, 0x1E2E, -IBUS_KEY_acute, IBUS_KEY_dead_diaeresis, IBUS_KEY_U, 0x01D7, -IBUS_KEY_acute, IBUS_KEY_dead_diaeresis, IBUS_KEY_i, 0x1E2F, -IBUS_KEY_acute, IBUS_KEY_dead_diaeresis, IBUS_KEY_u, 0x01D8, -IBUS_KEY_acute, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_iota, 0x0390, -IBUS_KEY_acute, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_upsilon, 0x03B0, -IBUS_KEY_acute, IBUS_KEY_dead_abovering, IBUS_KEY_A, 0x01FA, -IBUS_KEY_acute, IBUS_KEY_dead_abovering, IBUS_KEY_a, 0x01FB, -IBUS_KEY_acute, IBUS_KEY_dead_cedilla, IBUS_KEY_C, 0x1E08, -IBUS_KEY_acute, IBUS_KEY_dead_cedilla, IBUS_KEY_c, 0x1E09, -IBUS_KEY_acute, IBUS_KEY_dead_horn, IBUS_KEY_O, 0x1EDA, -IBUS_KEY_acute, IBUS_KEY_dead_horn, IBUS_KEY_U, 0x1EE8, -IBUS_KEY_acute, IBUS_KEY_dead_horn, IBUS_KEY_o, 0x1EDB, -IBUS_KEY_acute, IBUS_KEY_dead_horn, IBUS_KEY_u, 0x1EE9, -IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F0C, -IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_EPSILON, 0x1F1C, -IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F2C, -IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_IOTA, 0x1F3C, -IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMICRON, 0x1F4C, -IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1F6C, -IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F04, -IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_epsilon, 0x1F14, -IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F24, -IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_iota, 0x1F34, -IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omicron, 0x1F44, -IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_upsilon, 0x1F54, -IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1F64, -IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F0D, -IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_EPSILON, 0x1F1D, -IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F2D, -IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_IOTA, 0x1F3D, -IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMICRON, 0x1F4D, -IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_UPSILON, 0x1F5D, -IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1F6D, -IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F05, -IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_epsilon, 0x1F15, -IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F25, -IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_iota, 0x1F35, -IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omicron, 0x1F45, -IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_upsilon, 0x1F55, -IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1F65, -IBUS_KEY_acute, IBUS_KEY_KP_Divide, IBUS_KEY_O, 0x01FE, -IBUS_KEY_acute, IBUS_KEY_KP_Divide, IBUS_KEY_o, 0x01FF, -0x05C1, 0x05BC, IBUS_KEY_hebrew_shin, 0xFB2C, -0x05C2, 0x05BC, IBUS_KEY_hebrew_shin, 0xFB2D, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_Greek_alpha, 0x1FB4, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_Greek_eta, 0x1FC4, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_Greek_omega, 0x1FF4, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F00, 0x1F84, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F01, 0x1F85, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F08, 0x1F8C, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F09, 0x1F8D, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F20, 0x1F94, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F21, 0x1F95, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F28, 0x1F9C, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F29, 0x1F9D, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F60, 0x1FA4, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F61, 0x1FA5, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F68, 0x1FAC, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F69, 0x1FAD, -IBUS_KEY_Greek_iota, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F89, -IBUS_KEY_Greek_iota, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F99, -IBUS_KEY_Greek_iota, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FA9, -IBUS_KEY_Greek_iota, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F81, -IBUS_KEY_Greek_iota, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F91, -IBUS_KEY_Greek_iota, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA1, -IBUS_KEY_Greek_iota, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F88, -IBUS_KEY_Greek_iota, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F98, -IBUS_KEY_Greek_iota, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FA8, -IBUS_KEY_Greek_iota, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F80, -IBUS_KEY_Greek_iota, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F90, -IBUS_KEY_Greek_iota, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA0, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_Greek_alpha, 0x1FB2, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_Greek_eta, 0x1FC2, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_Greek_omega, 0x1FF2, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F00, 0x1F82, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F01, 0x1F83, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F08, 0x1F8A, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F09, 0x1F8B, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F20, 0x1F92, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F21, 0x1F93, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F28, 0x1F9A, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F29, 0x1F9B, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F60, 0x1FA2, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F61, 0x1FA3, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F68, 0x1FAA, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F69, 0x1FAB, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_Greek_alpha, 0x1FB7, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_Greek_eta, 0x1FC7, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_Greek_omega, 0x1FF7, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F00, 0x1F86, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F01, 0x1F87, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F08, 0x1F8E, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F09, 0x1F8F, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F20, 0x1F96, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F21, 0x1F97, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F28, 0x1F9E, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F29, 0x1F9F, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F60, 0x1FA6, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F61, 0x1FA7, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F68, 0x1FAE, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F69, 0x1FAF, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_Greek_alpha, 0x1FB4, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_Greek_eta, 0x1FC4, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_Greek_omega, 0x1FF4, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F00, 0x1F84, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F01, 0x1F85, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F08, 0x1F8C, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F09, 0x1F8D, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F20, 0x1F94, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F21, 0x1F95, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F28, 0x1F9C, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F29, 0x1F9D, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F60, 0x1FA4, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F61, 0x1FA5, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F68, 0x1FAC, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F69, 0x1FAD, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_Greek_alpha, 0x1FB2, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_Greek_eta, 0x1FC2, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_Greek_omega, 0x1FF2, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F00, 0x1F82, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F01, 0x1F83, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F08, 0x1F8A, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F09, 0x1F8B, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F20, 0x1F92, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F21, 0x1F93, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F28, 0x1F9A, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F29, 0x1F9B, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F60, 0x1FA2, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F61, 0x1FA3, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F68, 0x1FAA, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F69, 0x1FAB, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_Greek_alpha, 0x1FB4, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_Greek_eta, 0x1FC4, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_Greek_omega, 0x1FF4, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F00, 0x1F84, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F01, 0x1F85, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F08, 0x1F8C, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F09, 0x1F8D, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F20, 0x1F94, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F21, 0x1F95, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F28, 0x1F9C, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F29, 0x1F9D, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F60, 0x1FA4, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F61, 0x1FA5, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F68, 0x1FAC, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F69, 0x1FAD, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_Greek_alpha, 0x1FB7, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_Greek_eta, 0x1FC7, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_Greek_omega, 0x1FF7, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F00, 0x1F86, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F01, 0x1F87, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F08, 0x1F8E, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F09, 0x1F8F, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F20, 0x1F96, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F21, 0x1F97, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F28, 0x1F9E, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F29, 0x1F9F, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F60, 0x1FA6, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F61, 0x1FA7, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F68, 0x1FAE, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F69, 0x1FAF, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F88, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F98, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FA8, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F80, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F90, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA0, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F89, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F99, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FA9, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F81, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F91, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA1, -IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_0, IBUS_KEY_parenright, 0x2469, -IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_1, IBUS_KEY_parenright, 0x246A, -IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_2, IBUS_KEY_parenright, 0x246B, -IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_3, IBUS_KEY_parenright, 0x246C, -IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_4, IBUS_KEY_parenright, 0x246D, -IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_5, IBUS_KEY_parenright, 0x246E, -IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_6, IBUS_KEY_parenright, 0x246F, -IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_7, IBUS_KEY_parenright, 0x2470, -IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_8, IBUS_KEY_parenright, 0x2471, -IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_9, IBUS_KEY_parenright, 0x2472, -IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_Space, IBUS_KEY_parenright, 0x246B, -IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_0, IBUS_KEY_parenright, 0x2469, -IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_1, IBUS_KEY_parenright, 0x246A, -IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_2, IBUS_KEY_parenright, 0x246B, -IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_3, IBUS_KEY_parenright, 0x246C, -IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_4, IBUS_KEY_parenright, 0x246D, -IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_5, IBUS_KEY_parenright, 0x246E, -IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_6, IBUS_KEY_parenright, 0x246F, -IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_7, IBUS_KEY_parenright, 0x2470, -IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_8, IBUS_KEY_parenright, 0x2471, -IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_9, IBUS_KEY_parenright, 0x2472, -IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_0, IBUS_KEY_parenright, 0x2473, -IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_1, IBUS_KEY_parenright, 0x3251, -IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_2, IBUS_KEY_parenright, 0x3252, -IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_3, IBUS_KEY_parenright, 0x3253, -IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_4, IBUS_KEY_parenright, 0x3254, -IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_5, IBUS_KEY_parenright, 0x3255, -IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_6, IBUS_KEY_parenright, 0x3256, -IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_7, IBUS_KEY_parenright, 0x3257, -IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_8, IBUS_KEY_parenright, 0x3258, -IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_9, IBUS_KEY_parenright, 0x3259, -IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_Space, IBUS_KEY_parenright, 0x3252, -IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_0, IBUS_KEY_parenright, 0x2473, -IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_1, IBUS_KEY_parenright, 0x3251, -IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_2, IBUS_KEY_parenright, 0x3252, -IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_3, IBUS_KEY_parenright, 0x3253, -IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_4, IBUS_KEY_parenright, 0x3254, -IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_5, IBUS_KEY_parenright, 0x3255, -IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_6, IBUS_KEY_parenright, 0x3256, -IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_7, IBUS_KEY_parenright, 0x3257, -IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_8, IBUS_KEY_parenright, 0x3258, -IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_9, IBUS_KEY_parenright, 0x3259, -IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_0, IBUS_KEY_parenright, 0x325A, -IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_1, IBUS_KEY_parenright, 0x325B, -IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_2, IBUS_KEY_parenright, 0x325C, -IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_3, IBUS_KEY_parenright, 0x325D, -IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_4, IBUS_KEY_parenright, 0x325E, -IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_5, IBUS_KEY_parenright, 0x325F, -IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_6, IBUS_KEY_parenright, 0x32B1, -IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_7, IBUS_KEY_parenright, 0x32B2, -IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_8, IBUS_KEY_parenright, 0x32B3, -IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_9, IBUS_KEY_parenright, 0x32B4, -IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_Space, IBUS_KEY_parenright, 0x325C, -IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_0, IBUS_KEY_parenright, 0x325A, -IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_1, IBUS_KEY_parenright, 0x325B, -IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_2, IBUS_KEY_parenright, 0x325C, -IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_3, IBUS_KEY_parenright, 0x325D, -IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_4, IBUS_KEY_parenright, 0x325E, -IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_5, IBUS_KEY_parenright, 0x325F, -IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_6, IBUS_KEY_parenright, 0x32B1, -IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_7, IBUS_KEY_parenright, 0x32B2, -IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_8, IBUS_KEY_parenright, 0x32B3, -IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_9, IBUS_KEY_parenright, 0x32B4, -IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_0, IBUS_KEY_parenright, 0x32B5, -IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_1, IBUS_KEY_parenright, 0x32B6, -IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_2, IBUS_KEY_parenright, 0x32B7, -IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_3, IBUS_KEY_parenright, 0x32B8, -IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_4, IBUS_KEY_parenright, 0x32B9, -IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_5, IBUS_KEY_parenright, 0x32BA, -IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_6, IBUS_KEY_parenright, 0x32BB, -IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_7, IBUS_KEY_parenright, 0x32BC, -IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_8, IBUS_KEY_parenright, 0x32BD, -IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_9, IBUS_KEY_parenright, 0x32BE, -IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_Space, IBUS_KEY_parenright, 0x32B7, -IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_0, IBUS_KEY_parenright, 0x32B5, -IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_1, IBUS_KEY_parenright, 0x32B6, -IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_2, IBUS_KEY_parenright, 0x32B7, -IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_3, IBUS_KEY_parenright, 0x32B8, -IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_4, IBUS_KEY_parenright, 0x32B9, -IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_5, IBUS_KEY_parenright, 0x32BA, -IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_6, IBUS_KEY_parenright, 0x32BB, -IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_7, IBUS_KEY_parenright, 0x32BC, -IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_8, IBUS_KEY_parenright, 0x32BD, -IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_9, IBUS_KEY_parenright, 0x32BE, -IBUS_KEY_parenleft, IBUS_KEY_5, IBUS_KEY_KP_0, IBUS_KEY_parenright, 0x32BF, -IBUS_KEY_parenleft, 0x1100, 0x1161, IBUS_KEY_parenright, 0x326E, -IBUS_KEY_parenleft, 0x1102, 0x1161, IBUS_KEY_parenright, 0x326F, -IBUS_KEY_parenleft, 0x1103, 0x1161, IBUS_KEY_parenright, 0x3270, -IBUS_KEY_parenleft, 0x1105, 0x1161, IBUS_KEY_parenright, 0x3271, -IBUS_KEY_parenleft, 0x1106, 0x1161, IBUS_KEY_parenright, 0x3272, -IBUS_KEY_parenleft, 0x1107, 0x1161, IBUS_KEY_parenright, 0x3273, -IBUS_KEY_parenleft, 0x1109, 0x1161, IBUS_KEY_parenright, 0x3274, -IBUS_KEY_parenleft, 0x110B, 0x1161, IBUS_KEY_parenright, 0x3275, -IBUS_KEY_parenleft, 0x110C, 0x1161, IBUS_KEY_parenright, 0x3276, -IBUS_KEY_parenleft, 0x110E, 0x1161, IBUS_KEY_parenright, 0x3277, -IBUS_KEY_parenleft, 0x110F, 0x1161, IBUS_KEY_parenright, 0x3278, -IBUS_KEY_parenleft, 0x1110, 0x1161, IBUS_KEY_parenright, 0x3279, -IBUS_KEY_parenleft, 0x1111, 0x1161, IBUS_KEY_parenright, 0x327A, -IBUS_KEY_parenleft, 0x1112, 0x1161, IBUS_KEY_parenright, 0x327B, -IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_0, IBUS_KEY_parenright, 0x2473, -IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_1, IBUS_KEY_parenright, 0x3251, -IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_2, IBUS_KEY_parenright, 0x3252, -IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_3, IBUS_KEY_parenright, 0x3253, -IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_4, IBUS_KEY_parenright, 0x3254, -IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_5, IBUS_KEY_parenright, 0x3255, -IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_6, IBUS_KEY_parenright, 0x3256, -IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_7, IBUS_KEY_parenright, 0x3257, -IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_8, IBUS_KEY_parenright, 0x3258, -IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_9, IBUS_KEY_parenright, 0x3259, -IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_Space, IBUS_KEY_parenright, 0x3252, -IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_0, IBUS_KEY_parenright, 0x2473, -IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_1, IBUS_KEY_parenright, 0x3251, -IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_2, IBUS_KEY_parenright, 0x3252, -IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_3, IBUS_KEY_parenright, 0x3253, -IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_4, IBUS_KEY_parenright, 0x3254, -IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_5, IBUS_KEY_parenright, 0x3255, -IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_6, IBUS_KEY_parenright, 0x3256, -IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_7, IBUS_KEY_parenright, 0x3257, -IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_8, IBUS_KEY_parenright, 0x3258, -IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_9, IBUS_KEY_parenright, 0x3259, -IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_0, IBUS_KEY_parenright, 0x2469, -IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_1, IBUS_KEY_parenright, 0x246A, -IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_2, IBUS_KEY_parenright, 0x246B, -IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_3, IBUS_KEY_parenright, 0x246C, -IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_4, IBUS_KEY_parenright, 0x246D, -IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_5, IBUS_KEY_parenright, 0x246E, -IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_6, IBUS_KEY_parenright, 0x246F, -IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_7, IBUS_KEY_parenright, 0x2470, -IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_8, IBUS_KEY_parenright, 0x2471, -IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_9, IBUS_KEY_parenright, 0x2472, -IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_Space, IBUS_KEY_parenright, 0x246B, -IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_0, IBUS_KEY_parenright, 0x2469, -IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_1, IBUS_KEY_parenright, 0x246A, -IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_2, IBUS_KEY_parenright, 0x246B, -IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_3, IBUS_KEY_parenright, 0x246C, -IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_4, IBUS_KEY_parenright, 0x246D, -IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_5, IBUS_KEY_parenright, 0x246E, -IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_6, IBUS_KEY_parenright, 0x246F, -IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_7, IBUS_KEY_parenright, 0x2470, -IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_8, IBUS_KEY_parenright, 0x2471, -IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_9, IBUS_KEY_parenright, 0x2472, -IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_0, IBUS_KEY_parenright, 0x2473, -IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_1, IBUS_KEY_parenright, 0x3251, -IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_2, IBUS_KEY_parenright, 0x3252, -IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_3, IBUS_KEY_parenright, 0x3253, -IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_4, IBUS_KEY_parenright, 0x3254, -IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_5, IBUS_KEY_parenright, 0x3255, -IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_6, IBUS_KEY_parenright, 0x3256, -IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_7, IBUS_KEY_parenright, 0x3257, -IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_8, IBUS_KEY_parenright, 0x3258, -IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_9, IBUS_KEY_parenright, 0x3259, -IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_Space, IBUS_KEY_parenright, 0x3252, -IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_0, IBUS_KEY_parenright, 0x2473, -IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_1, IBUS_KEY_parenright, 0x3251, -IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_2, IBUS_KEY_parenright, 0x3252, -IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_3, IBUS_KEY_parenright, 0x3253, -IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_4, IBUS_KEY_parenright, 0x3254, -IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_5, IBUS_KEY_parenright, 0x3255, -IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_6, IBUS_KEY_parenright, 0x3256, -IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_7, IBUS_KEY_parenright, 0x3257, -IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_8, IBUS_KEY_parenright, 0x3258, -IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_9, IBUS_KEY_parenright, 0x3259, -IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_0, IBUS_KEY_parenright, 0x325A, -IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_1, IBUS_KEY_parenright, 0x325B, -IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_2, IBUS_KEY_parenright, 0x325C, -IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_3, IBUS_KEY_parenright, 0x325D, -IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_4, IBUS_KEY_parenright, 0x325E, -IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_5, IBUS_KEY_parenright, 0x325F, -IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_6, IBUS_KEY_parenright, 0x32B1, -IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_7, IBUS_KEY_parenright, 0x32B2, -IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_8, IBUS_KEY_parenright, 0x32B3, -IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_9, IBUS_KEY_parenright, 0x32B4, -IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_Space, IBUS_KEY_parenright, 0x325C, -IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_0, IBUS_KEY_parenright, 0x325A, -IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_1, IBUS_KEY_parenright, 0x325B, -IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_2, IBUS_KEY_parenright, 0x325C, -IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_3, IBUS_KEY_parenright, 0x325D, -IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_4, IBUS_KEY_parenright, 0x325E, -IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_5, IBUS_KEY_parenright, 0x325F, -IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_6, IBUS_KEY_parenright, 0x32B1, -IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_7, IBUS_KEY_parenright, 0x32B2, -IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_8, IBUS_KEY_parenright, 0x32B3, -IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_9, IBUS_KEY_parenright, 0x32B4, -IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_0, IBUS_KEY_parenright, 0x32B5, -IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_1, IBUS_KEY_parenright, 0x32B6, -IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_2, IBUS_KEY_parenright, 0x32B7, -IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_3, IBUS_KEY_parenright, 0x32B8, -IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_4, IBUS_KEY_parenright, 0x32B9, -IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_5, IBUS_KEY_parenright, 0x32BA, -IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_6, IBUS_KEY_parenright, 0x32BB, -IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_7, IBUS_KEY_parenright, 0x32BC, -IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_8, IBUS_KEY_parenright, 0x32BD, -IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_9, IBUS_KEY_parenright, 0x32BE, -IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_Space, IBUS_KEY_parenright, 0x32B7, -IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_0, IBUS_KEY_parenright, 0x32B5, -IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_1, IBUS_KEY_parenright, 0x32B6, -IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_2, IBUS_KEY_parenright, 0x32B7, -IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_3, IBUS_KEY_parenright, 0x32B8, -IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_4, IBUS_KEY_parenright, 0x32B9, -IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_5, IBUS_KEY_parenright, 0x32BA, -IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_6, IBUS_KEY_parenright, 0x32BB, -IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_7, IBUS_KEY_parenright, 0x32BC, -IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_8, IBUS_KEY_parenright, 0x32BD, -IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_9, IBUS_KEY_parenright, 0x32BE, -IBUS_KEY_parenleft, IBUS_KEY_KP_5, IBUS_KEY_KP_0, IBUS_KEY_parenright, 0x32BF, -IBUS_KEY_C, IBUS_KEY_C, IBUS_KEY_C, IBUS_KEY_P, 0x262D, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8D, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9D, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAD, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F85, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F95, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA5, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8C, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9C, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAC, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F84, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F94, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA4, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8C, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9C, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAC, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F84, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F94, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA4, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8D, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9D, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAD, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F85, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F95, -IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA5, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8B, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9B, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAB, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F83, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F93, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA3, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8A, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9A, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAA, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F82, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F92, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA2, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8A, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9A, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAA, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F82, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F92, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA2, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8B, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9B, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAB, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F83, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F93, -IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA3, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8F, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9F, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAF, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F87, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F97, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA7, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8E, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9E, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAE, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F86, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F96, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA6, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8E, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9E, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAE, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F86, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F96, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA6, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8F, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9F, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAF, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F87, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F97, -IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA7, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8D, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9D, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAD, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F85, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F95, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA5, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8C, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9C, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAC, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F84, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F94, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA4, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8C, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9C, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAC, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F84, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F94, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA4, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8D, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9D, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAD, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F85, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F95, -IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA5, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8B, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9B, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAB, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F83, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F93, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA3, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8A, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9A, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAA, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F82, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F92, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA2, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8A, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9A, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAA, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F82, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F92, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA2, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8B, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9B, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAB, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F83, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F93, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA3, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8D, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9D, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAD, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F85, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F95, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA5, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8C, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9C, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAC, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F84, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F94, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA4, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8C, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9C, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAC, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F84, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F94, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA4, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8D, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9D, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAD, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F85, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F95, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA5, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8F, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9F, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAF, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F87, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F97, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA7, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8E, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9E, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAE, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F86, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F96, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA6, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8E, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9E, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAE, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F86, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F96, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA6, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8F, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9F, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAF, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F87, -IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F97, +IBUS_KEY_Greek_accentdieresis, 180, 184, 184, 184, 184, +IBUS_KEY_dead_grave, 184, 246, 333, 545, 545, +IBUS_KEY_dead_acute, 545, 609, 705, 981, 981, +IBUS_KEY_dead_circumflex, 981, 1105, 1105, 1305, 1305, +IBUS_KEY_dead_tilde, 1305, 1389, 1452, 1592, 1592, +IBUS_KEY_dead_macron, 1592, 1638, 1656, 1728, 1728, +IBUS_KEY_dead_breve, 1728, 1778, 1778, 1802, 1802, +IBUS_KEY_dead_abovedot, 1802, 1832, 1835, 1871, 1871, +IBUS_KEY_dead_diaeresis, 1871, 1959, 1971, 1995, 1995, +IBUS_KEY_dead_abovering, 1995, 2005, 2005, 2005, 2005, +IBUS_KEY_dead_doubleacute, 2005, 2015, 2015, 2015, 2015, +IBUS_KEY_dead_caron, 2015, 2057, 2057, 2065, 2065, +IBUS_KEY_dead_cedilla, 2065, 2077, 2083, 2083, 2083, +IBUS_KEY_dead_ogonek, 2083, 2093, 2093, 2093, 2093, +IBUS_KEY_dead_iota, 2093, 2115, 2214, 2646, 3306, +IBUS_KEY_dead_voiced_sound, 3306, 3352, 3352, 3352, 3352, +IBUS_KEY_dead_semivoiced_sound, 3352, 3362, 3362, 3362, 3362, +IBUS_KEY_dead_belowdot, 3362, 3378, 3378, 3394, 3394, +IBUS_KEY_dead_hook, 3394, 3472, 3475, 3531, 3531, +IBUS_KEY_dead_horn, 3531, 3541, 3541, 3541, 3541, +IBUS_KEY_dead_stroke, 3541, 3629, 3641, 3641, 3641, +IBUS_KEY_dead_psili, 3641, 3669, 3669, 3669, 3669, +IBUS_KEY_dead_dasia, 3669, 3701, 3701, 3701, 3701, +IBUS_KEY_dead_belowring, 3701, 3703, 3703, 3703, 3703, +IBUS_KEY_dead_belowtilde, 3703, 3705, 3705, 3705, 3705, +IBUS_KEY_dead_belowdiaeresis, 3705, 3705, 3708, 3708, 3708, +IBUS_KEY_dead_belowcomma, 3708, 3722, 3722, 3722, 3722, +IBUS_KEY_dead_currency, 3722, 3820, 3826, 3826, 3826, +IBUS_KEY_dead_greek, 3826, 3928, 3952, 3952, 3952, +IBUS_KEY_Multi_key, 3952, 3952, 10495, 14203, 16083, +IBUS_KEY_Greek_iota, 0x0390, +IBUS_KEY_Greek_upsilon, 0x03B0, +IBUS_KEY_space, 0x0060, +IBUS_KEY_V, 0x01DB, +IBUS_KEY_v, 0x01DC, +IBUS_KEY_nobreakspace, 0x0300, +IBUS_KEY_Abreve, 0x1EB0, +IBUS_KEY_abreve, 0x1EB1, +IBUS_KEY_Emacron, 0x1E14, +IBUS_KEY_emacron, 0x1E15, +IBUS_KEY_Omacron, 0x1E50, +IBUS_KEY_omacron, 0x1E51, +IBUS_KEY_Cyrillic_ie, 0x0450, +IBUS_KEY_Cyrillic_i, 0x045D, +IBUS_KEY_Cyrillic_IE, 0x0400, +IBUS_KEY_Cyrillic_I, 0x040D, +IBUS_KEY_Greek_iotadieresis, 0x1FD2, +IBUS_KEY_Greek_upsilondieresis, 0x1FE2, +IBUS_KEY_Greek_ALPHA, 0x1FBA, +IBUS_KEY_Greek_EPSILON, 0x1FC8, +IBUS_KEY_Greek_ETA, 0x1FCA, +IBUS_KEY_Greek_IOTA, 0x1FDA, +IBUS_KEY_Greek_OMICRON, 0x1FF8, +IBUS_KEY_Greek_UPSILON, 0x1FEA, +IBUS_KEY_Greek_OMEGA, 0x1FFA, +IBUS_KEY_Greek_alpha, 0x1F70, +IBUS_KEY_Greek_epsilon, 0x1F72, +IBUS_KEY_Greek_eta, 0x1F74, +IBUS_KEY_Greek_iota, 0x1F76, +IBUS_KEY_Greek_omicron, 0x1F78, +IBUS_KEY_Greek_upsilon, 0x1F7A, +IBUS_KEY_Greek_omega, 0x1F7C, +IBUS_KEY_dead_grave, 0x0060, +IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_iota, 0x1FD2, +IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_upsilon, 0x1FE2, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F0A, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_EPSILON, 0x1F1A, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F2A, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_IOTA, 0x1F3A, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMICRON, 0x1F4A, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1F6A, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F02, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_epsilon, 0x1F12, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F22, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_iota, 0x1F32, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_omicron, 0x1F42, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_upsilon, 0x1F52, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1F62, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F0B, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_EPSILON, 0x1F1B, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F2B, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_IOTA, 0x1F3B, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMICRON, 0x1F4B, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_UPSILON, 0x1F5B, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1F6B, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F03, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_epsilon, 0x1F13, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F23, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_iota, 0x1F33, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omicron, 0x1F43, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_upsilon, 0x1F53, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1F63, +IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_U, 0x01DB, +IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_u, 0x01DC, +IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_Greek_iota, 0x1FD2, +IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_Greek_upsilon, 0x1FE2, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F0B, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_EPSILON, 0x1F1B, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F2B, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_IOTA, 0x1F3B, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMICRON, 0x1F4B, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_UPSILON, 0x1F5B, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1F6B, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F03, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_epsilon, 0x1F13, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F23, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_iota, 0x1F33, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_omicron, 0x1F43, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_upsilon, 0x1F53, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1F63, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F0A, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_EPSILON, 0x1F1A, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F2A, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_IOTA, 0x1F3A, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_OMICRON, 0x1F4A, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1F6A, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F02, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_epsilon, 0x1F12, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F22, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_iota, 0x1F32, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_omicron, 0x1F42, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_upsilon, 0x1F52, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1F62, +IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_O, 0x1EDC, +IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_U, 0x1EEA, +IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_o, 0x1EDD, +IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_u, 0x1EEB, +IBUS_KEY_Multi_key, IBUS_KEY_U, IBUS_KEY_A, 0x1EB0, +IBUS_KEY_Multi_key, IBUS_KEY_U, IBUS_KEY_a, 0x1EB1, +IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_A, 0x1EA6, +IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_E, 0x1EC0, +IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_O, 0x1ED2, +IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_a, 0x1EA7, +IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_e, 0x1EC1, +IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_o, 0x1ED3, +IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_E, 0x1E14, +IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_O, 0x1E50, +IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_e, 0x1E15, +IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_o, 0x1E51, +IBUS_KEY_Multi_key, IBUS_KEY_b, IBUS_KEY_A, 0x1EB0, +IBUS_KEY_Multi_key, IBUS_KEY_b, IBUS_KEY_a, 0x1EB1, +IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_E, 0x1E14, +IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_O, 0x1E50, +IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_e, 0x1E15, +IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_o, 0x1E51, +IBUS_KEY_space, 0x0027, +IBUS_KEY_V, 0x01D7, +IBUS_KEY_v, 0x01D8, +IBUS_KEY_nobreakspace, 0x0301, +IBUS_KEY_Abreve, 0x1EAE, +IBUS_KEY_abreve, 0x1EAF, +IBUS_KEY_Emacron, 0x1E16, +IBUS_KEY_emacron, 0x1E17, +IBUS_KEY_Utilde, 0x1E78, +IBUS_KEY_omacron, 0x1E53, +IBUS_KEY_utilde, 0x1E79, +IBUS_KEY_Cyrillic_ghe, 0x0453, +IBUS_KEY_Cyrillic_ka, 0x045C, +IBUS_KEY_Cyrillic_GHE, 0x0403, +IBUS_KEY_Cyrillic_KA, 0x040C, +IBUS_KEY_Greek_iotadieresis, 0x0390, +IBUS_KEY_Greek_upsilondieresis, 0x03B0, +IBUS_KEY_Greek_ALPHA, 0x0386, +IBUS_KEY_Greek_EPSILON, 0x0388, +IBUS_KEY_Greek_ETA, 0x0389, +IBUS_KEY_Greek_IOTA, 0x038A, +IBUS_KEY_Greek_OMICRON, 0x038C, +IBUS_KEY_Greek_UPSILON, 0x038E, +IBUS_KEY_Greek_OMEGA, 0x038F, +IBUS_KEY_Greek_alpha, 0x03AC, +IBUS_KEY_Greek_epsilon, 0x03AD, +IBUS_KEY_Greek_eta, 0x03AE, +IBUS_KEY_Greek_iota, 0x03AF, +IBUS_KEY_Greek_omicron, 0x03CC, +IBUS_KEY_Greek_upsilon, 0x03CD, +IBUS_KEY_Greek_omega, 0x03CE, +IBUS_KEY_dead_acute, 0x00B4, +IBUS_KEY_dead_diaeresis, IBUS_KEY_space, 0x0385, +IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_iota, 0x0390, +IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_upsilon, 0x03B0, +IBUS_KEY_dead_stroke, IBUS_KEY_O, 0x01FE, +IBUS_KEY_dead_stroke, IBUS_KEY_o, 0x01FF, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F0C, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_EPSILON, 0x1F1C, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F2C, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_IOTA, 0x1F3C, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMICRON, 0x1F4C, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1F6C, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F04, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_epsilon, 0x1F14, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F24, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_iota, 0x1F34, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_omicron, 0x1F44, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_upsilon, 0x1F54, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1F64, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F0D, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_EPSILON, 0x1F1D, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F2D, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_IOTA, 0x1F3D, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMICRON, 0x1F4D, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_UPSILON, 0x1F5D, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1F6D, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F05, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_epsilon, 0x1F15, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F25, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_iota, 0x1F35, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omicron, 0x1F45, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_upsilon, 0x1F55, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1F65, +IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_I, 0x1E2E, +IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_U, 0x01D7, +IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_i, 0x1E2F, +IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_u, 0x01D8, +IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_Greek_iota, 0x0390, +IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_Greek_upsilon, 0x03B0, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F0D, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_EPSILON, 0x1F1D, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F2D, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_IOTA, 0x1F3D, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMICRON, 0x1F4D, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_UPSILON, 0x1F5D, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1F6D, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F05, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_epsilon, 0x1F15, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F25, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_iota, 0x1F35, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_omicron, 0x1F45, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_upsilon, 0x1F55, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1F65, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F0C, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_EPSILON, 0x1F1C, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F2C, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_IOTA, 0x1F3C, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_OMICRON, 0x1F4C, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1F6C, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F04, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_epsilon, 0x1F14, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F24, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_iota, 0x1F34, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_omicron, 0x1F44, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_upsilon, 0x1F54, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1F64, +IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_O, 0x1EDA, +IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_U, 0x1EE8, +IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_o, 0x1EDB, +IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_u, 0x1EE9, +IBUS_KEY_Multi_key, IBUS_KEY_comma, IBUS_KEY_C, 0x1E08, +IBUS_KEY_Multi_key, IBUS_KEY_comma, IBUS_KEY_c, 0x1E09, +IBUS_KEY_Multi_key, IBUS_KEY_slash, IBUS_KEY_O, 0x01FE, +IBUS_KEY_Multi_key, IBUS_KEY_slash, IBUS_KEY_o, 0x01FF, +IBUS_KEY_Multi_key, IBUS_KEY_U, IBUS_KEY_A, 0x1EAE, +IBUS_KEY_Multi_key, IBUS_KEY_U, IBUS_KEY_a, 0x1EAF, +IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_A, 0x1EA4, +IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_E, 0x1EBE, +IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_O, 0x1ED0, +IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_a, 0x1EA5, +IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_e, 0x1EBF, +IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_o, 0x1ED1, +IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_E, 0x1E16, +IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_O, 0x1E52, +IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_e, 0x1E17, +IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_o, 0x1E53, +IBUS_KEY_Multi_key, IBUS_KEY_b, IBUS_KEY_A, 0x1EAE, +IBUS_KEY_Multi_key, IBUS_KEY_b, IBUS_KEY_a, 0x1EAF, +IBUS_KEY_Multi_key, IBUS_KEY_o, IBUS_KEY_A, 0x01FA, +IBUS_KEY_Multi_key, IBUS_KEY_o, IBUS_KEY_a, 0x01FB, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_O, 0x1E4C, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_U, 0x1E78, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_o, 0x1E4D, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_u, 0x1E79, +IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_E, 0x1E16, +IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_O, 0x1E52, +IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_e, 0x1E17, +IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_o, 0x1E53, +IBUS_KEY_Multi_key, IBUS_KEY_cedilla, IBUS_KEY_C, 0x1E08, +IBUS_KEY_Multi_key, IBUS_KEY_cedilla, IBUS_KEY_c, 0x1E09, +IBUS_KEY_Multi_key, IBUS_KEY_KP_Divide, IBUS_KEY_O, 0x01FE, +IBUS_KEY_Multi_key, IBUS_KEY_KP_Divide, IBUS_KEY_o, 0x01FF, +IBUS_KEY_space, 0x005E, +IBUS_KEY_parenleft, 0x207D, +IBUS_KEY_parenright, 0x207E, +IBUS_KEY_plus, 0x207A, +IBUS_KEY_minus, 0x207B, +IBUS_KEY_0, 0x2070, +IBUS_KEY_1, 0x00B9, +IBUS_KEY_2, 0x00B2, +IBUS_KEY_3, 0x00B3, +IBUS_KEY_4, 0x2074, +IBUS_KEY_5, 0x2075, +IBUS_KEY_6, 0x2076, +IBUS_KEY_7, 0x2077, +IBUS_KEY_8, 0x2078, +IBUS_KEY_9, 0x2079, +IBUS_KEY_equal, 0x207C, +IBUS_KEY_nobreakspace, 0x0302, +IBUS_KEY_Agrave, 0x1EA6, +IBUS_KEY_Aacute, 0x1EA4, +IBUS_KEY_Atilde, 0x1EAA, +IBUS_KEY_Egrave, 0x1EC0, +IBUS_KEY_Eacute, 0x1EBE, +IBUS_KEY_Ograve, 0x1ED2, +IBUS_KEY_Oacute, 0x1ED0, +IBUS_KEY_Otilde, 0x1ED6, +IBUS_KEY_agrave, 0x1EA7, +IBUS_KEY_aacute, 0x1EA5, +IBUS_KEY_atilde, 0x1EAB, +IBUS_KEY_egrave, 0x1EC1, +IBUS_KEY_eacute, 0x1EBF, +IBUS_KEY_ograve, 0x1ED3, +IBUS_KEY_oacute, 0x1ED1, +IBUS_KEY_otilde, 0x1ED7, +0x2212, 0x207B, +0x4E00, 0x3192, +0x4E01, 0x319C, +0x4E09, 0x3194, +0x4E0A, 0x3196, +0x4E0B, 0x3198, +0x4E19, 0x319B, +0x4E2D, 0x3197, +0x4E59, 0x319A, +0x4E8C, 0x3193, +0x4EBA, 0x319F, +0x56DB, 0x3195, +0x5730, 0x319E, +0x5929, 0x319D, +0x7532, 0x3199, +IBUS_KEY_dead_circumflex, 0x005E, +IBUS_KEY_KP_Space, 0x00B2, +IBUS_KEY_KP_Add, 0x207A, +IBUS_KEY_KP_0, 0x2070, +IBUS_KEY_KP_1, 0x00B9, +IBUS_KEY_KP_2, 0x00B2, +IBUS_KEY_KP_3, 0x00B3, +IBUS_KEY_KP_4, 0x2074, +IBUS_KEY_KP_5, 0x2075, +IBUS_KEY_KP_6, 0x2076, +IBUS_KEY_KP_7, 0x2077, +IBUS_KEY_KP_8, 0x2078, +IBUS_KEY_KP_9, 0x2079, +IBUS_KEY_KP_Equal, 0x207C, +IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_A, 0x1EAC, +IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_E, 0x1EC6, +IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_O, 0x1ED8, +IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_a, 0x1EAD, +IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_e, 0x1EC7, +IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_o, 0x1ED9, +IBUS_KEY_Multi_key, IBUS_KEY_S, IBUS_KEY_M, 0x2120, +IBUS_KEY_Multi_key, IBUS_KEY_S, IBUS_KEY_m, 0x2120, +IBUS_KEY_Multi_key, IBUS_KEY_T, IBUS_KEY_M, 0x2122, +IBUS_KEY_Multi_key, IBUS_KEY_T, IBUS_KEY_m, 0x2122, +IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_a, 0x00AA, +IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_h, 0x02B0, +IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_i, 0x2071, +IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_j, 0x02B2, +IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_l, 0x02E1, +IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_n, 0x207F, +IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_o, 0x00BA, +IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_r, 0x02B3, +IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_s, 0x02E2, +IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_w, 0x02B7, +IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_x, 0x02E3, +IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_y, 0x02B8, +IBUS_KEY_Multi_key, IBUS_KEY_underscore, 0x0263, 0x02E0, +IBUS_KEY_Multi_key, IBUS_KEY_underscore, 0x0266, 0x02B1, +IBUS_KEY_Multi_key, IBUS_KEY_underscore, 0x0279, 0x02B4, +IBUS_KEY_Multi_key, IBUS_KEY_underscore, 0x027B, 0x02B5, +IBUS_KEY_Multi_key, IBUS_KEY_underscore, 0x0281, 0x02B6, +IBUS_KEY_Multi_key, IBUS_KEY_underscore, 0x0295, 0x02E4, +IBUS_KEY_Multi_key, IBUS_KEY_s, IBUS_KEY_M, 0x2120, +IBUS_KEY_Multi_key, IBUS_KEY_s, IBUS_KEY_m, 0x2120, +IBUS_KEY_Multi_key, IBUS_KEY_t, IBUS_KEY_M, 0x2122, +IBUS_KEY_Multi_key, IBUS_KEY_t, IBUS_KEY_m, 0x2122, +IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_a, 0x00AA, +IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_h, 0x02B0, +IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_i, 0x2071, +IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_j, 0x02B2, +IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_l, 0x02E1, +IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_n, 0x207F, +IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_o, 0x00BA, +IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_r, 0x02B3, +IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_s, 0x02E2, +IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_w, 0x02B7, +IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_x, 0x02E3, +IBUS_KEY_Multi_key, IBUS_KEY_underbar, IBUS_KEY_y, 0x02B8, +IBUS_KEY_Multi_key, IBUS_KEY_underbar, 0x0263, 0x02E0, +IBUS_KEY_Multi_key, IBUS_KEY_underbar, 0x0266, 0x02B1, +IBUS_KEY_Multi_key, IBUS_KEY_underbar, 0x0279, 0x02B4, +IBUS_KEY_Multi_key, IBUS_KEY_underbar, 0x027B, 0x02B5, +IBUS_KEY_Multi_key, IBUS_KEY_underbar, 0x0281, 0x02B6, +IBUS_KEY_Multi_key, IBUS_KEY_underbar, 0x0295, 0x02E4, +IBUS_KEY_space, 0x007E, +IBUS_KEY_less, 0x2272, +IBUS_KEY_equal, 0x2243, +IBUS_KEY_greater, 0x2273, +IBUS_KEY_nobreakspace, 0x0303, +IBUS_KEY_Oacute, 0x1E4C, +IBUS_KEY_Odiaeresis, 0x1E4E, +IBUS_KEY_Uacute, 0x1E78, +IBUS_KEY_oacute, 0x1E4D, +IBUS_KEY_odiaeresis, 0x1E4F, +IBUS_KEY_uacute, 0x1E79, +IBUS_KEY_Abreve, 0x1EB4, +IBUS_KEY_abreve, 0x1EB5, +IBUS_KEY_Omacron, 0x022C, +IBUS_KEY_omacron, 0x022D, +IBUS_KEY_Greek_iotadieresis, 0x1FD7, +IBUS_KEY_Greek_upsilondieresis, 0x1FE7, +IBUS_KEY_Greek_alpha, 0x1FB6, +IBUS_KEY_Greek_eta, 0x1FC6, +IBUS_KEY_Greek_iota, 0x1FD6, +IBUS_KEY_Greek_upsilon, 0x1FE6, +IBUS_KEY_Greek_omega, 0x1FF6, +0x1F00, 0x1F06, +0x1F01, 0x1F07, +0x1F08, 0x1F0E, +0x1F09, 0x1F0F, +0x1F20, 0x1F26, +0x1F21, 0x1F27, +0x1F28, 0x1F2E, +0x1F29, 0x1F2F, +0x1F30, 0x1F36, +0x1F31, 0x1F37, +0x1F38, 0x1F3E, +0x1F39, 0x1F3F, +0x1F50, 0x1F56, +0x1F51, 0x1F57, +0x1F59, 0x1F5F, +0x1F60, 0x1F66, +0x1F61, 0x1F67, +0x1F68, 0x1F6E, +0x1F69, 0x1F6F, +IBUS_KEY_dead_tilde, 0x007E, +IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_iota, 0x1FD7, +IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_upsilon, 0x1FE7, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F0E, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F2E, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_IOTA, 0x1F3E, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1F6E, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F06, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F26, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_iota, 0x1F36, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_upsilon, 0x1F56, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1F66, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F0F, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F2F, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_IOTA, 0x1F3F, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_UPSILON, 0x1F5F, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1F6F, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F07, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F27, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_iota, 0x1F37, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_upsilon, 0x1F57, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1F67, +IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_Greek_iota, 0x1FD7, +IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_Greek_upsilon, 0x1FE7, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F0F, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F2F, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_IOTA, 0x1F3F, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_UPSILON, 0x1F5F, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1F6F, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F07, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F27, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_iota, 0x1F37, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_upsilon, 0x1F57, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1F67, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F0E, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F2E, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_IOTA, 0x1F3E, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1F6E, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F06, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F26, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_iota, 0x1F36, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_upsilon, 0x1F56, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1F66, +IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_O, 0x1EE0, +IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_U, 0x1EEE, +IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_o, 0x1EE1, +IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_u, 0x1EEF, +IBUS_KEY_Multi_key, IBUS_KEY_U, IBUS_KEY_A, 0x1EB4, +IBUS_KEY_Multi_key, IBUS_KEY_U, IBUS_KEY_a, 0x1EB5, +IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_A, 0x1EAA, +IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_E, 0x1EC4, +IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_O, 0x1ED6, +IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_a, 0x1EAB, +IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_e, 0x1EC5, +IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_o, 0x1ED7, +IBUS_KEY_Multi_key, IBUS_KEY_b, IBUS_KEY_A, 0x1EB4, +IBUS_KEY_Multi_key, IBUS_KEY_b, IBUS_KEY_a, 0x1EB5, +IBUS_KEY_space, 0x00AF, +IBUS_KEY_V, 0x01D5, +IBUS_KEY_v, 0x01D6, +IBUS_KEY_nobreakspace, 0x0304, +IBUS_KEY_Egrave, 0x1E14, +IBUS_KEY_Eacute, 0x1E16, +IBUS_KEY_Ograve, 0x1E50, +IBUS_KEY_Oacute, 0x1E52, +IBUS_KEY_egrave, 0x1E15, +IBUS_KEY_eacute, 0x1E17, +IBUS_KEY_ograve, 0x1E51, +IBUS_KEY_oacute, 0x1E53, +IBUS_KEY_Cyrillic_i, 0x04E3, +IBUS_KEY_Cyrillic_u, 0x04EF, +IBUS_KEY_Cyrillic_I, 0x04E2, +IBUS_KEY_Cyrillic_U, 0x04EE, +IBUS_KEY_Greek_ALPHA, 0x1FB9, +IBUS_KEY_Greek_IOTA, 0x1FD9, +IBUS_KEY_Greek_UPSILON, 0x1FE9, +IBUS_KEY_Greek_alpha, 0x1FB1, +IBUS_KEY_Greek_iota, 0x1FD1, +IBUS_KEY_Greek_upsilon, 0x1FE1, +IBUS_KEY_dead_macron, 0x00AF, +IBUS_KEY_dead_greek, IBUS_KEY_A, 0x1FB9, +IBUS_KEY_dead_greek, IBUS_KEY_I, 0x1FD9, +IBUS_KEY_dead_greek, IBUS_KEY_U, 0x1FE9, +IBUS_KEY_dead_greek, IBUS_KEY_a, 0x1FB1, +IBUS_KEY_dead_greek, IBUS_KEY_i, 0x1FD1, +IBUS_KEY_dead_greek, IBUS_KEY_u, 0x1FE1, +IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_L, 0x1E38, +IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_R, 0x1E5C, +IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_l, 0x1E39, +IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_r, 0x1E5D, +IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_A, 0x01DE, +IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_O, 0x022A, +IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_U, 0x01D5, +IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_a, 0x01DF, +IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_o, 0x022B, +IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_u, 0x01D6, +IBUS_KEY_Multi_key, IBUS_KEY_period, IBUS_KEY_A, 0x01E0, +IBUS_KEY_Multi_key, IBUS_KEY_period, IBUS_KEY_O, 0x0230, +IBUS_KEY_Multi_key, IBUS_KEY_period, IBUS_KEY_a, 0x01E1, +IBUS_KEY_Multi_key, IBUS_KEY_period, IBUS_KEY_o, 0x0231, +IBUS_KEY_Multi_key, IBUS_KEY_semicolon, IBUS_KEY_O, 0x01EC, +IBUS_KEY_Multi_key, IBUS_KEY_semicolon, IBUS_KEY_o, 0x01ED, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_O, 0x022C, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_o, 0x022D, +IBUS_KEY_space, 0x02D8, +IBUS_KEY_nobreakspace, 0x0306, +IBUS_KEY_Agrave, 0x1EB0, +IBUS_KEY_Aacute, 0x1EAE, +IBUS_KEY_Atilde, 0x1EB4, +IBUS_KEY_agrave, 0x1EB1, +IBUS_KEY_aacute, 0x1EAF, +IBUS_KEY_atilde, 0x1EB5, +IBUS_KEY_Cyrillic_a, 0x04D1, +IBUS_KEY_Cyrillic_ie, 0x04D7, +IBUS_KEY_Cyrillic_i, 0x0439, +IBUS_KEY_Cyrillic_u, 0x045E, +IBUS_KEY_Cyrillic_zhe, 0x04C2, +IBUS_KEY_Cyrillic_A, 0x04D0, +IBUS_KEY_Cyrillic_IE, 0x04D6, +IBUS_KEY_Cyrillic_I, 0x0419, +IBUS_KEY_Cyrillic_U, 0x040E, +IBUS_KEY_Cyrillic_ZHE, 0x04C1, +IBUS_KEY_Greek_ALPHA, 0x1FB8, +IBUS_KEY_Greek_IOTA, 0x1FD8, +IBUS_KEY_Greek_UPSILON, 0x1FE8, +IBUS_KEY_Greek_alpha, 0x1FB0, +IBUS_KEY_Greek_iota, 0x1FD0, +IBUS_KEY_Greek_upsilon, 0x1FE0, +IBUS_KEY_dead_breve, 0x02D8, +IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_A, 0x1EB6, +IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_a, 0x1EB7, +IBUS_KEY_Multi_key, IBUS_KEY_comma, IBUS_KEY_E, 0x1E1C, +IBUS_KEY_Multi_key, IBUS_KEY_comma, IBUS_KEY_e, 0x1E1D, +IBUS_KEY_Multi_key, IBUS_KEY_cedilla, IBUS_KEY_E, 0x1E1C, +IBUS_KEY_Multi_key, IBUS_KEY_cedilla, IBUS_KEY_e, 0x1E1D, +IBUS_KEY_space, 0x02D9, +IBUS_KEY_L, 0x013F, +IBUS_KEY_i, 0x0131, +IBUS_KEY_j, 0x0237, +IBUS_KEY_l, 0x0140, +IBUS_KEY_nobreakspace, 0x0307, +IBUS_KEY_Sacute, 0x1E64, +IBUS_KEY_Scaron, 0x1E66, +IBUS_KEY_sacute, 0x1E65, +IBUS_KEY_scaron, 0x1E67, +IBUS_KEY_Amacron, 0x01E0, +IBUS_KEY_Omacron, 0x0230, +IBUS_KEY_amacron, 0x01E1, +IBUS_KEY_omacron, 0x0231, +IBUS_KEY_dead_abovedot, 0x02D9, +IBUS_KEY_dead_stroke, IBUS_KEY_j, 0x025F, +IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_S, 0x1E68, +IBUS_KEY_Multi_key, IBUS_KEY_exclam, IBUS_KEY_s, 0x1E69, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_S, 0x1E64, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_s, 0x1E65, +IBUS_KEY_Multi_key, IBUS_KEY_c, IBUS_KEY_S, 0x1E66, +IBUS_KEY_Multi_key, IBUS_KEY_c, IBUS_KEY_s, 0x1E67, +IBUS_KEY_Multi_key, IBUS_KEY_f, IBUS_KEY_s, 0x1E9B, +IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_S, 0x1E64, +IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_s, 0x1E65, +IBUS_KEY_space, 0x0022, +IBUS_KEY_apostrophe, 0x0344, +IBUS_KEY_nobreakspace, 0x0308, +IBUS_KEY_acute, 0x0344, +IBUS_KEY_Iacute, 0x1E2E, +IBUS_KEY_Ugrave, 0x01DB, +IBUS_KEY_Uacute, 0x01D7, +IBUS_KEY_iacute, 0x1E2F, +IBUS_KEY_ugrave, 0x01DC, +IBUS_KEY_uacute, 0x01D8, +0x01D3, 0x01D9, +0x01D4, 0x01DA, +IBUS_KEY_Amacron, 0x01DE, +IBUS_KEY_Umacron, 0x1E7A, +IBUS_KEY_amacron, 0x01DF, +IBUS_KEY_omacron, 0x022B, +IBUS_KEY_umacron, 0x1E7B, +IBUS_KEY_Ukrainian_i, 0x0457, +IBUS_KEY_Ukrainian_I, 0x0407, +IBUS_KEY_Cyrillic_a, 0x04D3, +IBUS_KEY_Cyrillic_ie, 0x0451, +IBUS_KEY_Cyrillic_i, 0x04E5, +IBUS_KEY_Cyrillic_o, 0x04E7, +IBUS_KEY_Cyrillic_u, 0x04F1, +IBUS_KEY_Cyrillic_zhe, 0x04DD, +IBUS_KEY_Cyrillic_yeru, 0x04F9, +IBUS_KEY_Cyrillic_ze, 0x04DF, +IBUS_KEY_Cyrillic_e, 0x04ED, +IBUS_KEY_Cyrillic_che, 0x04F5, +IBUS_KEY_Cyrillic_A, 0x04D2, +IBUS_KEY_Cyrillic_IE, 0x0401, +IBUS_KEY_Cyrillic_I, 0x04E4, +IBUS_KEY_Cyrillic_O, 0x04E6, +IBUS_KEY_Cyrillic_U, 0x04F0, +IBUS_KEY_Cyrillic_ZHE, 0x04DC, +IBUS_KEY_Cyrillic_YERU, 0x04F8, +IBUS_KEY_Cyrillic_ZE, 0x04DE, +IBUS_KEY_Cyrillic_E, 0x04EC, +IBUS_KEY_Cyrillic_CHE, 0x04F4, +IBUS_KEY_Greek_IOTA, 0x03AA, +IBUS_KEY_Greek_UPSILON, 0x03AB, +IBUS_KEY_Greek_iota, 0x03CA, +IBUS_KEY_Greek_upsilon, 0x03CB, +IBUS_KEY_dead_diaeresis, 0x00A8, +IBUS_KEY_dead_acute, IBUS_KEY_space, 0x0385, +IBUS_KEY_dead_acute, IBUS_KEY_Greek_iota, 0x0390, +IBUS_KEY_dead_acute, IBUS_KEY_Greek_upsilon, 0x03B0, +IBUS_KEY_dead_belowdiaeresis, IBUS_KEY_equal, 0x2A77, +IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_U, 0x1E7A, +IBUS_KEY_Multi_key, IBUS_KEY_underscore, IBUS_KEY_u, 0x1E7B, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_O, 0x1E4E, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_o, 0x1E4F, +IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_U, 0x1E7A, +IBUS_KEY_Multi_key, IBUS_KEY_macron, IBUS_KEY_u, 0x1E7B, +IBUS_KEY_space, 0x00B0, +IBUS_KEY_nobreakspace, 0x030A, +IBUS_KEY_Aacute, 0x01FA, +IBUS_KEY_aacute, 0x01FB, +IBUS_KEY_dead_abovering, 0x00B0, +IBUS_KEY_space, 0x02DD, +IBUS_KEY_nobreakspace, 0x030B, +IBUS_KEY_Cyrillic_u, 0x04F3, +IBUS_KEY_Cyrillic_U, 0x04F2, +IBUS_KEY_dead_doubleacute, 0x02DD, +IBUS_KEY_space, 0x02C7, +IBUS_KEY_parenleft, 0x208D, +IBUS_KEY_parenright, 0x208E, +IBUS_KEY_plus, 0x208A, +IBUS_KEY_minus, 0x208B, +IBUS_KEY_0, 0x2080, +IBUS_KEY_1, 0x2081, +IBUS_KEY_2, 0x2082, +IBUS_KEY_3, 0x2083, +IBUS_KEY_4, 0x2084, +IBUS_KEY_5, 0x2085, +IBUS_KEY_6, 0x2086, +IBUS_KEY_7, 0x2087, +IBUS_KEY_8, 0x2088, +IBUS_KEY_9, 0x2089, +IBUS_KEY_equal, 0x208C, +IBUS_KEY_V, 0x01D9, +IBUS_KEY_v, 0x01DA, +IBUS_KEY_nobreakspace, 0x030C, +0x01F2, 0x01C5, +IBUS_KEY_dead_caron, 0x02C7, +IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_U, 0x01D9, +IBUS_KEY_Multi_key, IBUS_KEY_quotedbl, IBUS_KEY_u, 0x01DA, +IBUS_KEY_space, 0x00B8, +IBUS_KEY_nobreakspace, 0x0327, +IBUS_KEY_cent, 0x20B5, +IBUS_KEY_Cacute, 0x1E08, +IBUS_KEY_cacute, 0x1E09, +IBUS_KEY_dead_cedilla, 0x00B8, +IBUS_KEY_dead_currency, IBUS_KEY_C, 0x20B5, +IBUS_KEY_dead_currency, IBUS_KEY_c, 0x20B5, +IBUS_KEY_space, 0x02DB, +IBUS_KEY_nobreakspace, 0x0328, +IBUS_KEY_Omacron, 0x01EC, +IBUS_KEY_omacron, 0x01ED, +IBUS_KEY_dead_ogonek, 0x02DB, +IBUS_KEY_space, 0x037A, +IBUS_KEY_Greek_alphaaccent, 0x1FB4, +IBUS_KEY_Greek_etaaccent, 0x1FC4, +IBUS_KEY_Greek_omegaaccent, 0x1FF4, +IBUS_KEY_Greek_ALPHA, 0x1FBC, +IBUS_KEY_Greek_ETA, 0x1FCC, +IBUS_KEY_Greek_OMEGA, 0x1FFC, +IBUS_KEY_Greek_alpha, 0x1FB3, +IBUS_KEY_Greek_eta, 0x1FC3, +IBUS_KEY_Greek_omega, 0x1FF3, +IBUS_KEY_dead_iota, 0x037A, +IBUS_KEY_dead_grave, IBUS_KEY_Greek_alpha, 0x1FB2, +IBUS_KEY_dead_grave, IBUS_KEY_Greek_eta, 0x1FC2, +IBUS_KEY_dead_grave, IBUS_KEY_Greek_omega, 0x1FF2, +IBUS_KEY_dead_acute, IBUS_KEY_Greek_alpha, 0x1FB4, +IBUS_KEY_dead_acute, IBUS_KEY_Greek_eta, 0x1FC4, +IBUS_KEY_dead_acute, IBUS_KEY_Greek_omega, 0x1FF4, +IBUS_KEY_dead_tilde, IBUS_KEY_Greek_alpha, 0x1FB7, +IBUS_KEY_dead_tilde, IBUS_KEY_Greek_eta, 0x1FC7, +IBUS_KEY_dead_tilde, IBUS_KEY_Greek_omega, 0x1FF7, +IBUS_KEY_dead_tilde, 0x1F00, 0x1F86, +IBUS_KEY_dead_tilde, 0x1F01, 0x1F87, +IBUS_KEY_dead_tilde, 0x1F08, 0x1F8E, +IBUS_KEY_dead_tilde, 0x1F09, 0x1F8F, +IBUS_KEY_dead_tilde, 0x1F20, 0x1F96, +IBUS_KEY_dead_tilde, 0x1F21, 0x1F97, +IBUS_KEY_dead_tilde, 0x1F28, 0x1F9E, +IBUS_KEY_dead_tilde, 0x1F29, 0x1F9F, +IBUS_KEY_dead_tilde, 0x1F60, 0x1FA6, +IBUS_KEY_dead_tilde, 0x1F61, 0x1FA7, +IBUS_KEY_dead_tilde, 0x1F68, 0x1FAE, +IBUS_KEY_dead_tilde, 0x1F69, 0x1FAF, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F88, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F98, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FA8, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F80, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F90, +IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA0, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F89, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F99, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FA9, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F81, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F91, +IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA1, +IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8A, +IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9A, +IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAA, +IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F82, +IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F92, +IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA2, +IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8B, +IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9B, +IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAB, +IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F83, +IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F93, +IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA3, +IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8C, +IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9C, +IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAC, +IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F84, +IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F94, +IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA4, +IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8D, +IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9D, +IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAD, +IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F85, +IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F95, +IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA5, +IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8E, +IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9E, +IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAE, +IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F86, +IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F96, +IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA6, +IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8F, +IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9F, +IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAF, +IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F87, +IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F97, +IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA7, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_Greek_alpha, 0x1FB4, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_Greek_eta, 0x1FC4, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_Greek_omega, 0x1FF4, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F00, 0x1F84, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F01, 0x1F85, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F08, 0x1F8C, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F09, 0x1F8D, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F20, 0x1F94, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F21, 0x1F95, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F28, 0x1F9C, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F29, 0x1F9D, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F60, 0x1FA4, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F61, 0x1FA5, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F68, 0x1FAC, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, 0x1F69, 0x1FAD, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F89, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F99, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FA9, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F81, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F91, +IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA1, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F88, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F98, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FA8, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F80, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F90, +IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA0, +IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_Greek_alpha, 0x1FB2, +IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_Greek_eta, 0x1FC2, +IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_Greek_omega, 0x1FF2, +IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F00, 0x1F82, +IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F01, 0x1F83, +IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F08, 0x1F8A, +IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F09, 0x1F8B, +IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F20, 0x1F92, +IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F21, 0x1F93, +IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F28, 0x1F9A, +IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F29, 0x1F9B, +IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F60, 0x1FA2, +IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F61, 0x1FA3, +IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F68, 0x1FAA, +IBUS_KEY_Multi_key, IBUS_KEY_grave, 0x1F69, 0x1FAB, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_Greek_alpha, 0x1FB7, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_Greek_eta, 0x1FC7, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_Greek_omega, 0x1FF7, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F00, 0x1F86, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F01, 0x1F87, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F08, 0x1F8E, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F09, 0x1F8F, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F20, 0x1F96, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F21, 0x1F97, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F28, 0x1F9E, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F29, 0x1F9F, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F60, 0x1FA6, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F61, 0x1FA7, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F68, 0x1FAE, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, 0x1F69, 0x1FAF, +IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_Greek_alpha, 0x1FB4, +IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_Greek_eta, 0x1FC4, +IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_Greek_omega, 0x1FF4, +IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F00, 0x1F84, +IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F01, 0x1F85, +IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F08, 0x1F8C, +IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F09, 0x1F8D, +IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F20, 0x1F94, +IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F21, 0x1F95, +IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F28, 0x1F9C, +IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F29, 0x1F9D, +IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F60, 0x1FA4, +IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F61, 0x1FA5, +IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F68, 0x1FAC, +IBUS_KEY_Multi_key, IBUS_KEY_acute, 0x1F69, 0x1FAD, +IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8B, +IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9B, +IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAB, +IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F83, +IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F93, +IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA3, +IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8A, +IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9A, +IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAA, +IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F82, +IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F92, +IBUS_KEY_dead_grave, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA2, +IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8D, +IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9D, +IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAD, +IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F85, +IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F95, +IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA5, +IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8C, +IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9C, +IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAC, +IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F84, +IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F94, +IBUS_KEY_dead_acute, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA4, +IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8F, +IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9F, +IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAF, +IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F87, +IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F97, +IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA7, +IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8E, +IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9E, +IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAE, +IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F86, +IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F96, +IBUS_KEY_dead_tilde, IBUS_KEY_Multi_key, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA6, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8D, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9D, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAD, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F85, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F95, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA5, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8C, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9C, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAC, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F84, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F94, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA4, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8C, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9C, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAC, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F84, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F94, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA4, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8D, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9D, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAD, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F85, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F95, +IBUS_KEY_Multi_key, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA5, +IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8B, +IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9B, +IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAB, +IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F83, +IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F93, +IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA3, +IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8A, +IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9A, +IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAA, +IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F82, +IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F92, +IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA2, +IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8A, +IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9A, +IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAA, +IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F82, +IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F92, +IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA2, +IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8B, +IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9B, +IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAB, +IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F83, +IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F93, +IBUS_KEY_Multi_key, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA3, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8F, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9F, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAF, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F87, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F97, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA7, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8E, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9E, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAE, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F86, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F96, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA6, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8E, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9E, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAE, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F86, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F96, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA6, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8F, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9F, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAF, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F87, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F97, +IBUS_KEY_Multi_key, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA7, +IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8D, +IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9D, +IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAD, +IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F85, +IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F95, +IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA5, +IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8C, +IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9C, +IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAC, +IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F84, +IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F94, +IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA4, +IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8C, +IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9C, +IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAC, +IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F84, +IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F94, +IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA4, +IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8D, +IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9D, +IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAD, +IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F85, +IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F95, +IBUS_KEY_Multi_key, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA5, +IBUS_KEY_kana_WO, 0x30FA, +IBUS_KEY_kana_U, 0x30F4, +IBUS_KEY_kana_KA, 0x30AC, +IBUS_KEY_kana_KI, 0x30AE, +IBUS_KEY_kana_KU, 0x30B0, +IBUS_KEY_kana_KE, 0x30B2, +IBUS_KEY_kana_KO, 0x30B4, +IBUS_KEY_kana_SA, 0x30B6, +IBUS_KEY_kana_SHI, 0x30B8, +IBUS_KEY_kana_SU, 0x30BA, +IBUS_KEY_kana_SE, 0x30BC, +IBUS_KEY_kana_SO, 0x30BE, +IBUS_KEY_kana_TA, 0x30C0, +IBUS_KEY_kana_CHI, 0x30C2, +IBUS_KEY_kana_TSU, 0x30C5, +IBUS_KEY_kana_TE, 0x30C7, +IBUS_KEY_kana_TO, 0x30C9, +IBUS_KEY_kana_HA, 0x30D0, +IBUS_KEY_kana_HI, 0x30D3, +IBUS_KEY_kana_FU, 0x30D6, +IBUS_KEY_kana_HE, 0x30D9, +IBUS_KEY_kana_HO, 0x30DC, +IBUS_KEY_kana_WA, 0x30F7, +IBUS_KEY_kana_HA, 0x30D1, +IBUS_KEY_kana_HI, 0x30D4, +IBUS_KEY_kana_FU, 0x30D7, +IBUS_KEY_kana_HE, 0x30DA, +IBUS_KEY_kana_HO, 0x30DD, +IBUS_KEY_space, 0x0323, +IBUS_KEY_plus, 0x2A25, +IBUS_KEY_minus, 0x2A2A, +IBUS_KEY_equal, 0x2A66, +IBUS_KEY_nobreakspace, 0x0323, +IBUS_KEY_Abreve, 0x1EB6, +IBUS_KEY_abreve, 0x1EB7, +IBUS_KEY_dead_belowdot, 0x0323, +IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_O, 0x1EE2, +IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_U, 0x1EF0, +IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_o, 0x1EE3, +IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_u, 0x1EF1, +IBUS_KEY_space, 0x0309, +IBUS_KEY_B, 0x0181, +IBUS_KEY_C, 0x0187, +IBUS_KEY_D, 0x018A, +IBUS_KEY_F, 0x0191, +IBUS_KEY_G, 0x0193, +IBUS_KEY_K, 0x0198, +IBUS_KEY_M, 0x2C6E, +IBUS_KEY_N, 0x019D, +IBUS_KEY_P, 0x01A4, +IBUS_KEY_T, 0x01AC, +IBUS_KEY_V, 0x01B2, +IBUS_KEY_W, 0x2C72, +IBUS_KEY_Z, 0x0224, +IBUS_KEY_b, 0x0253, +IBUS_KEY_c, 0x0188, +IBUS_KEY_d, 0x0257, +IBUS_KEY_f, 0x0192, +IBUS_KEY_g, 0x0260, +IBUS_KEY_h, 0x0266, +IBUS_KEY_k, 0x0199, +IBUS_KEY_m, 0x0271, +IBUS_KEY_n, 0x0272, +IBUS_KEY_p, 0x01A5, +IBUS_KEY_q, 0x02A0, +IBUS_KEY_r, 0x027C, +IBUS_KEY_s, 0x0282, +IBUS_KEY_t, 0x01AD, +IBUS_KEY_v, 0x028B, +IBUS_KEY_w, 0x2C73, +IBUS_KEY_z, 0x0225, +IBUS_KEY_nobreakspace, 0x0309, +IBUS_KEY_Abreve, 0x1EB2, +IBUS_KEY_abreve, 0x1EB3, +0x0256, 0x1D91, +0x025C, 0x025D, +0x025F, 0x0284, +0x0279, 0x027B, +IBUS_KEY_dead_hook, 0x0309, +IBUS_KEY_dead_greek, IBUS_KEY_U, 0x03D2, +IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_O, 0x1EDE, +IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_U, 0x1EEC, +IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_o, 0x1EDF, +IBUS_KEY_Multi_key, IBUS_KEY_plus, IBUS_KEY_u, 0x1EED, +IBUS_KEY_Multi_key, IBUS_KEY_U, IBUS_KEY_A, 0x1EB2, +IBUS_KEY_Multi_key, IBUS_KEY_U, IBUS_KEY_a, 0x1EB3, +IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_A, 0x1EA8, +IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_E, 0x1EC2, +IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_O, 0x1ED4, +IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_a, 0x1EA9, +IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_e, 0x1EC3, +IBUS_KEY_Multi_key, IBUS_KEY_asciicircum, IBUS_KEY_o, 0x1ED5, +IBUS_KEY_Multi_key, IBUS_KEY_b, IBUS_KEY_A, 0x1EB2, +IBUS_KEY_Multi_key, IBUS_KEY_b, IBUS_KEY_a, 0x1EB3, +IBUS_KEY_space, 0x031B, +IBUS_KEY_nobreakspace, 0x031B, +IBUS_KEY_Utilde, 0x1EEE, +IBUS_KEY_utilde, 0x1EEF, +IBUS_KEY_dead_horn, 0x031B, +IBUS_KEY_space, 0x002F, +IBUS_KEY_2, 0x01BB, +IBUS_KEY_A, 0x023A, +IBUS_KEY_B, 0x0243, +IBUS_KEY_C, 0x023B, +IBUS_KEY_D, 0x0110, +IBUS_KEY_E, 0x0246, +IBUS_KEY_G, 0x01E4, +IBUS_KEY_H, 0x0126, +IBUS_KEY_I, 0x0197, +IBUS_KEY_J, 0x0248, +IBUS_KEY_L, 0x0141, +IBUS_KEY_O, 0x00D8, +IBUS_KEY_P, 0x2C63, +IBUS_KEY_R, 0x024C, +IBUS_KEY_T, 0x0166, +IBUS_KEY_U, 0x0244, +IBUS_KEY_Y, 0x024E, +IBUS_KEY_Z, 0x01B5, +IBUS_KEY_a, 0x2C65, +IBUS_KEY_b, 0x0180, +IBUS_KEY_c, 0x023C, +IBUS_KEY_d, 0x0111, +IBUS_KEY_e, 0x0247, +IBUS_KEY_g, 0x01E5, +IBUS_KEY_h, 0x0127, +IBUS_KEY_i, 0x0268, +IBUS_KEY_j, 0x0249, +IBUS_KEY_l, 0x0142, +IBUS_KEY_o, 0x00F8, +IBUS_KEY_p, 0x1D7D, +IBUS_KEY_r, 0x024D, +IBUS_KEY_t, 0x0167, +IBUS_KEY_u, 0x0289, +IBUS_KEY_y, 0x024F, +IBUS_KEY_z, 0x01B6, +IBUS_KEY_nobreakspace, 0x0338, +IBUS_KEY_Oacute, 0x01FE, +IBUS_KEY_oacute, 0x01FF, +0x0237, 0x025F, +0x0269, 0x1D7C, +IBUS_KEY_lessthanequal, 0x2270, +IBUS_KEY_greaterthanequal, 0x2271, +IBUS_KEY_dead_stroke, 0x002F, +IBUS_KEY_dead_acute, IBUS_KEY_O, 0x01FE, +IBUS_KEY_dead_acute, IBUS_KEY_o, 0x01FF, +IBUS_KEY_dead_abovedot, IBUS_KEY_j, 0x025F, +IBUS_KEY_dead_greek, IBUS_KEY_r, 0x03FC, +IBUS_KEY_Greek_ALPHA, 0x1F08, +IBUS_KEY_Greek_EPSILON, 0x1F18, +IBUS_KEY_Greek_ETA, 0x1F28, +IBUS_KEY_Greek_IOTA, 0x1F38, +IBUS_KEY_Greek_OMICRON, 0x1F48, +IBUS_KEY_Greek_OMEGA, 0x1F68, +IBUS_KEY_Greek_alpha, 0x1F00, +IBUS_KEY_Greek_epsilon, 0x1F10, +IBUS_KEY_Greek_eta, 0x1F20, +IBUS_KEY_Greek_iota, 0x1F30, +IBUS_KEY_Greek_omicron, 0x1F40, +IBUS_KEY_Greek_rho, 0x1FE4, +IBUS_KEY_Greek_upsilon, 0x1F50, +IBUS_KEY_Greek_omega, 0x1F60, +IBUS_KEY_Greek_ALPHA, 0x1F09, +IBUS_KEY_Greek_EPSILON, 0x1F19, +IBUS_KEY_Greek_ETA, 0x1F29, +IBUS_KEY_Greek_IOTA, 0x1F39, +IBUS_KEY_Greek_OMICRON, 0x1F49, +IBUS_KEY_Greek_RHO, 0x1FEC, +IBUS_KEY_Greek_UPSILON, 0x1F59, +IBUS_KEY_Greek_OMEGA, 0x1F69, +IBUS_KEY_Greek_alpha, 0x1F01, +IBUS_KEY_Greek_epsilon, 0x1F11, +IBUS_KEY_Greek_eta, 0x1F21, +IBUS_KEY_Greek_iota, 0x1F31, +IBUS_KEY_Greek_omicron, 0x1F41, +IBUS_KEY_Greek_rho, 0x1FE5, +IBUS_KEY_Greek_upsilon, 0x1F51, +IBUS_KEY_Greek_omega, 0x1F61, +IBUS_KEY_bar, 0x2AF0, +IBUS_KEY_plus, 0x2A26, +IBUS_KEY_dead_diaeresis, IBUS_KEY_equal, 0x2A77, +IBUS_KEY_space, 0x002C, +IBUS_KEY_S, 0x0218, +IBUS_KEY_T, 0x021A, +IBUS_KEY_s, 0x0219, +IBUS_KEY_t, 0x021B, +IBUS_KEY_nobreakspace, 0x0326, +IBUS_KEY_dead_belowcomma, 0x002C, +IBUS_KEY_space, 0x00A4, +IBUS_KEY_A, 0x20B3, +IBUS_KEY_B, 0x20B1, +IBUS_KEY_C, 0x20A1, +IBUS_KEY_D, 0x20AF, +IBUS_KEY_E, 0x20A0, +IBUS_KEY_F, 0x20A3, +IBUS_KEY_G, 0x20B2, +IBUS_KEY_H, 0x20B4, +IBUS_KEY_I, 0x17DB, +IBUS_KEY_K, 0x20AD, +IBUS_KEY_L, 0x20A4, +IBUS_KEY_M, 0x2133, +IBUS_KEY_N, 0x20A6, +IBUS_KEY_O, 0x0AF1, +IBUS_KEY_P, 0x20A7, +IBUS_KEY_R, 0x20A8, +IBUS_KEY_S, 0x0024, +IBUS_KEY_T, 0x20AE, +IBUS_KEY_U, 0x5713, +IBUS_KEY_W, 0x20A9, +IBUS_KEY_Y, 0x5186, +IBUS_KEY_a, 0x060B, +IBUS_KEY_b, 0x0E3F, +IBUS_KEY_c, 0x00A2, +IBUS_KEY_d, 0x20AB, +IBUS_KEY_e, 0x20AC, +IBUS_KEY_f, 0x0192, +IBUS_KEY_g, 0x20B2, +IBUS_KEY_h, 0x20B4, +IBUS_KEY_i, 0xFDFC, +IBUS_KEY_k, 0x20AD, +IBUS_KEY_l, 0x00A3, +IBUS_KEY_m, 0x20A5, +IBUS_KEY_n, 0x20A6, +IBUS_KEY_o, 0x0BF9, +IBUS_KEY_p, 0x20B0, +IBUS_KEY_r, 0x20A2, +IBUS_KEY_s, 0x20AA, +IBUS_KEY_t, 0x09F3, +IBUS_KEY_u, 0x5143, +IBUS_KEY_w, 0x20A9, +IBUS_KEY_y, 0x00A5, +IBUS_KEY_nobreakspace, 0x00A4, +IBUS_KEY_Ccedilla, 0x20B5, +IBUS_KEY_THORN, 0x09F2, +IBUS_KEY_ccedilla, 0x20B5, +IBUS_KEY_thorn, 0x09F2, +IBUS_KEY_dead_currency, 0x00A4, +IBUS_KEY_dead_cedilla, IBUS_KEY_C, 0x20B5, +IBUS_KEY_dead_cedilla, IBUS_KEY_c, 0x20B5, +IBUS_KEY_space, 0x00B5, +IBUS_KEY_A, 0x0391, +IBUS_KEY_B, 0x0392, +IBUS_KEY_D, 0x0394, +IBUS_KEY_E, 0x0395, +IBUS_KEY_F, 0x03A6, +IBUS_KEY_G, 0x0393, +IBUS_KEY_H, 0x0397, +IBUS_KEY_I, 0x0399, +IBUS_KEY_J, 0x0398, +IBUS_KEY_K, 0x039A, +IBUS_KEY_L, 0x039B, +IBUS_KEY_M, 0x039C, +IBUS_KEY_N, 0x039D, +IBUS_KEY_O, 0x039F, +IBUS_KEY_P, 0x03A0, +IBUS_KEY_Q, 0x03A7, +IBUS_KEY_R, 0x03A1, +IBUS_KEY_S, 0x03A3, +IBUS_KEY_T, 0x03A4, +IBUS_KEY_U, 0x03A5, +IBUS_KEY_W, 0x03A9, +IBUS_KEY_X, 0x039E, +IBUS_KEY_Y, 0x03A8, +IBUS_KEY_Z, 0x0396, +IBUS_KEY_a, 0x03B1, +IBUS_KEY_b, 0x03B2, +IBUS_KEY_d, 0x03B4, +IBUS_KEY_e, 0x03B5, +IBUS_KEY_f, 0x03C6, +IBUS_KEY_g, 0x03B3, +IBUS_KEY_h, 0x03B7, +IBUS_KEY_i, 0x03B9, +IBUS_KEY_j, 0x03B8, +IBUS_KEY_k, 0x03BA, +IBUS_KEY_l, 0x03BB, +IBUS_KEY_m, 0x03BC, +IBUS_KEY_n, 0x03BD, +IBUS_KEY_o, 0x03BF, +IBUS_KEY_p, 0x03C0, +IBUS_KEY_q, 0x03C7, +IBUS_KEY_r, 0x03C1, +IBUS_KEY_s, 0x03C3, +IBUS_KEY_t, 0x03C4, +IBUS_KEY_u, 0x03C5, +IBUS_KEY_w, 0x03C9, +IBUS_KEY_x, 0x03BE, +IBUS_KEY_y, 0x03C8, +IBUS_KEY_z, 0x03B6, +IBUS_KEY_nobreakspace, 0x00B5, +IBUS_KEY_dead_greek, 0x00B5, +IBUS_KEY_dead_macron, IBUS_KEY_A, 0x1FB9, +IBUS_KEY_dead_macron, IBUS_KEY_I, 0x1FD9, +IBUS_KEY_dead_macron, IBUS_KEY_U, 0x1FE9, +IBUS_KEY_dead_macron, IBUS_KEY_a, 0x1FB1, +IBUS_KEY_dead_macron, IBUS_KEY_i, 0x1FD1, +IBUS_KEY_dead_macron, IBUS_KEY_u, 0x1FE1, +IBUS_KEY_dead_hook, IBUS_KEY_U, 0x03D2, +IBUS_KEY_dead_stroke, IBUS_KEY_r, 0x03FC, +IBUS_KEY_space, IBUS_KEY_space, 0x00A0, +IBUS_KEY_space, IBUS_KEY_apostrophe, 0x0027, +IBUS_KEY_space, IBUS_KEY_parenleft, 0x02D8, +IBUS_KEY_space, IBUS_KEY_comma, 0x00B8, +IBUS_KEY_space, IBUS_KEY_minus, 0x007E, +IBUS_KEY_space, IBUS_KEY_period, 0x2008, +IBUS_KEY_space, IBUS_KEY_less, 0x02C7, +IBUS_KEY_space, IBUS_KEY_greater, 0x005E, +IBUS_KEY_space, IBUS_KEY_asciicircum, 0x005E, +IBUS_KEY_space, IBUS_KEY_grave, 0x0060, +IBUS_KEY_space, IBUS_KEY_asciitilde, 0x007E, +IBUS_KEY_exclam, IBUS_KEY_exclam, 0x00A1, +IBUS_KEY_exclam, IBUS_KEY_question, 0x203D, +IBUS_KEY_exclam, IBUS_KEY_A, 0x1EA0, +IBUS_KEY_exclam, IBUS_KEY_B, 0x1E04, +IBUS_KEY_exclam, IBUS_KEY_D, 0x1E0C, +IBUS_KEY_exclam, IBUS_KEY_E, 0x1EB8, +IBUS_KEY_exclam, IBUS_KEY_H, 0x1E24, +IBUS_KEY_exclam, IBUS_KEY_I, 0x1ECA, +IBUS_KEY_exclam, IBUS_KEY_K, 0x1E32, +IBUS_KEY_exclam, IBUS_KEY_L, 0x1E36, +IBUS_KEY_exclam, IBUS_KEY_M, 0x1E42, +IBUS_KEY_exclam, IBUS_KEY_N, 0x1E46, +IBUS_KEY_exclam, IBUS_KEY_O, 0x1ECC, +IBUS_KEY_exclam, IBUS_KEY_P, 0x00B6, +IBUS_KEY_exclam, IBUS_KEY_R, 0x1E5A, +IBUS_KEY_exclam, IBUS_KEY_S, 0x1E62, +IBUS_KEY_exclam, IBUS_KEY_T, 0x1E6C, +IBUS_KEY_exclam, IBUS_KEY_U, 0x1EE4, +IBUS_KEY_exclam, IBUS_KEY_V, 0x1E7E, +IBUS_KEY_exclam, IBUS_KEY_W, 0x1E88, +IBUS_KEY_exclam, IBUS_KEY_Y, 0x1EF4, +IBUS_KEY_exclam, IBUS_KEY_Z, 0x1E92, +IBUS_KEY_exclam, IBUS_KEY_asciicircum, 0x00A6, +IBUS_KEY_exclam, IBUS_KEY_a, 0x1EA1, +IBUS_KEY_exclam, IBUS_KEY_b, 0x1E05, +IBUS_KEY_exclam, IBUS_KEY_d, 0x1E0D, +IBUS_KEY_exclam, IBUS_KEY_e, 0x1EB9, +IBUS_KEY_exclam, IBUS_KEY_h, 0x1E25, +IBUS_KEY_exclam, IBUS_KEY_i, 0x1ECB, +IBUS_KEY_exclam, IBUS_KEY_k, 0x1E33, +IBUS_KEY_exclam, IBUS_KEY_l, 0x1E37, +IBUS_KEY_exclam, IBUS_KEY_m, 0x1E43, +IBUS_KEY_exclam, IBUS_KEY_n, 0x1E47, +IBUS_KEY_exclam, IBUS_KEY_o, 0x1ECD, +IBUS_KEY_exclam, IBUS_KEY_p, 0x00B6, +IBUS_KEY_exclam, IBUS_KEY_r, 0x1E5B, +IBUS_KEY_exclam, IBUS_KEY_s, 0x1E63, +IBUS_KEY_exclam, IBUS_KEY_t, 0x1E6D, +IBUS_KEY_exclam, IBUS_KEY_u, 0x1EE5, +IBUS_KEY_exclam, IBUS_KEY_v, 0x1E7F, +IBUS_KEY_exclam, IBUS_KEY_w, 0x1E89, +IBUS_KEY_exclam, IBUS_KEY_y, 0x1EF5, +IBUS_KEY_exclam, IBUS_KEY_z, 0x1E93, +IBUS_KEY_quotedbl, IBUS_KEY_quotedbl, 0x00A8, +IBUS_KEY_quotedbl, IBUS_KEY_apostrophe, 0x0344, +IBUS_KEY_quotedbl, IBUS_KEY_comma, 0x201E, +IBUS_KEY_quotedbl, IBUS_KEY_less, 0x201C, +IBUS_KEY_quotedbl, IBUS_KEY_greater, 0x201D, +IBUS_KEY_quotedbl, IBUS_KEY_A, 0x00C4, +IBUS_KEY_quotedbl, IBUS_KEY_E, 0x00CB, +IBUS_KEY_quotedbl, IBUS_KEY_H, 0x1E26, +IBUS_KEY_quotedbl, IBUS_KEY_I, 0x00CF, +IBUS_KEY_quotedbl, IBUS_KEY_O, 0x00D6, +IBUS_KEY_quotedbl, IBUS_KEY_U, 0x00DC, +IBUS_KEY_quotedbl, IBUS_KEY_W, 0x1E84, +IBUS_KEY_quotedbl, IBUS_KEY_X, 0x1E8C, +IBUS_KEY_quotedbl, IBUS_KEY_Y, 0x0178, +IBUS_KEY_quotedbl, IBUS_KEY_a, 0x00E4, +IBUS_KEY_quotedbl, IBUS_KEY_e, 0x00EB, +IBUS_KEY_quotedbl, IBUS_KEY_h, 0x1E27, +IBUS_KEY_quotedbl, IBUS_KEY_i, 0x00EF, +IBUS_KEY_quotedbl, IBUS_KEY_o, 0x00F6, +IBUS_KEY_quotedbl, IBUS_KEY_t, 0x1E97, +IBUS_KEY_quotedbl, IBUS_KEY_u, 0x00FC, +IBUS_KEY_quotedbl, IBUS_KEY_w, 0x1E85, +IBUS_KEY_quotedbl, IBUS_KEY_x, 0x1E8D, +IBUS_KEY_quotedbl, IBUS_KEY_y, 0x00FF, +IBUS_KEY_quotedbl, IBUS_KEY_acute, 0x0344, +IBUS_KEY_quotedbl, IBUS_KEY_Otilde, 0x1E4E, +IBUS_KEY_quotedbl, IBUS_KEY_otilde, 0x1E4F, +IBUS_KEY_quotedbl, 0x03D2, 0x03D4, +IBUS_KEY_quotedbl, IBUS_KEY_Umacron, 0x1E7A, +IBUS_KEY_quotedbl, IBUS_KEY_umacron, 0x1E7B, +IBUS_KEY_quotedbl, 0x04D8, 0x04DA, +IBUS_KEY_quotedbl, 0x04D9, 0x04DB, +IBUS_KEY_quotedbl, 0x04E8, 0x04EA, +IBUS_KEY_quotedbl, 0x04E9, 0x04EB, +IBUS_KEY_quotedbl, IBUS_KEY_Ukrainian_i, 0x0457, +IBUS_KEY_quotedbl, IBUS_KEY_Ukrainian_I, 0x0407, +IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_a, 0x04D3, +IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_ie, 0x0451, +IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_i, 0x04E5, +IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_o, 0x04E7, +IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_u, 0x04F1, +IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_zhe, 0x04DD, +IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_yeru, 0x04F9, +IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_ze, 0x04DF, +IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_e, 0x04ED, +IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_che, 0x04F5, +IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_A, 0x04D2, +IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_IE, 0x0401, +IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_I, 0x04E4, +IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_O, 0x04E6, +IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_U, 0x04F0, +IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_ZHE, 0x04DC, +IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_YERU, 0x04F8, +IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_ZE, 0x04DE, +IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_E, 0x04EC, +IBUS_KEY_quotedbl, IBUS_KEY_Cyrillic_CHE, 0x04F4, +IBUS_KEY_quotedbl, IBUS_KEY_Greek_IOTA, 0x03AA, +IBUS_KEY_quotedbl, IBUS_KEY_Greek_UPSILON, 0x03AB, +IBUS_KEY_quotedbl, IBUS_KEY_Greek_iota, 0x03CA, +IBUS_KEY_quotedbl, IBUS_KEY_Greek_upsilon, 0x03CB, +IBUS_KEY_quotedbl, IBUS_KEY_dead_acute, 0x0344, +IBUS_KEY_numbersign, IBUS_KEY_numbersign, 0x266F, +IBUS_KEY_numbersign, IBUS_KEY_E, 0x266B, +IBUS_KEY_numbersign, IBUS_KEY_S, 0x266C, +IBUS_KEY_numbersign, IBUS_KEY_b, 0x266D, +IBUS_KEY_numbersign, IBUS_KEY_e, 0x266A, +IBUS_KEY_numbersign, IBUS_KEY_f, 0x266E, +IBUS_KEY_numbersign, IBUS_KEY_q, 0x2669, +IBUS_KEY_percent, IBUS_KEY_o, 0x2030, +IBUS_KEY_apostrophe, IBUS_KEY_space, 0x0027, +IBUS_KEY_apostrophe, IBUS_KEY_apostrophe, 0x00B4, +IBUS_KEY_apostrophe, IBUS_KEY_comma, 0x201A, +IBUS_KEY_apostrophe, IBUS_KEY_less, 0x2018, +IBUS_KEY_apostrophe, IBUS_KEY_greater, 0x2019, +IBUS_KEY_apostrophe, IBUS_KEY_A, 0x00C1, +IBUS_KEY_apostrophe, IBUS_KEY_C, 0x0106, +IBUS_KEY_apostrophe, IBUS_KEY_E, 0x00C9, +IBUS_KEY_apostrophe, IBUS_KEY_G, 0x01F4, +IBUS_KEY_apostrophe, IBUS_KEY_I, 0x00CD, +IBUS_KEY_apostrophe, IBUS_KEY_K, 0x1E30, +IBUS_KEY_apostrophe, IBUS_KEY_L, 0x0139, +IBUS_KEY_apostrophe, IBUS_KEY_M, 0x1E3E, +IBUS_KEY_apostrophe, IBUS_KEY_N, 0x0143, +IBUS_KEY_apostrophe, IBUS_KEY_O, 0x00D3, +IBUS_KEY_apostrophe, IBUS_KEY_P, 0x1E54, +IBUS_KEY_apostrophe, IBUS_KEY_R, 0x0154, +IBUS_KEY_apostrophe, IBUS_KEY_S, 0x015A, +IBUS_KEY_apostrophe, IBUS_KEY_U, 0x00DA, +IBUS_KEY_apostrophe, IBUS_KEY_W, 0x1E82, +IBUS_KEY_apostrophe, IBUS_KEY_Y, 0x00DD, +IBUS_KEY_apostrophe, IBUS_KEY_Z, 0x0179, +IBUS_KEY_apostrophe, IBUS_KEY_a, 0x00E1, +IBUS_KEY_apostrophe, IBUS_KEY_c, 0x0107, +IBUS_KEY_apostrophe, IBUS_KEY_e, 0x00E9, +IBUS_KEY_apostrophe, IBUS_KEY_g, 0x01F5, +IBUS_KEY_apostrophe, IBUS_KEY_i, 0x00ED, +IBUS_KEY_apostrophe, IBUS_KEY_k, 0x1E31, +IBUS_KEY_apostrophe, IBUS_KEY_l, 0x013A, +IBUS_KEY_apostrophe, IBUS_KEY_m, 0x1E3F, +IBUS_KEY_apostrophe, IBUS_KEY_n, 0x0144, +IBUS_KEY_apostrophe, IBUS_KEY_o, 0x00F3, +IBUS_KEY_apostrophe, IBUS_KEY_p, 0x1E55, +IBUS_KEY_apostrophe, IBUS_KEY_r, 0x0155, +IBUS_KEY_apostrophe, IBUS_KEY_s, 0x015B, +IBUS_KEY_apostrophe, IBUS_KEY_u, 0x00FA, +IBUS_KEY_apostrophe, IBUS_KEY_w, 0x1E83, +IBUS_KEY_apostrophe, IBUS_KEY_y, 0x00FD, +IBUS_KEY_apostrophe, IBUS_KEY_z, 0x017A, +IBUS_KEY_apostrophe, IBUS_KEY_Acircumflex, 0x1EA4, +IBUS_KEY_apostrophe, IBUS_KEY_Aring, 0x01FA, +IBUS_KEY_apostrophe, IBUS_KEY_AE, 0x01FC, +IBUS_KEY_apostrophe, IBUS_KEY_Ccedilla, 0x1E08, +IBUS_KEY_apostrophe, IBUS_KEY_Ecircumflex, 0x1EBE, +IBUS_KEY_apostrophe, IBUS_KEY_Idiaeresis, 0x1E2E, +IBUS_KEY_apostrophe, IBUS_KEY_Ocircumflex, 0x1ED0, +IBUS_KEY_apostrophe, IBUS_KEY_Otilde, 0x1E4C, +IBUS_KEY_apostrophe, IBUS_KEY_Ooblique, 0x01FE, +IBUS_KEY_apostrophe, IBUS_KEY_Udiaeresis, 0x01D7, +IBUS_KEY_apostrophe, IBUS_KEY_acircumflex, 0x1EA5, +IBUS_KEY_apostrophe, IBUS_KEY_aring, 0x01FB, +IBUS_KEY_apostrophe, IBUS_KEY_ae, 0x01FD, +IBUS_KEY_apostrophe, IBUS_KEY_ccedilla, 0x1E09, +IBUS_KEY_apostrophe, IBUS_KEY_ecircumflex, 0x1EBF, +IBUS_KEY_apostrophe, IBUS_KEY_idiaeresis, 0x1E2F, +IBUS_KEY_apostrophe, IBUS_KEY_ocircumflex, 0x1ED1, +IBUS_KEY_apostrophe, IBUS_KEY_otilde, 0x1E4D, +IBUS_KEY_apostrophe, IBUS_KEY_oslash, 0x01FF, +IBUS_KEY_apostrophe, IBUS_KEY_udiaeresis, 0x01D8, +IBUS_KEY_apostrophe, IBUS_KEY_Abreve, 0x1EAE, +IBUS_KEY_apostrophe, IBUS_KEY_abreve, 0x1EAF, +IBUS_KEY_apostrophe, IBUS_KEY_Emacron, 0x1E16, +IBUS_KEY_apostrophe, IBUS_KEY_emacron, 0x1E17, +IBUS_KEY_apostrophe, IBUS_KEY_Omacron, 0x1E52, +IBUS_KEY_apostrophe, IBUS_KEY_Utilde, 0x1E78, +IBUS_KEY_apostrophe, IBUS_KEY_omacron, 0x1E53, +IBUS_KEY_apostrophe, IBUS_KEY_utilde, 0x1E79, +IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_ghe, 0x0453, +IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_ka, 0x045C, +IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_GHE, 0x0403, +IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_KA, 0x040C, +IBUS_KEY_apostrophe, IBUS_KEY_Greek_iotadieresis, 0x0390, +IBUS_KEY_apostrophe, IBUS_KEY_Greek_upsilondieresis, 0x03B0, +IBUS_KEY_apostrophe, IBUS_KEY_Greek_ALPHA, 0x0386, +IBUS_KEY_apostrophe, IBUS_KEY_Greek_EPSILON, 0x0388, +IBUS_KEY_apostrophe, IBUS_KEY_Greek_ETA, 0x0389, +IBUS_KEY_apostrophe, IBUS_KEY_Greek_IOTA, 0x038A, +IBUS_KEY_apostrophe, IBUS_KEY_Greek_OMICRON, 0x038C, +IBUS_KEY_apostrophe, IBUS_KEY_Greek_UPSILON, 0x038E, +IBUS_KEY_apostrophe, IBUS_KEY_Greek_OMEGA, 0x038F, +IBUS_KEY_apostrophe, IBUS_KEY_Greek_alpha, 0x03AC, +IBUS_KEY_apostrophe, IBUS_KEY_Greek_epsilon, 0x03AD, +IBUS_KEY_apostrophe, IBUS_KEY_Greek_eta, 0x03AE, +IBUS_KEY_apostrophe, IBUS_KEY_Greek_iota, 0x03AF, +IBUS_KEY_apostrophe, IBUS_KEY_Greek_omicron, 0x03CC, +IBUS_KEY_apostrophe, IBUS_KEY_Greek_upsilon, 0x03CD, +IBUS_KEY_apostrophe, IBUS_KEY_Greek_omega, 0x03CE, +IBUS_KEY_apostrophe, 0x1F00, 0x1F04, +IBUS_KEY_apostrophe, 0x1F01, 0x1F05, +IBUS_KEY_apostrophe, 0x1F08, 0x1F0C, +IBUS_KEY_apostrophe, 0x1F09, 0x1F0D, +IBUS_KEY_apostrophe, 0x1F10, 0x1F14, +IBUS_KEY_apostrophe, 0x1F11, 0x1F15, +IBUS_KEY_apostrophe, 0x1F18, 0x1F1C, +IBUS_KEY_apostrophe, 0x1F19, 0x1F1D, +IBUS_KEY_apostrophe, 0x1F20, 0x1F24, +IBUS_KEY_apostrophe, 0x1F21, 0x1F25, +IBUS_KEY_apostrophe, 0x1F28, 0x1F2C, +IBUS_KEY_apostrophe, 0x1F29, 0x1F2D, +IBUS_KEY_apostrophe, 0x1F30, 0x1F34, +IBUS_KEY_apostrophe, 0x1F31, 0x1F35, +IBUS_KEY_apostrophe, 0x1F38, 0x1F3C, +IBUS_KEY_apostrophe, 0x1F39, 0x1F3D, +IBUS_KEY_apostrophe, 0x1F40, 0x1F44, +IBUS_KEY_apostrophe, 0x1F41, 0x1F45, +IBUS_KEY_apostrophe, 0x1F48, 0x1F4C, +IBUS_KEY_apostrophe, 0x1F49, 0x1F4D, +IBUS_KEY_apostrophe, 0x1F50, 0x1F54, +IBUS_KEY_apostrophe, 0x1F51, 0x1F55, +IBUS_KEY_apostrophe, 0x1F59, 0x1F5D, +IBUS_KEY_apostrophe, 0x1F60, 0x1F64, +IBUS_KEY_apostrophe, 0x1F61, 0x1F65, +IBUS_KEY_apostrophe, 0x1F68, 0x1F6C, +IBUS_KEY_apostrophe, 0x1F69, 0x1F6D, +IBUS_KEY_apostrophe, 0x2395, 0x235E, +IBUS_KEY_parenleft, IBUS_KEY_space, 0x02D8, +IBUS_KEY_parenleft, IBUS_KEY_parenleft, 0x005B, +IBUS_KEY_parenleft, IBUS_KEY_minus, 0x007B, +IBUS_KEY_parenleft, IBUS_KEY_A, 0x0102, +IBUS_KEY_parenleft, IBUS_KEY_G, 0x011E, +IBUS_KEY_parenleft, IBUS_KEY_a, 0x0103, +IBUS_KEY_parenleft, IBUS_KEY_c, 0x00A9, +IBUS_KEY_parenleft, IBUS_KEY_g, 0x011F, +IBUS_KEY_parenleft, IBUS_KEY_r, 0x00AE, +IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F09, +IBUS_KEY_parenleft, IBUS_KEY_Greek_EPSILON, 0x1F19, +IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F29, +IBUS_KEY_parenleft, IBUS_KEY_Greek_IOTA, 0x1F39, +IBUS_KEY_parenleft, IBUS_KEY_Greek_OMICRON, 0x1F49, +IBUS_KEY_parenleft, IBUS_KEY_Greek_RHO, 0x1FEC, +IBUS_KEY_parenleft, IBUS_KEY_Greek_UPSILON, 0x1F59, +IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1F69, +IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F01, +IBUS_KEY_parenleft, IBUS_KEY_Greek_epsilon, 0x1F11, +IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F21, +IBUS_KEY_parenleft, IBUS_KEY_Greek_iota, 0x1F31, +IBUS_KEY_parenleft, IBUS_KEY_Greek_omicron, 0x1F41, +IBUS_KEY_parenleft, IBUS_KEY_Greek_rho, 0x1FE5, +IBUS_KEY_parenleft, IBUS_KEY_Greek_upsilon, 0x1F51, +IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1F61, +IBUS_KEY_parenright, IBUS_KEY_parenright, 0x005D, +IBUS_KEY_parenright, IBUS_KEY_minus, 0x007D, +IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F08, +IBUS_KEY_parenright, IBUS_KEY_Greek_EPSILON, 0x1F18, +IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F28, +IBUS_KEY_parenright, IBUS_KEY_Greek_IOTA, 0x1F38, +IBUS_KEY_parenright, IBUS_KEY_Greek_OMICRON, 0x1F48, +IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1F68, +IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F00, +IBUS_KEY_parenright, IBUS_KEY_Greek_epsilon, 0x1F10, +IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F20, +IBUS_KEY_parenright, IBUS_KEY_Greek_iota, 0x1F30, +IBUS_KEY_parenright, IBUS_KEY_Greek_omicron, 0x1F40, +IBUS_KEY_parenright, IBUS_KEY_Greek_rho, 0x1FE4, +IBUS_KEY_parenright, IBUS_KEY_Greek_upsilon, 0x1F50, +IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1F60, +IBUS_KEY_asterisk, IBUS_KEY_0, 0x00B0, +IBUS_KEY_asterisk, IBUS_KEY_A, 0x00C5, +IBUS_KEY_asterisk, IBUS_KEY_U, 0x016E, +IBUS_KEY_asterisk, IBUS_KEY_a, 0x00E5, +IBUS_KEY_asterisk, IBUS_KEY_u, 0x016F, +IBUS_KEY_asterisk, IBUS_KEY_diaeresis, 0x2363, +IBUS_KEY_asterisk, IBUS_KEY_emopencircle, 0x235F, +IBUS_KEY_plus, IBUS_KEY_plus, 0x0023, +IBUS_KEY_plus, IBUS_KEY_minus, 0x00B1, +IBUS_KEY_plus, IBUS_KEY_O, 0x01A0, +IBUS_KEY_plus, IBUS_KEY_U, 0x01AF, +IBUS_KEY_plus, IBUS_KEY_o, 0x01A1, +IBUS_KEY_plus, IBUS_KEY_u, 0x01B0, +IBUS_KEY_comma, IBUS_KEY_space, 0x00B8, +IBUS_KEY_comma, IBUS_KEY_quotedbl, 0x201E, +IBUS_KEY_comma, IBUS_KEY_apostrophe, 0x201A, +IBUS_KEY_comma, IBUS_KEY_comma, 0x00B8, +IBUS_KEY_comma, IBUS_KEY_minus, 0x00AC, +IBUS_KEY_comma, IBUS_KEY_A, 0x0104, +IBUS_KEY_comma, IBUS_KEY_C, 0x00C7, +IBUS_KEY_comma, IBUS_KEY_D, 0x1E10, +IBUS_KEY_comma, IBUS_KEY_E, 0x0118, +IBUS_KEY_comma, IBUS_KEY_G, 0x0122, +IBUS_KEY_comma, IBUS_KEY_H, 0x1E28, +IBUS_KEY_comma, IBUS_KEY_I, 0x012E, +IBUS_KEY_comma, IBUS_KEY_K, 0x0136, +IBUS_KEY_comma, IBUS_KEY_L, 0x013B, +IBUS_KEY_comma, IBUS_KEY_N, 0x0145, +IBUS_KEY_comma, IBUS_KEY_O, 0x01EA, +IBUS_KEY_comma, IBUS_KEY_R, 0x0156, +IBUS_KEY_comma, IBUS_KEY_S, 0x015E, +IBUS_KEY_comma, IBUS_KEY_T, 0x0162, +IBUS_KEY_comma, IBUS_KEY_U, 0x0172, +IBUS_KEY_comma, IBUS_KEY_a, 0x0105, +IBUS_KEY_comma, IBUS_KEY_c, 0x00E7, +IBUS_KEY_comma, IBUS_KEY_d, 0x1E11, +IBUS_KEY_comma, IBUS_KEY_e, 0x0119, +IBUS_KEY_comma, IBUS_KEY_g, 0x0123, +IBUS_KEY_comma, IBUS_KEY_h, 0x1E29, +IBUS_KEY_comma, IBUS_KEY_i, 0x012F, +IBUS_KEY_comma, IBUS_KEY_k, 0x0137, +IBUS_KEY_comma, IBUS_KEY_l, 0x013C, +IBUS_KEY_comma, IBUS_KEY_n, 0x0146, +IBUS_KEY_comma, IBUS_KEY_o, 0x01EB, +IBUS_KEY_comma, IBUS_KEY_r, 0x0157, +IBUS_KEY_comma, IBUS_KEY_s, 0x015F, +IBUS_KEY_comma, IBUS_KEY_t, 0x0163, +IBUS_KEY_comma, IBUS_KEY_u, 0x0173, +IBUS_KEY_minus, IBUS_KEY_space, 0x007E, +IBUS_KEY_minus, IBUS_KEY_parenleft, 0x007B, +IBUS_KEY_minus, IBUS_KEY_parenright, 0x007D, +IBUS_KEY_minus, IBUS_KEY_plus, 0x00B1, +IBUS_KEY_minus, IBUS_KEY_comma, 0x00AC, +IBUS_KEY_minus, IBUS_KEY_slash, 0x233F, +IBUS_KEY_minus, IBUS_KEY_colon, 0x00F7, +IBUS_KEY_minus, IBUS_KEY_greater, 0x2192, +IBUS_KEY_minus, IBUS_KEY_A, 0x0100, +IBUS_KEY_minus, IBUS_KEY_D, 0x0110, +IBUS_KEY_minus, IBUS_KEY_E, 0x0112, +IBUS_KEY_minus, IBUS_KEY_I, 0x012A, +IBUS_KEY_minus, IBUS_KEY_L, 0x00A3, +IBUS_KEY_minus, IBUS_KEY_N, 0x00D1, +IBUS_KEY_minus, IBUS_KEY_O, 0x014C, +IBUS_KEY_minus, IBUS_KEY_U, 0x016A, +IBUS_KEY_minus, IBUS_KEY_Y, 0x00A5, +IBUS_KEY_minus, IBUS_KEY_backslash, 0x2340, +IBUS_KEY_minus, IBUS_KEY_asciicircum, 0x00AF, +IBUS_KEY_minus, IBUS_KEY_a, 0x0101, +IBUS_KEY_minus, IBUS_KEY_d, 0x0111, +IBUS_KEY_minus, IBUS_KEY_e, 0x0113, +IBUS_KEY_minus, IBUS_KEY_i, 0x012B, +IBUS_KEY_minus, IBUS_KEY_l, 0x00A3, +IBUS_KEY_minus, IBUS_KEY_n, 0x00F1, +IBUS_KEY_minus, IBUS_KEY_o, 0x014D, +IBUS_KEY_minus, IBUS_KEY_u, 0x016B, +IBUS_KEY_minus, IBUS_KEY_y, 0x00A5, +IBUS_KEY_minus, 0x2191, 0x234F, +IBUS_KEY_minus, 0x2193, 0x2356, +IBUS_KEY_minus, IBUS_KEY_emopencircle, 0x2296, +IBUS_KEY_period, IBUS_KEY_minus, 0x00B7, +IBUS_KEY_period, IBUS_KEY_period, 0x2026, +IBUS_KEY_period, IBUS_KEY_colon, 0x2235, +IBUS_KEY_period, IBUS_KEY_less, 0x2039, +IBUS_KEY_period, IBUS_KEY_equal, 0x2022, +IBUS_KEY_period, IBUS_KEY_greater, 0x203A, +IBUS_KEY_period, IBUS_KEY_A, 0x0226, +IBUS_KEY_period, IBUS_KEY_B, 0x1E02, +IBUS_KEY_period, IBUS_KEY_C, 0x010A, +IBUS_KEY_period, IBUS_KEY_D, 0x1E0A, +IBUS_KEY_period, IBUS_KEY_E, 0x0116, +IBUS_KEY_period, IBUS_KEY_F, 0x1E1E, +IBUS_KEY_period, IBUS_KEY_G, 0x0120, +IBUS_KEY_period, IBUS_KEY_H, 0x1E22, +IBUS_KEY_period, IBUS_KEY_I, 0x0130, +IBUS_KEY_period, IBUS_KEY_M, 0x1E40, +IBUS_KEY_period, IBUS_KEY_N, 0x1E44, +IBUS_KEY_period, IBUS_KEY_O, 0x022E, +IBUS_KEY_period, IBUS_KEY_P, 0x1E56, +IBUS_KEY_period, IBUS_KEY_R, 0x1E58, +IBUS_KEY_period, IBUS_KEY_S, 0x1E60, +IBUS_KEY_period, IBUS_KEY_T, 0x1E6A, +IBUS_KEY_period, IBUS_KEY_W, 0x1E86, +IBUS_KEY_period, IBUS_KEY_X, 0x1E8A, +IBUS_KEY_period, IBUS_KEY_Y, 0x1E8E, +IBUS_KEY_period, IBUS_KEY_Z, 0x017B, +IBUS_KEY_period, IBUS_KEY_asciicircum, 0x00B7, +IBUS_KEY_period, IBUS_KEY_a, 0x0227, +IBUS_KEY_period, IBUS_KEY_b, 0x1E03, +IBUS_KEY_period, IBUS_KEY_c, 0x010B, +IBUS_KEY_period, IBUS_KEY_d, 0x1E0B, +IBUS_KEY_period, IBUS_KEY_e, 0x0117, +IBUS_KEY_period, IBUS_KEY_f, 0x1E1F, +IBUS_KEY_period, IBUS_KEY_g, 0x0121, +IBUS_KEY_period, IBUS_KEY_h, 0x1E23, +IBUS_KEY_period, IBUS_KEY_i, 0x0131, +IBUS_KEY_period, IBUS_KEY_m, 0x1E41, +IBUS_KEY_period, IBUS_KEY_n, 0x1E45, +IBUS_KEY_period, IBUS_KEY_o, 0x022F, +IBUS_KEY_period, IBUS_KEY_p, 0x1E57, +IBUS_KEY_period, IBUS_KEY_r, 0x1E59, +IBUS_KEY_period, IBUS_KEY_s, 0x1E61, +IBUS_KEY_period, IBUS_KEY_t, 0x1E6B, +IBUS_KEY_period, IBUS_KEY_w, 0x1E87, +IBUS_KEY_period, IBUS_KEY_x, 0x1E8B, +IBUS_KEY_period, IBUS_KEY_y, 0x1E8F, +IBUS_KEY_period, IBUS_KEY_z, 0x017C, +IBUS_KEY_period, 0x017F, 0x1E9B, +IBUS_KEY_period, IBUS_KEY_Sacute, 0x1E64, +IBUS_KEY_period, IBUS_KEY_Scaron, 0x1E66, +IBUS_KEY_period, IBUS_KEY_sacute, 0x1E65, +IBUS_KEY_period, IBUS_KEY_scaron, 0x1E67, +IBUS_KEY_period, 0x1E62, 0x1E68, +IBUS_KEY_period, 0x1E63, 0x1E69, +IBUS_KEY_period, IBUS_KEY_emopencircle, 0x2299, +IBUS_KEY_slash, IBUS_KEY_minus, 0x233F, +IBUS_KEY_slash, IBUS_KEY_slash, 0x005C, +IBUS_KEY_slash, IBUS_KEY_less, 0x005C, +IBUS_KEY_slash, IBUS_KEY_equal, 0x2260, +IBUS_KEY_slash, IBUS_KEY_C, 0x20A1, +IBUS_KEY_slash, IBUS_KEY_D, 0x0110, +IBUS_KEY_slash, IBUS_KEY_G, 0x01E4, +IBUS_KEY_slash, IBUS_KEY_H, 0x0126, +IBUS_KEY_slash, IBUS_KEY_I, 0x0197, +IBUS_KEY_slash, IBUS_KEY_L, 0x0141, +IBUS_KEY_slash, IBUS_KEY_O, 0x00D8, +IBUS_KEY_slash, IBUS_KEY_T, 0x0166, +IBUS_KEY_slash, IBUS_KEY_U, 0x00B5, +IBUS_KEY_slash, IBUS_KEY_Z, 0x01B5, +IBUS_KEY_slash, IBUS_KEY_asciicircum, 0x007C, +IBUS_KEY_slash, IBUS_KEY_b, 0x0180, +IBUS_KEY_slash, IBUS_KEY_c, 0x00A2, +IBUS_KEY_slash, IBUS_KEY_d, 0x0111, +IBUS_KEY_slash, IBUS_KEY_g, 0x01E5, +IBUS_KEY_slash, IBUS_KEY_h, 0x0127, +IBUS_KEY_slash, IBUS_KEY_i, 0x0268, +IBUS_KEY_slash, IBUS_KEY_l, 0x0142, +IBUS_KEY_slash, IBUS_KEY_m, 0x20A5, +IBUS_KEY_slash, IBUS_KEY_o, 0x00F8, +IBUS_KEY_slash, IBUS_KEY_t, 0x0167, +IBUS_KEY_slash, IBUS_KEY_u, 0x00B5, +IBUS_KEY_slash, IBUS_KEY_v, 0x221A, +IBUS_KEY_slash, IBUS_KEY_z, 0x01B6, +IBUS_KEY_slash, 0x0294, 0x02A1, +IBUS_KEY_slash, 0x04AE, 0x04B0, +IBUS_KEY_slash, 0x04AF, 0x04B1, +IBUS_KEY_slash, IBUS_KEY_Cyrillic_ghe, 0x0493, +IBUS_KEY_slash, IBUS_KEY_Cyrillic_ka, 0x049F, +IBUS_KEY_slash, IBUS_KEY_Cyrillic_GHE, 0x0492, +IBUS_KEY_slash, IBUS_KEY_Cyrillic_KA, 0x049E, +IBUS_KEY_slash, IBUS_KEY_leftarrow, 0x219A, +IBUS_KEY_slash, IBUS_KEY_rightarrow, 0x219B, +IBUS_KEY_slash, 0x2194, 0x21AE, +IBUS_KEY_slash, 0x2395, 0x2341, +IBUS_KEY_0, IBUS_KEY_asterisk, 0x00B0, +IBUS_KEY_0, IBUS_KEY_3, 0x2189, +IBUS_KEY_0, IBUS_KEY_C, 0x00A9, +IBUS_KEY_0, IBUS_KEY_S, 0x00A7, +IBUS_KEY_0, IBUS_KEY_X, 0x00A4, +IBUS_KEY_0, IBUS_KEY_asciicircum, 0x00B0, +IBUS_KEY_0, IBUS_KEY_c, 0x00A9, +IBUS_KEY_0, IBUS_KEY_s, 0x00A7, +IBUS_KEY_0, IBUS_KEY_x, 0x00A4, +IBUS_KEY_0, IBUS_KEY_asciitilde, 0x236C, +IBUS_KEY_1, IBUS_KEY_2, 0x00BD, +IBUS_KEY_1, IBUS_KEY_3, 0x2153, +IBUS_KEY_1, IBUS_KEY_4, 0x00BC, +IBUS_KEY_1, IBUS_KEY_5, 0x2155, +IBUS_KEY_1, IBUS_KEY_6, 0x2159, +IBUS_KEY_1, IBUS_KEY_7, 0x2150, +IBUS_KEY_1, IBUS_KEY_8, 0x215B, +IBUS_KEY_1, IBUS_KEY_9, 0x2151, +IBUS_KEY_1, IBUS_KEY_S, 0x00B9, +IBUS_KEY_1, IBUS_KEY_asciicircum, 0x00B9, +IBUS_KEY_1, IBUS_KEY_s, 0x00B9, +IBUS_KEY_2, IBUS_KEY_3, 0x2154, +IBUS_KEY_2, IBUS_KEY_5, 0x2156, +IBUS_KEY_2, IBUS_KEY_S, 0x00B2, +IBUS_KEY_2, IBUS_KEY_asciicircum, 0x00B2, +IBUS_KEY_2, IBUS_KEY_s, 0x00B2, +IBUS_KEY_3, IBUS_KEY_4, 0x00BE, +IBUS_KEY_3, IBUS_KEY_5, 0x2157, +IBUS_KEY_3, IBUS_KEY_8, 0x215C, +IBUS_KEY_3, IBUS_KEY_S, 0x00B3, +IBUS_KEY_3, IBUS_KEY_asciicircum, 0x00B3, +IBUS_KEY_3, IBUS_KEY_s, 0x00B3, +IBUS_KEY_4, IBUS_KEY_5, 0x2158, +IBUS_KEY_5, IBUS_KEY_6, 0x215A, +IBUS_KEY_5, IBUS_KEY_8, 0x215D, +IBUS_KEY_7, IBUS_KEY_8, 0x215E, +IBUS_KEY_8, IBUS_KEY_8, 0x221E, +IBUS_KEY_colon, IBUS_KEY_parenleft, 0x2639, +IBUS_KEY_colon, IBUS_KEY_parenright, 0x263A, +IBUS_KEY_colon, IBUS_KEY_minus, 0x00F7, +IBUS_KEY_colon, IBUS_KEY_period, 0x2234, +IBUS_KEY_colon, 0x2395, 0x2360, +IBUS_KEY_semicolon, IBUS_KEY_A, 0x0104, +IBUS_KEY_semicolon, IBUS_KEY_E, 0x0118, +IBUS_KEY_semicolon, IBUS_KEY_I, 0x012E, +IBUS_KEY_semicolon, IBUS_KEY_O, 0x01EA, +IBUS_KEY_semicolon, IBUS_KEY_S, 0x0218, +IBUS_KEY_semicolon, IBUS_KEY_T, 0x021A, +IBUS_KEY_semicolon, IBUS_KEY_U, 0x0172, +IBUS_KEY_semicolon, IBUS_KEY_underscore, 0x236E, +IBUS_KEY_semicolon, IBUS_KEY_a, 0x0105, +IBUS_KEY_semicolon, IBUS_KEY_e, 0x0119, +IBUS_KEY_semicolon, IBUS_KEY_i, 0x012F, +IBUS_KEY_semicolon, IBUS_KEY_o, 0x01EB, +IBUS_KEY_semicolon, IBUS_KEY_s, 0x0219, +IBUS_KEY_semicolon, IBUS_KEY_t, 0x021B, +IBUS_KEY_semicolon, IBUS_KEY_u, 0x0173, +IBUS_KEY_less, IBUS_KEY_space, 0x02C7, +IBUS_KEY_less, IBUS_KEY_quotedbl, 0x201C, +IBUS_KEY_less, IBUS_KEY_apostrophe, 0x2018, +IBUS_KEY_less, IBUS_KEY_minus, 0x2190, +IBUS_KEY_less, IBUS_KEY_slash, 0x005C, +IBUS_KEY_less, IBUS_KEY_3, 0x2665, +IBUS_KEY_less, IBUS_KEY_less, 0x00AB, +IBUS_KEY_less, IBUS_KEY_equal, 0x2264, +IBUS_KEY_less, IBUS_KEY_greater, 0x22C4, +IBUS_KEY_less, IBUS_KEY_C, 0x010C, +IBUS_KEY_less, IBUS_KEY_D, 0x010E, +IBUS_KEY_less, IBUS_KEY_E, 0x011A, +IBUS_KEY_less, IBUS_KEY_L, 0x013D, +IBUS_KEY_less, IBUS_KEY_N, 0x0147, +IBUS_KEY_less, IBUS_KEY_R, 0x0158, +IBUS_KEY_less, IBUS_KEY_S, 0x0160, +IBUS_KEY_less, IBUS_KEY_T, 0x0164, +IBUS_KEY_less, IBUS_KEY_Z, 0x017D, +IBUS_KEY_less, IBUS_KEY_underscore, 0x2264, +IBUS_KEY_less, IBUS_KEY_c, 0x010D, +IBUS_KEY_less, IBUS_KEY_d, 0x010F, +IBUS_KEY_less, IBUS_KEY_e, 0x011B, +IBUS_KEY_less, IBUS_KEY_l, 0x013E, +IBUS_KEY_less, IBUS_KEY_n, 0x0148, +IBUS_KEY_less, IBUS_KEY_r, 0x0159, +IBUS_KEY_less, IBUS_KEY_s, 0x0161, +IBUS_KEY_less, IBUS_KEY_t, 0x0165, +IBUS_KEY_less, IBUS_KEY_z, 0x017E, +IBUS_KEY_less, 0x0338, 0x226E, +IBUS_KEY_less, 0x2395, 0x2343, +IBUS_KEY_equal, IBUS_KEY_slash, 0x2260, +IBUS_KEY_equal, IBUS_KEY_greater, 0x21D2, +IBUS_KEY_equal, IBUS_KEY_C, 0x20AC, +IBUS_KEY_equal, IBUS_KEY_E, 0x20AC, +IBUS_KEY_equal, IBUS_KEY_L, 0x20A4, +IBUS_KEY_equal, IBUS_KEY_N, 0x20A6, +IBUS_KEY_equal, IBUS_KEY_O, 0x0150, +IBUS_KEY_equal, IBUS_KEY_R, 0x20B9, +IBUS_KEY_equal, IBUS_KEY_U, 0x0170, +IBUS_KEY_equal, IBUS_KEY_W, 0x20A9, +IBUS_KEY_equal, IBUS_KEY_Y, 0x00A5, +IBUS_KEY_equal, IBUS_KEY_underscore, 0x2261, +IBUS_KEY_equal, IBUS_KEY_c, 0x20AC, +IBUS_KEY_equal, IBUS_KEY_d, 0x20AB, +IBUS_KEY_equal, IBUS_KEY_e, 0x20AC, +IBUS_KEY_equal, IBUS_KEY_l, 0x00A3, +IBUS_KEY_equal, IBUS_KEY_o, 0x0151, +IBUS_KEY_equal, IBUS_KEY_r, 0x20B9, +IBUS_KEY_equal, IBUS_KEY_u, 0x0171, +IBUS_KEY_equal, IBUS_KEY_y, 0x00A5, +IBUS_KEY_equal, 0x0338, 0x2260, +IBUS_KEY_equal, IBUS_KEY_Cyrillic_u, 0x04F3, +IBUS_KEY_equal, IBUS_KEY_Cyrillic_IE, 0x20AC, +IBUS_KEY_equal, IBUS_KEY_Cyrillic_ES, 0x20AC, +IBUS_KEY_equal, IBUS_KEY_Cyrillic_U, 0x04F2, +IBUS_KEY_equal, 0x2395, 0x2338, +IBUS_KEY_greater, IBUS_KEY_space, 0x005E, +IBUS_KEY_greater, IBUS_KEY_quotedbl, 0x201D, +IBUS_KEY_greater, IBUS_KEY_apostrophe, 0x2019, +IBUS_KEY_greater, IBUS_KEY_less, 0x22C4, +IBUS_KEY_greater, IBUS_KEY_equal, 0x2265, +IBUS_KEY_greater, IBUS_KEY_greater, 0x00BB, +IBUS_KEY_greater, IBUS_KEY_A, 0x00C2, +IBUS_KEY_greater, IBUS_KEY_E, 0x00CA, +IBUS_KEY_greater, IBUS_KEY_I, 0x00CE, +IBUS_KEY_greater, IBUS_KEY_O, 0x00D4, +IBUS_KEY_greater, IBUS_KEY_U, 0x00DB, +IBUS_KEY_greater, IBUS_KEY_underscore, 0x2265, +IBUS_KEY_greater, IBUS_KEY_a, 0x00E2, +IBUS_KEY_greater, IBUS_KEY_e, 0x00EA, +IBUS_KEY_greater, IBUS_KEY_i, 0x00EE, +IBUS_KEY_greater, IBUS_KEY_o, 0x00F4, +IBUS_KEY_greater, IBUS_KEY_u, 0x00FB, +IBUS_KEY_greater, IBUS_KEY_diaeresis, 0x2369, +IBUS_KEY_greater, 0x0338, 0x226F, +IBUS_KEY_greater, 0x2395, 0x2344, +IBUS_KEY_question, IBUS_KEY_exclam, 0x2E18, +IBUS_KEY_question, IBUS_KEY_question, 0x00BF, +IBUS_KEY_question, IBUS_KEY_A, 0x1EA2, +IBUS_KEY_question, IBUS_KEY_E, 0x1EBA, +IBUS_KEY_question, IBUS_KEY_I, 0x1EC8, +IBUS_KEY_question, IBUS_KEY_O, 0x1ECE, +IBUS_KEY_question, IBUS_KEY_U, 0x1EE6, +IBUS_KEY_question, IBUS_KEY_Y, 0x1EF6, +IBUS_KEY_question, IBUS_KEY_a, 0x1EA3, +IBUS_KEY_question, IBUS_KEY_e, 0x1EBB, +IBUS_KEY_question, IBUS_KEY_i, 0x1EC9, +IBUS_KEY_question, IBUS_KEY_o, 0x1ECF, +IBUS_KEY_question, IBUS_KEY_u, 0x1EE7, +IBUS_KEY_question, IBUS_KEY_y, 0x1EF7, +IBUS_KEY_question, IBUS_KEY_Acircumflex, 0x1EA8, +IBUS_KEY_question, IBUS_KEY_Ecircumflex, 0x1EC2, +IBUS_KEY_question, IBUS_KEY_Ocircumflex, 0x1ED4, +IBUS_KEY_question, IBUS_KEY_acircumflex, 0x1EA9, +IBUS_KEY_question, IBUS_KEY_ecircumflex, 0x1EC3, +IBUS_KEY_question, IBUS_KEY_ocircumflex, 0x1ED5, +IBUS_KEY_question, IBUS_KEY_Abreve, 0x1EB2, +IBUS_KEY_question, IBUS_KEY_abreve, 0x1EB3, +IBUS_KEY_question, 0x2395, 0x2370, +IBUS_KEY_A, IBUS_KEY_quotedbl, 0x00C4, +IBUS_KEY_A, IBUS_KEY_apostrophe, 0x00C1, +IBUS_KEY_A, IBUS_KEY_parenleft, 0x0102, +IBUS_KEY_A, IBUS_KEY_asterisk, 0x00C5, +IBUS_KEY_A, IBUS_KEY_comma, 0x0104, +IBUS_KEY_A, IBUS_KEY_minus, 0x0100, +IBUS_KEY_A, IBUS_KEY_semicolon, 0x0104, +IBUS_KEY_A, IBUS_KEY_greater, 0x00C2, +IBUS_KEY_A, IBUS_KEY_A, 0x00C5, +IBUS_KEY_A, IBUS_KEY_E, 0x00C6, +IBUS_KEY_A, IBUS_KEY_T, 0x0040, +IBUS_KEY_A, IBUS_KEY_asciicircum, 0x00C2, +IBUS_KEY_A, IBUS_KEY_underscore, 0x0100, +IBUS_KEY_A, IBUS_KEY_grave, 0x00C0, +IBUS_KEY_A, IBUS_KEY_asciitilde, 0x00C3, +IBUS_KEY_A, IBUS_KEY_diaeresis, 0x00C4, +IBUS_KEY_A, IBUS_KEY_acute, 0x00C1, +IBUS_KEY_B, IBUS_KEY_period, 0x1E02, +IBUS_KEY_C, IBUS_KEY_apostrophe, 0x0106, +IBUS_KEY_C, IBUS_KEY_comma, 0x00C7, +IBUS_KEY_C, IBUS_KEY_period, 0x010A, +IBUS_KEY_C, IBUS_KEY_slash, 0x20A1, +IBUS_KEY_C, IBUS_KEY_0, 0x00A9, +IBUS_KEY_C, IBUS_KEY_less, 0x010C, +IBUS_KEY_C, IBUS_KEY_equal, 0x20AC, +IBUS_KEY_C, IBUS_KEY_E, 0x20A0, +IBUS_KEY_C, IBUS_KEY_O, 0x00A9, +IBUS_KEY_C, IBUS_KEY_o, 0x00A9, +IBUS_KEY_C, IBUS_KEY_r, 0x20A2, +IBUS_KEY_C, IBUS_KEY_bar, 0x00A2, +IBUS_KEY_D, IBUS_KEY_comma, 0x1E10, +IBUS_KEY_D, IBUS_KEY_minus, 0x0110, +IBUS_KEY_D, IBUS_KEY_period, 0x1E0A, +IBUS_KEY_D, IBUS_KEY_less, 0x010E, +IBUS_KEY_D, IBUS_KEY_H, 0x00D0, +IBUS_KEY_E, IBUS_KEY_quotedbl, 0x00CB, +IBUS_KEY_E, IBUS_KEY_apostrophe, 0x00C9, +IBUS_KEY_E, IBUS_KEY_comma, 0x0118, +IBUS_KEY_E, IBUS_KEY_minus, 0x0112, +IBUS_KEY_E, IBUS_KEY_period, 0x0116, +IBUS_KEY_E, IBUS_KEY_semicolon, 0x0118, +IBUS_KEY_E, IBUS_KEY_less, 0x011A, +IBUS_KEY_E, IBUS_KEY_equal, 0x20AC, +IBUS_KEY_E, IBUS_KEY_greater, 0x00CA, +IBUS_KEY_E, IBUS_KEY_asciicircum, 0x00CA, +IBUS_KEY_E, IBUS_KEY_underscore, 0x0112, +IBUS_KEY_E, IBUS_KEY_grave, 0x00C8, +IBUS_KEY_E, IBUS_KEY_diaeresis, 0x00CB, +IBUS_KEY_E, IBUS_KEY_acute, 0x00C9, +IBUS_KEY_F, IBUS_KEY_period, 0x1E1E, +IBUS_KEY_F, IBUS_KEY_i, 0xFB03, +IBUS_KEY_F, IBUS_KEY_l, 0xFB04, +IBUS_KEY_F, IBUS_KEY_r, 0x20A3, +IBUS_KEY_G, IBUS_KEY_parenleft, 0x011E, +IBUS_KEY_G, IBUS_KEY_comma, 0x0122, +IBUS_KEY_G, IBUS_KEY_period, 0x0120, +IBUS_KEY_G, IBUS_KEY_U, 0x011E, +IBUS_KEY_G, IBUS_KEY_breve, 0x011E, +IBUS_KEY_H, IBUS_KEY_comma, 0x1E28, +IBUS_KEY_I, IBUS_KEY_quotedbl, 0x00CF, +IBUS_KEY_I, IBUS_KEY_apostrophe, 0x00CD, +IBUS_KEY_I, IBUS_KEY_comma, 0x012E, +IBUS_KEY_I, IBUS_KEY_minus, 0x012A, +IBUS_KEY_I, IBUS_KEY_period, 0x0130, +IBUS_KEY_I, IBUS_KEY_semicolon, 0x012E, +IBUS_KEY_I, IBUS_KEY_greater, 0x00CE, +IBUS_KEY_I, IBUS_KEY_J, 0x0132, +IBUS_KEY_I, IBUS_KEY_asciicircum, 0x00CE, +IBUS_KEY_I, IBUS_KEY_underscore, 0x012A, +IBUS_KEY_I, IBUS_KEY_grave, 0x00CC, +IBUS_KEY_I, IBUS_KEY_j, 0x0132, +IBUS_KEY_I, IBUS_KEY_asciitilde, 0x0128, +IBUS_KEY_I, IBUS_KEY_diaeresis, 0x00CF, +IBUS_KEY_I, IBUS_KEY_acute, 0x00CD, +IBUS_KEY_K, IBUS_KEY_comma, 0x0136, +IBUS_KEY_L, IBUS_KEY_apostrophe, 0x0139, +IBUS_KEY_L, IBUS_KEY_comma, 0x013B, +IBUS_KEY_L, IBUS_KEY_minus, 0x00A3, +IBUS_KEY_L, IBUS_KEY_slash, 0x0141, +IBUS_KEY_L, IBUS_KEY_less, 0x013D, +IBUS_KEY_L, IBUS_KEY_equal, 0x20A4, +IBUS_KEY_L, IBUS_KEY_V, 0x007C, +IBUS_KEY_M, IBUS_KEY_period, 0x1E40, +IBUS_KEY_N, IBUS_KEY_apostrophe, 0x0143, +IBUS_KEY_N, IBUS_KEY_comma, 0x0145, +IBUS_KEY_N, IBUS_KEY_minus, 0x00D1, +IBUS_KEY_N, IBUS_KEY_less, 0x0147, +IBUS_KEY_N, IBUS_KEY_equal, 0x20A6, +IBUS_KEY_N, IBUS_KEY_G, 0x014A, +IBUS_KEY_N, IBUS_KEY_O, 0x2116, +IBUS_KEY_N, IBUS_KEY_o, 0x2116, +IBUS_KEY_N, IBUS_KEY_asciitilde, 0x00D1, +IBUS_KEY_O, IBUS_KEY_quotedbl, 0x00D6, +IBUS_KEY_O, IBUS_KEY_apostrophe, 0x00D3, +IBUS_KEY_O, IBUS_KEY_comma, 0x01EA, +IBUS_KEY_O, IBUS_KEY_minus, 0x014C, +IBUS_KEY_O, IBUS_KEY_slash, 0x00D8, +IBUS_KEY_O, IBUS_KEY_semicolon, 0x01EA, +IBUS_KEY_O, IBUS_KEY_greater, 0x00D4, +IBUS_KEY_O, IBUS_KEY_A, 0x24B6, +IBUS_KEY_O, IBUS_KEY_C, 0x00A9, +IBUS_KEY_O, IBUS_KEY_E, 0x0152, +IBUS_KEY_O, IBUS_KEY_R, 0x00AE, +IBUS_KEY_O, IBUS_KEY_S, 0x00A7, +IBUS_KEY_O, IBUS_KEY_X, 0x00A4, +IBUS_KEY_O, IBUS_KEY_asciicircum, 0x00D4, +IBUS_KEY_O, IBUS_KEY_underscore, 0x014C, +IBUS_KEY_O, IBUS_KEY_grave, 0x00D2, +IBUS_KEY_O, IBUS_KEY_c, 0x00A9, +IBUS_KEY_O, IBUS_KEY_r, 0x00AE, +IBUS_KEY_O, IBUS_KEY_x, 0x00A4, +IBUS_KEY_O, IBUS_KEY_asciitilde, 0x00D5, +IBUS_KEY_O, IBUS_KEY_diaeresis, 0x00D6, +IBUS_KEY_O, IBUS_KEY_acute, 0x00D3, +IBUS_KEY_P, IBUS_KEY_exclam, 0x00B6, +IBUS_KEY_P, IBUS_KEY_period, 0x1E56, +IBUS_KEY_P, IBUS_KEY_P, 0x00B6, +IBUS_KEY_P, IBUS_KEY_t, 0x20A7, +IBUS_KEY_R, IBUS_KEY_apostrophe, 0x0154, +IBUS_KEY_R, IBUS_KEY_comma, 0x0156, +IBUS_KEY_R, IBUS_KEY_less, 0x0158, +IBUS_KEY_R, IBUS_KEY_equal, 0x20B9, +IBUS_KEY_R, IBUS_KEY_O, 0x00AE, +IBUS_KEY_R, IBUS_KEY_o, 0x00AE, +IBUS_KEY_R, IBUS_KEY_s, 0x20A8, +IBUS_KEY_S, IBUS_KEY_exclam, 0x00A7, +IBUS_KEY_S, IBUS_KEY_apostrophe, 0x015A, +IBUS_KEY_S, IBUS_KEY_comma, 0x015E, +IBUS_KEY_S, IBUS_KEY_period, 0x1E60, +IBUS_KEY_S, IBUS_KEY_0, 0x00A7, +IBUS_KEY_S, IBUS_KEY_1, 0x00B9, +IBUS_KEY_S, IBUS_KEY_2, 0x00B2, +IBUS_KEY_S, IBUS_KEY_3, 0x00B3, +IBUS_KEY_S, IBUS_KEY_semicolon, 0x0218, +IBUS_KEY_S, IBUS_KEY_less, 0x0160, +IBUS_KEY_S, IBUS_KEY_M, 0x2120, +IBUS_KEY_S, IBUS_KEY_O, 0x00A7, +IBUS_KEY_S, IBUS_KEY_S, 0x1E9E, +IBUS_KEY_S, IBUS_KEY_m, 0x2120, +IBUS_KEY_S, IBUS_KEY_cedilla, 0x015E, +IBUS_KEY_T, IBUS_KEY_comma, 0x0162, +IBUS_KEY_T, IBUS_KEY_minus, 0x0166, +IBUS_KEY_T, IBUS_KEY_period, 0x1E6A, +IBUS_KEY_T, IBUS_KEY_slash, 0x0166, +IBUS_KEY_T, IBUS_KEY_semicolon, 0x021A, +IBUS_KEY_T, IBUS_KEY_less, 0x0164, +IBUS_KEY_T, IBUS_KEY_H, 0x00DE, +IBUS_KEY_T, IBUS_KEY_M, 0x2122, +IBUS_KEY_T, IBUS_KEY_m, 0x2122, +IBUS_KEY_U, IBUS_KEY_quotedbl, 0x00DC, +IBUS_KEY_U, IBUS_KEY_apostrophe, 0x00DA, +IBUS_KEY_U, IBUS_KEY_asterisk, 0x016E, +IBUS_KEY_U, IBUS_KEY_comma, 0x0172, +IBUS_KEY_U, IBUS_KEY_minus, 0x016A, +IBUS_KEY_U, IBUS_KEY_slash, 0x00B5, +IBUS_KEY_U, IBUS_KEY_semicolon, 0x0172, +IBUS_KEY_U, IBUS_KEY_greater, 0x00DB, +IBUS_KEY_U, IBUS_KEY_A, 0x0102, +IBUS_KEY_U, IBUS_KEY_E, 0x0114, +IBUS_KEY_U, IBUS_KEY_G, 0x011E, +IBUS_KEY_U, IBUS_KEY_I, 0x012C, +IBUS_KEY_U, IBUS_KEY_O, 0x014E, +IBUS_KEY_U, IBUS_KEY_U, 0x016C, +IBUS_KEY_U, IBUS_KEY_asciicircum, 0x00DB, +IBUS_KEY_U, IBUS_KEY_underscore, 0x016A, +IBUS_KEY_U, IBUS_KEY_grave, 0x00D9, +IBUS_KEY_U, IBUS_KEY_a, 0x0103, +IBUS_KEY_U, IBUS_KEY_e, 0x0115, +IBUS_KEY_U, IBUS_KEY_g, 0x011F, +IBUS_KEY_U, IBUS_KEY_i, 0x012D, +IBUS_KEY_U, IBUS_KEY_o, 0x014F, +IBUS_KEY_U, IBUS_KEY_u, 0x016D, +IBUS_KEY_U, IBUS_KEY_asciitilde, 0x0168, +IBUS_KEY_U, IBUS_KEY_diaeresis, 0x00DC, +IBUS_KEY_U, IBUS_KEY_acute, 0x00DA, +IBUS_KEY_U, 0x0228, 0x1E1C, +IBUS_KEY_U, 0x0229, 0x1E1D, +IBUS_KEY_U, IBUS_KEY_Cyrillic_a, 0x04D1, +IBUS_KEY_U, IBUS_KEY_Cyrillic_ie, 0x04D7, +IBUS_KEY_U, IBUS_KEY_Cyrillic_i, 0x0439, +IBUS_KEY_U, IBUS_KEY_Cyrillic_u, 0x045E, +IBUS_KEY_U, IBUS_KEY_Cyrillic_zhe, 0x04C2, +IBUS_KEY_U, IBUS_KEY_Cyrillic_A, 0x04D0, +IBUS_KEY_U, IBUS_KEY_Cyrillic_IE, 0x04D6, +IBUS_KEY_U, IBUS_KEY_Cyrillic_I, 0x0419, +IBUS_KEY_U, IBUS_KEY_Cyrillic_U, 0x040E, +IBUS_KEY_U, IBUS_KEY_Cyrillic_ZHE, 0x04C1, +IBUS_KEY_U, IBUS_KEY_Greek_ALPHA, 0x1FB8, +IBUS_KEY_U, IBUS_KEY_Greek_IOTA, 0x1FD8, +IBUS_KEY_U, IBUS_KEY_Greek_UPSILON, 0x1FE8, +IBUS_KEY_U, IBUS_KEY_Greek_alpha, 0x1FB0, +IBUS_KEY_U, IBUS_KEY_Greek_iota, 0x1FD0, +IBUS_KEY_U, IBUS_KEY_Greek_upsilon, 0x1FE0, +IBUS_KEY_U, 0x1EA0, 0x1EB6, +IBUS_KEY_U, 0x1EA1, 0x1EB7, +IBUS_KEY_V, IBUS_KEY_L, 0x007C, +IBUS_KEY_W, IBUS_KEY_equal, 0x20A9, +IBUS_KEY_W, IBUS_KEY_asciicircum, 0x0174, +IBUS_KEY_X, IBUS_KEY_0, 0x00A4, +IBUS_KEY_X, IBUS_KEY_O, 0x00A4, +IBUS_KEY_X, IBUS_KEY_o, 0x00A4, +IBUS_KEY_Y, IBUS_KEY_quotedbl, 0x0178, +IBUS_KEY_Y, IBUS_KEY_apostrophe, 0x00DD, +IBUS_KEY_Y, IBUS_KEY_minus, 0x00A5, +IBUS_KEY_Y, IBUS_KEY_equal, 0x00A5, +IBUS_KEY_Y, IBUS_KEY_asciicircum, 0x0176, +IBUS_KEY_Y, IBUS_KEY_diaeresis, 0x0178, +IBUS_KEY_Y, IBUS_KEY_acute, 0x00DD, +IBUS_KEY_Z, IBUS_KEY_apostrophe, 0x0179, +IBUS_KEY_Z, IBUS_KEY_period, 0x017B, +IBUS_KEY_Z, IBUS_KEY_less, 0x017D, +IBUS_KEY_bracketleft, IBUS_KEY_bracketright, 0x2337, +IBUS_KEY_backslash, IBUS_KEY_minus, 0x2340, +IBUS_KEY_backslash, 0x2395, 0x2342, +IBUS_KEY_backslash, IBUS_KEY_emopencircle, 0x2349, +IBUS_KEY_bracketright, IBUS_KEY_bracketleft, 0x2337, +IBUS_KEY_asciicircum, IBUS_KEY_space, 0x005E, +IBUS_KEY_asciicircum, IBUS_KEY_parenleft, 0x207D, +IBUS_KEY_asciicircum, IBUS_KEY_parenright, 0x207E, +IBUS_KEY_asciicircum, IBUS_KEY_plus, 0x207A, +IBUS_KEY_asciicircum, IBUS_KEY_minus, 0x00AF, +IBUS_KEY_asciicircum, IBUS_KEY_period, 0x00B7, +IBUS_KEY_asciicircum, IBUS_KEY_slash, 0x007C, +IBUS_KEY_asciicircum, IBUS_KEY_0, 0x2070, +IBUS_KEY_asciicircum, IBUS_KEY_1, 0x00B9, +IBUS_KEY_asciicircum, IBUS_KEY_2, 0x00B2, +IBUS_KEY_asciicircum, IBUS_KEY_3, 0x00B3, +IBUS_KEY_asciicircum, IBUS_KEY_4, 0x2074, +IBUS_KEY_asciicircum, IBUS_KEY_5, 0x2075, +IBUS_KEY_asciicircum, IBUS_KEY_6, 0x2076, +IBUS_KEY_asciicircum, IBUS_KEY_7, 0x2077, +IBUS_KEY_asciicircum, IBUS_KEY_8, 0x2078, +IBUS_KEY_asciicircum, IBUS_KEY_9, 0x2079, +IBUS_KEY_asciicircum, IBUS_KEY_equal, 0x207C, +IBUS_KEY_asciicircum, IBUS_KEY_A, 0x00C2, +IBUS_KEY_asciicircum, IBUS_KEY_C, 0x0108, +IBUS_KEY_asciicircum, IBUS_KEY_E, 0x00CA, +IBUS_KEY_asciicircum, IBUS_KEY_G, 0x011C, +IBUS_KEY_asciicircum, IBUS_KEY_H, 0x0124, +IBUS_KEY_asciicircum, IBUS_KEY_I, 0x00CE, +IBUS_KEY_asciicircum, IBUS_KEY_J, 0x0134, +IBUS_KEY_asciicircum, IBUS_KEY_O, 0x00D4, +IBUS_KEY_asciicircum, IBUS_KEY_S, 0x015C, +IBUS_KEY_asciicircum, IBUS_KEY_U, 0x00DB, +IBUS_KEY_asciicircum, IBUS_KEY_W, 0x0174, +IBUS_KEY_asciicircum, IBUS_KEY_Y, 0x0176, +IBUS_KEY_asciicircum, IBUS_KEY_Z, 0x1E90, +IBUS_KEY_asciicircum, IBUS_KEY_underscore, 0x00AF, +IBUS_KEY_asciicircum, IBUS_KEY_a, 0x00E2, +IBUS_KEY_asciicircum, IBUS_KEY_c, 0x0109, +IBUS_KEY_asciicircum, IBUS_KEY_e, 0x00EA, +IBUS_KEY_asciicircum, IBUS_KEY_g, 0x011D, +IBUS_KEY_asciicircum, IBUS_KEY_h, 0x0125, +IBUS_KEY_asciicircum, IBUS_KEY_i, 0x00EE, +IBUS_KEY_asciicircum, IBUS_KEY_j, 0x0135, +IBUS_KEY_asciicircum, IBUS_KEY_o, 0x00F4, +IBUS_KEY_asciicircum, IBUS_KEY_s, 0x015D, +IBUS_KEY_asciicircum, IBUS_KEY_u, 0x00FB, +IBUS_KEY_asciicircum, IBUS_KEY_w, 0x0175, +IBUS_KEY_asciicircum, IBUS_KEY_y, 0x0177, +IBUS_KEY_asciicircum, IBUS_KEY_z, 0x1E91, +IBUS_KEY_asciicircum, 0x1EA0, 0x1EAC, +IBUS_KEY_asciicircum, 0x1EA1, 0x1EAD, +IBUS_KEY_asciicircum, 0x1EB8, 0x1EC6, +IBUS_KEY_asciicircum, 0x1EB9, 0x1EC7, +IBUS_KEY_asciicircum, 0x1ECC, 0x1ED8, +IBUS_KEY_asciicircum, 0x1ECD, 0x1ED9, +IBUS_KEY_asciicircum, 0x2212, 0x207B, +IBUS_KEY_asciicircum, 0x4E00, 0x3192, +IBUS_KEY_asciicircum, 0x4E01, 0x319C, +IBUS_KEY_asciicircum, 0x4E09, 0x3194, +IBUS_KEY_asciicircum, 0x4E0A, 0x3196, +IBUS_KEY_asciicircum, 0x4E0B, 0x3198, +IBUS_KEY_asciicircum, 0x4E19, 0x319B, +IBUS_KEY_asciicircum, 0x4E2D, 0x3197, +IBUS_KEY_asciicircum, 0x4E59, 0x319A, +IBUS_KEY_asciicircum, 0x4E8C, 0x3193, +IBUS_KEY_asciicircum, 0x4EBA, 0x319F, +IBUS_KEY_asciicircum, 0x56DB, 0x3195, +IBUS_KEY_asciicircum, 0x5730, 0x319E, +IBUS_KEY_asciicircum, 0x5929, 0x319D, +IBUS_KEY_asciicircum, 0x7532, 0x3199, +IBUS_KEY_asciicircum, IBUS_KEY_KP_Space, 0x00B2, +IBUS_KEY_asciicircum, IBUS_KEY_KP_Add, 0x207A, +IBUS_KEY_asciicircum, IBUS_KEY_KP_0, 0x2070, +IBUS_KEY_asciicircum, IBUS_KEY_KP_1, 0x00B9, +IBUS_KEY_asciicircum, IBUS_KEY_KP_2, 0x00B2, +IBUS_KEY_asciicircum, IBUS_KEY_KP_3, 0x00B3, +IBUS_KEY_asciicircum, IBUS_KEY_KP_4, 0x2074, +IBUS_KEY_asciicircum, IBUS_KEY_KP_5, 0x2075, +IBUS_KEY_asciicircum, IBUS_KEY_KP_6, 0x2076, +IBUS_KEY_asciicircum, IBUS_KEY_KP_7, 0x2077, +IBUS_KEY_asciicircum, IBUS_KEY_KP_8, 0x2078, +IBUS_KEY_asciicircum, IBUS_KEY_KP_9, 0x2079, +IBUS_KEY_asciicircum, IBUS_KEY_KP_Equal, 0x207C, +IBUS_KEY_underscore, IBUS_KEY_apostrophe, 0x2358, +IBUS_KEY_underscore, IBUS_KEY_parenleft, 0x208D, +IBUS_KEY_underscore, IBUS_KEY_parenright, 0x208E, +IBUS_KEY_underscore, IBUS_KEY_plus, 0x208A, +IBUS_KEY_underscore, IBUS_KEY_0, 0x2080, +IBUS_KEY_underscore, IBUS_KEY_1, 0x2081, +IBUS_KEY_underscore, IBUS_KEY_2, 0x2082, +IBUS_KEY_underscore, IBUS_KEY_3, 0x2083, +IBUS_KEY_underscore, IBUS_KEY_4, 0x2084, +IBUS_KEY_underscore, IBUS_KEY_5, 0x2085, +IBUS_KEY_underscore, IBUS_KEY_6, 0x2086, +IBUS_KEY_underscore, IBUS_KEY_7, 0x2087, +IBUS_KEY_underscore, IBUS_KEY_8, 0x2088, +IBUS_KEY_underscore, IBUS_KEY_9, 0x2089, +IBUS_KEY_underscore, IBUS_KEY_less, 0x2264, +IBUS_KEY_underscore, IBUS_KEY_equal, 0x208C, +IBUS_KEY_underscore, IBUS_KEY_greater, 0x2265, +IBUS_KEY_underscore, IBUS_KEY_A, 0x0100, +IBUS_KEY_underscore, IBUS_KEY_E, 0x0112, +IBUS_KEY_underscore, IBUS_KEY_G, 0x1E20, +IBUS_KEY_underscore, IBUS_KEY_I, 0x012A, +IBUS_KEY_underscore, IBUS_KEY_O, 0x014C, +IBUS_KEY_underscore, IBUS_KEY_U, 0x016A, +IBUS_KEY_underscore, IBUS_KEY_Y, 0x0232, +IBUS_KEY_underscore, IBUS_KEY_asciicircum, 0x00AF, +IBUS_KEY_underscore, IBUS_KEY_underscore, 0x00AF, +IBUS_KEY_underscore, IBUS_KEY_a, 0x0101, +IBUS_KEY_underscore, IBUS_KEY_e, 0x0113, +IBUS_KEY_underscore, IBUS_KEY_g, 0x1E21, +IBUS_KEY_underscore, IBUS_KEY_i, 0x012B, +IBUS_KEY_underscore, IBUS_KEY_o, 0x014D, +IBUS_KEY_underscore, IBUS_KEY_u, 0x016B, +IBUS_KEY_underscore, IBUS_KEY_y, 0x0233, +IBUS_KEY_underscore, IBUS_KEY_Adiaeresis, 0x01DE, +IBUS_KEY_underscore, IBUS_KEY_AE, 0x01E2, +IBUS_KEY_underscore, IBUS_KEY_Otilde, 0x022C, +IBUS_KEY_underscore, IBUS_KEY_Odiaeresis, 0x022A, +IBUS_KEY_underscore, IBUS_KEY_Udiaeresis, 0x01D5, +IBUS_KEY_underscore, IBUS_KEY_adiaeresis, 0x01DF, +IBUS_KEY_underscore, IBUS_KEY_ae, 0x01E3, +IBUS_KEY_underscore, IBUS_KEY_otilde, 0x022D, +IBUS_KEY_underscore, IBUS_KEY_odiaeresis, 0x022B, +IBUS_KEY_underscore, IBUS_KEY_udiaeresis, 0x01D6, +IBUS_KEY_underscore, 0x01EA, 0x01EC, +IBUS_KEY_underscore, 0x01EB, 0x01ED, +IBUS_KEY_underscore, 0x0226, 0x01E0, +IBUS_KEY_underscore, 0x0227, 0x01E1, +IBUS_KEY_underscore, 0x022E, 0x0230, +IBUS_KEY_underscore, 0x022F, 0x0231, +IBUS_KEY_underscore, IBUS_KEY_Cyrillic_i, 0x04E3, +IBUS_KEY_underscore, IBUS_KEY_Cyrillic_u, 0x04EF, +IBUS_KEY_underscore, IBUS_KEY_Cyrillic_I, 0x04E2, +IBUS_KEY_underscore, IBUS_KEY_Cyrillic_U, 0x04EE, +IBUS_KEY_underscore, IBUS_KEY_Greek_ALPHA, 0x1FB9, +IBUS_KEY_underscore, IBUS_KEY_Greek_IOTA, 0x1FD9, +IBUS_KEY_underscore, IBUS_KEY_Greek_UPSILON, 0x1FE9, +IBUS_KEY_underscore, IBUS_KEY_Greek_alpha, 0x1FB1, +IBUS_KEY_underscore, IBUS_KEY_Greek_iota, 0x1FD1, +IBUS_KEY_underscore, IBUS_KEY_Greek_upsilon, 0x1FE1, +IBUS_KEY_underscore, 0x1E36, 0x1E38, +IBUS_KEY_underscore, 0x1E37, 0x1E39, +IBUS_KEY_underscore, 0x1E5A, 0x1E5C, +IBUS_KEY_underscore, 0x1E5B, 0x1E5D, +IBUS_KEY_underscore, 0x2206, 0x2359, +IBUS_KEY_underscore, 0x220A, 0x2377, +IBUS_KEY_underscore, 0x2212, 0x208B, +IBUS_KEY_underscore, 0x2218, 0x235B, +IBUS_KEY_underscore, 0x2260, 0x2262, +IBUS_KEY_underscore, 0x2282, 0x2286, +IBUS_KEY_underscore, 0x2283, 0x2287, +IBUS_KEY_underscore, IBUS_KEY_downtack, 0x234A, +IBUS_KEY_underscore, 0x22C4, 0x235A, +IBUS_KEY_underscore, 0x2373, 0x2378, +IBUS_KEY_underscore, 0x2375, 0x2379, +IBUS_KEY_underscore, 0x237A, 0x2376, +IBUS_KEY_underscore, IBUS_KEY_emopencircle, 0x235C, +IBUS_KEY_underscore, IBUS_KEY_KP_Space, 0x2082, +IBUS_KEY_underscore, IBUS_KEY_KP_Add, 0x208A, +IBUS_KEY_underscore, IBUS_KEY_KP_0, 0x2080, +IBUS_KEY_underscore, IBUS_KEY_KP_1, 0x2081, +IBUS_KEY_underscore, IBUS_KEY_KP_2, 0x2082, +IBUS_KEY_underscore, IBUS_KEY_KP_3, 0x2083, +IBUS_KEY_underscore, IBUS_KEY_KP_4, 0x2084, +IBUS_KEY_underscore, IBUS_KEY_KP_5, 0x2085, +IBUS_KEY_underscore, IBUS_KEY_KP_6, 0x2086, +IBUS_KEY_underscore, IBUS_KEY_KP_7, 0x2087, +IBUS_KEY_underscore, IBUS_KEY_KP_8, 0x2088, +IBUS_KEY_underscore, IBUS_KEY_KP_9, 0x2089, +IBUS_KEY_underscore, IBUS_KEY_KP_Equal, 0x208C, +IBUS_KEY_grave, IBUS_KEY_space, 0x0060, +IBUS_KEY_grave, IBUS_KEY_A, 0x00C0, +IBUS_KEY_grave, IBUS_KEY_E, 0x00C8, +IBUS_KEY_grave, IBUS_KEY_I, 0x00CC, +IBUS_KEY_grave, IBUS_KEY_N, 0x01F8, +IBUS_KEY_grave, IBUS_KEY_O, 0x00D2, +IBUS_KEY_grave, IBUS_KEY_U, 0x00D9, +IBUS_KEY_grave, IBUS_KEY_W, 0x1E80, +IBUS_KEY_grave, IBUS_KEY_Y, 0x1EF2, +IBUS_KEY_grave, IBUS_KEY_a, 0x00E0, +IBUS_KEY_grave, IBUS_KEY_e, 0x00E8, +IBUS_KEY_grave, IBUS_KEY_i, 0x00EC, +IBUS_KEY_grave, IBUS_KEY_n, 0x01F9, +IBUS_KEY_grave, IBUS_KEY_o, 0x00F2, +IBUS_KEY_grave, IBUS_KEY_u, 0x00F9, +IBUS_KEY_grave, IBUS_KEY_w, 0x1E81, +IBUS_KEY_grave, IBUS_KEY_y, 0x1EF3, +IBUS_KEY_grave, IBUS_KEY_Acircumflex, 0x1EA6, +IBUS_KEY_grave, IBUS_KEY_Ecircumflex, 0x1EC0, +IBUS_KEY_grave, IBUS_KEY_Ocircumflex, 0x1ED2, +IBUS_KEY_grave, IBUS_KEY_Udiaeresis, 0x01DB, +IBUS_KEY_grave, IBUS_KEY_acircumflex, 0x1EA7, +IBUS_KEY_grave, IBUS_KEY_ecircumflex, 0x1EC1, +IBUS_KEY_grave, IBUS_KEY_ocircumflex, 0x1ED3, +IBUS_KEY_grave, IBUS_KEY_udiaeresis, 0x01DC, +IBUS_KEY_grave, IBUS_KEY_Abreve, 0x1EB0, +IBUS_KEY_grave, IBUS_KEY_abreve, 0x1EB1, +IBUS_KEY_grave, IBUS_KEY_Emacron, 0x1E14, +IBUS_KEY_grave, IBUS_KEY_emacron, 0x1E15, +IBUS_KEY_grave, IBUS_KEY_Omacron, 0x1E50, +IBUS_KEY_grave, IBUS_KEY_omacron, 0x1E51, +IBUS_KEY_grave, IBUS_KEY_Cyrillic_ie, 0x0450, +IBUS_KEY_grave, IBUS_KEY_Cyrillic_i, 0x045D, +IBUS_KEY_grave, IBUS_KEY_Cyrillic_IE, 0x0400, +IBUS_KEY_grave, IBUS_KEY_Cyrillic_I, 0x040D, +IBUS_KEY_grave, IBUS_KEY_Greek_iotadieresis, 0x1FD2, +IBUS_KEY_grave, IBUS_KEY_Greek_upsilondieresis, 0x1FE2, +IBUS_KEY_grave, IBUS_KEY_Greek_ALPHA, 0x1FBA, +IBUS_KEY_grave, IBUS_KEY_Greek_EPSILON, 0x1FC8, +IBUS_KEY_grave, IBUS_KEY_Greek_ETA, 0x1FCA, +IBUS_KEY_grave, IBUS_KEY_Greek_IOTA, 0x1FDA, +IBUS_KEY_grave, IBUS_KEY_Greek_OMICRON, 0x1FF8, +IBUS_KEY_grave, IBUS_KEY_Greek_UPSILON, 0x1FEA, +IBUS_KEY_grave, IBUS_KEY_Greek_OMEGA, 0x1FFA, +IBUS_KEY_grave, IBUS_KEY_Greek_alpha, 0x1F70, +IBUS_KEY_grave, IBUS_KEY_Greek_epsilon, 0x1F72, +IBUS_KEY_grave, IBUS_KEY_Greek_eta, 0x1F74, +IBUS_KEY_grave, IBUS_KEY_Greek_iota, 0x1F76, +IBUS_KEY_grave, IBUS_KEY_Greek_omicron, 0x1F78, +IBUS_KEY_grave, IBUS_KEY_Greek_upsilon, 0x1F7A, +IBUS_KEY_grave, IBUS_KEY_Greek_omega, 0x1F7C, +IBUS_KEY_grave, 0x1F00, 0x1F02, +IBUS_KEY_grave, 0x1F01, 0x1F03, +IBUS_KEY_grave, 0x1F08, 0x1F0A, +IBUS_KEY_grave, 0x1F09, 0x1F0B, +IBUS_KEY_grave, 0x1F10, 0x1F12, +IBUS_KEY_grave, 0x1F11, 0x1F13, +IBUS_KEY_grave, 0x1F18, 0x1F1A, +IBUS_KEY_grave, 0x1F19, 0x1F1B, +IBUS_KEY_grave, 0x1F20, 0x1F22, +IBUS_KEY_grave, 0x1F21, 0x1F23, +IBUS_KEY_grave, 0x1F28, 0x1F2A, +IBUS_KEY_grave, 0x1F29, 0x1F2B, +IBUS_KEY_grave, 0x1F30, 0x1F32, +IBUS_KEY_grave, 0x1F31, 0x1F33, +IBUS_KEY_grave, 0x1F38, 0x1F3A, +IBUS_KEY_grave, 0x1F39, 0x1F3B, +IBUS_KEY_grave, 0x1F40, 0x1F42, +IBUS_KEY_grave, 0x1F41, 0x1F43, +IBUS_KEY_grave, 0x1F48, 0x1F4A, +IBUS_KEY_grave, 0x1F49, 0x1F4B, +IBUS_KEY_grave, 0x1F50, 0x1F52, +IBUS_KEY_grave, 0x1F51, 0x1F53, +IBUS_KEY_grave, 0x1F59, 0x1F5B, +IBUS_KEY_grave, 0x1F60, 0x1F62, +IBUS_KEY_grave, 0x1F61, 0x1F63, +IBUS_KEY_grave, 0x1F68, 0x1F6A, +IBUS_KEY_grave, 0x1F69, 0x1F6B, +IBUS_KEY_a, IBUS_KEY_quotedbl, 0x00E4, +IBUS_KEY_a, IBUS_KEY_apostrophe, 0x00E1, +IBUS_KEY_a, IBUS_KEY_parenleft, 0x0103, +IBUS_KEY_a, IBUS_KEY_asterisk, 0x00E5, +IBUS_KEY_a, IBUS_KEY_comma, 0x0105, +IBUS_KEY_a, IBUS_KEY_minus, 0x0101, +IBUS_KEY_a, IBUS_KEY_semicolon, 0x0105, +IBUS_KEY_a, IBUS_KEY_greater, 0x00E2, +IBUS_KEY_a, IBUS_KEY_asciicircum, 0x00E2, +IBUS_KEY_a, IBUS_KEY_underscore, 0x0101, +IBUS_KEY_a, IBUS_KEY_grave, 0x00E0, +IBUS_KEY_a, IBUS_KEY_a, 0x00E5, +IBUS_KEY_a, IBUS_KEY_e, 0x00E6, +IBUS_KEY_a, IBUS_KEY_asciitilde, 0x00E3, +IBUS_KEY_a, IBUS_KEY_diaeresis, 0x00E4, +IBUS_KEY_a, IBUS_KEY_acute, 0x00E1, +IBUS_KEY_b, IBUS_KEY_period, 0x1E03, +IBUS_KEY_b, IBUS_KEY_A, 0x0102, +IBUS_KEY_b, IBUS_KEY_E, 0x0114, +IBUS_KEY_b, IBUS_KEY_G, 0x011E, +IBUS_KEY_b, IBUS_KEY_I, 0x012C, +IBUS_KEY_b, IBUS_KEY_O, 0x014E, +IBUS_KEY_b, IBUS_KEY_U, 0x016C, +IBUS_KEY_b, IBUS_KEY_a, 0x0103, +IBUS_KEY_b, IBUS_KEY_e, 0x0115, +IBUS_KEY_b, IBUS_KEY_g, 0x011F, +IBUS_KEY_b, IBUS_KEY_i, 0x012D, +IBUS_KEY_b, IBUS_KEY_o, 0x014F, +IBUS_KEY_b, IBUS_KEY_u, 0x016D, +IBUS_KEY_b, 0x0228, 0x1E1C, +IBUS_KEY_b, 0x0229, 0x1E1D, +IBUS_KEY_b, IBUS_KEY_Cyrillic_a, 0x04D1, +IBUS_KEY_b, IBUS_KEY_Cyrillic_ie, 0x04D7, +IBUS_KEY_b, IBUS_KEY_Cyrillic_i, 0x0439, +IBUS_KEY_b, IBUS_KEY_Cyrillic_u, 0x045E, +IBUS_KEY_b, IBUS_KEY_Cyrillic_zhe, 0x04C2, +IBUS_KEY_b, IBUS_KEY_Cyrillic_A, 0x04D0, +IBUS_KEY_b, IBUS_KEY_Cyrillic_IE, 0x04D6, +IBUS_KEY_b, IBUS_KEY_Cyrillic_I, 0x0419, +IBUS_KEY_b, IBUS_KEY_Cyrillic_U, 0x040E, +IBUS_KEY_b, IBUS_KEY_Cyrillic_ZHE, 0x04C1, +IBUS_KEY_b, IBUS_KEY_Greek_ALPHA, 0x1FB8, +IBUS_KEY_b, IBUS_KEY_Greek_IOTA, 0x1FD8, +IBUS_KEY_b, IBUS_KEY_Greek_UPSILON, 0x1FE8, +IBUS_KEY_b, IBUS_KEY_Greek_alpha, 0x1FB0, +IBUS_KEY_b, IBUS_KEY_Greek_iota, 0x1FD0, +IBUS_KEY_b, IBUS_KEY_Greek_upsilon, 0x1FE0, +IBUS_KEY_b, 0x1EA0, 0x1EB6, +IBUS_KEY_b, 0x1EA1, 0x1EB7, +IBUS_KEY_c, IBUS_KEY_apostrophe, 0x0107, +IBUS_KEY_c, IBUS_KEY_comma, 0x00E7, +IBUS_KEY_c, IBUS_KEY_period, 0x010B, +IBUS_KEY_c, IBUS_KEY_slash, 0x00A2, +IBUS_KEY_c, IBUS_KEY_0, 0x00A9, +IBUS_KEY_c, IBUS_KEY_less, 0x010D, +IBUS_KEY_c, IBUS_KEY_equal, 0x20AC, +IBUS_KEY_c, IBUS_KEY_A, 0x01CD, +IBUS_KEY_c, IBUS_KEY_C, 0x010C, +IBUS_KEY_c, IBUS_KEY_D, 0x010E, +IBUS_KEY_c, IBUS_KEY_E, 0x011A, +IBUS_KEY_c, IBUS_KEY_G, 0x01E6, +IBUS_KEY_c, IBUS_KEY_H, 0x021E, +IBUS_KEY_c, IBUS_KEY_I, 0x01CF, +IBUS_KEY_c, IBUS_KEY_K, 0x01E8, +IBUS_KEY_c, IBUS_KEY_L, 0x013D, +IBUS_KEY_c, IBUS_KEY_N, 0x0147, +IBUS_KEY_c, IBUS_KEY_O, 0x01D1, +IBUS_KEY_c, IBUS_KEY_R, 0x0158, +IBUS_KEY_c, IBUS_KEY_S, 0x0160, +IBUS_KEY_c, IBUS_KEY_T, 0x0164, +IBUS_KEY_c, IBUS_KEY_U, 0x01D3, +IBUS_KEY_c, IBUS_KEY_Z, 0x017D, +IBUS_KEY_c, IBUS_KEY_a, 0x01CE, +IBUS_KEY_c, IBUS_KEY_c, 0x010D, +IBUS_KEY_c, IBUS_KEY_d, 0x010F, +IBUS_KEY_c, IBUS_KEY_e, 0x011B, +IBUS_KEY_c, IBUS_KEY_g, 0x01E7, +IBUS_KEY_c, IBUS_KEY_h, 0x021F, +IBUS_KEY_c, IBUS_KEY_i, 0x01D0, +IBUS_KEY_c, IBUS_KEY_j, 0x01F0, +IBUS_KEY_c, IBUS_KEY_k, 0x01E9, +IBUS_KEY_c, IBUS_KEY_l, 0x013E, +IBUS_KEY_c, IBUS_KEY_n, 0x0148, +IBUS_KEY_c, IBUS_KEY_o, 0x01D2, +IBUS_KEY_c, IBUS_KEY_r, 0x0159, +IBUS_KEY_c, IBUS_KEY_s, 0x0161, +IBUS_KEY_c, IBUS_KEY_t, 0x0165, +IBUS_KEY_c, IBUS_KEY_u, 0x01D4, +IBUS_KEY_c, IBUS_KEY_z, 0x017E, +IBUS_KEY_c, IBUS_KEY_bar, 0x00A2, +IBUS_KEY_c, IBUS_KEY_Udiaeresis, 0x01D9, +IBUS_KEY_c, IBUS_KEY_udiaeresis, 0x01DA, +IBUS_KEY_d, IBUS_KEY_comma, 0x1E11, +IBUS_KEY_d, IBUS_KEY_minus, 0x0111, +IBUS_KEY_d, IBUS_KEY_period, 0x1E0B, +IBUS_KEY_d, IBUS_KEY_less, 0x010F, +IBUS_KEY_d, IBUS_KEY_equal, 0x20AB, +IBUS_KEY_d, IBUS_KEY_h, 0x00F0, +IBUS_KEY_d, IBUS_KEY_i, 0x2300, +IBUS_KEY_e, IBUS_KEY_quotedbl, 0x00EB, +IBUS_KEY_e, IBUS_KEY_apostrophe, 0x00E9, +IBUS_KEY_e, IBUS_KEY_comma, 0x0119, +IBUS_KEY_e, IBUS_KEY_minus, 0x0113, +IBUS_KEY_e, IBUS_KEY_period, 0x0117, +IBUS_KEY_e, IBUS_KEY_semicolon, 0x0119, +IBUS_KEY_e, IBUS_KEY_less, 0x011B, +IBUS_KEY_e, IBUS_KEY_equal, 0x20AC, +IBUS_KEY_e, IBUS_KEY_greater, 0x00EA, +IBUS_KEY_e, IBUS_KEY_asciicircum, 0x00EA, +IBUS_KEY_e, IBUS_KEY_underscore, 0x0113, +IBUS_KEY_e, IBUS_KEY_grave, 0x00E8, +IBUS_KEY_e, IBUS_KEY_e, 0x0259, +IBUS_KEY_e, IBUS_KEY_diaeresis, 0x00EB, +IBUS_KEY_e, IBUS_KEY_acute, 0x00E9, +IBUS_KEY_f, IBUS_KEY_period, 0x1E1F, +IBUS_KEY_f, IBUS_KEY_S, 0x017F, +IBUS_KEY_f, IBUS_KEY_f, 0xFB00, +IBUS_KEY_f, IBUS_KEY_i, 0xFB01, +IBUS_KEY_f, IBUS_KEY_l, 0xFB02, +IBUS_KEY_f, IBUS_KEY_s, 0x017F, +IBUS_KEY_g, IBUS_KEY_parenleft, 0x011F, +IBUS_KEY_g, IBUS_KEY_comma, 0x0123, +IBUS_KEY_g, IBUS_KEY_period, 0x0121, +IBUS_KEY_g, IBUS_KEY_U, 0x011F, +IBUS_KEY_g, IBUS_KEY_breve, 0x011F, +IBUS_KEY_h, IBUS_KEY_comma, 0x1E29, +IBUS_KEY_i, IBUS_KEY_quotedbl, 0x00EF, +IBUS_KEY_i, IBUS_KEY_apostrophe, 0x00ED, +IBUS_KEY_i, IBUS_KEY_comma, 0x012F, +IBUS_KEY_i, IBUS_KEY_minus, 0x012B, +IBUS_KEY_i, IBUS_KEY_period, 0x0131, +IBUS_KEY_i, IBUS_KEY_semicolon, 0x012F, +IBUS_KEY_i, IBUS_KEY_greater, 0x00EE, +IBUS_KEY_i, IBUS_KEY_asciicircum, 0x00EE, +IBUS_KEY_i, IBUS_KEY_underscore, 0x012B, +IBUS_KEY_i, IBUS_KEY_grave, 0x00EC, +IBUS_KEY_i, IBUS_KEY_j, 0x0133, +IBUS_KEY_i, IBUS_KEY_asciitilde, 0x0129, +IBUS_KEY_i, IBUS_KEY_diaeresis, 0x00EF, +IBUS_KEY_i, IBUS_KEY_acute, 0x00ED, +IBUS_KEY_k, IBUS_KEY_comma, 0x0137, +IBUS_KEY_k, IBUS_KEY_k, 0x0138, +IBUS_KEY_l, IBUS_KEY_apostrophe, 0x013A, +IBUS_KEY_l, IBUS_KEY_comma, 0x013C, +IBUS_KEY_l, IBUS_KEY_minus, 0x00A3, +IBUS_KEY_l, IBUS_KEY_slash, 0x0142, +IBUS_KEY_l, IBUS_KEY_less, 0x013E, +IBUS_KEY_l, IBUS_KEY_equal, 0x00A3, +IBUS_KEY_l, IBUS_KEY_v, 0x007C, +IBUS_KEY_m, IBUS_KEY_period, 0x1E41, +IBUS_KEY_m, IBUS_KEY_slash, 0x20A5, +IBUS_KEY_m, IBUS_KEY_u, 0x00B5, +IBUS_KEY_n, IBUS_KEY_apostrophe, 0x0144, +IBUS_KEY_n, IBUS_KEY_comma, 0x0146, +IBUS_KEY_n, IBUS_KEY_minus, 0x00F1, +IBUS_KEY_n, IBUS_KEY_less, 0x0148, +IBUS_KEY_n, IBUS_KEY_g, 0x014B, +IBUS_KEY_n, IBUS_KEY_asciitilde, 0x00F1, +IBUS_KEY_o, IBUS_KEY_quotedbl, 0x00F6, +IBUS_KEY_o, IBUS_KEY_apostrophe, 0x00F3, +IBUS_KEY_o, IBUS_KEY_comma, 0x01EB, +IBUS_KEY_o, IBUS_KEY_minus, 0x014D, +IBUS_KEY_o, IBUS_KEY_slash, 0x00F8, +IBUS_KEY_o, IBUS_KEY_semicolon, 0x01EB, +IBUS_KEY_o, IBUS_KEY_greater, 0x00F4, +IBUS_KEY_o, IBUS_KEY_A, 0x00C5, +IBUS_KEY_o, IBUS_KEY_C, 0x00A9, +IBUS_KEY_o, IBUS_KEY_R, 0x00AE, +IBUS_KEY_o, IBUS_KEY_U, 0x016E, +IBUS_KEY_o, IBUS_KEY_X, 0x00A4, +IBUS_KEY_o, IBUS_KEY_asciicircum, 0x00F4, +IBUS_KEY_o, IBUS_KEY_underscore, 0x014D, +IBUS_KEY_o, IBUS_KEY_grave, 0x00F2, +IBUS_KEY_o, IBUS_KEY_a, 0x00E5, +IBUS_KEY_o, IBUS_KEY_c, 0x00A9, +IBUS_KEY_o, IBUS_KEY_e, 0x0153, +IBUS_KEY_o, IBUS_KEY_o, 0x00B0, +IBUS_KEY_o, IBUS_KEY_r, 0x00AE, +IBUS_KEY_o, IBUS_KEY_s, 0x00A7, +IBUS_KEY_o, IBUS_KEY_u, 0x016F, +IBUS_KEY_o, IBUS_KEY_w, 0x1E98, +IBUS_KEY_o, IBUS_KEY_x, 0x00A4, +IBUS_KEY_o, IBUS_KEY_y, 0x1E99, +IBUS_KEY_o, IBUS_KEY_asciitilde, 0x00F5, +IBUS_KEY_o, IBUS_KEY_diaeresis, 0x00F6, +IBUS_KEY_o, IBUS_KEY_acute, 0x00F3, +IBUS_KEY_p, IBUS_KEY_exclam, 0x00B6, +IBUS_KEY_p, IBUS_KEY_period, 0x1E57, +IBUS_KEY_r, IBUS_KEY_apostrophe, 0x0155, +IBUS_KEY_r, IBUS_KEY_comma, 0x0157, +IBUS_KEY_r, IBUS_KEY_less, 0x0159, +IBUS_KEY_r, IBUS_KEY_equal, 0x20B9, +IBUS_KEY_s, IBUS_KEY_exclam, 0x00A7, +IBUS_KEY_s, IBUS_KEY_apostrophe, 0x015B, +IBUS_KEY_s, IBUS_KEY_comma, 0x015F, +IBUS_KEY_s, IBUS_KEY_period, 0x1E61, +IBUS_KEY_s, IBUS_KEY_0, 0x00A7, +IBUS_KEY_s, IBUS_KEY_1, 0x00B9, +IBUS_KEY_s, IBUS_KEY_2, 0x00B2, +IBUS_KEY_s, IBUS_KEY_3, 0x00B3, +IBUS_KEY_s, IBUS_KEY_semicolon, 0x0219, +IBUS_KEY_s, IBUS_KEY_less, 0x0161, +IBUS_KEY_s, IBUS_KEY_M, 0x2120, +IBUS_KEY_s, IBUS_KEY_m, 0x2120, +IBUS_KEY_s, IBUS_KEY_o, 0x00A7, +IBUS_KEY_s, IBUS_KEY_s, 0x00DF, +IBUS_KEY_s, IBUS_KEY_cedilla, 0x015F, +IBUS_KEY_t, IBUS_KEY_comma, 0x0163, +IBUS_KEY_t, IBUS_KEY_minus, 0x0167, +IBUS_KEY_t, IBUS_KEY_period, 0x1E6B, +IBUS_KEY_t, IBUS_KEY_slash, 0x0167, +IBUS_KEY_t, IBUS_KEY_semicolon, 0x021B, +IBUS_KEY_t, IBUS_KEY_less, 0x0165, +IBUS_KEY_t, IBUS_KEY_M, 0x2122, +IBUS_KEY_t, IBUS_KEY_h, 0x00FE, +IBUS_KEY_t, IBUS_KEY_m, 0x2122, +IBUS_KEY_u, IBUS_KEY_quotedbl, 0x00FC, +IBUS_KEY_u, IBUS_KEY_apostrophe, 0x00FA, +IBUS_KEY_u, IBUS_KEY_asterisk, 0x016F, +IBUS_KEY_u, IBUS_KEY_comma, 0x0173, +IBUS_KEY_u, IBUS_KEY_minus, 0x016B, +IBUS_KEY_u, IBUS_KEY_slash, 0x00B5, +IBUS_KEY_u, IBUS_KEY_semicolon, 0x0173, +IBUS_KEY_u, IBUS_KEY_greater, 0x00FB, +IBUS_KEY_u, IBUS_KEY_A, 0x0102, +IBUS_KEY_u, IBUS_KEY_U, 0x016C, +IBUS_KEY_u, IBUS_KEY_asciicircum, 0x00FB, +IBUS_KEY_u, IBUS_KEY_underscore, 0x016B, +IBUS_KEY_u, IBUS_KEY_grave, 0x00F9, +IBUS_KEY_u, IBUS_KEY_a, 0x0103, +IBUS_KEY_u, IBUS_KEY_u, 0x016D, +IBUS_KEY_u, IBUS_KEY_asciitilde, 0x0169, +IBUS_KEY_u, IBUS_KEY_diaeresis, 0x00FC, +IBUS_KEY_u, IBUS_KEY_acute, 0x00FA, +IBUS_KEY_v, IBUS_KEY_slash, 0x221A, +IBUS_KEY_v, IBUS_KEY_Z, 0x017D, +IBUS_KEY_v, IBUS_KEY_l, 0x007C, +IBUS_KEY_v, IBUS_KEY_z, 0x017E, +IBUS_KEY_w, IBUS_KEY_asciicircum, 0x0175, +IBUS_KEY_x, IBUS_KEY_0, 0x00A4, +IBUS_KEY_x, IBUS_KEY_O, 0x00A4, +IBUS_KEY_x, IBUS_KEY_o, 0x00A4, +IBUS_KEY_x, IBUS_KEY_x, 0x00D7, +IBUS_KEY_y, IBUS_KEY_quotedbl, 0x00FF, +IBUS_KEY_y, IBUS_KEY_apostrophe, 0x00FD, +IBUS_KEY_y, IBUS_KEY_minus, 0x00A5, +IBUS_KEY_y, IBUS_KEY_equal, 0x00A5, +IBUS_KEY_y, IBUS_KEY_asciicircum, 0x0177, +IBUS_KEY_y, IBUS_KEY_diaeresis, 0x00FF, +IBUS_KEY_y, IBUS_KEY_acute, 0x00FD, +IBUS_KEY_z, IBUS_KEY_apostrophe, 0x017A, +IBUS_KEY_z, IBUS_KEY_period, 0x017C, +IBUS_KEY_z, IBUS_KEY_less, 0x017E, +IBUS_KEY_braceleft, IBUS_KEY_braceright, 0x2205, +IBUS_KEY_bar, IBUS_KEY_C, 0x00A2, +IBUS_KEY_bar, IBUS_KEY_c, 0x00A2, +IBUS_KEY_bar, IBUS_KEY_asciitilde, 0x236D, +IBUS_KEY_bar, 0x2190, 0x2345, +IBUS_KEY_bar, 0x2192, 0x2346, +IBUS_KEY_bar, 0x2206, 0x234B, +IBUS_KEY_bar, 0x2207, 0x2352, +IBUS_KEY_bar, IBUS_KEY_union, 0x2366, +IBUS_KEY_bar, 0x2282, 0x2367, +IBUS_KEY_bar, IBUS_KEY_emopencircle, 0x233D, +IBUS_KEY_asciitilde, IBUS_KEY_space, 0x007E, +IBUS_KEY_asciitilde, IBUS_KEY_0, 0x236C, +IBUS_KEY_asciitilde, IBUS_KEY_A, 0x00C3, +IBUS_KEY_asciitilde, IBUS_KEY_E, 0x1EBC, +IBUS_KEY_asciitilde, IBUS_KEY_I, 0x0128, +IBUS_KEY_asciitilde, IBUS_KEY_N, 0x00D1, +IBUS_KEY_asciitilde, IBUS_KEY_O, 0x00D5, +IBUS_KEY_asciitilde, IBUS_KEY_U, 0x0168, +IBUS_KEY_asciitilde, IBUS_KEY_V, 0x1E7C, +IBUS_KEY_asciitilde, IBUS_KEY_Y, 0x1EF8, +IBUS_KEY_asciitilde, IBUS_KEY_a, 0x00E3, +IBUS_KEY_asciitilde, IBUS_KEY_e, 0x1EBD, +IBUS_KEY_asciitilde, IBUS_KEY_i, 0x0129, +IBUS_KEY_asciitilde, IBUS_KEY_n, 0x00F1, +IBUS_KEY_asciitilde, IBUS_KEY_o, 0x00F5, +IBUS_KEY_asciitilde, IBUS_KEY_u, 0x0169, +IBUS_KEY_asciitilde, IBUS_KEY_v, 0x1E7D, +IBUS_KEY_asciitilde, IBUS_KEY_y, 0x1EF9, +IBUS_KEY_asciitilde, IBUS_KEY_bar, 0x236D, +IBUS_KEY_asciitilde, IBUS_KEY_diaeresis, 0x2368, +IBUS_KEY_asciitilde, IBUS_KEY_Acircumflex, 0x1EAA, +IBUS_KEY_asciitilde, IBUS_KEY_Ecircumflex, 0x1EC4, +IBUS_KEY_asciitilde, IBUS_KEY_Ocircumflex, 0x1ED6, +IBUS_KEY_asciitilde, IBUS_KEY_acircumflex, 0x1EAB, +IBUS_KEY_asciitilde, IBUS_KEY_ecircumflex, 0x1EC5, +IBUS_KEY_asciitilde, IBUS_KEY_ocircumflex, 0x1ED7, +IBUS_KEY_asciitilde, IBUS_KEY_Abreve, 0x1EB4, +IBUS_KEY_asciitilde, IBUS_KEY_abreve, 0x1EB5, +IBUS_KEY_asciitilde, IBUS_KEY_Greek_iotadieresis, 0x1FD7, +IBUS_KEY_asciitilde, IBUS_KEY_Greek_upsilondieresis, 0x1FE7, +IBUS_KEY_asciitilde, IBUS_KEY_Greek_alpha, 0x1FB6, +IBUS_KEY_asciitilde, IBUS_KEY_Greek_eta, 0x1FC6, +IBUS_KEY_asciitilde, IBUS_KEY_Greek_iota, 0x1FD6, +IBUS_KEY_asciitilde, IBUS_KEY_Greek_upsilon, 0x1FE6, +IBUS_KEY_asciitilde, IBUS_KEY_Greek_omega, 0x1FF6, +IBUS_KEY_asciitilde, 0x1F00, 0x1F06, +IBUS_KEY_asciitilde, 0x1F01, 0x1F07, +IBUS_KEY_asciitilde, 0x1F08, 0x1F0E, +IBUS_KEY_asciitilde, 0x1F09, 0x1F0F, +IBUS_KEY_asciitilde, 0x1F20, 0x1F26, +IBUS_KEY_asciitilde, 0x1F21, 0x1F27, +IBUS_KEY_asciitilde, 0x1F28, 0x1F2E, +IBUS_KEY_asciitilde, 0x1F29, 0x1F2F, +IBUS_KEY_asciitilde, 0x1F30, 0x1F36, +IBUS_KEY_asciitilde, 0x1F31, 0x1F37, +IBUS_KEY_asciitilde, 0x1F38, 0x1F3E, +IBUS_KEY_asciitilde, 0x1F39, 0x1F3F, +IBUS_KEY_asciitilde, 0x1F50, 0x1F56, +IBUS_KEY_asciitilde, 0x1F51, 0x1F57, +IBUS_KEY_asciitilde, 0x1F59, 0x1F5F, +IBUS_KEY_asciitilde, 0x1F60, 0x1F66, +IBUS_KEY_asciitilde, 0x1F61, 0x1F67, +IBUS_KEY_asciitilde, 0x1F68, 0x1F6E, +IBUS_KEY_asciitilde, 0x1F69, 0x1F6F, +IBUS_KEY_asciitilde, 0x2207, 0x236B, +IBUS_KEY_asciitilde, 0x2227, 0x2372, +IBUS_KEY_asciitilde, 0x2228, 0x2371, +IBUS_KEY_diaeresis, IBUS_KEY_apostrophe, 0x0385, +IBUS_KEY_diaeresis, IBUS_KEY_asterisk, 0x2363, +IBUS_KEY_diaeresis, IBUS_KEY_greater, 0x2369, +IBUS_KEY_diaeresis, IBUS_KEY_A, 0x00C4, +IBUS_KEY_diaeresis, IBUS_KEY_E, 0x00CB, +IBUS_KEY_diaeresis, IBUS_KEY_I, 0x00CF, +IBUS_KEY_diaeresis, IBUS_KEY_O, 0x00D6, +IBUS_KEY_diaeresis, IBUS_KEY_U, 0x00DC, +IBUS_KEY_diaeresis, IBUS_KEY_Y, 0x0178, +IBUS_KEY_diaeresis, IBUS_KEY_grave, 0x1FED, +IBUS_KEY_diaeresis, IBUS_KEY_a, 0x00E4, +IBUS_KEY_diaeresis, IBUS_KEY_e, 0x00EB, +IBUS_KEY_diaeresis, IBUS_KEY_i, 0x00EF, +IBUS_KEY_diaeresis, IBUS_KEY_o, 0x00F6, +IBUS_KEY_diaeresis, IBUS_KEY_u, 0x00FC, +IBUS_KEY_diaeresis, IBUS_KEY_y, 0x00FF, +IBUS_KEY_diaeresis, IBUS_KEY_asciitilde, 0x1FC1, +IBUS_KEY_diaeresis, IBUS_KEY_acute, 0x0385, +IBUS_KEY_diaeresis, 0x2207, 0x2362, +IBUS_KEY_diaeresis, 0x2218, 0x2364, +IBUS_KEY_diaeresis, IBUS_KEY_uptack, 0x2361, +IBUS_KEY_diaeresis, IBUS_KEY_emopencircle, 0x2365, +IBUS_KEY_diaeresis, IBUS_KEY_dead_grave, 0x1FED, +IBUS_KEY_diaeresis, IBUS_KEY_dead_acute, 0x0385, +IBUS_KEY_diaeresis, IBUS_KEY_dead_tilde, 0x1FC1, +IBUS_KEY_macron, IBUS_KEY_A, 0x0100, +IBUS_KEY_macron, IBUS_KEY_E, 0x0112, +IBUS_KEY_macron, IBUS_KEY_G, 0x1E20, +IBUS_KEY_macron, IBUS_KEY_I, 0x012A, +IBUS_KEY_macron, IBUS_KEY_O, 0x014C, +IBUS_KEY_macron, IBUS_KEY_U, 0x016A, +IBUS_KEY_macron, IBUS_KEY_Y, 0x0232, +IBUS_KEY_macron, IBUS_KEY_a, 0x0101, +IBUS_KEY_macron, IBUS_KEY_e, 0x0113, +IBUS_KEY_macron, IBUS_KEY_g, 0x1E21, +IBUS_KEY_macron, IBUS_KEY_i, 0x012B, +IBUS_KEY_macron, IBUS_KEY_o, 0x014D, +IBUS_KEY_macron, IBUS_KEY_u, 0x016B, +IBUS_KEY_macron, IBUS_KEY_y, 0x0233, +IBUS_KEY_macron, IBUS_KEY_Adiaeresis, 0x01DE, +IBUS_KEY_macron, IBUS_KEY_AE, 0x01E2, +IBUS_KEY_macron, IBUS_KEY_Otilde, 0x022C, +IBUS_KEY_macron, IBUS_KEY_Odiaeresis, 0x022A, +IBUS_KEY_macron, IBUS_KEY_Udiaeresis, 0x01D5, +IBUS_KEY_macron, IBUS_KEY_adiaeresis, 0x01DF, +IBUS_KEY_macron, IBUS_KEY_ae, 0x01E3, +IBUS_KEY_macron, IBUS_KEY_otilde, 0x022D, +IBUS_KEY_macron, IBUS_KEY_odiaeresis, 0x022B, +IBUS_KEY_macron, IBUS_KEY_udiaeresis, 0x01D6, +IBUS_KEY_macron, 0x01EA, 0x01EC, +IBUS_KEY_macron, 0x01EB, 0x01ED, +IBUS_KEY_macron, 0x0226, 0x01E0, +IBUS_KEY_macron, 0x0227, 0x01E1, +IBUS_KEY_macron, 0x022E, 0x0230, +IBUS_KEY_macron, 0x022F, 0x0231, +IBUS_KEY_macron, IBUS_KEY_Cyrillic_i, 0x04E3, +IBUS_KEY_macron, IBUS_KEY_Cyrillic_u, 0x04EF, +IBUS_KEY_macron, IBUS_KEY_Cyrillic_I, 0x04E2, +IBUS_KEY_macron, IBUS_KEY_Cyrillic_U, 0x04EE, +IBUS_KEY_macron, IBUS_KEY_Greek_ALPHA, 0x1FB9, +IBUS_KEY_macron, IBUS_KEY_Greek_IOTA, 0x1FD9, +IBUS_KEY_macron, IBUS_KEY_Greek_UPSILON, 0x1FE9, +IBUS_KEY_macron, IBUS_KEY_Greek_alpha, 0x1FB1, +IBUS_KEY_macron, IBUS_KEY_Greek_iota, 0x1FD1, +IBUS_KEY_macron, IBUS_KEY_Greek_upsilon, 0x1FE1, +IBUS_KEY_macron, 0x1E36, 0x1E38, +IBUS_KEY_macron, 0x1E37, 0x1E39, +IBUS_KEY_macron, 0x1E5A, 0x1E5C, +IBUS_KEY_macron, 0x1E5B, 0x1E5D, +IBUS_KEY_macron, IBUS_KEY_uptack, 0x2351, +IBUS_KEY_acute, IBUS_KEY_A, 0x00C1, +IBUS_KEY_acute, IBUS_KEY_C, 0x0106, +IBUS_KEY_acute, IBUS_KEY_E, 0x00C9, +IBUS_KEY_acute, IBUS_KEY_G, 0x01F4, +IBUS_KEY_acute, IBUS_KEY_I, 0x00CD, +IBUS_KEY_acute, IBUS_KEY_K, 0x1E30, +IBUS_KEY_acute, IBUS_KEY_L, 0x0139, +IBUS_KEY_acute, IBUS_KEY_M, 0x1E3E, +IBUS_KEY_acute, IBUS_KEY_N, 0x0143, +IBUS_KEY_acute, IBUS_KEY_O, 0x00D3, +IBUS_KEY_acute, IBUS_KEY_P, 0x1E54, +IBUS_KEY_acute, IBUS_KEY_R, 0x0154, +IBUS_KEY_acute, IBUS_KEY_S, 0x015A, +IBUS_KEY_acute, IBUS_KEY_U, 0x00DA, +IBUS_KEY_acute, IBUS_KEY_W, 0x1E82, +IBUS_KEY_acute, IBUS_KEY_Y, 0x00DD, +IBUS_KEY_acute, IBUS_KEY_Z, 0x0179, +IBUS_KEY_acute, IBUS_KEY_a, 0x00E1, +IBUS_KEY_acute, IBUS_KEY_c, 0x0107, +IBUS_KEY_acute, IBUS_KEY_e, 0x00E9, +IBUS_KEY_acute, IBUS_KEY_g, 0x01F5, +IBUS_KEY_acute, IBUS_KEY_i, 0x00ED, +IBUS_KEY_acute, IBUS_KEY_k, 0x1E31, +IBUS_KEY_acute, IBUS_KEY_l, 0x013A, +IBUS_KEY_acute, IBUS_KEY_m, 0x1E3F, +IBUS_KEY_acute, IBUS_KEY_n, 0x0144, +IBUS_KEY_acute, IBUS_KEY_o, 0x00F3, +IBUS_KEY_acute, IBUS_KEY_p, 0x1E55, +IBUS_KEY_acute, IBUS_KEY_r, 0x0155, +IBUS_KEY_acute, IBUS_KEY_s, 0x015B, +IBUS_KEY_acute, IBUS_KEY_u, 0x00FA, +IBUS_KEY_acute, IBUS_KEY_w, 0x1E83, +IBUS_KEY_acute, IBUS_KEY_y, 0x00FD, +IBUS_KEY_acute, IBUS_KEY_z, 0x017A, +IBUS_KEY_acute, IBUS_KEY_Acircumflex, 0x1EA4, +IBUS_KEY_acute, IBUS_KEY_Aring, 0x01FA, +IBUS_KEY_acute, IBUS_KEY_AE, 0x01FC, +IBUS_KEY_acute, IBUS_KEY_Ccedilla, 0x1E08, +IBUS_KEY_acute, IBUS_KEY_Ecircumflex, 0x1EBE, +IBUS_KEY_acute, IBUS_KEY_Idiaeresis, 0x1E2E, +IBUS_KEY_acute, IBUS_KEY_Ocircumflex, 0x1ED0, +IBUS_KEY_acute, IBUS_KEY_Otilde, 0x1E4C, +IBUS_KEY_acute, IBUS_KEY_Ooblique, 0x01FE, +IBUS_KEY_acute, IBUS_KEY_Udiaeresis, 0x01D7, +IBUS_KEY_acute, IBUS_KEY_acircumflex, 0x1EA5, +IBUS_KEY_acute, IBUS_KEY_aring, 0x01FB, +IBUS_KEY_acute, IBUS_KEY_ae, 0x01FD, +IBUS_KEY_acute, IBUS_KEY_ccedilla, 0x1E09, +IBUS_KEY_acute, IBUS_KEY_ecircumflex, 0x1EBF, +IBUS_KEY_acute, IBUS_KEY_idiaeresis, 0x1E2F, +IBUS_KEY_acute, IBUS_KEY_ocircumflex, 0x1ED1, +IBUS_KEY_acute, IBUS_KEY_otilde, 0x1E4D, +IBUS_KEY_acute, IBUS_KEY_oslash, 0x01FF, +IBUS_KEY_acute, IBUS_KEY_udiaeresis, 0x01D8, +IBUS_KEY_acute, IBUS_KEY_Abreve, 0x1EAE, +IBUS_KEY_acute, IBUS_KEY_abreve, 0x1EAF, +IBUS_KEY_acute, IBUS_KEY_Emacron, 0x1E16, +IBUS_KEY_acute, IBUS_KEY_emacron, 0x1E17, +IBUS_KEY_acute, IBUS_KEY_Omacron, 0x1E52, +IBUS_KEY_acute, IBUS_KEY_Utilde, 0x1E78, +IBUS_KEY_acute, IBUS_KEY_omacron, 0x1E53, +IBUS_KEY_acute, IBUS_KEY_utilde, 0x1E79, +IBUS_KEY_acute, IBUS_KEY_Cyrillic_ghe, 0x0453, +IBUS_KEY_acute, IBUS_KEY_Cyrillic_ka, 0x045C, +IBUS_KEY_acute, IBUS_KEY_Cyrillic_GHE, 0x0403, +IBUS_KEY_acute, IBUS_KEY_Cyrillic_KA, 0x040C, +IBUS_KEY_acute, IBUS_KEY_Greek_iotadieresis, 0x0390, +IBUS_KEY_acute, IBUS_KEY_Greek_upsilondieresis, 0x03B0, +IBUS_KEY_acute, IBUS_KEY_Greek_ALPHA, 0x0386, +IBUS_KEY_acute, IBUS_KEY_Greek_EPSILON, 0x0388, +IBUS_KEY_acute, IBUS_KEY_Greek_ETA, 0x0389, +IBUS_KEY_acute, IBUS_KEY_Greek_IOTA, 0x038A, +IBUS_KEY_acute, IBUS_KEY_Greek_OMICRON, 0x038C, +IBUS_KEY_acute, IBUS_KEY_Greek_UPSILON, 0x038E, +IBUS_KEY_acute, IBUS_KEY_Greek_OMEGA, 0x038F, +IBUS_KEY_acute, IBUS_KEY_Greek_alpha, 0x03AC, +IBUS_KEY_acute, IBUS_KEY_Greek_epsilon, 0x03AD, +IBUS_KEY_acute, IBUS_KEY_Greek_eta, 0x03AE, +IBUS_KEY_acute, IBUS_KEY_Greek_iota, 0x03AF, +IBUS_KEY_acute, IBUS_KEY_Greek_omicron, 0x03CC, +IBUS_KEY_acute, IBUS_KEY_Greek_upsilon, 0x03CD, +IBUS_KEY_acute, IBUS_KEY_Greek_omega, 0x03CE, +IBUS_KEY_acute, 0x1F00, 0x1F04, +IBUS_KEY_acute, 0x1F01, 0x1F05, +IBUS_KEY_acute, 0x1F08, 0x1F0C, +IBUS_KEY_acute, 0x1F09, 0x1F0D, +IBUS_KEY_acute, 0x1F10, 0x1F14, +IBUS_KEY_acute, 0x1F11, 0x1F15, +IBUS_KEY_acute, 0x1F18, 0x1F1C, +IBUS_KEY_acute, 0x1F19, 0x1F1D, +IBUS_KEY_acute, 0x1F20, 0x1F24, +IBUS_KEY_acute, 0x1F21, 0x1F25, +IBUS_KEY_acute, 0x1F28, 0x1F2C, +IBUS_KEY_acute, 0x1F29, 0x1F2D, +IBUS_KEY_acute, 0x1F30, 0x1F34, +IBUS_KEY_acute, 0x1F31, 0x1F35, +IBUS_KEY_acute, 0x1F38, 0x1F3C, +IBUS_KEY_acute, 0x1F39, 0x1F3D, +IBUS_KEY_acute, 0x1F40, 0x1F44, +IBUS_KEY_acute, 0x1F41, 0x1F45, +IBUS_KEY_acute, 0x1F48, 0x1F4C, +IBUS_KEY_acute, 0x1F49, 0x1F4D, +IBUS_KEY_acute, 0x1F50, 0x1F54, +IBUS_KEY_acute, 0x1F51, 0x1F55, +IBUS_KEY_acute, 0x1F59, 0x1F5D, +IBUS_KEY_acute, 0x1F60, 0x1F64, +IBUS_KEY_acute, 0x1F61, 0x1F65, +IBUS_KEY_acute, 0x1F68, 0x1F6C, +IBUS_KEY_acute, 0x1F69, 0x1F6D, +IBUS_KEY_cedilla, IBUS_KEY_C, 0x00C7, +IBUS_KEY_cedilla, IBUS_KEY_D, 0x1E10, +IBUS_KEY_cedilla, IBUS_KEY_E, 0x0228, +IBUS_KEY_cedilla, IBUS_KEY_G, 0x0122, +IBUS_KEY_cedilla, IBUS_KEY_H, 0x1E28, +IBUS_KEY_cedilla, IBUS_KEY_K, 0x0136, +IBUS_KEY_cedilla, IBUS_KEY_L, 0x013B, +IBUS_KEY_cedilla, IBUS_KEY_N, 0x0145, +IBUS_KEY_cedilla, IBUS_KEY_R, 0x0156, +IBUS_KEY_cedilla, IBUS_KEY_S, 0x015E, +IBUS_KEY_cedilla, IBUS_KEY_T, 0x0162, +IBUS_KEY_cedilla, IBUS_KEY_c, 0x00E7, +IBUS_KEY_cedilla, IBUS_KEY_d, 0x1E11, +IBUS_KEY_cedilla, IBUS_KEY_e, 0x0229, +IBUS_KEY_cedilla, IBUS_KEY_g, 0x0123, +IBUS_KEY_cedilla, IBUS_KEY_h, 0x1E29, +IBUS_KEY_cedilla, IBUS_KEY_k, 0x0137, +IBUS_KEY_cedilla, IBUS_KEY_l, 0x013C, +IBUS_KEY_cedilla, IBUS_KEY_n, 0x0146, +IBUS_KEY_cedilla, IBUS_KEY_r, 0x0157, +IBUS_KEY_cedilla, IBUS_KEY_s, 0x015F, +IBUS_KEY_cedilla, IBUS_KEY_t, 0x0163, +IBUS_KEY_division, 0x2395, 0x2339, +IBUS_KEY_breve, IBUS_KEY_G, 0x011E, +IBUS_KEY_breve, IBUS_KEY_g, 0x011F, +0x05B4, IBUS_KEY_hebrew_yod, 0xFB1D, +0x05B7, 0x05F2, 0xFB1F, +0x05B7, IBUS_KEY_hebrew_aleph, 0xFB2E, +0x05B8, IBUS_KEY_hebrew_aleph, 0xFB2F, +0x05B9, IBUS_KEY_hebrew_waw, 0xFB4B, +0x05BC, IBUS_KEY_hebrew_aleph, 0xFB30, +0x05BC, IBUS_KEY_hebrew_bet, 0xFB31, +0x05BC, IBUS_KEY_hebrew_gimel, 0xFB32, +0x05BC, IBUS_KEY_hebrew_dalet, 0xFB33, +0x05BC, IBUS_KEY_hebrew_he, 0xFB34, +0x05BC, IBUS_KEY_hebrew_waw, 0xFB35, +0x05BC, IBUS_KEY_hebrew_zain, 0xFB36, +0x05BC, IBUS_KEY_hebrew_tet, 0xFB38, +0x05BC, IBUS_KEY_hebrew_yod, 0xFB39, +0x05BC, IBUS_KEY_hebrew_finalkaph, 0xFB3A, +0x05BC, IBUS_KEY_hebrew_kaph, 0xFB3B, +0x05BC, IBUS_KEY_hebrew_lamed, 0xFB3C, +0x05BC, IBUS_KEY_hebrew_mem, 0xFB3E, +0x05BC, IBUS_KEY_hebrew_nun, 0xFB40, +0x05BC, IBUS_KEY_hebrew_samech, 0xFB41, +0x05BC, IBUS_KEY_hebrew_finalpe, 0xFB43, +0x05BC, IBUS_KEY_hebrew_pe, 0xFB44, +0x05BC, IBUS_KEY_hebrew_zade, 0xFB46, +0x05BC, IBUS_KEY_hebrew_kuf, 0xFB47, +0x05BC, IBUS_KEY_hebrew_resh, 0xFB48, +0x05BC, IBUS_KEY_hebrew_shin, 0xFB49, +0x05BC, IBUS_KEY_hebrew_taf, 0xFB4A, +0x05BF, IBUS_KEY_hebrew_bet, 0xFB4C, +0x05BF, IBUS_KEY_hebrew_kaph, 0xFB4D, +0x05BF, IBUS_KEY_hebrew_pe, 0xFB4E, +0x05C1, IBUS_KEY_hebrew_shin, 0xFB2A, +0x05C1, 0xFB49, 0xFB2C, +0x05C2, IBUS_KEY_hebrew_shin, 0xFB2B, +0x05C2, 0xFB49, 0xFB2D, +0x0653, IBUS_KEY_Arabic_alef, 0x0622, +0x0654, IBUS_KEY_Arabic_alef, 0x0623, +0x0654, IBUS_KEY_Arabic_waw, 0x0624, +0x0654, IBUS_KEY_Arabic_yeh, 0x0626, +0x0654, 0x06C1, 0x06C2, +0x0654, 0x06D2, 0x06D3, +0x0654, 0x06D5, 0x06C0, +0x0655, IBUS_KEY_Arabic_alef, 0x0625, +IBUS_KEY_Cyrillic_pe, IBUS_KEY_Cyrillic_a, 0x00A7, +IBUS_KEY_Cyrillic_IE, IBUS_KEY_equal, 0x20AC, +IBUS_KEY_Cyrillic_EN, IBUS_KEY_Cyrillic_o, 0x2116, +IBUS_KEY_Cyrillic_EN, IBUS_KEY_Cyrillic_O, 0x2116, +IBUS_KEY_Cyrillic_ES, IBUS_KEY_equal, 0x20AC, +IBUS_KEY_Greek_ALPHA, IBUS_KEY_apostrophe, 0x0386, +IBUS_KEY_Greek_EPSILON, IBUS_KEY_apostrophe, 0x0388, +IBUS_KEY_Greek_ETA, IBUS_KEY_apostrophe, 0x0389, +IBUS_KEY_Greek_IOTA, IBUS_KEY_quotedbl, 0x03AA, +IBUS_KEY_Greek_IOTA, IBUS_KEY_apostrophe, 0x038A, +IBUS_KEY_Greek_OMICRON, IBUS_KEY_apostrophe, 0x038C, +IBUS_KEY_Greek_UPSILON, IBUS_KEY_quotedbl, 0x03AB, +IBUS_KEY_Greek_UPSILON, IBUS_KEY_apostrophe, 0x038E, +IBUS_KEY_Greek_OMEGA, IBUS_KEY_apostrophe, 0x038F, +IBUS_KEY_Greek_alpha, IBUS_KEY_apostrophe, 0x03AC, +IBUS_KEY_Greek_epsilon, IBUS_KEY_apostrophe, 0x03AD, +IBUS_KEY_Greek_eta, IBUS_KEY_apostrophe, 0x03AE, +IBUS_KEY_Greek_iota, IBUS_KEY_quotedbl, 0x03CA, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x03AF, +IBUS_KEY_Greek_iota, IBUS_KEY_Greek_alphaaccent, 0x1FB4, +IBUS_KEY_Greek_iota, IBUS_KEY_Greek_etaaccent, 0x1FC4, +IBUS_KEY_Greek_iota, IBUS_KEY_Greek_omegaaccent, 0x1FF4, +IBUS_KEY_Greek_iota, IBUS_KEY_Greek_ALPHA, 0x1FBC, +IBUS_KEY_Greek_iota, IBUS_KEY_Greek_ETA, 0x1FCC, +IBUS_KEY_Greek_iota, IBUS_KEY_Greek_OMEGA, 0x1FFC, +IBUS_KEY_Greek_iota, IBUS_KEY_Greek_alpha, 0x1FB3, +IBUS_KEY_Greek_iota, IBUS_KEY_Greek_eta, 0x1FC3, +IBUS_KEY_Greek_iota, IBUS_KEY_Greek_omega, 0x1FF3, +IBUS_KEY_Greek_iota, 0x1F00, 0x1F80, +IBUS_KEY_Greek_iota, 0x1F01, 0x1F81, +IBUS_KEY_Greek_iota, 0x1F02, 0x1F82, +IBUS_KEY_Greek_iota, 0x1F03, 0x1F83, +IBUS_KEY_Greek_iota, 0x1F04, 0x1F84, +IBUS_KEY_Greek_iota, 0x1F05, 0x1F85, +IBUS_KEY_Greek_iota, 0x1F06, 0x1F86, +IBUS_KEY_Greek_iota, 0x1F07, 0x1F87, +IBUS_KEY_Greek_iota, 0x1F08, 0x1F88, +IBUS_KEY_Greek_iota, 0x1F09, 0x1F89, +IBUS_KEY_Greek_iota, 0x1F0A, 0x1F8A, +IBUS_KEY_Greek_iota, 0x1F0B, 0x1F8B, +IBUS_KEY_Greek_iota, 0x1F0C, 0x1F8C, +IBUS_KEY_Greek_iota, 0x1F0D, 0x1F8D, +IBUS_KEY_Greek_iota, 0x1F0E, 0x1F8E, +IBUS_KEY_Greek_iota, 0x1F0F, 0x1F8F, +IBUS_KEY_Greek_iota, 0x1F20, 0x1F90, +IBUS_KEY_Greek_iota, 0x1F21, 0x1F91, +IBUS_KEY_Greek_iota, 0x1F22, 0x1F92, +IBUS_KEY_Greek_iota, 0x1F23, 0x1F93, +IBUS_KEY_Greek_iota, 0x1F24, 0x1F94, +IBUS_KEY_Greek_iota, 0x1F25, 0x1F95, +IBUS_KEY_Greek_iota, 0x1F26, 0x1F96, +IBUS_KEY_Greek_iota, 0x1F27, 0x1F97, +IBUS_KEY_Greek_iota, 0x1F28, 0x1F98, +IBUS_KEY_Greek_iota, 0x1F29, 0x1F99, +IBUS_KEY_Greek_iota, 0x1F2A, 0x1F9A, +IBUS_KEY_Greek_iota, 0x1F2B, 0x1F9B, +IBUS_KEY_Greek_iota, 0x1F2C, 0x1F9C, +IBUS_KEY_Greek_iota, 0x1F2D, 0x1F9D, +IBUS_KEY_Greek_iota, 0x1F2E, 0x1F9E, +IBUS_KEY_Greek_iota, 0x1F2F, 0x1F9F, +IBUS_KEY_Greek_iota, 0x1F60, 0x1FA0, +IBUS_KEY_Greek_iota, 0x1F61, 0x1FA1, +IBUS_KEY_Greek_iota, 0x1F62, 0x1FA2, +IBUS_KEY_Greek_iota, 0x1F63, 0x1FA3, +IBUS_KEY_Greek_iota, 0x1F64, 0x1FA4, +IBUS_KEY_Greek_iota, 0x1F65, 0x1FA5, +IBUS_KEY_Greek_iota, 0x1F66, 0x1FA6, +IBUS_KEY_Greek_iota, 0x1F67, 0x1FA7, +IBUS_KEY_Greek_iota, 0x1F68, 0x1FA8, +IBUS_KEY_Greek_iota, 0x1F69, 0x1FA9, +IBUS_KEY_Greek_iota, 0x1F6A, 0x1FAA, +IBUS_KEY_Greek_iota, 0x1F6B, 0x1FAB, +IBUS_KEY_Greek_iota, 0x1F6C, 0x1FAC, +IBUS_KEY_Greek_iota, 0x1F6D, 0x1FAD, +IBUS_KEY_Greek_iota, 0x1F6E, 0x1FAE, +IBUS_KEY_Greek_iota, 0x1F6F, 0x1FAF, +IBUS_KEY_Greek_iota, 0x1F70, 0x1FB2, +IBUS_KEY_Greek_iota, 0x1F74, 0x1FC2, +IBUS_KEY_Greek_iota, 0x1F7C, 0x1FF2, +IBUS_KEY_Greek_iota, 0x1FB6, 0x1FB7, +IBUS_KEY_Greek_iota, 0x1FC6, 0x1FC7, +IBUS_KEY_Greek_iota, 0x1FF6, 0x1FF7, +IBUS_KEY_Greek_omicron, IBUS_KEY_apostrophe, 0x03CC, +IBUS_KEY_Greek_upsilon, IBUS_KEY_quotedbl, 0x03CB, +IBUS_KEY_Greek_upsilon, IBUS_KEY_apostrophe, 0x03CD, +IBUS_KEY_Greek_omega, IBUS_KEY_apostrophe, 0x03CE, +IBUS_KEY_lessthanequal, 0x0338, 0x2270, +IBUS_KEY_greaterthanequal, 0x0338, 0x2271, +IBUS_KEY_approximate, 0x0338, 0x2247, +IBUS_KEY_identical, 0x0338, 0x2262, +IBUS_KEY_includedin, 0x0338, 0x2284, +IBUS_KEY_includes, 0x0338, 0x2285, +0x093C, 0x0915, 0x0958, +0x093C, 0x0916, 0x0959, +0x093C, 0x0917, 0x095A, +0x093C, 0x091C, 0x095B, +0x093C, 0x0921, 0x095C, +0x093C, 0x0922, 0x095D, +0x093C, 0x0928, 0x0929, +0x093C, 0x092B, 0x095E, +0x093C, 0x092F, 0x095F, +0x093C, 0x0930, 0x0931, +0x093C, 0x0933, 0x0934, +0x09BC, 0x09A1, 0x09DC, +0x09BC, 0x09A2, 0x09DD, +0x09BC, 0x09AF, 0x09DF, +0x09C7, 0x09BE, 0x09CB, +0x09C7, 0x09D7, 0x09CC, +0x0A3C, 0x0A16, 0x0A59, +0x0A3C, 0x0A17, 0x0A5A, +0x0A3C, 0x0A1C, 0x0A5B, +0x0A3C, 0x0A2B, 0x0A5E, +0x0A3C, 0x0A32, 0x0A33, +0x0A3C, 0x0A38, 0x0A36, +0x0B3C, 0x0B21, 0x0B5C, +0x0B3C, 0x0B22, 0x0B5D, +0x0B47, 0x0B3E, 0x0B4B, +0x0B47, 0x0B56, 0x0B48, +0x0B47, 0x0B57, 0x0B4C, +IBUS_KEY_leftcaret, 0x0338, 0x226E, +IBUS_KEY_rightcaret, 0x0338, 0x226F, +IBUS_KEY_underbar, IBUS_KEY_parenleft, 0x208D, +IBUS_KEY_underbar, IBUS_KEY_parenright, 0x208E, +IBUS_KEY_underbar, IBUS_KEY_plus, 0x208A, +IBUS_KEY_underbar, IBUS_KEY_0, 0x2080, +IBUS_KEY_underbar, IBUS_KEY_1, 0x2081, +IBUS_KEY_underbar, IBUS_KEY_2, 0x2082, +IBUS_KEY_underbar, IBUS_KEY_3, 0x2083, +IBUS_KEY_underbar, IBUS_KEY_4, 0x2084, +IBUS_KEY_underbar, IBUS_KEY_5, 0x2085, +IBUS_KEY_underbar, IBUS_KEY_6, 0x2086, +IBUS_KEY_underbar, IBUS_KEY_7, 0x2087, +IBUS_KEY_underbar, IBUS_KEY_8, 0x2088, +IBUS_KEY_underbar, IBUS_KEY_9, 0x2089, +IBUS_KEY_underbar, IBUS_KEY_equal, 0x208C, +0x0BC6, 0x0BBE, 0x0BCA, +0x0BC6, 0x0BD7, 0x0BCC, +IBUS_KEY_underbar, 0x2212, 0x208B, +IBUS_KEY_underbar, IBUS_KEY_KP_Space, 0x2082, +IBUS_KEY_underbar, IBUS_KEY_KP_Add, 0x208A, +IBUS_KEY_underbar, IBUS_KEY_KP_0, 0x2080, +IBUS_KEY_underbar, IBUS_KEY_KP_1, 0x2081, +IBUS_KEY_underbar, IBUS_KEY_KP_2, 0x2082, +IBUS_KEY_underbar, IBUS_KEY_KP_3, 0x2083, +IBUS_KEY_underbar, IBUS_KEY_KP_4, 0x2084, +IBUS_KEY_underbar, IBUS_KEY_KP_5, 0x2085, +IBUS_KEY_underbar, IBUS_KEY_KP_6, 0x2086, +IBUS_KEY_underbar, IBUS_KEY_KP_7, 0x2087, +IBUS_KEY_underbar, IBUS_KEY_KP_8, 0x2088, +IBUS_KEY_underbar, IBUS_KEY_KP_9, 0x2089, +IBUS_KEY_underbar, IBUS_KEY_KP_Equal, 0x208C, +0x0BC7, 0x0BBE, 0x0BCB, +0x0BD7, 0x0B92, 0x0B94, +IBUS_KEY_rightshoe, 0x0338, 0x2285, +IBUS_KEY_leftshoe, 0x0338, 0x2284, +IBUS_KEY_righttack, 0x0338, 0x22AC, +0x0C46, 0x0C56, 0x0C48, +0x0CBF, 0x0CD5, 0x0CC0, +0x0CC6, 0x0CC2, 0x0CCA, +0x0CC6, 0x0CD5, 0x0CC7, +0x0CC6, 0x0CD6, 0x0CC8, +0x0CCA, 0x0CD5, 0x0CCB, +0x0D46, 0x0D3E, 0x0D4A, +0x0D46, 0x0D57, 0x0D4C, +0x0D47, 0x0D3E, 0x0D4B, +0x0DD9, 0x0DCA, 0x0DDA, +0x0DD9, 0x0DCF, 0x0DDC, +0x0DD9, 0x0DDF, 0x0DDE, +0x0DDC, 0x0DCA, 0x0DDD, +0x0F71, 0x0F72, 0x0F73, +0x0F71, 0x0F74, 0x0F75, +0x0F71, 0x0F80, 0x0F81, +0x0F90, 0x0FB5, 0x0FB9, +0x0F92, 0x0FB7, 0x0F93, +0x0F9C, 0x0FB7, 0x0F9D, +0x0FA1, 0x0FB7, 0x0FA2, +0x0FA6, 0x0FB7, 0x0FA7, +0x0FAB, 0x0FB7, 0x0FAC, +0x0FB2, 0x0F80, 0x0F76, +0x0FB3, 0x0F80, 0x0F78, +0x0FB5, 0x0F40, 0x0F69, +0x0FB7, 0x0F42, 0x0F43, +0x0FB7, 0x0F4C, 0x0F4D, +0x0FB7, 0x0F51, 0x0F52, +0x0FB7, 0x0F56, 0x0F57, +0x0FB7, 0x0F5B, 0x0F5C, +0x102E, 0x1025, 0x1026, +0x1100, 0x1100, 0x1101, +0x1102, 0x1100, 0x1113, +0x1102, 0x1102, 0x1114, +0x1102, 0x1103, 0x1115, +0x1102, 0x1107, 0x1116, +0x1103, 0x1100, 0x1117, +0x1103, 0x1103, 0x1104, +0x1105, 0x1102, 0x1118, +0x1105, 0x1105, 0x1119, +0x1105, 0x110B, 0x111B, +0x1105, 0x1112, 0x111A, +0x1106, 0x1107, 0x111C, +0x1106, 0x110B, 0x111D, +0x1107, 0x1100, 0x111E, +0x1107, 0x1102, 0x111F, +0x1107, 0x1103, 0x1120, +0x1107, 0x1107, 0x1108, +0x1107, 0x1109, 0x1121, +0x1107, 0x110A, 0x1125, +0x1107, 0x110B, 0x112B, +0x1107, 0x110C, 0x1127, +0x1107, 0x110E, 0x1128, +0x1107, 0x1110, 0x1129, +0x1107, 0x1111, 0x112A, +0x1107, 0x112B, 0x112C, +0x1107, 0x112D, 0x1122, +0x1107, 0x112F, 0x1123, +0x1107, 0x1132, 0x1124, +0x1107, 0x1136, 0x1126, +0x1108, 0x110B, 0x112C, +0x1109, 0x1100, 0x112D, +0x1109, 0x1102, 0x112E, +0x1109, 0x1103, 0x112F, +0x1109, 0x1105, 0x1130, +0x1109, 0x1106, 0x1131, +0x1109, 0x1107, 0x1132, +0x1109, 0x1109, 0x110A, +0x1109, 0x110A, 0x1134, +0x1109, 0x110B, 0x1135, +0x1109, 0x110C, 0x1136, +0x1109, 0x110E, 0x1137, +0x1109, 0x110F, 0x1138, +0x1109, 0x1110, 0x1139, +0x1109, 0x1111, 0x113A, +0x1109, 0x1112, 0x113B, +0x1109, 0x111E, 0x1133, +0x110A, 0x1109, 0x1134, +0x110B, 0x1100, 0x1141, +0x110B, 0x1103, 0x1142, +0x110B, 0x1106, 0x1143, +0x110B, 0x1107, 0x1144, +0x110B, 0x1109, 0x1145, +0x110B, 0x110B, 0x1147, +0x110B, 0x110C, 0x1148, +0x110B, 0x110E, 0x1149, +0x110B, 0x1110, 0x114A, +0x110B, 0x1111, 0x114B, +0x110B, 0x1140, 0x1146, +0x110C, 0x110B, 0x114D, +0x110C, 0x110C, 0x110D, +0x110E, 0x110F, 0x1152, +0x110E, 0x1112, 0x1153, +0x1111, 0x1107, 0x1156, +0x1111, 0x110B, 0x1157, +0x1112, 0x1112, 0x1158, +0x1121, 0x1100, 0x1122, +0x1121, 0x1103, 0x1123, +0x1121, 0x1107, 0x1124, +0x1121, 0x1109, 0x1125, +0x1121, 0x110C, 0x1126, +0x1132, 0x1100, 0x1133, +0x113C, 0x113C, 0x113D, +0x113E, 0x113E, 0x113F, +0x114E, 0x114E, 0x114F, +0x1150, 0x1150, 0x1151, +0x1161, 0x1169, 0x1176, +0x1161, 0x116E, 0x1177, +0x1161, 0x1175, 0x1162, +0x1163, 0x1169, 0x1178, +0x1163, 0x116D, 0x1179, +0x1163, 0x1175, 0x1164, +0x1165, 0x1169, 0x117A, +0x1165, 0x116E, 0x117B, +0x1165, 0x1173, 0x117C, +0x1165, 0x1175, 0x1166, +0x1167, 0x1169, 0x117D, +0x1167, 0x116E, 0x117E, +0x1167, 0x1175, 0x1168, +0x1169, 0x1161, 0x116A, +0x1169, 0x1162, 0x116B, +0x1169, 0x1165, 0x117F, +0x1169, 0x1166, 0x1180, +0x1169, 0x1168, 0x1181, +0x1169, 0x1169, 0x1182, +0x1169, 0x116E, 0x1183, +0x1169, 0x1175, 0x116C, +0x116A, 0x1175, 0x116B, +0x116D, 0x1163, 0x1184, +0x116D, 0x1164, 0x1185, +0x116D, 0x1167, 0x1186, +0x116D, 0x1169, 0x1187, +0x116D, 0x1175, 0x1188, +0x116E, 0x1161, 0x1189, +0x116E, 0x1162, 0x118A, +0x116E, 0x1165, 0x116F, +0x116E, 0x1166, 0x1170, +0x116E, 0x1168, 0x118C, +0x116E, 0x116E, 0x118D, +0x116E, 0x1175, 0x1171, +0x116E, 0x117C, 0x118B, +0x116F, 0x1173, 0x118B, +0x116F, 0x1175, 0x1170, +0x1172, 0x1161, 0x118E, +0x1172, 0x1165, 0x118F, +0x1172, 0x1166, 0x1190, +0x1172, 0x1167, 0x1191, +0x1172, 0x1168, 0x1192, +0x1172, 0x116E, 0x1193, +0x1172, 0x1175, 0x1194, +0x1173, 0x116E, 0x1195, +0x1173, 0x1173, 0x1196, +0x1173, 0x1175, 0x1174, +0x1174, 0x116E, 0x1197, +0x1175, 0x1161, 0x1198, +0x1175, 0x1163, 0x1199, +0x1175, 0x1169, 0x119A, +0x1175, 0x116E, 0x119B, +0x1175, 0x1173, 0x119C, +0x1175, 0x119E, 0x119D, +0x119E, 0x1165, 0x119F, +0x119E, 0x116E, 0x11A0, +0x119E, 0x1175, 0x11A1, +0x119E, 0x119E, 0x11A2, +0x11A8, 0x11A8, 0x11A9, +0x11A8, 0x11AF, 0x11C3, +0x11A8, 0x11BA, 0x11AA, +0x11A8, 0x11E7, 0x11C4, +0x11AA, 0x11A8, 0x11C4, +0x11AB, 0x11A8, 0x11C5, +0x11AB, 0x11AE, 0x11C6, +0x11AB, 0x11BA, 0x11C7, +0x11AB, 0x11BD, 0x11AC, +0x11AB, 0x11C0, 0x11C9, +0x11AB, 0x11C2, 0x11AD, +0x11AB, 0x11EB, 0x11C8, +0x11AE, 0x11A8, 0x11CA, +0x11AE, 0x11AF, 0x11CB, +0x11AF, 0x11A8, 0x11B0, +0x11AF, 0x11AA, 0x11CC, +0x11AF, 0x11AB, 0x11CD, +0x11AF, 0x11AE, 0x11CE, +0x11AF, 0x11AF, 0x11D0, +0x11AF, 0x11B7, 0x11B1, +0x11AF, 0x11B8, 0x11B2, +0x11AF, 0x11B9, 0x11D3, +0x11AF, 0x11BA, 0x11B3, +0x11AF, 0x11BB, 0x11D6, +0x11AF, 0x11BF, 0x11D8, +0x11AF, 0x11C0, 0x11B4, +0x11AF, 0x11C1, 0x11B5, +0x11AF, 0x11C2, 0x11B6, +0x11AF, 0x11DA, 0x11D1, +0x11AF, 0x11DD, 0x11D2, +0x11AF, 0x11E5, 0x11D4, +0x11AF, 0x11E6, 0x11D5, +0x11AF, 0x11EB, 0x11D7, +0x11AF, 0x11F9, 0x11D9, +0x11B0, 0x11BA, 0x11CC, +0x11B1, 0x11A8, 0x11D1, +0x11B1, 0x11BA, 0x11D2, +0x11B2, 0x11BA, 0x11D3, +0x11B2, 0x11BC, 0x11D5, +0x11B2, 0x11C2, 0x11D4, +0x11B3, 0x11BA, 0x11D6, +0x11B7, 0x11A8, 0x11DA, +0x11B7, 0x11AF, 0x11DB, +0x11B7, 0x11B8, 0x11DC, +0x11B7, 0x11BA, 0x11DD, +0x11B7, 0x11BB, 0x11DE, +0x11B7, 0x11BC, 0x11E2, +0x11B7, 0x11BE, 0x11E0, +0x11B7, 0x11C2, 0x11E1, +0x11B7, 0x11EB, 0x11DF, +0x11B8, 0x11AF, 0x11E3, +0x11B8, 0x11BA, 0x11B9, +0x11B8, 0x11BC, 0x11E6, +0x11B8, 0x11C1, 0x11E4, +0x11B8, 0x11C2, 0x11E5, +0x11BA, 0x11A8, 0x11E7, +0x11BA, 0x11AE, 0x11E8, +0x11BA, 0x11AF, 0x11E9, +0x11BA, 0x11B8, 0x11EA, +0x11BA, 0x11BA, 0x11BB, +0x11BC, 0x11A8, 0x11EC, +0x11BC, 0x11A9, 0x11ED, +0x11BC, 0x11BC, 0x11EE, +0x11BC, 0x11BF, 0x11EF, +0x11C1, 0x11B8, 0x11F3, +0x11C1, 0x11BC, 0x11F4, +0x11C2, 0x11AB, 0x11F5, +0x11C2, 0x11AF, 0x11F6, +0x11C2, 0x11B7, 0x11F7, +0x11C2, 0x11B8, 0x11F8, +0x11CE, 0x11C2, 0x11CF, +0x11DD, 0x11BA, 0x11DE, +0x11EC, 0x11A8, 0x11ED, +0x11F0, 0x11BA, 0x11F1, +0x11F0, 0x11EB, 0x11F2, +0x1FBF, IBUS_KEY_apostrophe, 0x1FCE, +0x1FBF, IBUS_KEY_grave, 0x1FCD, +0x1FBF, IBUS_KEY_asciitilde, 0x1FCF, +0x1FBF, IBUS_KEY_acute, 0x1FCE, +0x1FBF, IBUS_KEY_dead_grave, 0x1FCD, +0x1FBF, IBUS_KEY_dead_acute, 0x1FCE, +0x1FBF, IBUS_KEY_dead_tilde, 0x1FCF, +0x1FFE, IBUS_KEY_apostrophe, 0x1FDE, +0x1FFE, IBUS_KEY_grave, 0x1FDD, +0x1FFE, IBUS_KEY_asciitilde, 0x1FDF, +0x1FFE, IBUS_KEY_acute, 0x1FDE, +0x1FFE, IBUS_KEY_dead_grave, 0x1FDD, +0x1FFE, IBUS_KEY_dead_acute, 0x1FDE, +0x1FFE, IBUS_KEY_dead_tilde, 0x1FDF, +0x2190, IBUS_KEY_bar, 0x2345, +0x2190, 0x2395, 0x2347, +0x2191, IBUS_KEY_minus, 0x234F, +0x2191, 0x2395, 0x2350, +0x2192, IBUS_KEY_bar, 0x2346, +0x2192, 0x2395, 0x2348, +0x2193, IBUS_KEY_minus, 0x2356, +0x2193, 0x2395, 0x2357, +0x2203, 0x0338, 0x2204, +0x2206, IBUS_KEY_underscore, 0x2359, +0x2206, IBUS_KEY_bar, 0x234B, +0x2206, 0x2395, 0x234D, +0x2207, IBUS_KEY_bar, 0x2352, +0x2207, IBUS_KEY_asciitilde, 0x236B, +0x2207, IBUS_KEY_diaeresis, 0x2362, +0x2207, 0x2395, 0x2354, +0x2208, 0x0338, 0x2209, +0x220A, IBUS_KEY_underscore, 0x2377, +0x220B, 0x0338, 0x220C, +0x2218, IBUS_KEY_underscore, 0x235B, +0x2218, IBUS_KEY_diaeresis, 0x2364, +0x2218, 0x2229, 0x235D, +0x2218, IBUS_KEY_uptack, 0x2355, +0x2218, IBUS_KEY_downtack, 0x234E, +0x2218, 0x2395, 0x233B, +0x2218, IBUS_KEY_emopencircle, 0x233E, +0x2223, 0x0338, 0x2224, +0x2225, 0x0338, 0x2226, +0x2227, IBUS_KEY_asciitilde, 0x2372, +0x2227, 0x2228, 0x22C4, +0x2227, 0x2395, 0x2353, +0x2228, IBUS_KEY_asciitilde, 0x2371, +0x2228, 0x2227, 0x22C4, +0x2228, 0x2395, 0x234C, +0x2229, 0x2218, 0x235D, +IBUS_KEY_union, IBUS_KEY_bar, 0x2366, +0x223C, 0x0338, 0x2241, +0x2243, 0x0338, 0x2244, +0x2248, 0x0338, 0x2249, +0x224D, 0x0338, 0x226D, +0x2260, IBUS_KEY_underscore, 0x2262, +0x2260, 0x2395, 0x236F, +0x2272, 0x0338, 0x2274, +0x2273, 0x0338, 0x2275, +0x2276, 0x0338, 0x2278, +0x2277, 0x0338, 0x2279, +0x227A, 0x0338, 0x2280, +0x227B, 0x0338, 0x2281, +0x227C, 0x0338, 0x22E0, +0x227D, 0x0338, 0x22E1, +0x2282, IBUS_KEY_underscore, 0x2286, +0x2282, IBUS_KEY_bar, 0x2367, +0x2283, IBUS_KEY_underscore, 0x2287, +0x2286, 0x0338, 0x2288, +0x2287, 0x0338, 0x2289, +0x2291, 0x0338, 0x22E2, +0x2292, 0x0338, 0x22E3, +IBUS_KEY_uptack, IBUS_KEY_diaeresis, 0x2361, +IBUS_KEY_uptack, IBUS_KEY_macron, 0x2351, +IBUS_KEY_uptack, 0x2218, 0x2355, +IBUS_KEY_uptack, IBUS_KEY_downtack, 0x2336, +IBUS_KEY_downtack, IBUS_KEY_underscore, 0x234A, +IBUS_KEY_downtack, 0x2218, 0x234E, +IBUS_KEY_downtack, IBUS_KEY_uptack, 0x2336, +0x22A8, 0x0338, 0x22AD, +0x22A9, 0x0338, 0x22AE, +0x22AB, 0x0338, 0x22AF, +0x22B2, 0x0338, 0x22EA, +0x22B3, 0x0338, 0x22EB, +0x22B4, 0x0338, 0x22EC, +0x22B5, 0x0338, 0x22ED, +0x22C4, IBUS_KEY_underscore, 0x235A, +0x22C4, 0x2395, 0x233A, +0x2373, IBUS_KEY_underscore, 0x2378, +0x2375, IBUS_KEY_underscore, 0x2379, +0x237A, IBUS_KEY_underscore, 0x2376, +0x2395, IBUS_KEY_apostrophe, 0x235E, +0x2395, IBUS_KEY_slash, 0x2341, +0x2395, IBUS_KEY_colon, 0x2360, +0x2395, IBUS_KEY_less, 0x2343, +0x2395, IBUS_KEY_equal, 0x2338, +0x2395, IBUS_KEY_greater, 0x2344, +0x2395, IBUS_KEY_question, 0x2370, +0x2395, IBUS_KEY_backslash, 0x2342, +0x2395, IBUS_KEY_division, 0x2339, +0x2395, 0x2190, 0x2347, +0x2395, 0x2191, 0x2350, +0x2395, 0x2192, 0x2348, +0x2395, 0x2193, 0x2357, +0x2395, 0x2206, 0x234D, +0x2395, 0x2207, 0x2354, +0x2395, 0x2218, 0x233B, +0x2395, 0x2227, 0x2353, +0x2395, 0x2228, 0x234C, +0x2395, 0x2260, 0x236F, +0x2395, 0x22C4, 0x233A, +0x2395, IBUS_KEY_emopencircle, 0x233C, +IBUS_KEY_emopencircle, IBUS_KEY_asterisk, 0x235F, +IBUS_KEY_emopencircle, IBUS_KEY_minus, 0x2296, +IBUS_KEY_emopencircle, IBUS_KEY_period, 0x2299, +IBUS_KEY_emopencircle, IBUS_KEY_backslash, 0x2349, +IBUS_KEY_emopencircle, IBUS_KEY_underscore, 0x235C, +IBUS_KEY_emopencircle, IBUS_KEY_bar, 0x233D, +IBUS_KEY_emopencircle, IBUS_KEY_diaeresis, 0x2365, +IBUS_KEY_emopencircle, 0x2218, 0x233E, +IBUS_KEY_emopencircle, 0x2395, 0x233C, +0x2ADD, 0x0338, 0x2ADC, +IBUS_KEY_KP_Divide, IBUS_KEY_D, 0x0110, +IBUS_KEY_KP_Divide, IBUS_KEY_G, 0x01E4, +IBUS_KEY_KP_Divide, IBUS_KEY_H, 0x0126, +IBUS_KEY_KP_Divide, IBUS_KEY_I, 0x0197, +IBUS_KEY_KP_Divide, IBUS_KEY_L, 0x0141, +IBUS_KEY_KP_Divide, IBUS_KEY_O, 0x00D8, +IBUS_KEY_KP_Divide, IBUS_KEY_T, 0x0166, +IBUS_KEY_KP_Divide, IBUS_KEY_Z, 0x01B5, +IBUS_KEY_KP_Divide, IBUS_KEY_b, 0x0180, +IBUS_KEY_KP_Divide, IBUS_KEY_d, 0x0111, +IBUS_KEY_KP_Divide, IBUS_KEY_g, 0x01E5, +IBUS_KEY_KP_Divide, IBUS_KEY_h, 0x0127, +IBUS_KEY_KP_Divide, IBUS_KEY_i, 0x0268, +IBUS_KEY_KP_Divide, IBUS_KEY_l, 0x0142, +IBUS_KEY_KP_Divide, IBUS_KEY_o, 0x00F8, +IBUS_KEY_KP_Divide, IBUS_KEY_t, 0x0167, +IBUS_KEY_KP_Divide, IBUS_KEY_z, 0x01B6, +IBUS_KEY_KP_Divide, 0x0294, 0x02A1, +IBUS_KEY_KP_Divide, 0x04AE, 0x04B0, +IBUS_KEY_KP_Divide, 0x04AF, 0x04B1, +IBUS_KEY_KP_Divide, IBUS_KEY_Cyrillic_ghe, 0x0493, +IBUS_KEY_KP_Divide, IBUS_KEY_Cyrillic_ka, 0x049F, +IBUS_KEY_KP_Divide, IBUS_KEY_Cyrillic_GHE, 0x0492, +IBUS_KEY_KP_Divide, IBUS_KEY_Cyrillic_KA, 0x049E, +IBUS_KEY_KP_Divide, IBUS_KEY_leftarrow, 0x219A, +IBUS_KEY_KP_Divide, IBUS_KEY_rightarrow, 0x219B, +IBUS_KEY_KP_Divide, 0x2194, 0x21AE, +IBUS_KEY_KP_Equal, 0x0338, 0x2260, +IBUS_KEY_exclam, IBUS_KEY_plus, IBUS_KEY_O, 0x1EE2, +IBUS_KEY_exclam, IBUS_KEY_plus, IBUS_KEY_U, 0x1EF0, +IBUS_KEY_exclam, IBUS_KEY_plus, IBUS_KEY_o, 0x1EE3, +IBUS_KEY_exclam, IBUS_KEY_plus, IBUS_KEY_u, 0x1EF1, +IBUS_KEY_exclam, IBUS_KEY_dead_horn, IBUS_KEY_O, 0x1EE2, +IBUS_KEY_exclam, IBUS_KEY_dead_horn, IBUS_KEY_U, 0x1EF0, +IBUS_KEY_exclam, IBUS_KEY_dead_horn, IBUS_KEY_o, 0x1EE3, +IBUS_KEY_exclam, IBUS_KEY_dead_horn, IBUS_KEY_u, 0x1EF1, +IBUS_KEY_quotedbl, IBUS_KEY_apostrophe, IBUS_KEY_space, 0x0385, +IBUS_KEY_quotedbl, IBUS_KEY_apostrophe, IBUS_KEY_Greek_iota, 0x0390, +IBUS_KEY_quotedbl, IBUS_KEY_apostrophe, IBUS_KEY_Greek_upsilon, 0x03B0, +IBUS_KEY_quotedbl, IBUS_KEY_underscore, IBUS_KEY_U, 0x1E7A, +IBUS_KEY_quotedbl, IBUS_KEY_underscore, IBUS_KEY_u, 0x1E7B, +IBUS_KEY_quotedbl, IBUS_KEY_asciitilde, IBUS_KEY_O, 0x1E4E, +IBUS_KEY_quotedbl, IBUS_KEY_asciitilde, IBUS_KEY_o, 0x1E4F, +IBUS_KEY_quotedbl, IBUS_KEY_macron, IBUS_KEY_U, 0x1E7A, +IBUS_KEY_quotedbl, IBUS_KEY_macron, IBUS_KEY_u, 0x1E7B, +IBUS_KEY_quotedbl, IBUS_KEY_dead_tilde, IBUS_KEY_O, 0x1E4E, +IBUS_KEY_quotedbl, IBUS_KEY_dead_tilde, IBUS_KEY_o, 0x1E4F, +IBUS_KEY_quotedbl, IBUS_KEY_dead_macron, IBUS_KEY_U, 0x1E7A, +IBUS_KEY_quotedbl, IBUS_KEY_dead_macron, IBUS_KEY_u, 0x1E7B, +IBUS_KEY_apostrophe, IBUS_KEY_quotedbl, IBUS_KEY_space, 0x0385, +IBUS_KEY_apostrophe, IBUS_KEY_quotedbl, IBUS_KEY_I, 0x1E2E, +IBUS_KEY_apostrophe, IBUS_KEY_quotedbl, IBUS_KEY_U, 0x01D7, +IBUS_KEY_apostrophe, IBUS_KEY_quotedbl, IBUS_KEY_i, 0x1E2F, +IBUS_KEY_apostrophe, IBUS_KEY_quotedbl, IBUS_KEY_u, 0x01D8, +IBUS_KEY_apostrophe, IBUS_KEY_quotedbl, IBUS_KEY_Greek_iota, 0x0390, +IBUS_KEY_apostrophe, IBUS_KEY_quotedbl, IBUS_KEY_Greek_upsilon, 0x03B0, +IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F0D, +IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_EPSILON, 0x1F1D, +IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F2D, +IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_IOTA, 0x1F3D, +IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMICRON, 0x1F4D, +IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_UPSILON, 0x1F5D, +IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1F6D, +IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F05, +IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_epsilon, 0x1F15, +IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F25, +IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_iota, 0x1F35, +IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_omicron, 0x1F45, +IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_upsilon, 0x1F55, +IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1F65, +IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F0C, +IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_EPSILON, 0x1F1C, +IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F2C, +IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_IOTA, 0x1F3C, +IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_OMICRON, 0x1F4C, +IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1F6C, +IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F04, +IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_epsilon, 0x1F14, +IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F24, +IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_iota, 0x1F34, +IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_omicron, 0x1F44, +IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_upsilon, 0x1F54, +IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1F64, +IBUS_KEY_apostrophe, IBUS_KEY_plus, IBUS_KEY_O, 0x1EDA, +IBUS_KEY_apostrophe, IBUS_KEY_plus, IBUS_KEY_U, 0x1EE8, +IBUS_KEY_apostrophe, IBUS_KEY_plus, IBUS_KEY_o, 0x1EDB, +IBUS_KEY_apostrophe, IBUS_KEY_plus, IBUS_KEY_u, 0x1EE9, +IBUS_KEY_apostrophe, IBUS_KEY_slash, IBUS_KEY_O, 0x01FE, +IBUS_KEY_apostrophe, IBUS_KEY_slash, IBUS_KEY_o, 0x01FF, +IBUS_KEY_apostrophe, IBUS_KEY_asciicircum, IBUS_KEY_A, 0x1EA4, +IBUS_KEY_apostrophe, IBUS_KEY_asciicircum, IBUS_KEY_E, 0x1EBE, +IBUS_KEY_apostrophe, IBUS_KEY_asciicircum, IBUS_KEY_O, 0x1ED0, +IBUS_KEY_apostrophe, IBUS_KEY_asciicircum, IBUS_KEY_a, 0x1EA5, +IBUS_KEY_apostrophe, IBUS_KEY_asciicircum, IBUS_KEY_e, 0x1EBF, +IBUS_KEY_apostrophe, IBUS_KEY_asciicircum, IBUS_KEY_o, 0x1ED1, +IBUS_KEY_apostrophe, IBUS_KEY_underscore, IBUS_KEY_E, 0x1E16, +IBUS_KEY_apostrophe, IBUS_KEY_underscore, IBUS_KEY_O, 0x1E52, +IBUS_KEY_apostrophe, IBUS_KEY_underscore, IBUS_KEY_e, 0x1E17, +IBUS_KEY_apostrophe, IBUS_KEY_underscore, IBUS_KEY_o, 0x1E53, +IBUS_KEY_apostrophe, IBUS_KEY_b, IBUS_KEY_A, 0x1EAE, +IBUS_KEY_apostrophe, IBUS_KEY_b, IBUS_KEY_a, 0x1EAF, +IBUS_KEY_apostrophe, IBUS_KEY_asciitilde, IBUS_KEY_O, 0x1E4C, +IBUS_KEY_apostrophe, IBUS_KEY_asciitilde, IBUS_KEY_U, 0x1E78, +IBUS_KEY_apostrophe, IBUS_KEY_asciitilde, IBUS_KEY_o, 0x1E4D, +IBUS_KEY_apostrophe, IBUS_KEY_asciitilde, IBUS_KEY_u, 0x1E79, +IBUS_KEY_apostrophe, IBUS_KEY_macron, IBUS_KEY_E, 0x1E16, +IBUS_KEY_apostrophe, IBUS_KEY_macron, IBUS_KEY_O, 0x1E52, +IBUS_KEY_apostrophe, IBUS_KEY_macron, IBUS_KEY_e, 0x1E17, +IBUS_KEY_apostrophe, IBUS_KEY_macron, IBUS_KEY_o, 0x1E53, +IBUS_KEY_apostrophe, IBUS_KEY_cedilla, IBUS_KEY_C, 0x1E08, +IBUS_KEY_apostrophe, IBUS_KEY_cedilla, IBUS_KEY_c, 0x1E09, +IBUS_KEY_apostrophe, IBUS_KEY_dead_circumflex, IBUS_KEY_A, 0x1EA4, +IBUS_KEY_apostrophe, IBUS_KEY_dead_circumflex, IBUS_KEY_E, 0x1EBE, +IBUS_KEY_apostrophe, IBUS_KEY_dead_circumflex, IBUS_KEY_O, 0x1ED0, +IBUS_KEY_apostrophe, IBUS_KEY_dead_circumflex, IBUS_KEY_a, 0x1EA5, +IBUS_KEY_apostrophe, IBUS_KEY_dead_circumflex, IBUS_KEY_e, 0x1EBF, +IBUS_KEY_apostrophe, IBUS_KEY_dead_circumflex, IBUS_KEY_o, 0x1ED1, +IBUS_KEY_apostrophe, IBUS_KEY_dead_tilde, IBUS_KEY_O, 0x1E4C, +IBUS_KEY_apostrophe, IBUS_KEY_dead_tilde, IBUS_KEY_U, 0x1E78, +IBUS_KEY_apostrophe, IBUS_KEY_dead_tilde, IBUS_KEY_o, 0x1E4D, +IBUS_KEY_apostrophe, IBUS_KEY_dead_tilde, IBUS_KEY_u, 0x1E79, +IBUS_KEY_apostrophe, IBUS_KEY_dead_macron, IBUS_KEY_E, 0x1E16, +IBUS_KEY_apostrophe, IBUS_KEY_dead_macron, IBUS_KEY_O, 0x1E52, +IBUS_KEY_apostrophe, IBUS_KEY_dead_macron, IBUS_KEY_e, 0x1E17, +IBUS_KEY_apostrophe, IBUS_KEY_dead_macron, IBUS_KEY_o, 0x1E53, +IBUS_KEY_apostrophe, IBUS_KEY_dead_breve, IBUS_KEY_A, 0x1EAE, +IBUS_KEY_apostrophe, IBUS_KEY_dead_breve, IBUS_KEY_a, 0x1EAF, +IBUS_KEY_apostrophe, IBUS_KEY_dead_diaeresis, IBUS_KEY_I, 0x1E2E, +IBUS_KEY_apostrophe, IBUS_KEY_dead_diaeresis, IBUS_KEY_U, 0x01D7, +IBUS_KEY_apostrophe, IBUS_KEY_dead_diaeresis, IBUS_KEY_i, 0x1E2F, +IBUS_KEY_apostrophe, IBUS_KEY_dead_diaeresis, IBUS_KEY_u, 0x01D8, +IBUS_KEY_apostrophe, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_iota, 0x0390, +IBUS_KEY_apostrophe, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_upsilon, 0x03B0, +IBUS_KEY_apostrophe, IBUS_KEY_dead_abovering, IBUS_KEY_A, 0x01FA, +IBUS_KEY_apostrophe, IBUS_KEY_dead_abovering, IBUS_KEY_a, 0x01FB, +IBUS_KEY_apostrophe, IBUS_KEY_dead_cedilla, IBUS_KEY_C, 0x1E08, +IBUS_KEY_apostrophe, IBUS_KEY_dead_cedilla, IBUS_KEY_c, 0x1E09, +IBUS_KEY_apostrophe, IBUS_KEY_dead_horn, IBUS_KEY_O, 0x1EDA, +IBUS_KEY_apostrophe, IBUS_KEY_dead_horn, IBUS_KEY_U, 0x1EE8, +IBUS_KEY_apostrophe, IBUS_KEY_dead_horn, IBUS_KEY_o, 0x1EDB, +IBUS_KEY_apostrophe, IBUS_KEY_dead_horn, IBUS_KEY_u, 0x1EE9, +IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F0C, +IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_EPSILON, 0x1F1C, +IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F2C, +IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_IOTA, 0x1F3C, +IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMICRON, 0x1F4C, +IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1F6C, +IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F04, +IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_epsilon, 0x1F14, +IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F24, +IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_iota, 0x1F34, +IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omicron, 0x1F44, +IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_upsilon, 0x1F54, +IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1F64, +IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F0D, +IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_EPSILON, 0x1F1D, +IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F2D, +IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_IOTA, 0x1F3D, +IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMICRON, 0x1F4D, +IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_UPSILON, 0x1F5D, +IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1F6D, +IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F05, +IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_epsilon, 0x1F15, +IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F25, +IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_iota, 0x1F35, +IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omicron, 0x1F45, +IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_upsilon, 0x1F55, +IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1F65, +IBUS_KEY_apostrophe, IBUS_KEY_KP_Divide, IBUS_KEY_O, 0x01FE, +IBUS_KEY_apostrophe, IBUS_KEY_KP_Divide, IBUS_KEY_o, 0x01FF, +IBUS_KEY_parenleft, IBUS_KEY_0, IBUS_KEY_parenright, 0x24EA, +IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_parenright, 0x2460, +IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_parenright, 0x2461, +IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_parenright, 0x2462, +IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_parenright, 0x2463, +IBUS_KEY_parenleft, IBUS_KEY_5, IBUS_KEY_parenright, 0x2464, +IBUS_KEY_parenleft, IBUS_KEY_6, IBUS_KEY_parenright, 0x2465, +IBUS_KEY_parenleft, IBUS_KEY_7, IBUS_KEY_parenright, 0x2466, +IBUS_KEY_parenleft, IBUS_KEY_8, IBUS_KEY_parenright, 0x2467, +IBUS_KEY_parenleft, IBUS_KEY_9, IBUS_KEY_parenright, 0x2468, +IBUS_KEY_parenleft, IBUS_KEY_A, IBUS_KEY_parenright, 0x24B6, +IBUS_KEY_parenleft, IBUS_KEY_B, IBUS_KEY_parenright, 0x24B7, +IBUS_KEY_parenleft, IBUS_KEY_C, IBUS_KEY_parenright, 0x24B8, +IBUS_KEY_parenleft, IBUS_KEY_D, IBUS_KEY_parenright, 0x24B9, +IBUS_KEY_parenleft, IBUS_KEY_E, IBUS_KEY_parenright, 0x24BA, +IBUS_KEY_parenleft, IBUS_KEY_F, IBUS_KEY_parenright, 0x24BB, +IBUS_KEY_parenleft, IBUS_KEY_G, IBUS_KEY_parenright, 0x24BC, +IBUS_KEY_parenleft, IBUS_KEY_H, IBUS_KEY_parenright, 0x24BD, +IBUS_KEY_parenleft, IBUS_KEY_I, IBUS_KEY_parenright, 0x24BE, +IBUS_KEY_parenleft, IBUS_KEY_J, IBUS_KEY_parenright, 0x24BF, +IBUS_KEY_parenleft, IBUS_KEY_K, IBUS_KEY_parenright, 0x24C0, +IBUS_KEY_parenleft, IBUS_KEY_L, IBUS_KEY_parenright, 0x24C1, +IBUS_KEY_parenleft, IBUS_KEY_M, IBUS_KEY_parenright, 0x24C2, +IBUS_KEY_parenleft, IBUS_KEY_N, IBUS_KEY_parenright, 0x24C3, +IBUS_KEY_parenleft, IBUS_KEY_O, IBUS_KEY_parenright, 0x24C4, +IBUS_KEY_parenleft, IBUS_KEY_P, IBUS_KEY_parenright, 0x24C5, +IBUS_KEY_parenleft, IBUS_KEY_Q, IBUS_KEY_parenright, 0x24C6, +IBUS_KEY_parenleft, IBUS_KEY_R, IBUS_KEY_parenright, 0x24C7, +IBUS_KEY_parenleft, IBUS_KEY_S, IBUS_KEY_parenright, 0x24C8, +IBUS_KEY_parenleft, IBUS_KEY_T, IBUS_KEY_parenright, 0x24C9, +IBUS_KEY_parenleft, IBUS_KEY_U, IBUS_KEY_parenright, 0x24CA, +IBUS_KEY_parenleft, IBUS_KEY_V, IBUS_KEY_parenright, 0x24CB, +IBUS_KEY_parenleft, IBUS_KEY_W, IBUS_KEY_parenright, 0x24CC, +IBUS_KEY_parenleft, IBUS_KEY_X, IBUS_KEY_parenright, 0x24CD, +IBUS_KEY_parenleft, IBUS_KEY_Y, IBUS_KEY_parenright, 0x24CE, +IBUS_KEY_parenleft, IBUS_KEY_Z, IBUS_KEY_parenright, 0x24CF, +IBUS_KEY_parenleft, IBUS_KEY_a, IBUS_KEY_parenright, 0x24D0, +IBUS_KEY_parenleft, IBUS_KEY_b, IBUS_KEY_parenright, 0x24D1, +IBUS_KEY_parenleft, IBUS_KEY_c, IBUS_KEY_parenright, 0x24D2, +IBUS_KEY_parenleft, IBUS_KEY_d, IBUS_KEY_parenright, 0x24D3, +IBUS_KEY_parenleft, IBUS_KEY_e, IBUS_KEY_parenright, 0x24D4, +IBUS_KEY_parenleft, IBUS_KEY_f, IBUS_KEY_parenright, 0x24D5, +IBUS_KEY_parenleft, IBUS_KEY_g, IBUS_KEY_parenright, 0x24D6, +IBUS_KEY_parenleft, IBUS_KEY_h, IBUS_KEY_parenright, 0x24D7, +IBUS_KEY_parenleft, IBUS_KEY_i, IBUS_KEY_parenright, 0x24D8, +IBUS_KEY_parenleft, IBUS_KEY_j, IBUS_KEY_parenright, 0x24D9, +IBUS_KEY_parenleft, IBUS_KEY_k, IBUS_KEY_parenright, 0x24DA, +IBUS_KEY_parenleft, IBUS_KEY_l, IBUS_KEY_parenright, 0x24DB, +IBUS_KEY_parenleft, IBUS_KEY_m, IBUS_KEY_parenright, 0x24DC, +IBUS_KEY_parenleft, IBUS_KEY_n, IBUS_KEY_parenright, 0x24DD, +IBUS_KEY_parenleft, IBUS_KEY_o, IBUS_KEY_parenright, 0x24DE, +IBUS_KEY_parenleft, IBUS_KEY_p, IBUS_KEY_parenright, 0x24DF, +IBUS_KEY_parenleft, IBUS_KEY_q, IBUS_KEY_parenright, 0x24E0, +IBUS_KEY_parenleft, IBUS_KEY_r, IBUS_KEY_parenright, 0x24E1, +IBUS_KEY_parenleft, IBUS_KEY_s, IBUS_KEY_parenright, 0x24E2, +IBUS_KEY_parenleft, IBUS_KEY_t, IBUS_KEY_parenright, 0x24E3, +IBUS_KEY_parenleft, IBUS_KEY_u, IBUS_KEY_parenright, 0x24E4, +IBUS_KEY_parenleft, IBUS_KEY_v, IBUS_KEY_parenright, 0x24E5, +IBUS_KEY_parenleft, IBUS_KEY_w, IBUS_KEY_parenright, 0x24E6, +IBUS_KEY_parenleft, IBUS_KEY_x, IBUS_KEY_parenright, 0x24E7, +IBUS_KEY_parenleft, IBUS_KEY_y, IBUS_KEY_parenright, 0x24E8, +IBUS_KEY_parenleft, IBUS_KEY_z, IBUS_KEY_parenright, 0x24E9, +IBUS_KEY_parenleft, IBUS_KEY_kana_WO, IBUS_KEY_parenright, 0x32FE, +IBUS_KEY_parenleft, IBUS_KEY_kana_A, IBUS_KEY_parenright, 0x32D0, +IBUS_KEY_parenleft, IBUS_KEY_kana_I, IBUS_KEY_parenright, 0x32D1, +IBUS_KEY_parenleft, IBUS_KEY_kana_U, IBUS_KEY_parenright, 0x32D2, +IBUS_KEY_parenleft, IBUS_KEY_kana_E, IBUS_KEY_parenright, 0x32D3, +IBUS_KEY_parenleft, IBUS_KEY_kana_O, IBUS_KEY_parenright, 0x32D4, +IBUS_KEY_parenleft, IBUS_KEY_kana_KA, IBUS_KEY_parenright, 0x32D5, +IBUS_KEY_parenleft, IBUS_KEY_kana_KI, IBUS_KEY_parenright, 0x32D6, +IBUS_KEY_parenleft, IBUS_KEY_kana_KU, IBUS_KEY_parenright, 0x32D7, +IBUS_KEY_parenleft, IBUS_KEY_kana_KE, IBUS_KEY_parenright, 0x32D8, +IBUS_KEY_parenleft, IBUS_KEY_kana_KO, IBUS_KEY_parenright, 0x32D9, +IBUS_KEY_parenleft, IBUS_KEY_kana_SA, IBUS_KEY_parenright, 0x32DA, +IBUS_KEY_parenleft, IBUS_KEY_kana_SHI, IBUS_KEY_parenright, 0x32DB, +IBUS_KEY_parenleft, IBUS_KEY_kana_SU, IBUS_KEY_parenright, 0x32DC, +IBUS_KEY_parenleft, IBUS_KEY_kana_SE, IBUS_KEY_parenright, 0x32DD, +IBUS_KEY_parenleft, IBUS_KEY_kana_SO, IBUS_KEY_parenright, 0x32DE, +IBUS_KEY_parenleft, IBUS_KEY_kana_TA, IBUS_KEY_parenright, 0x32DF, +IBUS_KEY_parenleft, IBUS_KEY_kana_CHI, IBUS_KEY_parenright, 0x32E0, +IBUS_KEY_parenleft, IBUS_KEY_kana_TSU, IBUS_KEY_parenright, 0x32E1, +IBUS_KEY_parenleft, IBUS_KEY_kana_TE, IBUS_KEY_parenright, 0x32E2, +IBUS_KEY_parenleft, IBUS_KEY_kana_TO, IBUS_KEY_parenright, 0x32E3, +IBUS_KEY_parenleft, IBUS_KEY_kana_NA, IBUS_KEY_parenright, 0x32E4, +IBUS_KEY_parenleft, IBUS_KEY_kana_NI, IBUS_KEY_parenright, 0x32E5, +IBUS_KEY_parenleft, IBUS_KEY_kana_NU, IBUS_KEY_parenright, 0x32E6, +IBUS_KEY_parenleft, IBUS_KEY_kana_NE, IBUS_KEY_parenright, 0x32E7, +IBUS_KEY_parenleft, IBUS_KEY_kana_NO, IBUS_KEY_parenright, 0x32E8, +IBUS_KEY_parenleft, IBUS_KEY_kana_HA, IBUS_KEY_parenright, 0x32E9, +IBUS_KEY_parenleft, IBUS_KEY_kana_HI, IBUS_KEY_parenright, 0x32EA, +IBUS_KEY_parenleft, IBUS_KEY_kana_FU, IBUS_KEY_parenright, 0x32EB, +IBUS_KEY_parenleft, IBUS_KEY_kana_HE, IBUS_KEY_parenright, 0x32EC, +IBUS_KEY_parenleft, IBUS_KEY_kana_HO, IBUS_KEY_parenright, 0x32ED, +IBUS_KEY_parenleft, IBUS_KEY_kana_MA, IBUS_KEY_parenright, 0x32EE, +IBUS_KEY_parenleft, IBUS_KEY_kana_MI, IBUS_KEY_parenright, 0x32EF, +IBUS_KEY_parenleft, IBUS_KEY_kana_MU, IBUS_KEY_parenright, 0x32F0, +IBUS_KEY_parenleft, IBUS_KEY_kana_ME, IBUS_KEY_parenright, 0x32F1, +IBUS_KEY_parenleft, IBUS_KEY_kana_MO, IBUS_KEY_parenright, 0x32F2, +IBUS_KEY_parenleft, IBUS_KEY_kana_YA, IBUS_KEY_parenright, 0x32F3, +IBUS_KEY_parenleft, IBUS_KEY_kana_YU, IBUS_KEY_parenright, 0x32F4, +IBUS_KEY_parenleft, IBUS_KEY_kana_YO, IBUS_KEY_parenright, 0x32F5, +IBUS_KEY_parenleft, IBUS_KEY_kana_RA, IBUS_KEY_parenright, 0x32F6, +IBUS_KEY_parenleft, IBUS_KEY_kana_RI, IBUS_KEY_parenright, 0x32F7, +IBUS_KEY_parenleft, IBUS_KEY_kana_RU, IBUS_KEY_parenright, 0x32F8, +IBUS_KEY_parenleft, IBUS_KEY_kana_RE, IBUS_KEY_parenright, 0x32F9, +IBUS_KEY_parenleft, IBUS_KEY_kana_RO, IBUS_KEY_parenright, 0x32FA, +IBUS_KEY_parenleft, IBUS_KEY_kana_WA, IBUS_KEY_parenright, 0x32FB, +IBUS_KEY_parenleft, 0x1100, IBUS_KEY_parenright, 0x3260, +IBUS_KEY_parenleft, 0x1102, IBUS_KEY_parenright, 0x3261, +IBUS_KEY_parenleft, 0x1103, IBUS_KEY_parenright, 0x3262, +IBUS_KEY_parenleft, 0x1105, IBUS_KEY_parenright, 0x3263, +IBUS_KEY_parenleft, 0x1106, IBUS_KEY_parenright, 0x3264, +IBUS_KEY_parenleft, 0x1107, IBUS_KEY_parenright, 0x3265, +IBUS_KEY_parenleft, 0x1109, IBUS_KEY_parenright, 0x3266, +IBUS_KEY_parenleft, 0x110B, IBUS_KEY_parenright, 0x3267, +IBUS_KEY_parenleft, 0x110C, IBUS_KEY_parenright, 0x3268, +IBUS_KEY_parenleft, 0x110E, IBUS_KEY_parenright, 0x3269, +IBUS_KEY_parenleft, 0x110F, IBUS_KEY_parenright, 0x326A, +IBUS_KEY_parenleft, 0x1110, IBUS_KEY_parenright, 0x326B, +IBUS_KEY_parenleft, 0x1111, IBUS_KEY_parenright, 0x326C, +IBUS_KEY_parenleft, 0x1112, IBUS_KEY_parenright, 0x326D, +IBUS_KEY_parenleft, 0x30F0, IBUS_KEY_parenright, 0x32FC, +IBUS_KEY_parenleft, 0x30F1, IBUS_KEY_parenright, 0x32FD, +IBUS_KEY_parenleft, 0x4E00, IBUS_KEY_parenright, 0x3280, +IBUS_KEY_parenleft, 0x4E03, IBUS_KEY_parenright, 0x3286, +IBUS_KEY_parenleft, 0x4E09, IBUS_KEY_parenright, 0x3282, +IBUS_KEY_parenleft, 0x4E0A, IBUS_KEY_parenright, 0x32A4, +IBUS_KEY_parenleft, 0x4E0B, IBUS_KEY_parenright, 0x32A6, +IBUS_KEY_parenleft, 0x4E2D, IBUS_KEY_parenright, 0x32A5, +IBUS_KEY_parenleft, 0x4E5D, IBUS_KEY_parenright, 0x3288, +IBUS_KEY_parenleft, 0x4E8C, IBUS_KEY_parenright, 0x3281, +IBUS_KEY_parenleft, 0x4E94, IBUS_KEY_parenright, 0x3284, +IBUS_KEY_parenleft, 0x4F01, IBUS_KEY_parenright, 0x32AD, +IBUS_KEY_parenleft, 0x4F11, IBUS_KEY_parenright, 0x32A1, +IBUS_KEY_parenleft, 0x512A, IBUS_KEY_parenright, 0x329D, +IBUS_KEY_parenleft, 0x516B, IBUS_KEY_parenright, 0x3287, +IBUS_KEY_parenleft, 0x516D, IBUS_KEY_parenright, 0x3285, +IBUS_KEY_parenleft, 0x5199, IBUS_KEY_parenright, 0x32A2, +IBUS_KEY_parenleft, 0x52B4, IBUS_KEY_parenright, 0x3298, +IBUS_KEY_parenleft, 0x533B, IBUS_KEY_parenright, 0x32A9, +IBUS_KEY_parenleft, 0x5341, IBUS_KEY_parenright, 0x3289, +IBUS_KEY_parenleft, 0x5354, IBUS_KEY_parenright, 0x32AF, +IBUS_KEY_parenleft, 0x5370, IBUS_KEY_parenright, 0x329E, +IBUS_KEY_parenleft, 0x53F3, IBUS_KEY_parenright, 0x32A8, +IBUS_KEY_parenleft, 0x540D, IBUS_KEY_parenright, 0x3294, +IBUS_KEY_parenleft, 0x56DB, IBUS_KEY_parenright, 0x3283, +IBUS_KEY_parenleft, 0x571F, IBUS_KEY_parenright, 0x328F, +IBUS_KEY_parenleft, 0x591C, IBUS_KEY_parenright, 0x32B0, +IBUS_KEY_parenleft, 0x5973, IBUS_KEY_parenright, 0x329B, +IBUS_KEY_parenleft, 0x5B66, IBUS_KEY_parenright, 0x32AB, +IBUS_KEY_parenleft, 0x5B97, IBUS_KEY_parenright, 0x32AA, +IBUS_KEY_parenleft, 0x5DE6, IBUS_KEY_parenright, 0x32A7, +IBUS_KEY_parenleft, 0x65E5, IBUS_KEY_parenright, 0x3290, +IBUS_KEY_parenleft, 0x6708, IBUS_KEY_parenright, 0x328A, +IBUS_KEY_parenleft, 0x6709, IBUS_KEY_parenright, 0x3292, +IBUS_KEY_parenleft, 0x6728, IBUS_KEY_parenright, 0x328D, +IBUS_KEY_parenleft, 0x682A, IBUS_KEY_parenright, 0x3291, +IBUS_KEY_parenleft, 0x6B63, IBUS_KEY_parenright, 0x32A3, +IBUS_KEY_parenleft, 0x6C34, IBUS_KEY_parenright, 0x328C, +IBUS_KEY_parenleft, 0x6CE8, IBUS_KEY_parenright, 0x329F, +IBUS_KEY_parenleft, 0x706B, IBUS_KEY_parenright, 0x328B, +IBUS_KEY_parenleft, 0x7279, IBUS_KEY_parenright, 0x3295, +IBUS_KEY_parenleft, 0x7537, IBUS_KEY_parenright, 0x329A, +IBUS_KEY_parenleft, 0x76E3, IBUS_KEY_parenright, 0x32AC, +IBUS_KEY_parenleft, 0x793E, IBUS_KEY_parenright, 0x3293, +IBUS_KEY_parenleft, 0x795D, IBUS_KEY_parenright, 0x3297, +IBUS_KEY_parenleft, 0x79D8, IBUS_KEY_parenright, 0x3299, +IBUS_KEY_parenleft, 0x8CA1, IBUS_KEY_parenright, 0x3296, +IBUS_KEY_parenleft, 0x8CC7, IBUS_KEY_parenright, 0x32AE, +IBUS_KEY_parenleft, 0x9069, IBUS_KEY_parenright, 0x329C, +IBUS_KEY_parenleft, 0x91D1, IBUS_KEY_parenright, 0x328E, +IBUS_KEY_parenleft, 0x9805, IBUS_KEY_parenright, 0x32A0, +IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_parenright, 0x2461, +IBUS_KEY_parenleft, IBUS_KEY_KP_0, IBUS_KEY_parenright, 0x24EA, +IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_parenright, 0x2460, +IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_parenright, 0x2461, +IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_parenright, 0x2462, +IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_parenright, 0x2463, +IBUS_KEY_parenleft, IBUS_KEY_KP_5, IBUS_KEY_parenright, 0x2464, +IBUS_KEY_parenleft, IBUS_KEY_KP_6, IBUS_KEY_parenright, 0x2465, +IBUS_KEY_parenleft, IBUS_KEY_KP_7, IBUS_KEY_parenright, 0x2466, +IBUS_KEY_parenleft, IBUS_KEY_KP_8, IBUS_KEY_parenright, 0x2467, +IBUS_KEY_parenleft, IBUS_KEY_KP_9, IBUS_KEY_parenright, 0x2468, +IBUS_KEY_asterisk, IBUS_KEY_apostrophe, IBUS_KEY_A, 0x01FA, +IBUS_KEY_asterisk, IBUS_KEY_apostrophe, IBUS_KEY_a, 0x01FB, +IBUS_KEY_minus, IBUS_KEY_minus, IBUS_KEY_space, 0x00AD, +IBUS_KEY_minus, IBUS_KEY_minus, IBUS_KEY_minus, 0x2014, +IBUS_KEY_minus, IBUS_KEY_minus, IBUS_KEY_period, 0x2013, +IBUS_KEY_period, IBUS_KEY_exclam, IBUS_KEY_S, 0x1E68, +IBUS_KEY_period, IBUS_KEY_exclam, IBUS_KEY_s, 0x1E69, +IBUS_KEY_period, IBUS_KEY_apostrophe, IBUS_KEY_S, 0x1E64, +IBUS_KEY_period, IBUS_KEY_apostrophe, IBUS_KEY_s, 0x1E65, +IBUS_KEY_period, IBUS_KEY_acute, IBUS_KEY_S, 0x1E64, +IBUS_KEY_period, IBUS_KEY_acute, IBUS_KEY_s, 0x1E65, +IBUS_KEY_period, IBUS_KEY_dead_acute, IBUS_KEY_S, 0x1E64, +IBUS_KEY_period, IBUS_KEY_dead_acute, IBUS_KEY_s, 0x1E65, +IBUS_KEY_period, IBUS_KEY_dead_caron, IBUS_KEY_S, 0x1E66, +IBUS_KEY_period, IBUS_KEY_dead_caron, IBUS_KEY_s, 0x1E67, +IBUS_KEY_period, IBUS_KEY_dead_belowdot, IBUS_KEY_S, 0x1E68, +IBUS_KEY_period, IBUS_KEY_dead_belowdot, IBUS_KEY_s, 0x1E69, +IBUS_KEY_1, IBUS_KEY_1, IBUS_KEY_0, 0x2152, +IBUS_KEY_question, IBUS_KEY_plus, IBUS_KEY_O, 0x1EDE, +IBUS_KEY_question, IBUS_KEY_plus, IBUS_KEY_U, 0x1EEC, +IBUS_KEY_question, IBUS_KEY_plus, IBUS_KEY_o, 0x1EDF, +IBUS_KEY_question, IBUS_KEY_plus, IBUS_KEY_u, 0x1EED, +IBUS_KEY_question, IBUS_KEY_asciicircum, IBUS_KEY_A, 0x1EA8, +IBUS_KEY_question, IBUS_KEY_asciicircum, IBUS_KEY_E, 0x1EC2, +IBUS_KEY_question, IBUS_KEY_asciicircum, IBUS_KEY_O, 0x1ED4, +IBUS_KEY_question, IBUS_KEY_asciicircum, IBUS_KEY_a, 0x1EA9, +IBUS_KEY_question, IBUS_KEY_asciicircum, IBUS_KEY_e, 0x1EC3, +IBUS_KEY_question, IBUS_KEY_asciicircum, IBUS_KEY_o, 0x1ED5, +IBUS_KEY_question, IBUS_KEY_b, IBUS_KEY_A, 0x1EB2, +IBUS_KEY_question, IBUS_KEY_b, IBUS_KEY_a, 0x1EB3, +IBUS_KEY_question, IBUS_KEY_dead_circumflex, IBUS_KEY_A, 0x1EA8, +IBUS_KEY_question, IBUS_KEY_dead_circumflex, IBUS_KEY_E, 0x1EC2, +IBUS_KEY_question, IBUS_KEY_dead_circumflex, IBUS_KEY_O, 0x1ED4, +IBUS_KEY_question, IBUS_KEY_dead_circumflex, IBUS_KEY_a, 0x1EA9, +IBUS_KEY_question, IBUS_KEY_dead_circumflex, IBUS_KEY_e, 0x1EC3, +IBUS_KEY_question, IBUS_KEY_dead_circumflex, IBUS_KEY_o, 0x1ED5, +IBUS_KEY_question, IBUS_KEY_dead_breve, IBUS_KEY_A, 0x1EB2, +IBUS_KEY_question, IBUS_KEY_dead_breve, IBUS_KEY_a, 0x1EB3, +IBUS_KEY_question, IBUS_KEY_dead_horn, IBUS_KEY_O, 0x1EDE, +IBUS_KEY_question, IBUS_KEY_dead_horn, IBUS_KEY_U, 0x1EEC, +IBUS_KEY_question, IBUS_KEY_dead_horn, IBUS_KEY_o, 0x1EDF, +IBUS_KEY_question, IBUS_KEY_dead_horn, IBUS_KEY_u, 0x1EED, +IBUS_KEY_U, IBUS_KEY_exclam, IBUS_KEY_A, 0x1EB6, +IBUS_KEY_U, IBUS_KEY_exclam, IBUS_KEY_a, 0x1EB7, +IBUS_KEY_U, IBUS_KEY_cedilla, IBUS_KEY_E, 0x1E1C, +IBUS_KEY_U, IBUS_KEY_cedilla, IBUS_KEY_e, 0x1E1D, +IBUS_KEY_U, IBUS_KEY_dead_cedilla, IBUS_KEY_E, 0x1E1C, +IBUS_KEY_U, IBUS_KEY_dead_cedilla, IBUS_KEY_e, 0x1E1D, +IBUS_KEY_U, IBUS_KEY_dead_belowdot, IBUS_KEY_A, 0x1EB6, +IBUS_KEY_U, IBUS_KEY_dead_belowdot, IBUS_KEY_a, 0x1EB7, +IBUS_KEY_asciicircum, IBUS_KEY_exclam, IBUS_KEY_A, 0x1EAC, +IBUS_KEY_asciicircum, IBUS_KEY_exclam, IBUS_KEY_E, 0x1EC6, +IBUS_KEY_asciicircum, IBUS_KEY_exclam, IBUS_KEY_O, 0x1ED8, +IBUS_KEY_asciicircum, IBUS_KEY_exclam, IBUS_KEY_a, 0x1EAD, +IBUS_KEY_asciicircum, IBUS_KEY_exclam, IBUS_KEY_e, 0x1EC7, +IBUS_KEY_asciicircum, IBUS_KEY_exclam, IBUS_KEY_o, 0x1ED9, +IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_a, 0x00AA, +IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_h, 0x02B0, +IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_i, 0x2071, +IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_j, 0x02B2, +IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_l, 0x02E1, +IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_n, 0x207F, +IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_o, 0x00BA, +IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_r, 0x02B3, +IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_s, 0x02E2, +IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_w, 0x02B7, +IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_x, 0x02E3, +IBUS_KEY_asciicircum, IBUS_KEY_underscore, IBUS_KEY_y, 0x02B8, +IBUS_KEY_asciicircum, IBUS_KEY_underscore, 0x0263, 0x02E0, +IBUS_KEY_asciicircum, IBUS_KEY_underscore, 0x0266, 0x02B1, +IBUS_KEY_asciicircum, IBUS_KEY_underscore, 0x0279, 0x02B4, +IBUS_KEY_asciicircum, IBUS_KEY_underscore, 0x027B, 0x02B5, +IBUS_KEY_asciicircum, IBUS_KEY_underscore, 0x0281, 0x02B6, +IBUS_KEY_asciicircum, IBUS_KEY_underscore, 0x0295, 0x02E4, +IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_a, 0x00AA, +IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_h, 0x02B0, +IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_i, 0x2071, +IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_j, 0x02B2, +IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_l, 0x02E1, +IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_n, 0x207F, +IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_o, 0x00BA, +IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_r, 0x02B3, +IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_s, 0x02E2, +IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_w, 0x02B7, +IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_x, 0x02E3, +IBUS_KEY_asciicircum, IBUS_KEY_underbar, IBUS_KEY_y, 0x02B8, +IBUS_KEY_asciicircum, IBUS_KEY_underbar, 0x0263, 0x02E0, +IBUS_KEY_asciicircum, IBUS_KEY_underbar, 0x0266, 0x02B1, +IBUS_KEY_asciicircum, IBUS_KEY_underbar, 0x0279, 0x02B4, +IBUS_KEY_asciicircum, IBUS_KEY_underbar, 0x027B, 0x02B5, +IBUS_KEY_asciicircum, IBUS_KEY_underbar, 0x0281, 0x02B6, +IBUS_KEY_asciicircum, IBUS_KEY_underbar, 0x0295, 0x02E4, +IBUS_KEY_asciicircum, IBUS_KEY_dead_belowdot, IBUS_KEY_A, 0x1EAC, +IBUS_KEY_asciicircum, IBUS_KEY_dead_belowdot, IBUS_KEY_E, 0x1EC6, +IBUS_KEY_asciicircum, IBUS_KEY_dead_belowdot, IBUS_KEY_O, 0x1ED8, +IBUS_KEY_asciicircum, IBUS_KEY_dead_belowdot, IBUS_KEY_a, 0x1EAD, +IBUS_KEY_asciicircum, IBUS_KEY_dead_belowdot, IBUS_KEY_e, 0x1EC7, +IBUS_KEY_asciicircum, IBUS_KEY_dead_belowdot, IBUS_KEY_o, 0x1ED9, +IBUS_KEY_underscore, IBUS_KEY_exclam, IBUS_KEY_L, 0x1E38, +IBUS_KEY_underscore, IBUS_KEY_exclam, IBUS_KEY_R, 0x1E5C, +IBUS_KEY_underscore, IBUS_KEY_exclam, IBUS_KEY_l, 0x1E39, +IBUS_KEY_underscore, IBUS_KEY_exclam, IBUS_KEY_r, 0x1E5D, +IBUS_KEY_underscore, IBUS_KEY_quotedbl, IBUS_KEY_A, 0x01DE, +IBUS_KEY_underscore, IBUS_KEY_quotedbl, IBUS_KEY_O, 0x022A, +IBUS_KEY_underscore, IBUS_KEY_quotedbl, IBUS_KEY_U, 0x01D5, +IBUS_KEY_underscore, IBUS_KEY_quotedbl, IBUS_KEY_a, 0x01DF, +IBUS_KEY_underscore, IBUS_KEY_quotedbl, IBUS_KEY_o, 0x022B, +IBUS_KEY_underscore, IBUS_KEY_quotedbl, IBUS_KEY_u, 0x01D6, +IBUS_KEY_underscore, IBUS_KEY_period, IBUS_KEY_A, 0x01E0, +IBUS_KEY_underscore, IBUS_KEY_period, IBUS_KEY_O, 0x0230, +IBUS_KEY_underscore, IBUS_KEY_period, IBUS_KEY_a, 0x01E1, +IBUS_KEY_underscore, IBUS_KEY_period, IBUS_KEY_o, 0x0231, +IBUS_KEY_underscore, IBUS_KEY_semicolon, IBUS_KEY_O, 0x01EC, +IBUS_KEY_underscore, IBUS_KEY_semicolon, IBUS_KEY_o, 0x01ED, +IBUS_KEY_underscore, IBUS_KEY_asciitilde, IBUS_KEY_O, 0x022C, +IBUS_KEY_underscore, IBUS_KEY_asciitilde, IBUS_KEY_o, 0x022D, +IBUS_KEY_underscore, IBUS_KEY_dead_tilde, IBUS_KEY_O, 0x022C, +IBUS_KEY_underscore, IBUS_KEY_dead_tilde, IBUS_KEY_o, 0x022D, +IBUS_KEY_underscore, IBUS_KEY_dead_abovedot, IBUS_KEY_A, 0x01E0, +IBUS_KEY_underscore, IBUS_KEY_dead_abovedot, IBUS_KEY_O, 0x0230, +IBUS_KEY_underscore, IBUS_KEY_dead_abovedot, IBUS_KEY_a, 0x01E1, +IBUS_KEY_underscore, IBUS_KEY_dead_abovedot, IBUS_KEY_o, 0x0231, +IBUS_KEY_underscore, IBUS_KEY_dead_diaeresis, IBUS_KEY_A, 0x01DE, +IBUS_KEY_underscore, IBUS_KEY_dead_diaeresis, IBUS_KEY_O, 0x022A, +IBUS_KEY_underscore, IBUS_KEY_dead_diaeresis, IBUS_KEY_U, 0x01D5, +IBUS_KEY_underscore, IBUS_KEY_dead_diaeresis, IBUS_KEY_a, 0x01DF, +IBUS_KEY_underscore, IBUS_KEY_dead_diaeresis, IBUS_KEY_o, 0x022B, +IBUS_KEY_underscore, IBUS_KEY_dead_diaeresis, IBUS_KEY_u, 0x01D6, +IBUS_KEY_underscore, IBUS_KEY_dead_ogonek, IBUS_KEY_O, 0x01EC, +IBUS_KEY_underscore, IBUS_KEY_dead_ogonek, IBUS_KEY_o, 0x01ED, +IBUS_KEY_underscore, IBUS_KEY_dead_belowdot, IBUS_KEY_L, 0x1E38, +IBUS_KEY_underscore, IBUS_KEY_dead_belowdot, IBUS_KEY_R, 0x1E5C, +IBUS_KEY_underscore, IBUS_KEY_dead_belowdot, IBUS_KEY_l, 0x1E39, +IBUS_KEY_underscore, IBUS_KEY_dead_belowdot, IBUS_KEY_r, 0x1E5D, +IBUS_KEY_grave, IBUS_KEY_quotedbl, IBUS_KEY_U, 0x01DB, +IBUS_KEY_grave, IBUS_KEY_quotedbl, IBUS_KEY_u, 0x01DC, +IBUS_KEY_grave, IBUS_KEY_quotedbl, IBUS_KEY_Greek_iota, 0x1FD2, +IBUS_KEY_grave, IBUS_KEY_quotedbl, IBUS_KEY_Greek_upsilon, 0x1FE2, +IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F0B, +IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_EPSILON, 0x1F1B, +IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F2B, +IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_IOTA, 0x1F3B, +IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMICRON, 0x1F4B, +IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_UPSILON, 0x1F5B, +IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1F6B, +IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F03, +IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_epsilon, 0x1F13, +IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F23, +IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_iota, 0x1F33, +IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_omicron, 0x1F43, +IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_upsilon, 0x1F53, +IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1F63, +IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F0A, +IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_EPSILON, 0x1F1A, +IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F2A, +IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_IOTA, 0x1F3A, +IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_OMICRON, 0x1F4A, +IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1F6A, +IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F02, +IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_epsilon, 0x1F12, +IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F22, +IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_iota, 0x1F32, +IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_omicron, 0x1F42, +IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_upsilon, 0x1F52, +IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1F62, +IBUS_KEY_grave, IBUS_KEY_plus, IBUS_KEY_O, 0x1EDC, +IBUS_KEY_grave, IBUS_KEY_plus, IBUS_KEY_U, 0x1EEA, +IBUS_KEY_grave, IBUS_KEY_plus, IBUS_KEY_o, 0x1EDD, +IBUS_KEY_grave, IBUS_KEY_plus, IBUS_KEY_u, 0x1EEB, +IBUS_KEY_grave, IBUS_KEY_asciicircum, IBUS_KEY_A, 0x1EA6, +IBUS_KEY_grave, IBUS_KEY_asciicircum, IBUS_KEY_E, 0x1EC0, +IBUS_KEY_grave, IBUS_KEY_asciicircum, IBUS_KEY_O, 0x1ED2, +IBUS_KEY_grave, IBUS_KEY_asciicircum, IBUS_KEY_a, 0x1EA7, +IBUS_KEY_grave, IBUS_KEY_asciicircum, IBUS_KEY_e, 0x1EC1, +IBUS_KEY_grave, IBUS_KEY_asciicircum, IBUS_KEY_o, 0x1ED3, +IBUS_KEY_grave, IBUS_KEY_underscore, IBUS_KEY_E, 0x1E14, +IBUS_KEY_grave, IBUS_KEY_underscore, IBUS_KEY_O, 0x1E50, +IBUS_KEY_grave, IBUS_KEY_underscore, IBUS_KEY_e, 0x1E15, +IBUS_KEY_grave, IBUS_KEY_underscore, IBUS_KEY_o, 0x1E51, +IBUS_KEY_grave, IBUS_KEY_b, IBUS_KEY_A, 0x1EB0, +IBUS_KEY_grave, IBUS_KEY_b, IBUS_KEY_a, 0x1EB1, +IBUS_KEY_grave, IBUS_KEY_macron, IBUS_KEY_E, 0x1E14, +IBUS_KEY_grave, IBUS_KEY_macron, IBUS_KEY_O, 0x1E50, +IBUS_KEY_grave, IBUS_KEY_macron, IBUS_KEY_e, 0x1E15, +IBUS_KEY_grave, IBUS_KEY_macron, IBUS_KEY_o, 0x1E51, +IBUS_KEY_grave, IBUS_KEY_dead_circumflex, IBUS_KEY_A, 0x1EA6, +IBUS_KEY_grave, IBUS_KEY_dead_circumflex, IBUS_KEY_E, 0x1EC0, +IBUS_KEY_grave, IBUS_KEY_dead_circumflex, IBUS_KEY_O, 0x1ED2, +IBUS_KEY_grave, IBUS_KEY_dead_circumflex, IBUS_KEY_a, 0x1EA7, +IBUS_KEY_grave, IBUS_KEY_dead_circumflex, IBUS_KEY_e, 0x1EC1, +IBUS_KEY_grave, IBUS_KEY_dead_circumflex, IBUS_KEY_o, 0x1ED3, +IBUS_KEY_grave, IBUS_KEY_dead_macron, IBUS_KEY_E, 0x1E14, +IBUS_KEY_grave, IBUS_KEY_dead_macron, IBUS_KEY_O, 0x1E50, +IBUS_KEY_grave, IBUS_KEY_dead_macron, IBUS_KEY_e, 0x1E15, +IBUS_KEY_grave, IBUS_KEY_dead_macron, IBUS_KEY_o, 0x1E51, +IBUS_KEY_grave, IBUS_KEY_dead_breve, IBUS_KEY_A, 0x1EB0, +IBUS_KEY_grave, IBUS_KEY_dead_breve, IBUS_KEY_a, 0x1EB1, +IBUS_KEY_grave, IBUS_KEY_dead_diaeresis, IBUS_KEY_U, 0x01DB, +IBUS_KEY_grave, IBUS_KEY_dead_diaeresis, IBUS_KEY_u, 0x01DC, +IBUS_KEY_grave, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_iota, 0x1FD2, +IBUS_KEY_grave, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_upsilon, 0x1FE2, +IBUS_KEY_grave, IBUS_KEY_dead_horn, IBUS_KEY_O, 0x1EDC, +IBUS_KEY_grave, IBUS_KEY_dead_horn, IBUS_KEY_U, 0x1EEA, +IBUS_KEY_grave, IBUS_KEY_dead_horn, IBUS_KEY_o, 0x1EDD, +IBUS_KEY_grave, IBUS_KEY_dead_horn, IBUS_KEY_u, 0x1EEB, +IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F0A, +IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_EPSILON, 0x1F1A, +IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F2A, +IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_IOTA, 0x1F3A, +IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMICRON, 0x1F4A, +IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1F6A, +IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F02, +IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_epsilon, 0x1F12, +IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F22, +IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_iota, 0x1F32, +IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omicron, 0x1F42, +IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_upsilon, 0x1F52, +IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1F62, +IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F0B, +IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_EPSILON, 0x1F1B, +IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F2B, +IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_IOTA, 0x1F3B, +IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMICRON, 0x1F4B, +IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_UPSILON, 0x1F5B, +IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1F6B, +IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F03, +IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_epsilon, 0x1F13, +IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F23, +IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_iota, 0x1F33, +IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omicron, 0x1F43, +IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_upsilon, 0x1F53, +IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1F63, +IBUS_KEY_b, IBUS_KEY_exclam, IBUS_KEY_A, 0x1EB6, +IBUS_KEY_b, IBUS_KEY_exclam, IBUS_KEY_a, 0x1EB7, +IBUS_KEY_b, IBUS_KEY_comma, IBUS_KEY_E, 0x1E1C, +IBUS_KEY_b, IBUS_KEY_comma, IBUS_KEY_e, 0x1E1D, +IBUS_KEY_b, IBUS_KEY_cedilla, IBUS_KEY_E, 0x1E1C, +IBUS_KEY_b, IBUS_KEY_cedilla, IBUS_KEY_e, 0x1E1D, +IBUS_KEY_b, IBUS_KEY_dead_cedilla, IBUS_KEY_E, 0x1E1C, +IBUS_KEY_b, IBUS_KEY_dead_cedilla, IBUS_KEY_e, 0x1E1D, +IBUS_KEY_b, IBUS_KEY_dead_belowdot, IBUS_KEY_A, 0x1EB6, +IBUS_KEY_b, IBUS_KEY_dead_belowdot, IBUS_KEY_a, 0x1EB7, +IBUS_KEY_c, IBUS_KEY_quotedbl, IBUS_KEY_U, 0x01D9, +IBUS_KEY_c, IBUS_KEY_quotedbl, IBUS_KEY_u, 0x01DA, +IBUS_KEY_c, IBUS_KEY_dead_diaeresis, IBUS_KEY_U, 0x01D9, +IBUS_KEY_c, IBUS_KEY_dead_diaeresis, IBUS_KEY_u, 0x01DA, +IBUS_KEY_asciitilde, IBUS_KEY_quotedbl, IBUS_KEY_Greek_iota, 0x1FD7, +IBUS_KEY_asciitilde, IBUS_KEY_quotedbl, IBUS_KEY_Greek_upsilon, 0x1FE7, +IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F0F, +IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F2F, +IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_IOTA, 0x1F3F, +IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_UPSILON, 0x1F5F, +IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1F6F, +IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F07, +IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F27, +IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_iota, 0x1F37, +IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_upsilon, 0x1F57, +IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1F67, +IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F0E, +IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F2E, +IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_IOTA, 0x1F3E, +IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1F6E, +IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F06, +IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F26, +IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_iota, 0x1F36, +IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_upsilon, 0x1F56, +IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1F66, +IBUS_KEY_asciitilde, IBUS_KEY_plus, IBUS_KEY_O, 0x1EE0, +IBUS_KEY_asciitilde, IBUS_KEY_plus, IBUS_KEY_U, 0x1EEE, +IBUS_KEY_asciitilde, IBUS_KEY_plus, IBUS_KEY_o, 0x1EE1, +IBUS_KEY_asciitilde, IBUS_KEY_plus, IBUS_KEY_u, 0x1EEF, +IBUS_KEY_asciitilde, IBUS_KEY_asciicircum, IBUS_KEY_A, 0x1EAA, +IBUS_KEY_asciitilde, IBUS_KEY_asciicircum, IBUS_KEY_E, 0x1EC4, +IBUS_KEY_asciitilde, IBUS_KEY_asciicircum, IBUS_KEY_O, 0x1ED6, +IBUS_KEY_asciitilde, IBUS_KEY_asciicircum, IBUS_KEY_a, 0x1EAB, +IBUS_KEY_asciitilde, IBUS_KEY_asciicircum, IBUS_KEY_e, 0x1EC5, +IBUS_KEY_asciitilde, IBUS_KEY_asciicircum, IBUS_KEY_o, 0x1ED7, +IBUS_KEY_asciitilde, IBUS_KEY_b, IBUS_KEY_A, 0x1EB4, +IBUS_KEY_asciitilde, IBUS_KEY_b, IBUS_KEY_a, 0x1EB5, +IBUS_KEY_asciitilde, IBUS_KEY_dead_circumflex, IBUS_KEY_A, 0x1EAA, +IBUS_KEY_asciitilde, IBUS_KEY_dead_circumflex, IBUS_KEY_E, 0x1EC4, +IBUS_KEY_asciitilde, IBUS_KEY_dead_circumflex, IBUS_KEY_O, 0x1ED6, +IBUS_KEY_asciitilde, IBUS_KEY_dead_circumflex, IBUS_KEY_a, 0x1EAB, +IBUS_KEY_asciitilde, IBUS_KEY_dead_circumflex, IBUS_KEY_e, 0x1EC5, +IBUS_KEY_asciitilde, IBUS_KEY_dead_circumflex, IBUS_KEY_o, 0x1ED7, +IBUS_KEY_asciitilde, IBUS_KEY_dead_breve, IBUS_KEY_A, 0x1EB4, +IBUS_KEY_asciitilde, IBUS_KEY_dead_breve, IBUS_KEY_a, 0x1EB5, +IBUS_KEY_asciitilde, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_iota, 0x1FD7, +IBUS_KEY_asciitilde, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_upsilon, 0x1FE7, +IBUS_KEY_asciitilde, IBUS_KEY_dead_horn, IBUS_KEY_O, 0x1EE0, +IBUS_KEY_asciitilde, IBUS_KEY_dead_horn, IBUS_KEY_U, 0x1EEE, +IBUS_KEY_asciitilde, IBUS_KEY_dead_horn, IBUS_KEY_o, 0x1EE1, +IBUS_KEY_asciitilde, IBUS_KEY_dead_horn, IBUS_KEY_u, 0x1EEF, +IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F0E, +IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F2E, +IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_IOTA, 0x1F3E, +IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1F6E, +IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F06, +IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F26, +IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_iota, 0x1F36, +IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_upsilon, 0x1F56, +IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1F66, +IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F0F, +IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F2F, +IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_IOTA, 0x1F3F, +IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_UPSILON, 0x1F5F, +IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1F6F, +IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F07, +IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F27, +IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_iota, 0x1F37, +IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_upsilon, 0x1F57, +IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1F67, +IBUS_KEY_macron, IBUS_KEY_exclam, IBUS_KEY_L, 0x1E38, +IBUS_KEY_macron, IBUS_KEY_exclam, IBUS_KEY_R, 0x1E5C, +IBUS_KEY_macron, IBUS_KEY_exclam, IBUS_KEY_l, 0x1E39, +IBUS_KEY_macron, IBUS_KEY_exclam, IBUS_KEY_r, 0x1E5D, +IBUS_KEY_macron, IBUS_KEY_quotedbl, IBUS_KEY_A, 0x01DE, +IBUS_KEY_macron, IBUS_KEY_quotedbl, IBUS_KEY_O, 0x022A, +IBUS_KEY_macron, IBUS_KEY_quotedbl, IBUS_KEY_U, 0x01D5, +IBUS_KEY_macron, IBUS_KEY_quotedbl, IBUS_KEY_a, 0x01DF, +IBUS_KEY_macron, IBUS_KEY_quotedbl, IBUS_KEY_o, 0x022B, +IBUS_KEY_macron, IBUS_KEY_quotedbl, IBUS_KEY_u, 0x01D6, +IBUS_KEY_macron, IBUS_KEY_period, IBUS_KEY_A, 0x01E0, +IBUS_KEY_macron, IBUS_KEY_period, IBUS_KEY_O, 0x0230, +IBUS_KEY_macron, IBUS_KEY_period, IBUS_KEY_a, 0x01E1, +IBUS_KEY_macron, IBUS_KEY_period, IBUS_KEY_o, 0x0231, +IBUS_KEY_macron, IBUS_KEY_semicolon, IBUS_KEY_O, 0x01EC, +IBUS_KEY_macron, IBUS_KEY_semicolon, IBUS_KEY_o, 0x01ED, +IBUS_KEY_macron, IBUS_KEY_asciitilde, IBUS_KEY_O, 0x022C, +IBUS_KEY_macron, IBUS_KEY_asciitilde, IBUS_KEY_o, 0x022D, +IBUS_KEY_macron, IBUS_KEY_dead_tilde, IBUS_KEY_O, 0x022C, +IBUS_KEY_macron, IBUS_KEY_dead_tilde, IBUS_KEY_o, 0x022D, +IBUS_KEY_macron, IBUS_KEY_dead_abovedot, IBUS_KEY_A, 0x01E0, +IBUS_KEY_macron, IBUS_KEY_dead_abovedot, IBUS_KEY_O, 0x0230, +IBUS_KEY_macron, IBUS_KEY_dead_abovedot, IBUS_KEY_a, 0x01E1, +IBUS_KEY_macron, IBUS_KEY_dead_abovedot, IBUS_KEY_o, 0x0231, +IBUS_KEY_macron, IBUS_KEY_dead_diaeresis, IBUS_KEY_A, 0x01DE, +IBUS_KEY_macron, IBUS_KEY_dead_diaeresis, IBUS_KEY_O, 0x022A, +IBUS_KEY_macron, IBUS_KEY_dead_diaeresis, IBUS_KEY_U, 0x01D5, +IBUS_KEY_macron, IBUS_KEY_dead_diaeresis, IBUS_KEY_a, 0x01DF, +IBUS_KEY_macron, IBUS_KEY_dead_diaeresis, IBUS_KEY_o, 0x022B, +IBUS_KEY_macron, IBUS_KEY_dead_diaeresis, IBUS_KEY_u, 0x01D6, +IBUS_KEY_macron, IBUS_KEY_dead_ogonek, IBUS_KEY_O, 0x01EC, +IBUS_KEY_macron, IBUS_KEY_dead_ogonek, IBUS_KEY_o, 0x01ED, +IBUS_KEY_macron, IBUS_KEY_dead_belowdot, IBUS_KEY_L, 0x1E38, +IBUS_KEY_macron, IBUS_KEY_dead_belowdot, IBUS_KEY_R, 0x1E5C, +IBUS_KEY_macron, IBUS_KEY_dead_belowdot, IBUS_KEY_l, 0x1E39, +IBUS_KEY_macron, IBUS_KEY_dead_belowdot, IBUS_KEY_r, 0x1E5D, +IBUS_KEY_acute, IBUS_KEY_quotedbl, IBUS_KEY_I, 0x1E2E, +IBUS_KEY_acute, IBUS_KEY_quotedbl, IBUS_KEY_U, 0x01D7, +IBUS_KEY_acute, IBUS_KEY_quotedbl, IBUS_KEY_i, 0x1E2F, +IBUS_KEY_acute, IBUS_KEY_quotedbl, IBUS_KEY_u, 0x01D8, +IBUS_KEY_acute, IBUS_KEY_quotedbl, IBUS_KEY_Greek_iota, 0x0390, +IBUS_KEY_acute, IBUS_KEY_quotedbl, IBUS_KEY_Greek_upsilon, 0x03B0, +IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F0D, +IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_EPSILON, 0x1F1D, +IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F2D, +IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_IOTA, 0x1F3D, +IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMICRON, 0x1F4D, +IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_UPSILON, 0x1F5D, +IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1F6D, +IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F05, +IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_epsilon, 0x1F15, +IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F25, +IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_iota, 0x1F35, +IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_omicron, 0x1F45, +IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_upsilon, 0x1F55, +IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1F65, +IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F0C, +IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_EPSILON, 0x1F1C, +IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F2C, +IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_IOTA, 0x1F3C, +IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_OMICRON, 0x1F4C, +IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1F6C, +IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F04, +IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_epsilon, 0x1F14, +IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F24, +IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_iota, 0x1F34, +IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_omicron, 0x1F44, +IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_upsilon, 0x1F54, +IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1F64, +IBUS_KEY_acute, IBUS_KEY_plus, IBUS_KEY_O, 0x1EDA, +IBUS_KEY_acute, IBUS_KEY_plus, IBUS_KEY_U, 0x1EE8, +IBUS_KEY_acute, IBUS_KEY_plus, IBUS_KEY_o, 0x1EDB, +IBUS_KEY_acute, IBUS_KEY_plus, IBUS_KEY_u, 0x1EE9, +IBUS_KEY_acute, IBUS_KEY_comma, IBUS_KEY_C, 0x1E08, +IBUS_KEY_acute, IBUS_KEY_comma, IBUS_KEY_c, 0x1E09, +IBUS_KEY_acute, IBUS_KEY_slash, IBUS_KEY_O, 0x01FE, +IBUS_KEY_acute, IBUS_KEY_slash, IBUS_KEY_o, 0x01FF, +IBUS_KEY_acute, IBUS_KEY_asciicircum, IBUS_KEY_A, 0x1EA4, +IBUS_KEY_acute, IBUS_KEY_asciicircum, IBUS_KEY_E, 0x1EBE, +IBUS_KEY_acute, IBUS_KEY_asciicircum, IBUS_KEY_O, 0x1ED0, +IBUS_KEY_acute, IBUS_KEY_asciicircum, IBUS_KEY_a, 0x1EA5, +IBUS_KEY_acute, IBUS_KEY_asciicircum, IBUS_KEY_e, 0x1EBF, +IBUS_KEY_acute, IBUS_KEY_asciicircum, IBUS_KEY_o, 0x1ED1, +IBUS_KEY_acute, IBUS_KEY_underscore, IBUS_KEY_E, 0x1E16, +IBUS_KEY_acute, IBUS_KEY_underscore, IBUS_KEY_O, 0x1E52, +IBUS_KEY_acute, IBUS_KEY_underscore, IBUS_KEY_e, 0x1E17, +IBUS_KEY_acute, IBUS_KEY_underscore, IBUS_KEY_o, 0x1E53, +IBUS_KEY_acute, IBUS_KEY_b, IBUS_KEY_A, 0x1EAE, +IBUS_KEY_acute, IBUS_KEY_b, IBUS_KEY_a, 0x1EAF, +IBUS_KEY_acute, IBUS_KEY_asciitilde, IBUS_KEY_O, 0x1E4C, +IBUS_KEY_acute, IBUS_KEY_asciitilde, IBUS_KEY_U, 0x1E78, +IBUS_KEY_acute, IBUS_KEY_asciitilde, IBUS_KEY_o, 0x1E4D, +IBUS_KEY_acute, IBUS_KEY_asciitilde, IBUS_KEY_u, 0x1E79, +IBUS_KEY_acute, IBUS_KEY_macron, IBUS_KEY_E, 0x1E16, +IBUS_KEY_acute, IBUS_KEY_macron, IBUS_KEY_O, 0x1E52, +IBUS_KEY_acute, IBUS_KEY_macron, IBUS_KEY_e, 0x1E17, +IBUS_KEY_acute, IBUS_KEY_macron, IBUS_KEY_o, 0x1E53, +IBUS_KEY_acute, IBUS_KEY_cedilla, IBUS_KEY_C, 0x1E08, +IBUS_KEY_acute, IBUS_KEY_cedilla, IBUS_KEY_c, 0x1E09, +IBUS_KEY_acute, IBUS_KEY_dead_circumflex, IBUS_KEY_A, 0x1EA4, +IBUS_KEY_acute, IBUS_KEY_dead_circumflex, IBUS_KEY_E, 0x1EBE, +IBUS_KEY_acute, IBUS_KEY_dead_circumflex, IBUS_KEY_O, 0x1ED0, +IBUS_KEY_acute, IBUS_KEY_dead_circumflex, IBUS_KEY_a, 0x1EA5, +IBUS_KEY_acute, IBUS_KEY_dead_circumflex, IBUS_KEY_e, 0x1EBF, +IBUS_KEY_acute, IBUS_KEY_dead_circumflex, IBUS_KEY_o, 0x1ED1, +IBUS_KEY_acute, IBUS_KEY_dead_tilde, IBUS_KEY_O, 0x1E4C, +IBUS_KEY_acute, IBUS_KEY_dead_tilde, IBUS_KEY_U, 0x1E78, +IBUS_KEY_acute, IBUS_KEY_dead_tilde, IBUS_KEY_o, 0x1E4D, +IBUS_KEY_acute, IBUS_KEY_dead_tilde, IBUS_KEY_u, 0x1E79, +IBUS_KEY_acute, IBUS_KEY_dead_macron, IBUS_KEY_E, 0x1E16, +IBUS_KEY_acute, IBUS_KEY_dead_macron, IBUS_KEY_O, 0x1E52, +IBUS_KEY_acute, IBUS_KEY_dead_macron, IBUS_KEY_e, 0x1E17, +IBUS_KEY_acute, IBUS_KEY_dead_macron, IBUS_KEY_o, 0x1E53, +IBUS_KEY_acute, IBUS_KEY_dead_breve, IBUS_KEY_A, 0x1EAE, +IBUS_KEY_acute, IBUS_KEY_dead_breve, IBUS_KEY_a, 0x1EAF, +IBUS_KEY_acute, IBUS_KEY_dead_diaeresis, IBUS_KEY_I, 0x1E2E, +IBUS_KEY_acute, IBUS_KEY_dead_diaeresis, IBUS_KEY_U, 0x01D7, +IBUS_KEY_acute, IBUS_KEY_dead_diaeresis, IBUS_KEY_i, 0x1E2F, +IBUS_KEY_acute, IBUS_KEY_dead_diaeresis, IBUS_KEY_u, 0x01D8, +IBUS_KEY_acute, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_iota, 0x0390, +IBUS_KEY_acute, IBUS_KEY_dead_diaeresis, IBUS_KEY_Greek_upsilon, 0x03B0, +IBUS_KEY_acute, IBUS_KEY_dead_abovering, IBUS_KEY_A, 0x01FA, +IBUS_KEY_acute, IBUS_KEY_dead_abovering, IBUS_KEY_a, 0x01FB, +IBUS_KEY_acute, IBUS_KEY_dead_cedilla, IBUS_KEY_C, 0x1E08, +IBUS_KEY_acute, IBUS_KEY_dead_cedilla, IBUS_KEY_c, 0x1E09, +IBUS_KEY_acute, IBUS_KEY_dead_horn, IBUS_KEY_O, 0x1EDA, +IBUS_KEY_acute, IBUS_KEY_dead_horn, IBUS_KEY_U, 0x1EE8, +IBUS_KEY_acute, IBUS_KEY_dead_horn, IBUS_KEY_o, 0x1EDB, +IBUS_KEY_acute, IBUS_KEY_dead_horn, IBUS_KEY_u, 0x1EE9, +IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F0C, +IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_EPSILON, 0x1F1C, +IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F2C, +IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_IOTA, 0x1F3C, +IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMICRON, 0x1F4C, +IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1F6C, +IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F04, +IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_epsilon, 0x1F14, +IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F24, +IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_iota, 0x1F34, +IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omicron, 0x1F44, +IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_upsilon, 0x1F54, +IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1F64, +IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F0D, +IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_EPSILON, 0x1F1D, +IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F2D, +IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_IOTA, 0x1F3D, +IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMICRON, 0x1F4D, +IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_UPSILON, 0x1F5D, +IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1F6D, +IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F05, +IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_epsilon, 0x1F15, +IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F25, +IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_iota, 0x1F35, +IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omicron, 0x1F45, +IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_upsilon, 0x1F55, +IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1F65, +IBUS_KEY_acute, IBUS_KEY_KP_Divide, IBUS_KEY_O, 0x01FE, +IBUS_KEY_acute, IBUS_KEY_KP_Divide, IBUS_KEY_o, 0x01FF, +0x05C1, 0x05BC, IBUS_KEY_hebrew_shin, 0xFB2C, +0x05C2, 0x05BC, IBUS_KEY_hebrew_shin, 0xFB2D, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_Greek_alpha, 0x1FB4, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_Greek_eta, 0x1FC4, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_Greek_omega, 0x1FF4, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F00, 0x1F84, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F01, 0x1F85, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F08, 0x1F8C, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F09, 0x1F8D, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F20, 0x1F94, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F21, 0x1F95, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F28, 0x1F9C, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F29, 0x1F9D, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F60, 0x1FA4, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F61, 0x1FA5, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F68, 0x1FAC, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, 0x1F69, 0x1FAD, +IBUS_KEY_Greek_iota, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F89, +IBUS_KEY_Greek_iota, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F99, +IBUS_KEY_Greek_iota, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FA9, +IBUS_KEY_Greek_iota, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F81, +IBUS_KEY_Greek_iota, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F91, +IBUS_KEY_Greek_iota, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA1, +IBUS_KEY_Greek_iota, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F88, +IBUS_KEY_Greek_iota, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F98, +IBUS_KEY_Greek_iota, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FA8, +IBUS_KEY_Greek_iota, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F80, +IBUS_KEY_Greek_iota, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F90, +IBUS_KEY_Greek_iota, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA0, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_Greek_alpha, 0x1FB2, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_Greek_eta, 0x1FC2, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_Greek_omega, 0x1FF2, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F00, 0x1F82, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F01, 0x1F83, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F08, 0x1F8A, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F09, 0x1F8B, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F20, 0x1F92, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F21, 0x1F93, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F28, 0x1F9A, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F29, 0x1F9B, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F60, 0x1FA2, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F61, 0x1FA3, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F68, 0x1FAA, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, 0x1F69, 0x1FAB, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_Greek_alpha, 0x1FB7, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_Greek_eta, 0x1FC7, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_Greek_omega, 0x1FF7, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F00, 0x1F86, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F01, 0x1F87, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F08, 0x1F8E, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F09, 0x1F8F, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F20, 0x1F96, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F21, 0x1F97, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F28, 0x1F9E, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F29, 0x1F9F, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F60, 0x1FA6, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F61, 0x1FA7, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F68, 0x1FAE, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, 0x1F69, 0x1FAF, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_Greek_alpha, 0x1FB4, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_Greek_eta, 0x1FC4, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_Greek_omega, 0x1FF4, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F00, 0x1F84, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F01, 0x1F85, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F08, 0x1F8C, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F09, 0x1F8D, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F20, 0x1F94, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F21, 0x1F95, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F28, 0x1F9C, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F29, 0x1F9D, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F60, 0x1FA4, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F61, 0x1FA5, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F68, 0x1FAC, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, 0x1F69, 0x1FAD, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_Greek_alpha, 0x1FB2, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_Greek_eta, 0x1FC2, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_Greek_omega, 0x1FF2, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F00, 0x1F82, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F01, 0x1F83, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F08, 0x1F8A, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F09, 0x1F8B, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F20, 0x1F92, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F21, 0x1F93, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F28, 0x1F9A, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F29, 0x1F9B, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F60, 0x1FA2, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F61, 0x1FA3, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F68, 0x1FAA, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, 0x1F69, 0x1FAB, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_Greek_alpha, 0x1FB4, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_Greek_eta, 0x1FC4, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_Greek_omega, 0x1FF4, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F00, 0x1F84, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F01, 0x1F85, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F08, 0x1F8C, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F09, 0x1F8D, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F20, 0x1F94, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F21, 0x1F95, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F28, 0x1F9C, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F29, 0x1F9D, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F60, 0x1FA4, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F61, 0x1FA5, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F68, 0x1FAC, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, 0x1F69, 0x1FAD, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_Greek_alpha, 0x1FB7, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_Greek_eta, 0x1FC7, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_Greek_omega, 0x1FF7, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F00, 0x1F86, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F01, 0x1F87, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F08, 0x1F8E, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F09, 0x1F8F, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F20, 0x1F96, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F21, 0x1F97, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F28, 0x1F9E, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F29, 0x1F9F, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F60, 0x1FA6, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F61, 0x1FA7, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F68, 0x1FAE, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, 0x1F69, 0x1FAF, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F88, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F98, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FA8, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F80, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F90, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA0, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F89, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F99, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FA9, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F81, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F91, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA1, +IBUS_KEY_dead_abovedot, IBUS_KEY_f, IBUS_KEY_s, 0x1E9B, +IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_0, IBUS_KEY_parenright, 0x2469, +IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_1, IBUS_KEY_parenright, 0x246A, +IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_2, IBUS_KEY_parenright, 0x246B, +IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_3, IBUS_KEY_parenright, 0x246C, +IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_4, IBUS_KEY_parenright, 0x246D, +IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_5, IBUS_KEY_parenright, 0x246E, +IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_6, IBUS_KEY_parenright, 0x246F, +IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_7, IBUS_KEY_parenright, 0x2470, +IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_8, IBUS_KEY_parenright, 0x2471, +IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_9, IBUS_KEY_parenright, 0x2472, +IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_Space, IBUS_KEY_parenright, 0x246B, +IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_0, IBUS_KEY_parenright, 0x2469, +IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_1, IBUS_KEY_parenright, 0x246A, +IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_2, IBUS_KEY_parenright, 0x246B, +IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_3, IBUS_KEY_parenright, 0x246C, +IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_4, IBUS_KEY_parenright, 0x246D, +IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_5, IBUS_KEY_parenright, 0x246E, +IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_6, IBUS_KEY_parenright, 0x246F, +IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_7, IBUS_KEY_parenright, 0x2470, +IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_8, IBUS_KEY_parenright, 0x2471, +IBUS_KEY_parenleft, IBUS_KEY_1, IBUS_KEY_KP_9, IBUS_KEY_parenright, 0x2472, +IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_0, IBUS_KEY_parenright, 0x2473, +IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_1, IBUS_KEY_parenright, 0x3251, +IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_2, IBUS_KEY_parenright, 0x3252, +IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_3, IBUS_KEY_parenright, 0x3253, +IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_4, IBUS_KEY_parenright, 0x3254, +IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_5, IBUS_KEY_parenright, 0x3255, +IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_6, IBUS_KEY_parenright, 0x3256, +IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_7, IBUS_KEY_parenright, 0x3257, +IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_8, IBUS_KEY_parenright, 0x3258, +IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_9, IBUS_KEY_parenright, 0x3259, +IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_Space, IBUS_KEY_parenright, 0x3252, +IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_0, IBUS_KEY_parenright, 0x2473, +IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_1, IBUS_KEY_parenright, 0x3251, +IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_2, IBUS_KEY_parenright, 0x3252, +IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_3, IBUS_KEY_parenright, 0x3253, +IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_4, IBUS_KEY_parenright, 0x3254, +IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_5, IBUS_KEY_parenright, 0x3255, +IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_6, IBUS_KEY_parenright, 0x3256, +IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_7, IBUS_KEY_parenright, 0x3257, +IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_8, IBUS_KEY_parenright, 0x3258, +IBUS_KEY_parenleft, IBUS_KEY_2, IBUS_KEY_KP_9, IBUS_KEY_parenright, 0x3259, +IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_0, IBUS_KEY_parenright, 0x325A, +IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_1, IBUS_KEY_parenright, 0x325B, +IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_2, IBUS_KEY_parenright, 0x325C, +IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_3, IBUS_KEY_parenright, 0x325D, +IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_4, IBUS_KEY_parenright, 0x325E, +IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_5, IBUS_KEY_parenright, 0x325F, +IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_6, IBUS_KEY_parenright, 0x32B1, +IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_7, IBUS_KEY_parenright, 0x32B2, +IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_8, IBUS_KEY_parenright, 0x32B3, +IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_9, IBUS_KEY_parenright, 0x32B4, +IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_Space, IBUS_KEY_parenright, 0x325C, +IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_0, IBUS_KEY_parenright, 0x325A, +IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_1, IBUS_KEY_parenright, 0x325B, +IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_2, IBUS_KEY_parenright, 0x325C, +IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_3, IBUS_KEY_parenright, 0x325D, +IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_4, IBUS_KEY_parenright, 0x325E, +IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_5, IBUS_KEY_parenright, 0x325F, +IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_6, IBUS_KEY_parenright, 0x32B1, +IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_7, IBUS_KEY_parenright, 0x32B2, +IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_8, IBUS_KEY_parenright, 0x32B3, +IBUS_KEY_parenleft, IBUS_KEY_3, IBUS_KEY_KP_9, IBUS_KEY_parenright, 0x32B4, +IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_0, IBUS_KEY_parenright, 0x32B5, +IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_1, IBUS_KEY_parenright, 0x32B6, +IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_2, IBUS_KEY_parenright, 0x32B7, +IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_3, IBUS_KEY_parenright, 0x32B8, +IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_4, IBUS_KEY_parenright, 0x32B9, +IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_5, IBUS_KEY_parenright, 0x32BA, +IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_6, IBUS_KEY_parenright, 0x32BB, +IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_7, IBUS_KEY_parenright, 0x32BC, +IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_8, IBUS_KEY_parenright, 0x32BD, +IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_9, IBUS_KEY_parenright, 0x32BE, +IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_Space, IBUS_KEY_parenright, 0x32B7, +IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_0, IBUS_KEY_parenright, 0x32B5, +IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_1, IBUS_KEY_parenright, 0x32B6, +IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_2, IBUS_KEY_parenright, 0x32B7, +IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_3, IBUS_KEY_parenright, 0x32B8, +IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_4, IBUS_KEY_parenright, 0x32B9, +IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_5, IBUS_KEY_parenright, 0x32BA, +IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_6, IBUS_KEY_parenright, 0x32BB, +IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_7, IBUS_KEY_parenright, 0x32BC, +IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_8, IBUS_KEY_parenright, 0x32BD, +IBUS_KEY_parenleft, IBUS_KEY_4, IBUS_KEY_KP_9, IBUS_KEY_parenright, 0x32BE, +IBUS_KEY_parenleft, IBUS_KEY_5, IBUS_KEY_0, IBUS_KEY_parenright, 0x32BF, +IBUS_KEY_parenleft, 0x1100, 0x1161, IBUS_KEY_parenright, 0x326E, +IBUS_KEY_parenleft, 0x1102, 0x1161, IBUS_KEY_parenright, 0x326F, +IBUS_KEY_parenleft, 0x1103, 0x1161, IBUS_KEY_parenright, 0x3270, +IBUS_KEY_parenleft, 0x1105, 0x1161, IBUS_KEY_parenright, 0x3271, +IBUS_KEY_parenleft, 0x1106, 0x1161, IBUS_KEY_parenright, 0x3272, +IBUS_KEY_parenleft, 0x1107, 0x1161, IBUS_KEY_parenright, 0x3273, +IBUS_KEY_parenleft, 0x1109, 0x1161, IBUS_KEY_parenright, 0x3274, +IBUS_KEY_parenleft, 0x110B, 0x1161, IBUS_KEY_parenright, 0x3275, +IBUS_KEY_parenleft, 0x110C, 0x1161, IBUS_KEY_parenright, 0x3276, +IBUS_KEY_parenleft, 0x110E, 0x1161, IBUS_KEY_parenright, 0x3277, +IBUS_KEY_parenleft, 0x110F, 0x1161, IBUS_KEY_parenright, 0x3278, +IBUS_KEY_parenleft, 0x1110, 0x1161, IBUS_KEY_parenright, 0x3279, +IBUS_KEY_parenleft, 0x1111, 0x1161, IBUS_KEY_parenright, 0x327A, +IBUS_KEY_parenleft, 0x1112, 0x1161, IBUS_KEY_parenright, 0x327B, +IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_0, IBUS_KEY_parenright, 0x2473, +IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_1, IBUS_KEY_parenright, 0x3251, +IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_2, IBUS_KEY_parenright, 0x3252, +IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_3, IBUS_KEY_parenright, 0x3253, +IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_4, IBUS_KEY_parenright, 0x3254, +IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_5, IBUS_KEY_parenright, 0x3255, +IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_6, IBUS_KEY_parenright, 0x3256, +IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_7, IBUS_KEY_parenright, 0x3257, +IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_8, IBUS_KEY_parenright, 0x3258, +IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_9, IBUS_KEY_parenright, 0x3259, +IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_Space, IBUS_KEY_parenright, 0x3252, +IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_0, IBUS_KEY_parenright, 0x2473, +IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_1, IBUS_KEY_parenright, 0x3251, +IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_2, IBUS_KEY_parenright, 0x3252, +IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_3, IBUS_KEY_parenright, 0x3253, +IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_4, IBUS_KEY_parenright, 0x3254, +IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_5, IBUS_KEY_parenright, 0x3255, +IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_6, IBUS_KEY_parenright, 0x3256, +IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_7, IBUS_KEY_parenright, 0x3257, +IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_8, IBUS_KEY_parenright, 0x3258, +IBUS_KEY_parenleft, IBUS_KEY_KP_Space, IBUS_KEY_KP_9, IBUS_KEY_parenright, 0x3259, +IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_0, IBUS_KEY_parenright, 0x2469, +IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_1, IBUS_KEY_parenright, 0x246A, +IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_2, IBUS_KEY_parenright, 0x246B, +IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_3, IBUS_KEY_parenright, 0x246C, +IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_4, IBUS_KEY_parenright, 0x246D, +IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_5, IBUS_KEY_parenright, 0x246E, +IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_6, IBUS_KEY_parenright, 0x246F, +IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_7, IBUS_KEY_parenright, 0x2470, +IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_8, IBUS_KEY_parenright, 0x2471, +IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_9, IBUS_KEY_parenright, 0x2472, +IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_Space, IBUS_KEY_parenright, 0x246B, +IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_0, IBUS_KEY_parenright, 0x2469, +IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_1, IBUS_KEY_parenright, 0x246A, +IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_2, IBUS_KEY_parenright, 0x246B, +IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_3, IBUS_KEY_parenright, 0x246C, +IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_4, IBUS_KEY_parenright, 0x246D, +IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_5, IBUS_KEY_parenright, 0x246E, +IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_6, IBUS_KEY_parenright, 0x246F, +IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_7, IBUS_KEY_parenright, 0x2470, +IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_8, IBUS_KEY_parenright, 0x2471, +IBUS_KEY_parenleft, IBUS_KEY_KP_1, IBUS_KEY_KP_9, IBUS_KEY_parenright, 0x2472, +IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_0, IBUS_KEY_parenright, 0x2473, +IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_1, IBUS_KEY_parenright, 0x3251, +IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_2, IBUS_KEY_parenright, 0x3252, +IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_3, IBUS_KEY_parenright, 0x3253, +IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_4, IBUS_KEY_parenright, 0x3254, +IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_5, IBUS_KEY_parenright, 0x3255, +IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_6, IBUS_KEY_parenright, 0x3256, +IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_7, IBUS_KEY_parenright, 0x3257, +IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_8, IBUS_KEY_parenright, 0x3258, +IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_9, IBUS_KEY_parenright, 0x3259, +IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_Space, IBUS_KEY_parenright, 0x3252, +IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_0, IBUS_KEY_parenright, 0x2473, +IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_1, IBUS_KEY_parenright, 0x3251, +IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_2, IBUS_KEY_parenright, 0x3252, +IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_3, IBUS_KEY_parenright, 0x3253, +IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_4, IBUS_KEY_parenright, 0x3254, +IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_5, IBUS_KEY_parenright, 0x3255, +IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_6, IBUS_KEY_parenright, 0x3256, +IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_7, IBUS_KEY_parenright, 0x3257, +IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_8, IBUS_KEY_parenright, 0x3258, +IBUS_KEY_parenleft, IBUS_KEY_KP_2, IBUS_KEY_KP_9, IBUS_KEY_parenright, 0x3259, +IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_0, IBUS_KEY_parenright, 0x325A, +IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_1, IBUS_KEY_parenright, 0x325B, +IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_2, IBUS_KEY_parenright, 0x325C, +IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_3, IBUS_KEY_parenright, 0x325D, +IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_4, IBUS_KEY_parenright, 0x325E, +IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_5, IBUS_KEY_parenright, 0x325F, +IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_6, IBUS_KEY_parenright, 0x32B1, +IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_7, IBUS_KEY_parenright, 0x32B2, +IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_8, IBUS_KEY_parenright, 0x32B3, +IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_9, IBUS_KEY_parenright, 0x32B4, +IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_Space, IBUS_KEY_parenright, 0x325C, +IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_0, IBUS_KEY_parenright, 0x325A, +IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_1, IBUS_KEY_parenright, 0x325B, +IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_2, IBUS_KEY_parenright, 0x325C, +IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_3, IBUS_KEY_parenright, 0x325D, +IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_4, IBUS_KEY_parenright, 0x325E, +IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_5, IBUS_KEY_parenright, 0x325F, +IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_6, IBUS_KEY_parenright, 0x32B1, +IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_7, IBUS_KEY_parenright, 0x32B2, +IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_8, IBUS_KEY_parenright, 0x32B3, +IBUS_KEY_parenleft, IBUS_KEY_KP_3, IBUS_KEY_KP_9, IBUS_KEY_parenright, 0x32B4, +IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_0, IBUS_KEY_parenright, 0x32B5, +IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_1, IBUS_KEY_parenright, 0x32B6, +IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_2, IBUS_KEY_parenright, 0x32B7, +IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_3, IBUS_KEY_parenright, 0x32B8, +IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_4, IBUS_KEY_parenright, 0x32B9, +IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_5, IBUS_KEY_parenright, 0x32BA, +IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_6, IBUS_KEY_parenright, 0x32BB, +IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_7, IBUS_KEY_parenright, 0x32BC, +IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_8, IBUS_KEY_parenright, 0x32BD, +IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_9, IBUS_KEY_parenright, 0x32BE, +IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_Space, IBUS_KEY_parenright, 0x32B7, +IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_0, IBUS_KEY_parenright, 0x32B5, +IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_1, IBUS_KEY_parenright, 0x32B6, +IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_2, IBUS_KEY_parenright, 0x32B7, +IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_3, IBUS_KEY_parenright, 0x32B8, +IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_4, IBUS_KEY_parenright, 0x32B9, +IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_5, IBUS_KEY_parenright, 0x32BA, +IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_6, IBUS_KEY_parenright, 0x32BB, +IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_7, IBUS_KEY_parenright, 0x32BC, +IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_8, IBUS_KEY_parenright, 0x32BD, +IBUS_KEY_parenleft, IBUS_KEY_KP_4, IBUS_KEY_KP_9, IBUS_KEY_parenright, 0x32BE, +IBUS_KEY_parenleft, IBUS_KEY_KP_5, IBUS_KEY_0, IBUS_KEY_parenright, 0x32BF, +IBUS_KEY_C, IBUS_KEY_C, IBUS_KEY_C, IBUS_KEY_P, 0x262D, +IBUS_KEY_U, IBUS_KEY_space, IBUS_KEY_comma, IBUS_KEY_E, 0x1E1C, +IBUS_KEY_U, IBUS_KEY_space, IBUS_KEY_comma, IBUS_KEY_e, 0x1E1D, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8D, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9D, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAD, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F85, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F95, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA5, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8C, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9C, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAC, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F84, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F94, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA4, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8C, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9C, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAC, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F84, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F94, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA4, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8D, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9D, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAD, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F85, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F95, +IBUS_KEY_Greek_iota, IBUS_KEY_apostrophe, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA5, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8B, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9B, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAB, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F83, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F93, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA3, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8A, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9A, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAA, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F82, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F92, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA2, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8A, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9A, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAA, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F82, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F92, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA2, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8B, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9B, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAB, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F83, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F93, +IBUS_KEY_Greek_iota, IBUS_KEY_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA3, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8F, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9F, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAF, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F87, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F97, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA7, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8E, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9E, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAE, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F86, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F96, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA6, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8E, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9E, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAE, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F86, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F96, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA6, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8F, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9F, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAF, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F87, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F97, +IBUS_KEY_Greek_iota, IBUS_KEY_asciitilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA7, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8D, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9D, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAD, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F85, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F95, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA5, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8C, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9C, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAC, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F84, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F94, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA4, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8C, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9C, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAC, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F84, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F94, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA4, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8D, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9D, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAD, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F85, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F95, +IBUS_KEY_Greek_iota, IBUS_KEY_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA5, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8B, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9B, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAB, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F83, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F93, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA3, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8A, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9A, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAA, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F82, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F92, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA2, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8A, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9A, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAA, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F82, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F92, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA2, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8B, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9B, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAB, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F83, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F93, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_grave, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA3, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8D, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9D, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAD, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F85, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F95, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA5, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8C, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9C, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAC, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F84, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F94, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA4, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8C, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9C, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAC, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F84, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F94, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA4, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8D, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9D, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAD, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F85, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F95, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_acute, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA5, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_ALPHA, 0x1F8F, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_ETA, 0x1F9F, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_OMEGA, 0x1FAF, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_alpha, 0x1F87, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_eta, 0x1F97, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenleft, IBUS_KEY_Greek_omega, 0x1FA7, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenright, IBUS_KEY_Greek_ALPHA, 0x1F8E, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenright, IBUS_KEY_Greek_ETA, 0x1F9E, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenright, IBUS_KEY_Greek_OMEGA, 0x1FAE, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenright, IBUS_KEY_Greek_alpha, 0x1F86, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenright, IBUS_KEY_Greek_eta, 0x1F96, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_parenright, IBUS_KEY_Greek_omega, 0x1FA6, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ALPHA, 0x1F8E, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_ETA, 0x1F9E, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_OMEGA, 0x1FAE, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_alpha, 0x1F86, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_eta, 0x1F96, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_psili, IBUS_KEY_Greek_omega, 0x1FA6, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ALPHA, 0x1F8F, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_ETA, 0x1F9F, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_OMEGA, 0x1FAF, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_alpha, 0x1F87, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_eta, 0x1F97, +IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA7, +}; + +static const guint16 gtk_compose_seqs_compact_32bit_first[] = { +IBUS_KEY_dead_grave, 54, 123, 187, 187, 187, +IBUS_KEY_dead_acute, 187, 268, 316, 316, 316, +IBUS_KEY_dead_circumflex, 316, 388, 388, 388, 388, +IBUS_KEY_dead_tilde, 388, 406, 406, 406, 406, +IBUS_KEY_dead_macron, 406, 466, 466, 466, 466, +IBUS_KEY_dead_caron, 466, 502, 502, 502, 502, +IBUS_KEY_dead_doublegrave, 502, 538, 538, 538, 538, +IBUS_KEY_dead_invertedbreve, 538, 574, 574, 574, 574, +IBUS_KEY_Multi_key, 574, 574, 850, 920, 926, +IBUS_KEY_M, 0, 2, +IBUS_KEY_m, 2, 2, +0x0186, 4, 2, +0x018E, 6, 2, +0x0190, 8, 2, +0x0196, 10, 2, +0x01B1, 12, 2, +0x01B2, 14, 2, +0x01DD, 16, 2, +0x0254, 18, 2, +0x025B, 20, 2, +0x0269, 22, 2, +0x028A, 24, 2, +0x028B, 26, 2, +IBUS_KEY_ENG, 28, 2, +IBUS_KEY_Cyrillic_a, 30, 2, +IBUS_KEY_Cyrillic_o, 32, 2, +IBUS_KEY_Cyrillic_er, 34, 2, +IBUS_KEY_Cyrillic_u, 36, 2, +IBUS_KEY_Cyrillic_A, 38, 2, +IBUS_KEY_Cyrillic_O, 40, 2, +IBUS_KEY_Cyrillic_ER, 42, 2, +IBUS_KEY_Cyrillic_U, 44, 2, +IBUS_KEY_dead_tilde, IBUS_KEY_A, 46, 3, +IBUS_KEY_dead_tilde, IBUS_KEY_E, 49, 3, +IBUS_KEY_dead_tilde, IBUS_KEY_I, 52, 3, +IBUS_KEY_dead_tilde, IBUS_KEY_O, 55, 3, +IBUS_KEY_dead_tilde, IBUS_KEY_U, 58, 3, +IBUS_KEY_dead_tilde, IBUS_KEY_a, 61, 3, +IBUS_KEY_dead_tilde, IBUS_KEY_e, 64, 3, +IBUS_KEY_dead_tilde, IBUS_KEY_i, 67, 3, +IBUS_KEY_dead_tilde, IBUS_KEY_o, 70, 3, +IBUS_KEY_dead_tilde, IBUS_KEY_u, 73, 3, +IBUS_KEY_dead_tilde, 0x0186, 76, 3, +IBUS_KEY_dead_tilde, 0x018E, 79, 3, +IBUS_KEY_dead_tilde, 0x0190, 82, 3, +IBUS_KEY_dead_tilde, 0x01DD, 85, 3, +IBUS_KEY_dead_tilde, 0x0254, 88, 3, +IBUS_KEY_dead_tilde, 0x025B, 91, 3, +IBUS_KEY_J, 94, 2, +IBUS_KEY_j, 96, 2, +0x0186, 98, 2, +0x018E, 100, 2, +0x0190, 102, 2, +0x0196, 104, 2, +0x01B1, 106, 2, +0x01B2, 108, 2, +0x01DD, 110, 2, +0x0254, 112, 2, +0x025B, 114, 2, +0x0269, 116, 2, +0x028A, 118, 2, +0x028B, 120, 2, +IBUS_KEY_ENG, 122, 2, +IBUS_KEY_Cyrillic_a, 124, 2, +IBUS_KEY_Cyrillic_ie, 126, 2, +IBUS_KEY_Cyrillic_i, 128, 2, +IBUS_KEY_Cyrillic_o, 130, 2, +IBUS_KEY_Cyrillic_er, 132, 2, +IBUS_KEY_Cyrillic_u, 134, 2, +IBUS_KEY_Cyrillic_A, 136, 2, +IBUS_KEY_Cyrillic_IE, 138, 2, +IBUS_KEY_Cyrillic_I, 140, 2, +IBUS_KEY_Cyrillic_O, 142, 2, +IBUS_KEY_Cyrillic_ER, 144, 2, +IBUS_KEY_Cyrillic_U, 146, 2, +IBUS_KEY_dead_tilde, IBUS_KEY_A, 148, 3, +IBUS_KEY_dead_tilde, IBUS_KEY_E, 151, 3, +IBUS_KEY_dead_tilde, IBUS_KEY_I, 154, 3, +IBUS_KEY_dead_tilde, IBUS_KEY_a, 157, 3, +IBUS_KEY_dead_tilde, IBUS_KEY_e, 160, 3, +IBUS_KEY_dead_tilde, IBUS_KEY_i, 163, 3, +IBUS_KEY_dead_tilde, 0x0186, 166, 3, +IBUS_KEY_dead_tilde, 0x018E, 169, 3, +IBUS_KEY_dead_tilde, 0x0190, 172, 3, +IBUS_KEY_dead_tilde, 0x01DD, 175, 3, +IBUS_KEY_dead_tilde, 0x0254, 178, 3, +IBUS_KEY_dead_tilde, 0x025B, 181, 3, +0x0186, 184, 2, +0x018E, 186, 2, +0x0190, 188, 2, +0x0196, 190, 2, +0x01B1, 192, 2, +0x01B2, 194, 2, +0x01DD, 196, 2, +0x0254, 198, 2, +0x025B, 200, 2, +0x0269, 202, 2, +0x028A, 204, 2, +0x028B, 206, 2, +IBUS_KEY_Cyrillic_a, 208, 2, +IBUS_KEY_Cyrillic_ie, 210, 2, +IBUS_KEY_Cyrillic_i, 212, 2, +IBUS_KEY_Cyrillic_o, 214, 2, +IBUS_KEY_Cyrillic_er, 216, 2, +IBUS_KEY_Cyrillic_u, 218, 2, +IBUS_KEY_Cyrillic_A, 220, 2, +IBUS_KEY_Cyrillic_IE, 222, 2, +IBUS_KEY_Cyrillic_I, 224, 2, +IBUS_KEY_Cyrillic_O, 226, 2, +IBUS_KEY_Cyrillic_ER, 228, 2, +IBUS_KEY_Cyrillic_U, 230, 2, +0x0186, 232, 2, +0x018E, 234, 2, +0x0190, 236, 2, +0x01DD, 238, 2, +0x0254, 240, 2, +0x025B, 242, 2, +0x0186, 244, 2, +0x018E, 246, 2, +0x0190, 248, 2, +0x0196, 250, 2, +0x01B1, 252, 2, +0x01B2, 254, 2, +0x01DD, 256, 2, +0x0254, 258, 2, +0x025B, 260, 2, +0x0269, 262, 2, +0x028A, 264, 2, +0x028B, 266, 2, +IBUS_KEY_Cyrillic_a, 268, 2, +IBUS_KEY_Cyrillic_ie, 270, 2, +IBUS_KEY_Cyrillic_o, 272, 2, +IBUS_KEY_Cyrillic_er, 274, 2, +IBUS_KEY_Cyrillic_A, 276, 2, +IBUS_KEY_Cyrillic_IE, 278, 2, +IBUS_KEY_Cyrillic_O, 280, 2, +IBUS_KEY_Cyrillic_ER, 282, 2, +0x0186, 284, 2, +0x018E, 286, 2, +0x0190, 288, 2, +0x0196, 290, 2, +0x01B1, 292, 2, +0x01B2, 294, 2, +0x01DD, 296, 2, +0x0254, 298, 2, +0x025B, 300, 2, +0x0269, 302, 2, +0x028A, 304, 2, +0x028B, 306, 2, +IBUS_KEY_Cyrillic_a, 308, 2, +IBUS_KEY_Cyrillic_ie, 310, 2, +IBUS_KEY_Cyrillic_i, 312, 2, +IBUS_KEY_Cyrillic_o, 314, 2, +IBUS_KEY_Cyrillic_er, 316, 2, +IBUS_KEY_Cyrillic_u, 318, 2, +IBUS_KEY_Cyrillic_A, 320, 2, +IBUS_KEY_Cyrillic_IE, 322, 2, +IBUS_KEY_Cyrillic_I, 324, 2, +IBUS_KEY_Cyrillic_O, 326, 2, +IBUS_KEY_Cyrillic_ER, 328, 2, +IBUS_KEY_Cyrillic_U, 330, 2, +IBUS_KEY_Cyrillic_a, 332, 2, +IBUS_KEY_Cyrillic_ie, 334, 2, +IBUS_KEY_Cyrillic_i, 336, 2, +IBUS_KEY_Cyrillic_o, 338, 2, +IBUS_KEY_Cyrillic_er, 340, 2, +IBUS_KEY_Cyrillic_u, 342, 2, +IBUS_KEY_Cyrillic_A, 344, 2, +IBUS_KEY_Cyrillic_IE, 346, 2, +IBUS_KEY_Cyrillic_I, 348, 2, +IBUS_KEY_Cyrillic_O, 350, 2, +IBUS_KEY_Cyrillic_ER, 352, 2, +IBUS_KEY_Cyrillic_U, 354, 2, +IBUS_KEY_apostrophe, IBUS_KEY_J, 356, 2, +IBUS_KEY_apostrophe, IBUS_KEY_j, 358, 2, +IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_a, 360, 2, +IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_ie, 362, 2, +IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_i, 364, 2, +IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_o, 366, 2, +IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_er, 368, 2, +IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_u, 370, 2, +IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_A, 372, 2, +IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_IE, 374, 2, +IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_I, 376, 2, +IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_O, 378, 2, +IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_ER, 380, 2, +IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_U, 382, 2, +IBUS_KEY_F, IBUS_KEY_U, 384, 1, +IBUS_KEY_J, IBUS_KEY_apostrophe, 385, 2, +IBUS_KEY_J, IBUS_KEY_acute, 387, 2, +IBUS_KEY_asciicircum, IBUS_KEY_Cyrillic_a, 389, 2, +IBUS_KEY_asciicircum, IBUS_KEY_Cyrillic_ie, 391, 2, +IBUS_KEY_asciicircum, IBUS_KEY_Cyrillic_i, 393, 2, +IBUS_KEY_asciicircum, IBUS_KEY_Cyrillic_o, 395, 2, +IBUS_KEY_asciicircum, IBUS_KEY_Cyrillic_er, 397, 2, +IBUS_KEY_asciicircum, IBUS_KEY_Cyrillic_u, 399, 2, +IBUS_KEY_asciicircum, IBUS_KEY_Cyrillic_A, 401, 2, +IBUS_KEY_asciicircum, IBUS_KEY_Cyrillic_IE, 403, 2, +IBUS_KEY_asciicircum, IBUS_KEY_Cyrillic_I, 405, 2, +IBUS_KEY_asciicircum, IBUS_KEY_Cyrillic_O, 407, 2, +IBUS_KEY_asciicircum, IBUS_KEY_Cyrillic_ER, 409, 2, +IBUS_KEY_asciicircum, IBUS_KEY_Cyrillic_U, 411, 2, +IBUS_KEY_underscore, IBUS_KEY_Cyrillic_a, 413, 2, +IBUS_KEY_underscore, IBUS_KEY_Cyrillic_ie, 415, 2, +IBUS_KEY_underscore, IBUS_KEY_Cyrillic_o, 417, 2, +IBUS_KEY_underscore, IBUS_KEY_Cyrillic_er, 419, 2, +IBUS_KEY_underscore, IBUS_KEY_Cyrillic_A, 421, 2, +IBUS_KEY_underscore, IBUS_KEY_Cyrillic_IE, 423, 2, +IBUS_KEY_underscore, IBUS_KEY_Cyrillic_O, 425, 2, +IBUS_KEY_underscore, IBUS_KEY_Cyrillic_ER, 427, 2, +IBUS_KEY_grave, IBUS_KEY_Cyrillic_a, 429, 2, +IBUS_KEY_grave, IBUS_KEY_Cyrillic_o, 431, 2, +IBUS_KEY_grave, IBUS_KEY_Cyrillic_er, 433, 2, +IBUS_KEY_grave, IBUS_KEY_Cyrillic_u, 435, 2, +IBUS_KEY_grave, IBUS_KEY_Cyrillic_A, 437, 2, +IBUS_KEY_grave, IBUS_KEY_Cyrillic_O, 439, 2, +IBUS_KEY_grave, IBUS_KEY_Cyrillic_ER, 441, 2, +IBUS_KEY_grave, IBUS_KEY_Cyrillic_U, 443, 2, +IBUS_KEY_j, IBUS_KEY_apostrophe, 445, 2, +IBUS_KEY_j, IBUS_KEY_acute, 447, 2, +IBUS_KEY_macron, IBUS_KEY_Cyrillic_a, 449, 2, +IBUS_KEY_macron, IBUS_KEY_Cyrillic_ie, 451, 2, +IBUS_KEY_macron, IBUS_KEY_Cyrillic_o, 453, 2, +IBUS_KEY_macron, IBUS_KEY_Cyrillic_er, 455, 2, +IBUS_KEY_macron, IBUS_KEY_Cyrillic_A, 457, 2, +IBUS_KEY_macron, IBUS_KEY_Cyrillic_IE, 459, 2, +IBUS_KEY_macron, IBUS_KEY_Cyrillic_O, 461, 2, +IBUS_KEY_macron, IBUS_KEY_Cyrillic_ER, 463, 2, +IBUS_KEY_acute, IBUS_KEY_J, 465, 2, +IBUS_KEY_acute, IBUS_KEY_j, 467, 2, +IBUS_KEY_acute, IBUS_KEY_Cyrillic_a, 469, 2, +IBUS_KEY_acute, IBUS_KEY_Cyrillic_ie, 471, 2, +IBUS_KEY_acute, IBUS_KEY_Cyrillic_i, 473, 2, +IBUS_KEY_acute, IBUS_KEY_Cyrillic_o, 475, 2, +IBUS_KEY_acute, IBUS_KEY_Cyrillic_er, 477, 2, +IBUS_KEY_acute, IBUS_KEY_Cyrillic_u, 479, 2, +IBUS_KEY_acute, IBUS_KEY_Cyrillic_A, 481, 2, +IBUS_KEY_acute, IBUS_KEY_Cyrillic_IE, 483, 2, +IBUS_KEY_acute, IBUS_KEY_Cyrillic_I, 485, 2, +IBUS_KEY_acute, IBUS_KEY_Cyrillic_O, 487, 2, +IBUS_KEY_acute, IBUS_KEY_Cyrillic_ER, 489, 2, +IBUS_KEY_acute, IBUS_KEY_Cyrillic_U, 491, 2, +IBUS_KEY_backslash, IBUS_KEY_o, IBUS_KEY_slash, 493, 1, +IBUS_KEY_grave, IBUS_KEY_grave, IBUS_KEY_Cyrillic_a, 494, 2, +IBUS_KEY_grave, IBUS_KEY_grave, IBUS_KEY_Cyrillic_ie, 496, 2, +IBUS_KEY_grave, IBUS_KEY_grave, IBUS_KEY_Cyrillic_i, 498, 2, +IBUS_KEY_grave, IBUS_KEY_grave, IBUS_KEY_Cyrillic_o, 500, 2, +IBUS_KEY_grave, IBUS_KEY_grave, IBUS_KEY_Cyrillic_er, 502, 2, +IBUS_KEY_grave, IBUS_KEY_grave, IBUS_KEY_Cyrillic_u, 504, 2, +IBUS_KEY_grave, IBUS_KEY_grave, IBUS_KEY_Cyrillic_A, 506, 2, +IBUS_KEY_grave, IBUS_KEY_grave, IBUS_KEY_Cyrillic_IE, 508, 2, +IBUS_KEY_grave, IBUS_KEY_grave, IBUS_KEY_Cyrillic_I, 510, 2, +IBUS_KEY_grave, IBUS_KEY_grave, IBUS_KEY_Cyrillic_O, 512, 2, +IBUS_KEY_grave, IBUS_KEY_grave, IBUS_KEY_Cyrillic_ER, 514, 2, +IBUS_KEY_grave, IBUS_KEY_grave, IBUS_KEY_Cyrillic_U, 516, 2, +IBUS_KEY_p, IBUS_KEY_o, IBUS_KEY_o, 518, 1, +IBUS_KEY_L, IBUS_KEY_L, IBUS_KEY_A, IBUS_KEY_P, 519, 1, +}; + +static const guint32 gtk_compose_seqs_compact_32bit_second[] = { +0x004D, 0x0300, +0x006D, 0x0300, +0x0186, 0x0300, +0x018E, 0x0300, +0x0190, 0x0300, +0x0196, 0x0300, +0x01B1, 0x0300, +0x01B2, 0x0300, +0x01DD, 0x0300, +0x0254, 0x0300, +0x025B, 0x0300, +0x0269, 0x0300, +0x028A, 0x0300, +0x028B, 0x0300, +0x014A, 0x0300, +0x0430, 0x0300, +0x043E, 0x0300, +0x0440, 0x0300, +0x0443, 0x0300, +0x0410, 0x0300, +0x041E, 0x0300, +0x0420, 0x0300, +0x0423, 0x0300, +0x0041, 0x0303, 0x0300, +0x0045, 0x0303, 0x0300, +0x0049, 0x0303, 0x0300, +0x004F, 0x0303, 0x0300, +0x0055, 0x0303, 0x0300, +0x0061, 0x0303, 0x0300, +0x0065, 0x0303, 0x0300, +0x0069, 0x0303, 0x0300, +0x006F, 0x0303, 0x0300, +0x0075, 0x0303, 0x0300, +0x0186, 0x0303, 0x0300, +0x018E, 0x0303, 0x0300, +0x0190, 0x0303, 0x0300, +0x01DD, 0x0303, 0x0300, +0x0254, 0x0303, 0x0300, +0x025B, 0x0303, 0x0300, +0x004A, 0x0301, +0x006A, 0x0301, +0x0186, 0x0301, +0x018E, 0x0301, +0x0190, 0x0301, +0x0196, 0x0301, +0x01B1, 0x0301, +0x01B2, 0x0301, +0x01DD, 0x0301, +0x0254, 0x0301, +0x025B, 0x0301, +0x0269, 0x0301, +0x028A, 0x0301, +0x028B, 0x0301, +0x014A, 0x0301, +0x0430, 0x0301, +0x0435, 0x0301, +0x0438, 0x0301, +0x043E, 0x0301, +0x0440, 0x0301, +0x0443, 0x0301, +0x0410, 0x0301, +0x0415, 0x0301, +0x0418, 0x0301, +0x041E, 0x0301, +0x0420, 0x0301, +0x0423, 0x0301, +0x0041, 0x0303, 0x0301, +0x0045, 0x0303, 0x0301, +0x0049, 0x0303, 0x0301, +0x0061, 0x0303, 0x0301, +0x0065, 0x0303, 0x0301, +0x0069, 0x0303, 0x0301, +0x0186, 0x0303, 0x0301, +0x018E, 0x0303, 0x0301, +0x0190, 0x0303, 0x0301, +0x01DD, 0x0303, 0x0301, +0x0254, 0x0303, 0x0301, +0x025B, 0x0303, 0x0301, +0x0186, 0x0302, +0x018E, 0x0302, +0x0190, 0x0302, +0x0196, 0x0302, +0x01B1, 0x0302, +0x01B2, 0x0302, +0x01DD, 0x0302, +0x0254, 0x0302, +0x025B, 0x0302, +0x0269, 0x0302, +0x028A, 0x0302, +0x028B, 0x0302, +0x0430, 0x0302, +0x0435, 0x0302, +0x0438, 0x0302, +0x043E, 0x0302, +0x0440, 0x0302, +0x0443, 0x0302, +0x0410, 0x0302, +0x0415, 0x0302, +0x0418, 0x0302, +0x041E, 0x0302, +0x0420, 0x0302, +0x0423, 0x0302, +0x0186, 0x0303, +0x018E, 0x0303, +0x0190, 0x0303, +0x01DD, 0x0303, +0x0254, 0x0303, +0x025B, 0x0303, +0x0186, 0x0304, +0x018E, 0x0304, +0x0190, 0x0304, +0x0196, 0x0304, +0x01B1, 0x0304, +0x01B2, 0x0304, +0x01DD, 0x0304, +0x0254, 0x0304, +0x025B, 0x0304, +0x0269, 0x0304, +0x028A, 0x0304, +0x028B, 0x0304, +0x0430, 0x0304, +0x0435, 0x0304, +0x043E, 0x0304, +0x0440, 0x0304, +0x0410, 0x0304, +0x0415, 0x0304, +0x041E, 0x0304, +0x0420, 0x0304, +0x0186, 0x030C, +0x018E, 0x030C, +0x0190, 0x030C, +0x0196, 0x030C, +0x01B1, 0x030C, +0x01B2, 0x030C, +0x01DD, 0x030C, +0x0254, 0x030C, +0x025B, 0x030C, +0x0269, 0x030C, +0x028A, 0x030C, +0x028B, 0x030C, +0x0430, 0x030F, +0x0435, 0x030F, +0x0438, 0x030F, +0x043E, 0x030F, +0x0440, 0x030F, +0x0443, 0x030F, +0x0410, 0x030F, +0x0415, 0x030F, +0x0418, 0x030F, +0x041E, 0x030F, +0x0420, 0x030F, +0x0423, 0x030F, +0x0430, 0x0311, +0x0435, 0x0311, +0x0438, 0x0311, +0x043E, 0x0311, +0x0440, 0x0311, +0x0443, 0x0311, +0x0410, 0x0311, +0x0415, 0x0311, +0x0418, 0x0311, +0x041E, 0x0311, +0x0420, 0x0311, +0x0423, 0x0311, +0x004A, 0x0301, +0x006A, 0x0301, +0x0430, 0x0301, +0x0435, 0x0301, +0x0438, 0x0301, +0x043E, 0x0301, +0x0440, 0x0301, +0x0443, 0x0301, +0x0410, 0x0301, +0x0415, 0x0301, +0x0418, 0x0301, +0x041E, 0x0301, +0x0420, 0x0301, +0x0423, 0x0301, +0x1F595, +0x004A, 0x0301, +0x004A, 0x0301, +0x0430, 0x0302, +0x0435, 0x0302, +0x0438, 0x0302, +0x043E, 0x0302, +0x0440, 0x0302, +0x0443, 0x0302, +0x0410, 0x0302, +0x0415, 0x0302, +0x0418, 0x0302, +0x041E, 0x0302, +0x0420, 0x0302, +0x0423, 0x0302, +0x0430, 0x0304, +0x0435, 0x0304, +0x043E, 0x0304, +0x0440, 0x0304, +0x0410, 0x0304, +0x0415, 0x0304, +0x041E, 0x0304, +0x0420, 0x0304, +0x0430, 0x0300, +0x043E, 0x0300, +0x0440, 0x0300, +0x0443, 0x0300, +0x0410, 0x0300, +0x041E, 0x0300, +0x0420, 0x0300, +0x0423, 0x0300, +0x006A, 0x0301, +0x006A, 0x0301, +0x0430, 0x0304, +0x0435, 0x0304, +0x043E, 0x0304, +0x0440, 0x0304, +0x0410, 0x0304, +0x0415, 0x0304, +0x041E, 0x0304, +0x0420, 0x0304, +0x004A, 0x0301, +0x006A, 0x0301, +0x0430, 0x0301, +0x0435, 0x0301, +0x0438, 0x0301, +0x043E, 0x0301, +0x0440, 0x0301, +0x0443, 0x0301, +0x0410, 0x0301, +0x0415, 0x0301, +0x0418, 0x0301, +0x041E, 0x0301, +0x0420, 0x0301, +0x0423, 0x0301, +0x1F64C, +0x0430, 0x030F, +0x0435, 0x030F, +0x0438, 0x030F, +0x043E, 0x030F, +0x0440, 0x030F, +0x0443, 0x030F, +0x0410, 0x030F, +0x0415, 0x030F, +0x0418, 0x030F, +0x041E, 0x030F, +0x0420, 0x030F, +0x0423, 0x030F, +0x1F4A9, +0x1F596, }; #endif /* __GTK_IM_CONTEXT_SIMPLE_SEQS_H__ */ diff --git a/src/ibus.h b/src/ibus.h index ef811a4cc..256d57bac 100644 --- a/src/ibus.h +++ b/src/ibus.h @@ -1,23 +1,24 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2013 Peng Huang + * Copyright (C) 2018 Takao Fujiwara + * Copyright (C) 2008-2018 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #ifndef __IBUS_H_ @@ -55,6 +56,11 @@ #include #include #include +#include +#include +#include +#include +#include #ifndef IBUS_DISABLE_DEPRECATED #include diff --git a/src/ibusaccelgroup.c b/src/ibusaccelgroup.c new file mode 100644 index 000000000..aec1c7e44 --- /dev/null +++ b/src/ibusaccelgroup.c @@ -0,0 +1,529 @@ +/* GTK - The GIMP Toolkit + * Copyright (C) 1998, 2001 Tim Janik + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + */ + +/* + * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GTK+ Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GTK+ at ftp://ftp.gtk.org/pub/gtk/. + */ + +#include "config.h" +#include +#include + +#include "ibusaccelgroup.h" +#include "ibuskeys.h" +#include "ibuskeysyms.h" + + +/* for _gtk_get_primary_accel_mod() */ +#define _IBUS_GET_PRIMARY_ACCEL_MOD IBUS_CONTROL_MASK + +/** + * SECTION: ibusaccelgroup + * @short_description: Groups of global keyboard accelerators for an + * entire GtkWindow + * @title: Accelerator Groups + * @stability: Unstable + * + * Provides ibus_accelerator_parse() + */ + + +/** + * ibus_accelerator_valid: + * @keyval: a GDK keyval + * @modifiers: modifier mask + * + * Determines whether a given keyval and modifier mask constitute + * a valid keyboard accelerator. For example, the #IBUS_KEY_a keyval + * plus #IBUS_CONTROL_MASK is valid - this is a “Ctrl+a” accelerator. + * But, you can't, for instance, use the #IBUS_KEY_Control_L keyval + * as an accelerator. + * + * Returns: %TRUE if the accelerator is valid + */ +gboolean +ibus_accelerator_valid (guint keyval, + IBusModifierType modifiers) +{ + static const guint invalid_accelerator_vals[] = { + IBUS_KEY_Shift_L, IBUS_KEY_Shift_R, IBUS_KEY_Shift_Lock, + IBUS_KEY_Caps_Lock, IBUS_KEY_ISO_Lock, IBUS_KEY_Control_L, + IBUS_KEY_Control_R, IBUS_KEY_Meta_L, IBUS_KEY_Meta_R, + IBUS_KEY_Alt_L, IBUS_KEY_Alt_R, IBUS_KEY_Super_L, IBUS_KEY_Super_R, + IBUS_KEY_Hyper_L, IBUS_KEY_Hyper_R, IBUS_KEY_ISO_Level3_Shift, + IBUS_KEY_ISO_Next_Group, IBUS_KEY_ISO_Prev_Group, + IBUS_KEY_ISO_First_Group, IBUS_KEY_ISO_Last_Group, + IBUS_KEY_Mode_switch, IBUS_KEY_Num_Lock, IBUS_KEY_Multi_key, + IBUS_KEY_Scroll_Lock, IBUS_KEY_Sys_Req, + IBUS_KEY_Tab, IBUS_KEY_ISO_Left_Tab, IBUS_KEY_KP_Tab, + IBUS_KEY_First_Virtual_Screen, IBUS_KEY_Prev_Virtual_Screen, + IBUS_KEY_Next_Virtual_Screen, IBUS_KEY_Last_Virtual_Screen, + IBUS_KEY_Terminate_Server, IBUS_KEY_AudibleBell_Enable, + 0 + }; + static const guint invalid_unmodified_vals[] = { + IBUS_KEY_Up, IBUS_KEY_Down, IBUS_KEY_Left, IBUS_KEY_Right, + IBUS_KEY_KP_Up, IBUS_KEY_KP_Down, IBUS_KEY_KP_Left, IBUS_KEY_KP_Right, + 0 + }; + const guint *ac_val; + + modifiers &= IBUS_MODIFIER_MASK; + + if (keyval <= 0xFF) + return keyval >= 0x20; + + ac_val = invalid_accelerator_vals; + while (*ac_val) { + if (keyval == *ac_val++) + return FALSE; + } + + if (!modifiers) { + ac_val = invalid_unmodified_vals; + while (*ac_val) { + if (keyval == *ac_val++) + return FALSE; + } + } + + return TRUE; +} + +static inline gboolean +is_alt (const gchar *string) +{ + return ((string[0] == '<') && + (string[1] == 'a' || string[1] == 'A') && + (string[2] == 'l' || string[2] == 'L') && + (string[3] == 't' || string[3] == 'T') && + (string[4] == '>')); +} + +static inline gboolean +is_ctl (const gchar *string) +{ + return ((string[0] == '<') && + (string[1] == 'c' || string[1] == 'C') && + (string[2] == 't' || string[2] == 'T') && + (string[3] == 'l' || string[3] == 'L') && + (string[4] == '>')); +} + +static inline gboolean +is_modx (const gchar *string) +{ + return ((string[0] == '<') && + (string[1] == 'm' || string[1] == 'M') && + (string[2] == 'o' || string[2] == 'O') && + (string[3] == 'd' || string[3] == 'D') && + (string[4] >= '1' && string[4] <= '5') && + (string[5] == '>')); +} + +static inline gboolean +is_ctrl (const gchar *string) +{ + return ((string[0] == '<') && + (string[1] == 'c' || string[1] == 'C') && + (string[2] == 't' || string[2] == 'T') && + (string[3] == 'r' || string[3] == 'R') && + (string[4] == 'l' || string[4] == 'L') && + (string[5] == '>')); +} + +static inline gboolean +is_shft (const gchar *string) +{ + return ((string[0] == '<') && + (string[1] == 's' || string[1] == 'S') && + (string[2] == 'h' || string[2] == 'H') && + (string[3] == 'f' || string[3] == 'F') && + (string[4] == 't' || string[4] == 'T') && + (string[5] == '>')); +} + +static inline gboolean +is_shift (const gchar *string) +{ + return ((string[0] == '<') && + (string[1] == 's' || string[1] == 'S') && + (string[2] == 'h' || string[2] == 'H') && + (string[3] == 'i' || string[3] == 'I') && + (string[4] == 'f' || string[4] == 'F') && + (string[5] == 't' || string[5] == 'T') && + (string[6] == '>')); +} + +static inline gboolean +is_control (const gchar *string) +{ + return ((string[0] == '<') && + (string[1] == 'c' || string[1] == 'C') && + (string[2] == 'o' || string[2] == 'O') && + (string[3] == 'n' || string[3] == 'N') && + (string[4] == 't' || string[4] == 'T') && + (string[5] == 'r' || string[5] == 'R') && + (string[6] == 'o' || string[6] == 'O') && + (string[7] == 'l' || string[7] == 'L') && + (string[8] == '>')); +} + +static inline gboolean +is_release (const gchar *string) +{ + return ((string[0] == '<') && + (string[1] == 'r' || string[1] == 'R') && + (string[2] == 'e' || string[2] == 'E') && + (string[3] == 'l' || string[3] == 'L') && + (string[4] == 'e' || string[4] == 'E') && + (string[5] == 'a' || string[5] == 'A') && + (string[6] == 's' || string[6] == 'S') && + (string[7] == 'e' || string[7] == 'E') && + (string[8] == '>')); +} + +static inline gboolean +is_meta (const gchar *string) +{ + return ((string[0] == '<') && + (string[1] == 'm' || string[1] == 'M') && + (string[2] == 'e' || string[2] == 'E') && + (string[3] == 't' || string[3] == 'T') && + (string[4] == 'a' || string[4] == 'A') && + (string[5] == '>')); +} + +static inline gboolean +is_super (const gchar *string) +{ + return ((string[0] == '<') && + (string[1] == 's' || string[1] == 'S') && + (string[2] == 'u' || string[2] == 'U') && + (string[3] == 'p' || string[3] == 'P') && + (string[4] == 'e' || string[4] == 'E') && + (string[5] == 'r' || string[5] == 'R') && + (string[6] == '>')); +} + +static inline gboolean +is_hyper (const gchar *string) +{ + return ((string[0] == '<') && + (string[1] == 'h' || string[1] == 'H') && + (string[2] == 'y' || string[2] == 'Y') && + (string[3] == 'p' || string[3] == 'P') && + (string[4] == 'e' || string[4] == 'E') && + (string[5] == 'r' || string[5] == 'R') && + (string[6] == '>')); +} + +static inline gboolean +is_primary (const gchar *string) +{ + return ((string[0] == '<') && + (string[1] == 'p' || string[1] == 'P') && + (string[2] == 'r' || string[2] == 'R') && + (string[3] == 'i' || string[3] == 'I') && + (string[4] == 'm' || string[4] == 'M') && + (string[5] == 'a' || string[5] == 'A') && + (string[6] == 'r' || string[6] == 'R') && + (string[7] == 'y' || string[7] == 'Y') && + (string[8] == '>')); +} + +static inline gboolean +is_keycode (const gchar *string) +{ + return (string[0] == '0' && + string[1] == 'x' && + g_ascii_isxdigit (string[2]) && + g_ascii_isxdigit (string[3])); +} + +/** + * ibus_accelerator_parse: + * @accelerator: string representing an accelerator + * @accelerator_key: (out) (allow-none): return location for accelerator + * keyval, or %NULL + * @accelerator_mods: (out) (allow-none): return location for accelerator + * modifier mask, %NULL + * + * Parses a string representing an accelerator. The format looks like + * “<Control>a” or “<Shift><Alt>F1” or “<Release%gt;z” + * (the last one is for key release). + * + * The parser is fairly liberal and allows lower or upper case, and also + * abbreviations such as “<Ctl>” and “<Ctrl>”. Key names are + * parsed using gdk_keyval_from_name(). For character keys the name is not the + * symbol, but the lowercase name, e.g. one would use “<Ctrl>minus” + * instead of “<Ctrl>-”. + * + * If the parse fails, @accelerator_key and @accelerator_mods will + * be set to 0 (zero). + * + * Since: 1.5.18 + */ +void +ibus_accelerator_parse (const gchar *accelerator, + guint *accelerator_key, + IBusModifierType *accelerator_mods) +{ + guint keyval; + IBusModifierType mods; + gint len; + gboolean error; + + if (accelerator_key) + *accelerator_key = 0; + if (accelerator_mods) + *accelerator_mods = 0; + g_return_if_fail (accelerator != NULL); + + error = FALSE; + keyval = 0; + mods = 0; + len = strlen (accelerator); + while (len) { + if (*accelerator == '<') { + if (len >= 9 && is_release (accelerator)) { + accelerator += 9; + len -= 9; + mods |= IBUS_RELEASE_MASK; + } else if (len >= 9 && is_primary (accelerator)) { + accelerator += 9; + len -= 9; + mods |= _IBUS_GET_PRIMARY_ACCEL_MOD; + } else if (len >= 9 && is_control (accelerator)) { + accelerator += 9; + len -= 9; + mods |= IBUS_CONTROL_MASK; + } else if (len >= 7 && is_shift (accelerator)) { + accelerator += 7; + len -= 7; + mods |= IBUS_SHIFT_MASK; + } else if (len >= 6 && is_shft (accelerator)) { + accelerator += 6; + len -= 6; + mods |= IBUS_SHIFT_MASK; + } else if (len >= 6 && is_ctrl (accelerator)) { + accelerator += 6; + len -= 6; + mods |= IBUS_CONTROL_MASK; + } else if (len >= 6 && is_modx (accelerator)) { + static const guint mod_vals[] = { + IBUS_MOD1_MASK, IBUS_MOD2_MASK, IBUS_MOD3_MASK, + IBUS_MOD4_MASK, IBUS_MOD5_MASK + }; + + len -= 6; + accelerator += 4; + mods |= mod_vals[*accelerator - '1']; + accelerator += 2; + } else if (len >= 5 && is_ctl (accelerator)) { + accelerator += 5; + len -= 5; + mods |= IBUS_CONTROL_MASK; + } else if (len >= 5 && is_alt (accelerator)) { + accelerator += 5; + len -= 5; + mods |= IBUS_MOD1_MASK; + } else if (len >= 6 && is_meta (accelerator)) { + accelerator += 6; + len -= 6; + mods |= IBUS_META_MASK; + } else if (len >= 7 && is_hyper (accelerator)) { + accelerator += 7; + len -= 7; + mods |= IBUS_HYPER_MASK; + } else if (len >= 7 && is_super (accelerator)) { + accelerator += 7; + len -= 7; + mods |= IBUS_SUPER_MASK; + } else { + gchar last_ch; + + last_ch = *accelerator; + while (last_ch && last_ch != '>') { + last_ch = *accelerator; + accelerator += 1; + len -= 1; + } + } + } else { + if (len >= 4 && is_keycode (accelerator)) { + /* There was a keycode in the string, but + * we cannot store it, so we have an error */ + error = TRUE; + goto out; + } else { + keyval = ibus_keyval_from_name (accelerator); + if (keyval == IBUS_KEY_VoidSymbol) { + error = TRUE; + goto out; + } + } + + accelerator += len; + len -= len; + } + } + +out: + if (error) + keyval = mods = 0; + + if (accelerator_key) + *accelerator_key = ibus_keyval_to_lower (keyval); + if (accelerator_mods) + *accelerator_mods = mods; +} + +/** + * ibus_accelerator_name: + * @accelerator_key: accelerator keyval + * @accelerator_mods: accelerator modifier mask + * + * Converts an accelerator keyval and modifier mask into a string + * parseable by gtk_accelerator_parse(). For example, if you pass in + * #IBUS_KEY_q and #IBUS_CONTROL_MASK, this function returns “<Control>q”. + * + * If you need to display accelerators in the user interface, + * see gtk_accelerator_get_label(). + * + * Returns: a newly-allocated accelerator name + */ +gchar* +ibus_accelerator_name (guint accelerator_key, + IBusModifierType accelerator_mods) +{ + static const gchar text_release[] = ""; + static const gchar text_primary[] = ""; + static const gchar text_shift[] = ""; + static const gchar text_control[] = ""; + static const gchar text_mod1[] = ""; + static const gchar text_mod2[] = ""; + static const gchar text_mod3[] = ""; + static const gchar text_mod4[] = ""; + static const gchar text_mod5[] = ""; + static const gchar text_meta[] = ""; + static const gchar text_super[] = ""; + static const gchar text_hyper[] = ""; + IBusModifierType saved_mods; + guint l; + const gchar *keyval_name; + gchar *accelerator; + + accelerator_mods &= IBUS_MODIFIER_MASK; + + keyval_name = ibus_keyval_name (ibus_keyval_to_lower (accelerator_key)); + if (!keyval_name) + keyval_name = ""; + + saved_mods = accelerator_mods; + l = 0; + if (accelerator_mods & IBUS_RELEASE_MASK) + l += sizeof (text_release) - 1; + if (accelerator_mods & _IBUS_GET_PRIMARY_ACCEL_MOD) { + l += sizeof (text_primary) - 1; + /* consume the default accel */ + accelerator_mods &= ~_IBUS_GET_PRIMARY_ACCEL_MOD; + } + if (accelerator_mods & IBUS_SHIFT_MASK) + l += sizeof (text_shift) - 1; + if (accelerator_mods & IBUS_CONTROL_MASK) + l += sizeof (text_control) - 1; + if (accelerator_mods & IBUS_MOD1_MASK) + l += sizeof (text_mod1) - 1; + if (accelerator_mods & IBUS_MOD2_MASK) + l += sizeof (text_mod2) - 1; + if (accelerator_mods & IBUS_MOD3_MASK) + l += sizeof (text_mod3) - 1; + if (accelerator_mods & IBUS_MOD4_MASK) + l += sizeof (text_mod4) - 1; + if (accelerator_mods & IBUS_MOD5_MASK) + l += sizeof (text_mod5) - 1; + l += strlen (keyval_name); + if (accelerator_mods & IBUS_META_MASK) + l += sizeof (text_meta) - 1; + if (accelerator_mods & IBUS_HYPER_MASK) + l += sizeof (text_hyper) - 1; + if (accelerator_mods & IBUS_SUPER_MASK) + l += sizeof (text_super) - 1; + + g_return_val_if_fail ((accelerator = g_new (gchar, l + 1)), NULL); + + accelerator_mods = saved_mods; + l = 0; + accelerator[l] = 0; + if (accelerator_mods & IBUS_RELEASE_MASK) { + strcpy (accelerator + l, text_release); + l += sizeof (text_release) - 1; + } + if (accelerator_mods & _IBUS_GET_PRIMARY_ACCEL_MOD) { + strcpy (accelerator + l, text_primary); + l += sizeof (text_primary) - 1; + /* consume the default accel */ + accelerator_mods &= ~_IBUS_GET_PRIMARY_ACCEL_MOD; + } + if (accelerator_mods & IBUS_SHIFT_MASK) { + strcpy (accelerator + l, text_shift); + l += sizeof (text_shift) - 1; + } + if (accelerator_mods & IBUS_CONTROL_MASK) { + strcpy (accelerator + l, text_control); + l += sizeof (text_control) - 1; + } + if (accelerator_mods & IBUS_MOD1_MASK) { + strcpy (accelerator + l, text_mod1); + l += sizeof (text_mod1) - 1; + } + if (accelerator_mods & IBUS_MOD2_MASK) { + strcpy (accelerator + l, text_mod2); + l += sizeof (text_mod2) - 1; + } + if (accelerator_mods & IBUS_MOD3_MASK) { + strcpy (accelerator + l, text_mod3); + l += sizeof (text_mod3) - 1; + } + if (accelerator_mods & IBUS_MOD4_MASK) { + strcpy (accelerator + l, text_mod4); + l += sizeof (text_mod4) - 1; + } + if (accelerator_mods & IBUS_MOD5_MASK) { + strcpy (accelerator + l, text_mod5); + l += sizeof (text_mod5) - 1; + } + if (accelerator_mods & IBUS_META_MASK) { + strcpy (accelerator + l, text_meta); + l += sizeof (text_meta) - 1; + } + if (accelerator_mods & IBUS_HYPER_MASK) { + strcpy (accelerator + l, text_hyper); + l += sizeof (text_hyper) - 1; + } + if (accelerator_mods & IBUS_SUPER_MASK) { + strcpy (accelerator + l, text_super); + l += sizeof (text_super) - 1; + } + strcpy (accelerator + l, keyval_name); + + return accelerator; +} diff --git a/src/ibusaccelgroup.h b/src/ibusaccelgroup.h new file mode 100644 index 000000000..cb38bee40 --- /dev/null +++ b/src/ibusaccelgroup.h @@ -0,0 +1,51 @@ +/* GTK - The GIMP Toolkit + * Copyright (C) 1998, 2001 Tim Janik + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + */ + +/* + * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GTK+ Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GTK+ at ftp://ftp.gtk.org/pub/gtk/. + */ + +#ifndef __IBUS_ACCEL_GROUP_H_ +#define __IBUS_ACCEL_GROUP_H_ + + +#if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) +#error "Only can be included directly" +#endif + +#include +#include + +G_BEGIN_DECLS + + +/* --- Accelerators--- */ +gboolean ibus_accelerator_valid (guint keyval, + IBusModifierType modifiers) + G_GNUC_CONST; +void ibus_accelerator_parse (const gchar *accelerator, + guint *accelerator_key, + IBusModifierType *accelerator_mods); +gchar* ibus_accelerator_name (guint accelerator_key, + IBusModifierType accelerator_mods); + +G_END_DECLS + +#endif /* __IBUS_ACCEL_GROUP_H_ */ diff --git a/src/ibusattribute.c b/src/ibusattribute.c index aac14d48a..52af32e27 100644 --- a/src/ibusattribute.c +++ b/src/ibusattribute.c @@ -7,17 +7,17 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include "ibusattribute.h" diff --git a/src/ibusattribute.h b/src/ibusattribute.h index 7a7fcb64d..fe4cab455 100644 --- a/src/ibusattribute.h +++ b/src/ibusattribute.h @@ -1,29 +1,32 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* IBus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2013 Peng Huang + * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif +#ifndef __IBUS_ATTRIBUTE_H_ +#define __IBUS_ATTRIBUTE_H_ + /** * SECTION: ibusattribute * @short_description: Attributes of IBusText. @@ -31,10 +34,9 @@ * @stability: Stable * * An IBusAttribute represents an attribute that associate to IBusText. - * It decorates preedit buffer and auxiliary text with underline, foreground and background colors. + * It decorates preedit buffer and auxiliary text with underline, foreground + * and background colors. */ -#ifndef __IBUS_ATTRIBUTE_H_ -#define __IBUS_ATTRIBUTE_H_ #include "ibusserializable.h" @@ -76,7 +78,7 @@ typedef enum { * @IBUS_ATTR_UNDERLINE_NONE: No underline. * @IBUS_ATTR_UNDERLINE_SINGLE: Single underline. * @IBUS_ATTR_UNDERLINE_DOUBLE: Double underline. - * @IBUS_ATTR_UNDERLINE_LOW: Low underline ? %FIXME + * @IBUS_ATTR_UNDERLINE_LOW: Low underline ? FIXME * @IBUS_ATTR_UNDERLINE_ERROR: Error underline * * Type of IBusText attribute. @@ -130,9 +132,10 @@ GType ibus_attribute_get_type (); * @value: Value of the attribute. * @start_index: Where attribute starts. * @end_index: Where attribute ends. - * @returns: (transfer none): A newly allocated IBusAttribute. * - * New an IBusAttribute. + * Creates a new IBusAttribute. + * + * Returns: (transfer none): A newly allocated IBusAttribute. */ IBusAttribute *ibus_attribute_new (guint type, guint value, @@ -141,38 +144,46 @@ IBusAttribute *ibus_attribute_new (guint type, /** * ibus_attribute_get_attr_type: - * @returns: An enum of #IBusAttrType. + * @attr: An #IBusAttribute + * + * Gets an enum of #IBusAttrType. * - * Returns an enum of #IBusAttrType. + * Returns: An enum of #IBusAttrType. */ guint ibus_attribute_get_attr_type (IBusAttribute *attr); /** * ibus_attribute_get_value: - * @returns: An unsigned int value relative with #IBusAttrType. + * @attr: An #IBusAttribute * - * Returns an unsigned int value relative with #IBusAttrType. + * Gets an unsigned int value relative with #IBusAttrType. * If the type is %IBUS_ATTR_TYPE_UNDERLINE, the return value is * #IBusAttrUnderline. If the type is %IBUS_ATTR_TYPE_FOREGROUND, * the return value is the color RGB. + * + * Returns: An unsigned int value relative with #IBusAttrType. */ guint ibus_attribute_get_value (IBusAttribute *attr); /** * ibus_attribute_get_start_index: - * @returns: A start unsigned index + * @attr: An #IBusAttribute + * + * Gets a start unsigned index * - * Returns a start unsigned index + * Returns: A start unsigned index */ guint ibus_attribute_get_start_index (IBusAttribute *attr); /** * ibus_attribute_get_end_index: - * @returns: A end unsigned index + * @attr: An #IBusAttribute + * + * Gets an end unsigned index * - * Returns a end unsigned index + * Returns: A end unsigned index */ guint ibus_attribute_get_end_index (IBusAttribute *attr); @@ -182,9 +193,10 @@ guint ibus_attribute_get_end_index * @underline_type: Type of underline. * @start_index: Where attribute starts. * @end_index: Where attribute ends. - * @returns: (transfer none): A newly allocated #IBusAttribute. * - * New an underline #IBusAttribute. + * Creates a new underline #IBusAttribute. + * + * Returns: (transfer none): A newly allocated #IBusAttribute. */ IBusAttribute *ibus_attr_underline_new (guint underline_type, guint start_index, @@ -194,9 +206,10 @@ IBusAttribute *ibus_attr_underline_new (guint underline_type, * @color: Color in RGB. * @start_index: Where attribute starts. * @end_index: Where attribute ends. - * @returns: (transfer none): A newly allocated #IBusAttribute. * - * New an foreground #IBusAttribute. + * Creates a new foreground #IBusAttribute. + * + * Returns: (transfer none): A newly allocated #IBusAttribute. */ IBusAttribute *ibus_attr_foreground_new (guint color, guint start_index, @@ -206,9 +219,10 @@ IBusAttribute *ibus_attr_foreground_new (guint color, * @color: Color in RGB. * @start_index: Where attribute starts. * @end_index: Where attribute ends. - * @returns: (transfer none): A newly allocated #IBusAttribute. * - * New an background #IBusAttribute. + * Creates a new background #IBusAttribute. + * + * Returns: (transfer none): A newly allocated #IBusAttribute. */ IBusAttribute *ibus_attr_background_new (guint color, guint start_index, diff --git a/src/ibusattrlist.c b/src/ibusattrlist.c index b90077c01..ea735fb1d 100644 --- a/src/ibusattrlist.c +++ b/src/ibusattrlist.c @@ -1,23 +1,23 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* IBus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2013 Peng Huang + * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include "ibusattrlist.h" @@ -130,8 +130,8 @@ ibus_attr_list_copy (IBusAttrList *dest, (IBusSerializable *)src); g_return_val_if_fail (retval, FALSE); - g_return_val_if_fail (IBUS_IS_ATTRIBUTE (dest), FALSE); - g_return_val_if_fail (IBUS_IS_ATTRIBUTE (src), FALSE); + g_return_val_if_fail (IBUS_IS_ATTR_LIST (dest), FALSE); + g_return_val_if_fail (IBUS_IS_ATTR_LIST (src), FALSE); gint i; for (i = 0; ; i++) { diff --git a/src/ibusattrlist.h b/src/ibusattrlist.h index bbdf4bd15..41433dfd7 100644 --- a/src/ibusattrlist.h +++ b/src/ibusattrlist.h @@ -1,29 +1,32 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* IBus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2013 Peng Huang + * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif +#ifndef __IBUS_ATTRIBUTE_LIST_H_ +#define __IBUS_ATTRIBUTE_LIST_H_ + /** * SECTION: ibusattrlist * @Title: IBusAttrList @@ -32,8 +35,6 @@ * @Stability: Stable * */ -#ifndef __IBUS_ATTRIBUTE_LIST_H_ -#define __IBUS_ATTRIBUTE_LIST_H_ #include "ibusattribute.h" @@ -79,17 +80,19 @@ struct _IBusAttrListClass { /** * ibus_attr_list_get_type: - * @returns: GType of IBusAttrList. * - * Returns GType of IBusAttrList. + * Returns GType of #IBusAttrList. + * + * Returns: GType of #IBusAttrList. */ GType ibus_attr_list_get_type (); /** * ibus_attr_list_new: - * @returns: A newly allocated IBusAttrList. * - * New an IBusAttrList. + * Creates an new #IBusAttrList. + * + * Returns: A newly allocated #IBusAttrList. */ IBusAttrList *ibus_attr_list_new (); @@ -106,9 +109,11 @@ void ibus_attr_list_append (IBusAttrList *attr_list, * ibus_attr_list_get: * @attr_list: An IBusAttrList instance. * @index: Index of the @attr_list. - * @returns: (transfer none): IBusAttribute at given index, NULL if no such IBusAttribute. * - * Returns IBusAttribute at given index. Borrowed reference. + * Returns #IBusAttribute at given index. Borrowed reference. + * + * Returns: (transfer none): #IBusAttribute at given index, %NULL if no such + * #IBusAttribute. */ IBusAttribute *ibus_attr_list_get (IBusAttrList *attr_list, guint index); diff --git a/src/ibusbus.c b/src/ibusbus.c index ceed16aa1..47400cb80 100644 --- a/src/ibusbus.c +++ b/src/ibusbus.c @@ -1,31 +1,34 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2015 Peng Huang + * Copyright (C) 2015-2021 Takao Fujiwara + * Copyright (C) 2008-2016 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ -#include "ibusbus.h" +#include +#include #include #include #include #include #include +#include "ibusbus.h" #include "ibusmarshalers.h" #include "ibusinternal.h" #include "ibusshare.h" @@ -33,12 +36,8 @@ #include "ibusserializable.h" #include "ibusconfig.h" -#define DBUS_PATH_DBUS "/org/freedesktop/DBus" -#define DBUS_SERVICE_DBUS "org.freedesktop.DBus" -#define DBUS_INTERFACE_DBUS "org.freedesktop.DBus" - #define IBUS_BUS_GET_PRIVATE(o) \ - (G_TYPE_INSTANCE_GET_PRIVATE ((o), IBUS_TYPE_BUS, IBusBusPrivate)) + ((IBusBusPrivate *)ibus_bus_get_instance_private (o)) enum { CONNECTED, @@ -48,17 +47,29 @@ enum { LAST_SIGNAL, }; +enum { + PROP_0 = 0, + PROP_CONNECT_ASYNC, + PROP_CLIENT_ONLY, +}; /* IBusBusPriv */ struct _IBusBusPrivate { GFileMonitor *monitor; GDBusConnection *connection; + gboolean connected; gboolean watch_dbus_signal; guint watch_dbus_signal_id; gboolean watch_ibus_signal; guint watch_ibus_signal_id; IBusConfig *config; gchar *unique_name; + gboolean connect_async; + gchar *bus_address; + gboolean use_portal; + gboolean client_only; + GCancellable *cancellable; + guint portal_name_watch_id; }; static guint bus_signals[LAST_SIGNAL] = { 0 }; @@ -70,6 +81,7 @@ static GObject *ibus_bus_constructor (GType type, guint n_params, GObjectConstructParam *params); static void ibus_bus_destroy (IBusObject *object); +static void ibus_bus_connect_async (IBusBus *bus); static void ibus_bus_watch_dbus_signal (IBusBus *bus); static void ibus_bus_unwatch_dbus_signal (IBusBus *bus); static void ibus_bus_watch_ibus_signal (IBusBus *bus); @@ -93,8 +105,18 @@ static void ibus_bus_call_async (IBusBus *bus, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); +static void ibus_bus_set_property (IBusBus *bus, + guint prop_id, + const GValue *value, + GParamSpec *pspec); +static void ibus_bus_get_property (IBusBus *bus, + guint prop_id, + GValue *value, + GParamSpec *pspec); + +static void ibus_bus_close_connection (IBusBus *bus); -G_DEFINE_TYPE (IBusBus, ibus_bus, IBUS_TYPE_OBJECT) +G_DEFINE_TYPE_WITH_PRIVATE (IBusBus, ibus_bus, IBUS_TYPE_OBJECT) static void ibus_bus_class_init (IBusBusClass *class) @@ -103,8 +125,42 @@ ibus_bus_class_init (IBusBusClass *class) IBusObjectClass *ibus_object_class = IBUS_OBJECT_CLASS (class); gobject_class->constructor = ibus_bus_constructor; + gobject_class->set_property = + (GObjectSetPropertyFunc) ibus_bus_set_property; + gobject_class->get_property = + (GObjectGetPropertyFunc) ibus_bus_get_property; ibus_object_class->destroy = ibus_bus_destroy; + /* install properties */ + /** + * IBusBus:connect-async: + * + * Whether the #IBusBus object should connect asynchronously to the bus. + * + */ + g_object_class_install_property ( + gobject_class, + PROP_CONNECT_ASYNC, + g_param_spec_boolean ("connect-async", + "Connect Async", + "Connect asynchronously to the bus", + FALSE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + /** + * IBusBus:client-only: + * + * Whether the #IBusBus object is for client use only. + * + */ + g_object_class_install_property ( + gobject_class, + PROP_CLIENT_ONLY, + g_param_spec_boolean ("client-only", + "ClientOnly", + "Client use only", + FALSE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + /* install signals */ /** * IBusBus::connected: @@ -179,8 +235,6 @@ ibus_bus_class_init (IBusBusClass *class) G_TYPE_NONE, 3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); - - g_type_class_add_private (class, sizeof (IBusBusPrivate)); } static void @@ -244,59 +298,224 @@ _connection_closed_cb (GDBusConnection *connection, * However we think the error message is almost harmless. */ g_debug ("_connection_closed_cb: %s", error->message); } + ibus_bus_close_connection (bus); +} - g_assert (bus->priv->connection == connection); - g_signal_handlers_disconnect_by_func (bus->priv->connection, - G_CALLBACK (_connection_closed_cb), - bus); - g_object_unref (bus->priv->connection); - bus->priv->connection = NULL; - +static void +ibus_bus_close_connection (IBusBus *bus) +{ g_free (bus->priv->unique_name); bus->priv->unique_name = NULL; bus->priv->watch_dbus_signal_id = 0; bus->priv->watch_ibus_signal_id = 0; - g_signal_emit (bus, bus_signals[DISCONNECTED], 0); -} + g_free (bus->priv->bus_address); + bus->priv->bus_address = NULL; + + /* Cancel ongoing connect request. */ + g_cancellable_cancel (bus->priv->cancellable); + g_cancellable_reset (bus->priv->cancellable); + + bus->priv->connected = FALSE; -static void -ibus_bus_connect (IBusBus *bus) -{ /* unref the old connection at first */ if (bus->priv->connection != NULL) { g_signal_handlers_disconnect_by_func (bus->priv->connection, G_CALLBACK (_connection_closed_cb), bus); + if (!g_dbus_connection_is_closed(bus->priv->connection)) + g_dbus_connection_close(bus->priv->connection, NULL, NULL, NULL); g_object_unref (bus->priv->connection); bus->priv->connection = NULL; + g_signal_emit (bus, bus_signals[DISCONNECTED], 0); } +} - if (ibus_get_address () != NULL) { - bus->priv->connection = - g_dbus_connection_new_for_address_sync (ibus_get_address (), - G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT | - G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION, - NULL, NULL, NULL); +static void +ibus_bus_connect_completed (IBusBus *bus) +{ + g_assert (bus->priv->connection); + + bus->priv->connected = TRUE; + /* FIXME */ + ibus_bus_hello (bus); + + g_signal_connect (bus->priv->connection, + "closed", + (GCallback) _connection_closed_cb, + bus); + if (bus->priv->watch_dbus_signal) { + ibus_bus_watch_dbus_signal (bus); + } + if (bus->priv->watch_ibus_signal) { + ibus_bus_watch_ibus_signal (bus); } - if (bus->priv->connection) { - /* FIXME */ - ibus_bus_hello (bus); - - g_signal_connect (bus->priv->connection, - "closed", - (GCallback) _connection_closed_cb, - bus); - if (bus->priv->watch_dbus_signal) { - ibus_bus_watch_dbus_signal (bus); - } - if (bus->priv->watch_ibus_signal) { - ibus_bus_watch_ibus_signal (bus); + g_signal_emit (bus, bus_signals[CONNECTED], 0); +} + +static void +_bus_connect_start_portal_cb (GObject *source_object, + GAsyncResult *res, + gpointer user_data) +{ + IBusBus *bus = IBUS_BUS (user_data); + GVariant *result; + GError *error = NULL; + + result = g_dbus_connection_call_finish (G_DBUS_CONNECTION (source_object), + res, + &error); + if (result != NULL) { + ibus_bus_connect_completed (bus); + g_variant_unref (result); + } else { + g_error_free (error); + + g_dbus_connection_close (bus->priv->connection, NULL, NULL, NULL); + g_object_unref (bus->priv->connection); + bus->priv->connection = NULL; + + g_free (bus->priv->bus_address); + bus->priv->bus_address = NULL; + } + + g_object_unref (bus); +} + +static void +_bus_connect_async_cb (GObject *source_object, + GAsyncResult *res, + gpointer user_data) +{ + g_return_if_fail (user_data != NULL); + g_return_if_fail (IBUS_IS_BUS (user_data)); + + IBusBus *bus = IBUS_BUS (user_data); + GError *error = NULL; + + bus->priv->connection = + g_dbus_connection_new_for_address_finish (res, &error); + + if (error != NULL) { + g_warning ("Unable to connect to ibus: %s", error->message); + g_error_free (error); + error = NULL; + } + + if (bus->priv->connection != NULL) { + if (bus->priv->use_portal) { + g_object_set_data (G_OBJECT (bus->priv->connection), + "ibus-portal-connection", + GINT_TO_POINTER (TRUE)); + g_dbus_connection_call ( + bus->priv->connection, + IBUS_SERVICE_PORTAL, + IBUS_PATH_IBUS, + "org.freedesktop.DBus.Peer", + "Ping", + g_variant_new ("()"), + G_VARIANT_TYPE ("()"), + G_DBUS_CALL_FLAGS_NONE, + -1, + bus->priv->cancellable, + (GAsyncReadyCallback) _bus_connect_start_portal_cb, + g_object_ref (bus)); + } else { + ibus_bus_connect_completed (bus); } + } + else { + g_free (bus->priv->bus_address); + bus->priv->bus_address = NULL; + } + + /* unref the ref from ibus_bus_connect */ + g_object_unref (bus); +} + +static gchar * +ibus_bus_get_bus_address (IBusBus *bus) +{ + if (_bus->priv->use_portal) + return g_dbus_address_get_for_bus_sync (G_BUS_TYPE_SESSION, NULL, NULL); + else + return g_strdup (ibus_get_address ()); +} + +static void +ibus_bus_connect_async (IBusBus *bus) +{ + gchar *bus_address = ibus_bus_get_bus_address (bus); + + if (bus_address == NULL) + return; + + if (g_strcmp0 (bus->priv->bus_address, bus_address) == 0) { + g_free (bus_address); + return; + } + + /* Close current connection and cancel ongoing connect request. */ + ibus_bus_close_connection (bus); + + bus->priv->bus_address = bus_address; + g_object_ref (bus); + g_dbus_connection_new_for_address ( + bus_address, + G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT | + G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION, + NULL, + bus->priv->cancellable, + _bus_connect_async_cb, bus); +} + +static gboolean +is_in_flatpak (void) +{ + static gboolean flatpak_info_read; + static gboolean in_flatpak; + + if (flatpak_info_read) + return in_flatpak; + + flatpak_info_read = TRUE; + if (g_file_test ("/.flatpak-info", G_FILE_TEST_EXISTS)) + in_flatpak = TRUE; + return in_flatpak; +} + +static gboolean +ibus_bus_should_connect_portal (IBusBus *bus) +{ + return bus->priv->client_only && + (is_in_flatpak () || g_getenv ("IBUS_USE_PORTAL") != NULL); +} + +static void +ibus_bus_connect (IBusBus *bus) +{ + const gchar *bus_address = ibus_get_address (); - g_signal_emit (bus, bus_signals[CONNECTED], 0); + if (bus_address == NULL) + return; + + if (g_strcmp0 (bus_address, bus->priv->bus_address) == 0 && + bus->priv->connection != NULL) + return; + + /* Close current connection and cancel ongoing connect request. */ + ibus_bus_close_connection (bus); + + bus->priv->connection = g_dbus_connection_new_for_address_sync ( + bus_address, + G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT | + G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION, + NULL, NULL, NULL); + if (bus->priv->connection) { + bus->priv->bus_address = g_strdup (bus_address); + ibus_bus_connect_completed (bus); } } @@ -312,18 +531,15 @@ _changed_cb (GFileMonitor *monitor, event_type != G_FILE_MONITOR_EVENT_DELETED) return; - if (ibus_bus_is_connected (bus)) - return; - - ibus_bus_connect (bus); + ibus_bus_connect_async (bus); } static void ibus_bus_init (IBusBus *bus) { struct stat buf; - gchar *path; - GFile *file; + char *path; + int fd; bus->priv = IBUS_BUS_GET_PRIVATE (bus); @@ -334,46 +550,150 @@ ibus_bus_init (IBusBus *bus) bus->priv->watch_ibus_signal = FALSE; bus->priv->watch_ibus_signal_id = 0; bus->priv->unique_name = NULL; + bus->priv->connect_async = FALSE; + bus->priv->client_only = FALSE; + bus->priv->bus_address = NULL; + bus->priv->cancellable = g_cancellable_new (); path = g_path_get_dirname (ibus_get_socket_path ()); - g_mkdir_with_parents (path, 0700); - g_chmod (path, 0700); + errno = 0; + if (g_mkdir_with_parents (path, 0700)) { + g_warning ("Failed to mkdir %s: %s", path, g_strerror (errno)); + g_free (path); + return; + } - if (stat (path, &buf) == 0) { + errno = 0; + if ((fd = open (path, O_RDONLY | O_DIRECTORY, S_IRWXU)) == -1) { + g_warning ("open %s failed: %s", path, g_strerror (errno)); + g_free (path); + return; + } + /* TOCTOU: Use fstat() and fchmod() but not stat() and chmod(). + * because it can cause a time-of-check, time-of-use race condition. + */ + if (fstat (fd, &buf) == 0) { if (buf.st_uid != getuid ()) { - g_warning ("The owner of %s is not %s!", path, ibus_get_user_name ()); + g_warning ("The owner of %s is not %s!", + path, ibus_get_user_name ()); + close (fd); + g_free (path); return; } + if (buf.st_mode != (S_IFDIR | S_IRWXU)) { + errno = 0; + if (fchmod (fd, S_IRWXU)) + g_warning ("chmod failed: %s", g_strerror (errno)); + } } - ibus_bus_connect (bus); + close (fd); + g_free (path); +} - file = g_file_new_for_path (ibus_get_socket_path ()); - bus->priv->monitor = g_file_monitor_file (file, 0, NULL, NULL); +static void +ibus_bus_set_property (IBusBus *bus, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + switch (prop_id) { + case PROP_CONNECT_ASYNC: + bus->priv->connect_async = g_value_get_boolean (value); + break; + case PROP_CLIENT_ONLY: + bus->priv->client_only = g_value_get_boolean (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (bus, prop_id, pspec); + } +} - g_signal_connect (bus->priv->monitor, "changed", (GCallback) _changed_cb, bus); +static void +ibus_bus_get_property (IBusBus *bus, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + switch (prop_id) { + case PROP_CONNECT_ASYNC: + g_value_set_boolean (value, bus->priv->connect_async); + break; + case PROP_CLIENT_ONLY: + g_value_set_boolean (value, bus->priv->client_only); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (bus, prop_id, pspec); + } +} - g_object_unref (file); - g_free (path); +static void +portal_name_appeared (GDBusConnection *connection, + const gchar *name, + const gchar *owner, + gpointer user_data) +{ + IBusBus *bus = IBUS_BUS (user_data); + + if (bus->priv->connection == NULL) + ibus_bus_connect_async (bus); } +static void +portal_name_vanished (GDBusConnection *connection, + const gchar *name, + gpointer user_data) +{ + IBusBus *bus = IBUS_BUS (user_data); + + if (bus->priv->connection) + g_dbus_connection_close (bus->priv->connection, NULL, NULL, NULL); +} + + static GObject* ibus_bus_constructor (GType type, guint n_params, GObjectConstructParam *params) { GObject *object; + GFile *file; /* share one IBusBus instance in whole application */ if (_bus == NULL) { - object = G_OBJECT_CLASS (ibus_bus_parent_class)->constructor (type, n_params, params); + object = G_OBJECT_CLASS (ibus_bus_parent_class)->constructor ( + type, n_params, params); /* make bus object sink */ g_object_ref_sink (object); _bus = IBUS_BUS (object); + + _bus->priv->use_portal = ibus_bus_should_connect_portal (_bus); + + if (!_bus->priv->use_portal) { + file = g_file_new_for_path (ibus_get_socket_path ()); + _bus->priv->monitor = g_file_monitor_file (file, 0, NULL, NULL); + g_signal_connect (_bus->priv->monitor, "changed", + (GCallback) _changed_cb, _bus); + g_object_unref (file); + } else { + _bus->priv->portal_name_watch_id = + g_bus_watch_name (G_BUS_TYPE_SESSION, + IBUS_SERVICE_PORTAL, + G_BUS_NAME_WATCHER_FLAGS_NONE, + portal_name_appeared, + portal_name_vanished, + _bus, NULL); + } + + + if (_bus->priv->connect_async) + ibus_bus_connect_async (_bus); + else + ibus_bus_connect (_bus); } else { - object = g_object_ref (_bus); + object = g_object_ref (G_OBJECT (_bus)); } return object; @@ -410,85 +730,144 @@ ibus_bus_destroy (IBusObject *object) g_free (bus->priv->unique_name); bus->priv->unique_name = NULL; + g_free (bus->priv->bus_address); + bus->priv->bus_address = NULL; + + g_cancellable_cancel (bus->priv->cancellable); + g_object_unref (bus->priv->cancellable); + bus->priv->cancellable = NULL; + + if (bus->priv->portal_name_watch_id) { + g_bus_unwatch_name (bus->priv->portal_name_watch_id); + bus->priv->portal_name_watch_id = 0; + } + IBUS_OBJECT_CLASS (ibus_bus_parent_class)->destroy (object); } static gboolean -_async_finish_void (GAsyncResult *res, - GError **error) +_async_finish_void (GTask *task, + GError **error) { - GSimpleAsyncResult *simple = (GSimpleAsyncResult *) res; - if (g_simple_async_result_propagate_error (simple, error)) + /* g_task_propagate_error() is not a public API and + * g_task_had_error() needs to be called before + * g_task_propagate_pointer() clears task->error. + */ + gboolean had_error = g_task_had_error (task); + g_task_propagate_pointer (task, error); + if (had_error) return FALSE; return TRUE; } static gchar * -_async_finish_object_path (GAsyncResult *res, - GError **error) +_async_finish_object_path (GTask *task, + GError **error) { - GSimpleAsyncResult *simple = (GSimpleAsyncResult *) res; - if (g_simple_async_result_propagate_error (simple, error)) - return NULL; - GVariant *variant = g_simple_async_result_get_op_res_gpointer (simple); - g_return_val_if_fail (variant != NULL, NULL); + gboolean had_error = g_task_had_error (task); + GVariant *result = g_task_propagate_pointer (task, error); + GVariant *variant = NULL; gchar *path = NULL; - g_variant_get (variant, "(&o)", &path); + + if (had_error) { + g_assert (result == NULL); + return NULL; + } + g_return_val_if_fail (result != NULL, NULL); + g_variant_get (result, "(v)", &variant); + path = g_variant_dup_string (variant, NULL); + g_variant_unref (variant); + g_variant_unref (result); return path; } static gchar * -_async_finish_string (GAsyncResult *res, - GError **error) +_async_finish_string (GTask *task, + GError **error) { - GSimpleAsyncResult *simple = (GSimpleAsyncResult *) res; - if (g_simple_async_result_propagate_error (simple, error)) + gboolean had_error = g_task_had_error (task); + GVariant *variant = g_task_propagate_pointer (task, error); + gchar *s = NULL; + + if (had_error) { + g_assert (variant == NULL); return NULL; - GVariant *variant = g_simple_async_result_get_op_res_gpointer (simple); + } g_return_val_if_fail (variant != NULL, NULL); - gchar *s = NULL; g_variant_get (variant, "(&s)", &s); + g_variant_unref (variant); return s; } static gboolean -_async_finish_gboolean (GAsyncResult *res, - GError **error) +_async_finish_gboolean (GTask *task, + GError **error) { - GSimpleAsyncResult *simple = (GSimpleAsyncResult *) res; - if (g_simple_async_result_propagate_error (simple, error)) + gboolean had_error = g_task_had_error (task); + GVariant *variant = g_task_propagate_pointer (task, error); + gboolean retval = FALSE; + + if (had_error) { + g_assert (variant == NULL); return FALSE; - GVariant *variant = g_simple_async_result_get_op_res_gpointer (simple); + } g_return_val_if_fail (variant != NULL, FALSE); - gboolean retval = FALSE; g_variant_get (variant, "(b)", &retval); + g_variant_unref (variant); return retval; } static guint -_async_finish_guint (GAsyncResult *res, - GError **error) +_async_finish_guint (GTask *task, + GError **error) { + gboolean had_error = g_task_had_error (task); + GVariant *variant = g_task_propagate_pointer (task, error); static const guint bad_id = 0; - GSimpleAsyncResult *simple = (GSimpleAsyncResult *) res; - if (g_simple_async_result_propagate_error (simple, error)) + guint id = 0; + + if (had_error) { + g_assert (variant == NULL); return bad_id; - GVariant *variant = g_simple_async_result_get_op_res_gpointer (simple); + } g_return_val_if_fail (variant != NULL, bad_id); - - guint id = 0; g_variant_get (variant, "(u)", &id); + g_variant_unref (variant); return id; } IBusBus * ibus_bus_new (void) { - IBusBus *bus = IBUS_BUS (g_object_new (IBUS_TYPE_BUS, NULL)); + IBusBus *bus = IBUS_BUS (g_object_new (IBUS_TYPE_BUS, + "connect-async", FALSE, + "client-only", FALSE, + NULL)); return bus; } +IBusBus * +ibus_bus_new_async (void) +{ + IBusBus *bus = IBUS_BUS (g_object_new (IBUS_TYPE_BUS, + "connect-async", TRUE, + "client-only", FALSE, + NULL)); + + return bus; +} + +IBusBus * +ibus_bus_new_async_client (void) +{ + IBusBus *bus = IBUS_BUS (g_object_new (IBUS_TYPE_BUS, + "connect-async", TRUE, + "client-only", TRUE, + NULL)); + + return bus; +} gboolean ibus_bus_is_connected (IBusBus *bus) @@ -498,10 +877,9 @@ ibus_bus_is_connected (IBusBus *bus) if (bus->priv->connection == NULL || g_dbus_connection_is_closed (bus->priv->connection)) return FALSE; - return TRUE; + return bus->priv->connected; } - IBusInputContext * ibus_bus_create_input_context (IBusBus *bus, const gchar *client_name) @@ -535,70 +913,61 @@ ibus_bus_create_input_context (IBusBus *bus, } static void -_create_input_context_async_step_two_done (GObject *source_object, - GAsyncResult *res, - GSimpleAsyncResult *simple) +_create_input_context_async_step_two_done (GObject *source_object, + GAsyncResult *res, + GTask *task) { GError *error = NULL; IBusInputContext *context = ibus_input_context_new_async_finish (res, &error); - if (context == NULL) { - g_simple_async_result_set_from_error (simple, error); - g_error_free (error); - } - else { - g_simple_async_result_set_op_res_gpointer (simple, context, NULL); - } - g_simple_async_result_complete_in_idle (simple); - g_object_unref (simple); + if (context == NULL) + g_task_return_error (task, error); + else + g_task_return_pointer (task, context, NULL); + g_object_unref (task); } static void -_create_input_context_async_step_one_done (GDBusConnection *connection, - GAsyncResult *res, - GSimpleAsyncResult *simple) +_create_input_context_async_step_one_done (GDBusConnection *connection, + GAsyncResult *res, + GTask *task) { GError *error = NULL; GVariant *variant = g_dbus_connection_call_finish (connection, res, &error); + const gchar *path = NULL; + IBusBus *bus; + GCancellable *cancellable; if (variant == NULL) { - g_simple_async_result_set_from_error (simple, error); - g_error_free (error); - g_simple_async_result_complete_in_idle (simple); - g_object_unref (simple); + g_task_return_error (task, error); + g_object_unref (task); return; } if (g_dbus_connection_is_closed (connection)) { /* - * The connection is closed, can not contine next steps, so complete + * The connection is closed, can not continue next steps, so complete * the asynchronous request with error. */ - g_simple_async_result_set_error (simple, + g_variant_unref(variant); + g_task_return_new_error (task, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "Connection is closed."); - g_simple_async_result_complete_in_idle (simple); return; } - const gchar *path = NULL; g_variant_get (variant, "(&o)", &path); + g_variant_unref(variant); - - IBusBus *bus = (IBusBus *)g_async_result_get_source_object ( - (GAsyncResult *)simple); + bus = (IBusBus *)g_task_get_source_object (task); g_assert (IBUS_IS_BUS (bus)); - GCancellable *cancellable = - (GCancellable *)g_object_get_data ((GObject *)simple, - "cancellable"); + cancellable = g_task_get_cancellable (task); ibus_input_context_new_async (path, bus->priv->connection, cancellable, (GAsyncReadyCallback)_create_input_context_async_step_two_done, - simple); - /* release the reference from g_async_result_get_source_object() */ - g_object_unref (bus); + task); } void @@ -609,29 +978,24 @@ ibus_bus_create_input_context_async (IBusBus *bus, GAsyncReadyCallback callback, gpointer user_data) { + GTask *task; + g_return_if_fail (IBUS_IS_BUS (bus)); g_return_if_fail (client_name != NULL); g_return_if_fail (callback != NULL); - GSimpleAsyncResult *simple = g_simple_async_result_new ((GObject *)bus, - callback, user_data, ibus_bus_create_input_context_async); + task = g_task_new (bus, cancellable, callback, user_data); + g_task_set_source_tag (task, ibus_bus_create_input_context_async); - if (cancellable != NULL) { - g_object_set_data_full ((GObject *)simple, - "concellable", - g_object_ref (cancellable), - (GDestroyNotify)g_object_unref); - } - - /* do not use ibus_bus_call_async, instread use g_dbus_connection_call + /* do not use ibus_bus_call_async, instead use g_dbus_connection_call * directly, because we need two async steps for create an IBusInputContext. * 1. Call CreateInputContext to request ibus-daemon create a remote IC. * 2. New local IBusInputContext proxy of the remote IC */ g_dbus_connection_call (bus->priv->connection, - IBUS_SERVICE_IBUS, + ibus_bus_get_service_name (bus), IBUS_PATH_IBUS, - IBUS_INTERFACE_IBUS, + bus->priv->use_portal ? IBUS_INTERFACE_PORTAL : IBUS_INTERFACE_IBUS, "CreateInputContext", g_variant_new ("(s)", client_name), G_VARIANT_TYPE("(o)"), @@ -639,7 +1003,7 @@ ibus_bus_create_input_context_async (IBusBus *bus, timeout_msec, cancellable, (GAsyncReadyCallback)_create_input_context_async_step_one_done, - simple); + task); } IBusInputContext * @@ -647,15 +1011,22 @@ ibus_bus_create_input_context_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { - g_assert (IBUS_IS_BUS (bus)); - g_assert (g_simple_async_result_is_valid (res, (GObject *) bus, - ibus_bus_create_input_context_async)); + GTask *task; + gboolean had_error; + IBusInputContext *context = NULL; - GSimpleAsyncResult *simple = (GSimpleAsyncResult *) res; - if (g_simple_async_result_propagate_error (simple, error)) + g_assert (IBUS_IS_BUS (bus)); + g_assert (g_task_is_valid (res, bus)); + + task = G_TASK (res); + g_assert (g_task_get_source_tag (task) == + ibus_bus_create_input_context_async); + had_error = g_task_had_error (task); + context = g_task_propagate_pointer (task, error); + if (had_error) { + g_assert (context == NULL); return NULL; - IBusInputContext *context = - g_simple_async_result_get_op_res_gpointer (simple); + } g_assert (IBUS_IS_INPUT_CONTEXT (context)); return context; } @@ -670,13 +1041,18 @@ ibus_bus_current_input_context (IBusBus *bus) result = ibus_bus_call_sync (bus, IBUS_SERVICE_IBUS, IBUS_PATH_IBUS, - IBUS_INTERFACE_IBUS, - "CurrentInputContext", - NULL, - G_VARIANT_TYPE ("(o)")); + "org.freedesktop.DBus.Properties", + "Get", + g_variant_new ("(ss)", + IBUS_INTERFACE_IBUS, + "CurrentInputContext"), + G_VARIANT_TYPE ("(v)")); if (result != NULL) { - g_variant_get (result, "(o)", &path); + GVariant *variant = NULL; + g_variant_get (result, "(v)", &variant); + path = g_variant_dup_string (variant, NULL); + g_variant_unref (variant); g_variant_unref (result); } @@ -695,10 +1071,12 @@ ibus_bus_current_input_context_async (IBusBus *bus, ibus_bus_call_async (bus, IBUS_SERVICE_IBUS, IBUS_PATH_IBUS, - IBUS_INTERFACE_IBUS, - "CurrentInputContext", - NULL, - G_VARIANT_TYPE ("(o)"), + "org.freedesktop.DBus.Properties", + "Get", + g_variant_new ("(ss)", + IBUS_INTERFACE_IBUS, + "CurrentInputContext"), + G_VARIANT_TYPE ("(v)"), ibus_bus_current_input_context_async, timeout_msec, cancellable, @@ -711,10 +1089,15 @@ ibus_bus_current_input_context_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { + GTask *task; + g_assert (IBUS_IS_BUS (bus)); - g_assert (g_simple_async_result_is_valid (res, (GObject *) bus, - ibus_bus_current_input_context_async)); - return g_strdup (_async_finish_object_path (res, error)); + g_assert (g_task_is_valid (res, bus)); + + task = G_TASK (res); + g_assert(g_task_get_source_tag (task) == + ibus_bus_current_input_context_async); + return _async_finish_object_path (task, error); } static void @@ -888,10 +1271,14 @@ ibus_bus_request_name_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { + GTask *task; + g_assert (IBUS_IS_BUS (bus)); - g_assert (g_simple_async_result_is_valid (res, (GObject *) bus, - ibus_bus_request_name_async)); - return _async_finish_guint (res, error); + g_assert (g_task_is_valid (res, bus)); + + task = G_TASK (res); + g_assert(g_task_get_source_tag (task) == ibus_bus_request_name_async); + return _async_finish_guint (task, error); } guint @@ -949,10 +1336,14 @@ ibus_bus_release_name_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { + GTask *task; + g_assert (IBUS_IS_BUS (bus)); - g_assert (g_simple_async_result_is_valid (res, (GObject *) bus, - ibus_bus_release_name_async)); - return _async_finish_guint (res, error); + g_assert (g_task_is_valid (res, bus)); + + task = G_TASK (res); + g_assert(g_task_get_source_tag (task) == ibus_bus_release_name_async); + return _async_finish_guint (task, error); } GList * @@ -1045,10 +1436,14 @@ ibus_bus_name_has_owner_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { + GTask *task; + g_assert (IBUS_IS_BUS (bus)); - g_assert (g_simple_async_result_is_valid (res, (GObject *) bus, - ibus_bus_name_has_owner_async)); - return _async_finish_gboolean (res, error); + g_assert (g_task_is_valid (res, bus)); + + task = G_TASK (res); + g_assert(g_task_get_source_tag (task) == ibus_bus_name_has_owner_async); + return _async_finish_gboolean (task, error); } GList * @@ -1111,10 +1506,14 @@ ibus_bus_add_match_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { + GTask *task; + g_assert (IBUS_IS_BUS (bus)); - g_assert (g_simple_async_result_is_valid (res, (GObject *) bus, - ibus_bus_add_match_async)); - return _async_finish_void (res, error); + g_assert (g_task_is_valid (res, bus)); + + task = G_TASK (res); + g_assert(g_task_get_source_tag (task) == ibus_bus_add_match_async); + return _async_finish_void (task, error); } gboolean @@ -1170,10 +1569,14 @@ ibus_bus_remove_match_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { + GTask *task; + g_assert (IBUS_IS_BUS (bus)); - g_assert (g_simple_async_result_is_valid (res, (GObject *) bus, - ibus_bus_remove_match_async)); - return _async_finish_void (res, error); + g_assert (g_task_is_valid (res, bus)); + + task = G_TASK (res); + g_assert(g_task_get_source_tag (task) == ibus_bus_remove_match_async); + return _async_finish_void (task, error); } gchar * @@ -1231,10 +1634,14 @@ ibus_bus_get_name_owner_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { + GTask *task; + g_assert (IBUS_IS_BUS (bus)); - g_assert (g_simple_async_result_is_valid (res, (GObject *) bus, - ibus_bus_get_name_owner_async)); - return g_strdup (_async_finish_string (res, error)); + g_assert (g_task_is_valid (res, bus)); + + task = G_TASK (res); + g_assert(g_task_get_source_tag (task) == ibus_bus_get_name_owner_async); + return g_strdup (_async_finish_string (task, error)); } GDBusConnection * @@ -1245,6 +1652,14 @@ ibus_bus_get_connection (IBusBus *bus) return bus->priv->connection; } +const gchar * +ibus_bus_get_service_name (IBusBus *bus) +{ + if (bus->priv->use_portal) + return IBUS_SERVICE_PORTAL; + return IBUS_SERVICE_IBUS; +} + gboolean ibus_bus_exit (IBusBus *bus, gboolean restart) @@ -1260,6 +1675,8 @@ ibus_bus_exit (IBusBus *bus, g_variant_new ("(b)", restart), NULL); + ibus_bus_close_connection (bus); + if (result) { g_variant_unref (result); return TRUE; @@ -1296,10 +1713,14 @@ ibus_bus_exit_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { + GTask *task; + g_assert (IBUS_IS_BUS (bus)); - g_assert (g_simple_async_result_is_valid (res, (GObject *) bus, - ibus_bus_exit_async)); - return _async_finish_void (res, error); + g_assert (g_task_is_valid (res, bus)); + + task = G_TASK (res); + g_assert (g_task_get_source_tag (task) == ibus_bus_exit_async); + return _async_finish_void (task, error); } gboolean @@ -1355,10 +1776,15 @@ ibus_bus_register_component_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { + GTask *task; + g_assert (IBUS_IS_BUS (bus)); - g_assert (g_simple_async_result_is_valid (res, (GObject *) bus, - ibus_bus_register_component_async)); - return _async_finish_void (res, error); + g_assert (g_task_is_valid (res, bus)); + + task = G_TASK (res); + g_assert ( + g_task_get_source_tag (task) == ibus_bus_register_component_async); + return _async_finish_void (task, error); } static GList * @@ -1368,17 +1794,24 @@ ibus_bus_do_list_engines (IBusBus *bus, gboolean active_engines_only) GList *retval = NULL; GVariant *result; + const gchar *property = + active_engines_only ? "ActiveEngines" : "Engines"; result = ibus_bus_call_sync (bus, IBUS_SERVICE_IBUS, IBUS_PATH_IBUS, - IBUS_INTERFACE_IBUS, - active_engines_only ? "ListActiveEngines" : "ListEngines", - NULL, - G_VARIANT_TYPE ("(av)")); + "org.freedesktop.DBus.Properties", + "Get", + g_variant_new ("(ss)", + IBUS_INTERFACE_IBUS, + property), + G_VARIANT_TYPE ("(v)")); if (result) { + GVariant *variant = NULL; GVariantIter *iter = NULL; - g_variant_get (result, "(av)", &iter); + + g_variant_get (result, "(v)", &variant); + iter = g_variant_iter_new (variant); GVariant *var; while (g_variant_iter_loop (iter, "v", &var)) { IBusSerializable *serializable = ibus_serializable_deserialize (var); @@ -1386,6 +1819,7 @@ ibus_bus_do_list_engines (IBusBus *bus, gboolean active_engines_only) retval = g_list_append (retval, serializable); } g_variant_iter_free (iter); + g_variant_unref (variant); g_variant_unref (result); } @@ -1410,10 +1844,12 @@ ibus_bus_list_engines_async (IBusBus *bus, ibus_bus_call_async (bus, IBUS_SERVICE_IBUS, IBUS_PATH_IBUS, - IBUS_INTERFACE_IBUS, - "ListEngines", - NULL, - G_VARIANT_TYPE ("(av)"), + "org.freedesktop.DBus.Properties", + "Get", + g_variant_new ("(ss)", + IBUS_INTERFACE_IBUS, + "Engines"), + G_VARIANT_TYPE ("(v)"), ibus_bus_list_engines_async, timeout_msec, cancellable, @@ -1426,25 +1862,39 @@ ibus_bus_list_engines_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { - GSimpleAsyncResult *simple = (GSimpleAsyncResult *) res; - if (g_simple_async_result_propagate_error (simple, error)) - return NULL; - GVariant *variant = g_simple_async_result_get_op_res_gpointer (simple); - g_return_val_if_fail (variant != NULL, NULL); - + GTask *task; + gboolean had_error; + GVariant *result = NULL; + GVariant *variant = NULL; GList *retval = NULL; GVariantIter *iter = NULL; - g_variant_get (variant, "(av)", &iter); GVariant *var; + + g_assert (g_task_is_valid (res, bus)); + + task = G_TASK (res); + had_error = g_task_had_error (task); + result = g_task_propagate_pointer (task, error); + if (had_error) { + g_assert (result == NULL); + return NULL; + } + g_return_val_if_fail (result != NULL, NULL); + + g_variant_get (result, "(v)", &variant); + iter = g_variant_iter_new (variant); while (g_variant_iter_loop (iter, "v", &var)) { IBusSerializable *serializable = ibus_serializable_deserialize (var); g_object_ref_sink (serializable); retval = g_list_append (retval, serializable); } g_variant_iter_free (iter); + g_variant_unref (variant); + g_variant_unref (result); return retval; } +#ifndef IBUS_DISABLE_DEPRECATED GList * ibus_bus_list_active_engines (IBusBus *bus) { @@ -1463,10 +1913,12 @@ ibus_bus_list_active_engines_async (IBusBus *bus, ibus_bus_call_async (bus, IBUS_SERVICE_IBUS, IBUS_PATH_IBUS, - IBUS_INTERFACE_IBUS, - "ListActiveEngines", - NULL, - G_VARIANT_TYPE ("(av)"), + "org.freedesktop.DBus.Properties", + "Get", + g_variant_new ("(ss)", + IBUS_INTERFACE_IBUS, + "ActiveEngines"), + G_VARIANT_TYPE ("(v)"), ibus_bus_list_active_engines_async, timeout_msec, cancellable, @@ -1481,6 +1933,7 @@ ibus_bus_list_active_engines_async_finish (IBusBus *bus, { return ibus_bus_list_engines_async_finish (bus, res, error); } +#endif /* IBUS_DISABLE_DEPRECATED */ IBusEngineDesc ** ibus_bus_get_engines_by_names (IBusBus *bus, @@ -1498,7 +1951,7 @@ ibus_bus_get_engines_by_names (IBusBus *bus, G_VARIANT_TYPE ("(av)")); if (result == NULL) return NULL; - + GArray *array = g_array_new (TRUE, TRUE, sizeof (IBusEngineDesc *)); GVariantIter *iter = NULL; g_variant_get (result, "(av)", &iter); @@ -1546,6 +1999,7 @@ ibus_bus_get_config (IBusBus *bus) return priv->config; } +#ifndef IBUS_DISABLE_DEPRECATED gboolean ibus_bus_get_use_sys_layout (IBusBus *bus) { @@ -1597,10 +2051,14 @@ ibus_bus_get_use_sys_layout_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { + GTask *task; + g_assert (IBUS_IS_BUS (bus)); - g_assert (g_simple_async_result_is_valid (res, (GObject *) bus, - ibus_bus_get_use_sys_layout_async)); - return _async_finish_gboolean (res, error); + g_assert (g_task_is_valid (res, bus)); + + task = G_TASK (res); + g_assert(g_task_get_source_tag (task) == ibus_bus_get_use_sys_layout_async); + return _async_finish_gboolean (task, error); } gboolean @@ -1654,10 +2112,15 @@ ibus_bus_get_use_global_engine_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { + GTask *task; + g_assert (IBUS_IS_BUS (bus)); - g_assert (g_simple_async_result_is_valid (res, (GObject *) bus, - ibus_bus_get_use_global_engine_async)); - return _async_finish_gboolean (res, error); + g_assert (g_task_is_valid (res, bus)); + + task = G_TASK (res); + g_assert(g_task_get_source_tag (task) == + ibus_bus_get_use_global_engine_async); + return _async_finish_gboolean (task, error); } gboolean @@ -1709,11 +2172,17 @@ gboolean ibus_bus_is_global_engine_enabled_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { + GTask *task; + g_assert (IBUS_IS_BUS (bus)); - g_assert (g_simple_async_result_is_valid (res, (GObject *) bus, - ibus_bus_is_global_engine_enabled_async)); - return _async_finish_gboolean (res, error); + g_assert (g_task_is_valid (res, bus)); + + task = G_TASK (res); + g_assert(g_task_get_source_tag (task) == + ibus_bus_is_global_engine_enabled_async); + return _async_finish_gboolean (task, error); } +#endif /* IBUS_DISABLE_DEPRECATED */ IBusEngineDesc * ibus_bus_get_global_engine (IBusBus *bus) @@ -1725,16 +2194,20 @@ ibus_bus_get_global_engine (IBusBus *bus) result = ibus_bus_call_sync (bus, IBUS_SERVICE_IBUS, IBUS_PATH_IBUS, - IBUS_INTERFACE_IBUS, - "GetGlobalEngine", - NULL, + "org.freedesktop.DBus.Properties", + "Get", + g_variant_new ("(ss)", + IBUS_INTERFACE_IBUS, + "GlobalEngine"), G_VARIANT_TYPE ("(v)")); if (result) { GVariant *variant = NULL; g_variant_get (result, "(v)", &variant); if (variant) { - engine = IBUS_ENGINE_DESC (ibus_serializable_deserialize (variant)); + GVariant *obj = g_variant_get_variant (variant); + engine = IBUS_ENGINE_DESC (ibus_serializable_deserialize (obj)); + g_variant_unref (obj); g_variant_unref (variant); } g_variant_unref (result); @@ -1755,9 +2228,11 @@ ibus_bus_get_global_engine_async (IBusBus *bus, ibus_bus_call_async (bus, IBUS_SERVICE_IBUS, IBUS_PATH_IBUS, - IBUS_INTERFACE_IBUS, - "GetGlobalEngine", - NULL, + "org.freedesktop.DBus.Properties", + "Get", + g_variant_new ("(ss)", + IBUS_INTERFACE_IBUS, + "GlobalEngine"), G_VARIANT_TYPE ("(v)"), ibus_bus_get_global_engine_async, timeout_msec, @@ -1771,19 +2246,31 @@ ibus_bus_get_global_engine_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { - GSimpleAsyncResult *simple = (GSimpleAsyncResult *) res; - if (g_simple_async_result_propagate_error (simple, error)) + GTask *task; + gboolean had_error; + GVariant *result = NULL; + + g_assert (g_task_is_valid (res, bus)); + + task = G_TASK (res); + had_error = g_task_had_error (task); + result = g_task_propagate_pointer (task, error); + if (had_error) { + g_assert (result == NULL); return NULL; - GVariant *variant = g_simple_async_result_get_op_res_gpointer (simple); - g_return_val_if_fail (variant != NULL, NULL); - GVariant *inner_variant = NULL; - g_variant_get (variant, "(v)", &inner_variant); + } + g_return_val_if_fail (result != NULL, NULL); + GVariant *variant = NULL; + g_variant_get (result, "(v)", &variant); IBusEngineDesc *engine = NULL; - if (inner_variant) { - engine = IBUS_ENGINE_DESC (ibus_serializable_deserialize (inner_variant)); - g_variant_unref (inner_variant); + if (variant) { + GVariant *obj = g_variant_get_variant (variant); + engine = IBUS_ENGINE_DESC (ibus_serializable_deserialize (obj)); + g_variant_unref (obj); + g_variant_unref (variant); } + g_variant_unref (result); return engine; } @@ -1840,10 +2327,242 @@ ibus_bus_set_global_engine_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { + GTask *task; + + g_assert (IBUS_IS_BUS (bus)); + g_assert (g_task_is_valid (res, bus)); + + task = G_TASK (res); + g_assert (g_task_get_source_tag (task) == ibus_bus_set_global_engine_async); + return _async_finish_void (task, error); +} + +gboolean +ibus_bus_preload_engines (IBusBus *bus, + const gchar * const *names) +{ + GVariant *result; + GVariant *variant = NULL; + + g_return_val_if_fail (IBUS_IS_BUS (bus), FALSE); + g_return_val_if_fail (names != NULL && names[0] != NULL, FALSE); + + variant = g_variant_new_strv(names, -1); + result = ibus_bus_call_sync (bus, + IBUS_SERVICE_IBUS, + IBUS_PATH_IBUS, + "org.freedesktop.DBus.Properties", + "Set", + g_variant_new ("(ssv)", + IBUS_INTERFACE_IBUS, + "PreloadEngines", + variant), + NULL); + + if (result) { + g_variant_unref (result); + return TRUE; + } + + return FALSE; +} + +void +ibus_bus_preload_engines_async (IBusBus *bus, + const gchar * const *names, + gint timeout_msec, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + GVariant *variant = NULL; + + g_return_if_fail (IBUS_IS_BUS (bus)); + g_return_if_fail (names != NULL && names[0] != NULL); + + variant = g_variant_new_strv(names, -1); + ibus_bus_call_async (bus, + IBUS_SERVICE_IBUS, + IBUS_PATH_IBUS, + "org.freedesktop.DBus.Properties", + "Set", + g_variant_new ("(ssv)", + IBUS_INTERFACE_IBUS, + "PreloadEngines", + variant), + NULL, /* no return value */ + ibus_bus_preload_engines_async, + timeout_msec, + cancellable, + callback, + user_data); +} + +gboolean +ibus_bus_preload_engines_async_finish (IBusBus *bus, + GAsyncResult *res, + GError **error) +{ + GTask *task; + + g_assert (IBUS_IS_BUS (bus)); + g_assert (g_task_is_valid (res, bus)); + + task = G_TASK (res); + g_assert (g_task_get_source_tag (task) == ibus_bus_preload_engines_async); + return _async_finish_void (task, error); +} + +GVariant * +ibus_bus_get_ibus_property (IBusBus *bus, + const gchar *property_name) +{ + GVariant *result; + GVariant *retval = NULL; + + g_return_val_if_fail (IBUS_IS_BUS (bus), NULL); + g_return_val_if_fail (property_name != NULL, NULL); + + result = ibus_bus_call_sync (bus, + IBUS_SERVICE_IBUS, + IBUS_PATH_IBUS, + "org.freedesktop.DBus.Properties", + "Get", + g_variant_new ("(ss)", + IBUS_INTERFACE_IBUS, + property_name), + G_VARIANT_TYPE ("(v)")); + + if (result) { + g_variant_get (result, "(v)", &retval); + g_variant_unref (result); + } + + return retval; +} + +void +ibus_bus_get_ibus_property_async (IBusBus *bus, + const gchar *property_name, + gint timeout_msec, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_return_if_fail (IBUS_IS_BUS (bus)); + g_return_if_fail (property_name != NULL); + + ibus_bus_call_async (bus, + IBUS_SERVICE_IBUS, + IBUS_PATH_IBUS, + "org.freedesktop.DBus.Properties", + "Get", + g_variant_new ("(ss)", + IBUS_INTERFACE_IBUS, + property_name), + G_VARIANT_TYPE ("(v)"), + ibus_bus_get_ibus_property_async, + timeout_msec, + cancellable, + callback, + user_data); +} + +GVariant * +ibus_bus_get_ibus_property_async_finish (IBusBus *bus, + GAsyncResult *res, + GError **error) +{ + GTask *task; + gboolean had_error; + GVariant *result = NULL; + + g_assert (g_task_is_valid (res, bus)); + + task = G_TASK (res); + had_error = g_task_had_error (task); + result = g_task_propagate_pointer (task, error); + if (had_error) { + g_assert (result == NULL); + return NULL; + } + g_return_val_if_fail (result != NULL, NULL); + GVariant *retval = NULL; + g_variant_get (result, "(v)", &retval); + g_variant_unref (result); + + return retval; +} + +void +ibus_bus_set_ibus_property (IBusBus *bus, + const gchar *property_name, + GVariant *value) +{ + GVariant *result; + + g_return_if_fail (IBUS_IS_BUS (bus)); + g_return_if_fail (property_name != NULL); + + result = ibus_bus_call_sync (bus, + IBUS_SERVICE_IBUS, + IBUS_PATH_IBUS, + "org.freedesktop.DBus.Properties", + "Set", + g_variant_new ("(ssv)", + IBUS_INTERFACE_IBUS, + property_name, + value), + NULL); + + if (result) { + g_variant_unref (result); + } +} + +void +ibus_bus_set_ibus_property_async (IBusBus *bus, + const gchar *property_name, + GVariant *value, + gint timeout_msec, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_return_if_fail (IBUS_IS_BUS (bus)); + g_return_if_fail (property_name != NULL); + + ibus_bus_call_async (bus, + IBUS_SERVICE_IBUS, + IBUS_PATH_IBUS, + "org.freedesktop.DBus.Properties", + "Set", + g_variant_new ("(ssv)", + IBUS_INTERFACE_IBUS, + property_name, + value), + NULL, /* no return value */ + ibus_bus_set_ibus_property_async, + timeout_msec, + cancellable, + callback, + user_data); +} + +gboolean +ibus_bus_set_ibus_property_async_finish (IBusBus *bus, + GAsyncResult *res, + GError **error) +{ + GTask *task; g_assert (IBUS_IS_BUS (bus)); - g_assert (g_simple_async_result_is_valid (res, (GObject *) bus, - ibus_bus_set_global_engine_async)); - return _async_finish_void (res, error); + g_assert (g_task_is_valid (res, bus)); + + task = G_TASK (res); + g_return_val_if_fail ( + g_task_get_source_tag (task) == ibus_bus_set_ibus_property_async, + FALSE); + return _async_finish_void (task, error); } static GVariant * @@ -1859,6 +2578,13 @@ ibus_bus_call_sync (IBusBus *bus, g_assert (member != NULL); g_return_val_if_fail (ibus_bus_is_connected (bus), NULL); + if (bus->priv->use_portal && + g_strcmp0 (bus_name, IBUS_SERVICE_IBUS) == 0) { + bus_name = IBUS_SERVICE_PORTAL; + if (g_strcmp0 (interface, IBUS_INTERFACE_IBUS) == 0) + interface = IBUS_INTERFACE_PORTAL; + } + GError *error = NULL; GVariant *result; result = g_dbus_connection_call_sync (bus->priv->connection, @@ -1887,23 +2613,20 @@ ibus_bus_call_async_done (GDBusConnection *connection, GAsyncResult *res, gpointer user_data) { + GTask *task; + GError *error = NULL; + GVariant *variant; + g_assert (G_IS_DBUS_CONNECTION (connection)); - GSimpleAsyncResult *simple = (GSimpleAsyncResult *) user_data; - GError *error = NULL; - GVariant *variant = g_dbus_connection_call_finish (connection, res, &error); + task = (GTask* ) user_data; + variant = g_dbus_connection_call_finish (connection, res, &error); - if (variant == NULL) { - /* Replace with g_simple_async_result_take_error in glib 2.28 */ - g_simple_async_result_set_from_error (simple, error); - g_error_free (error); - } - else { - g_simple_async_result_set_op_res_gpointer (simple, variant, - (GDestroyNotify) g_variant_unref); - } - g_simple_async_result_complete (simple); - g_object_unref (simple); + if (variant == NULL) + g_task_return_error (task, error); + else + g_task_return_pointer (task, variant, (GDestroyNotify) g_variant_unref); + g_object_unref (task); } static void @@ -1920,14 +2643,21 @@ ibus_bus_call_async (IBusBus *bus, GAsyncReadyCallback callback, gpointer user_data) { + GTask *task; + g_assert (IBUS_IS_BUS (bus)); g_assert (member != NULL); g_return_if_fail (ibus_bus_is_connected (bus)); - GSimpleAsyncResult *simple = g_simple_async_result_new ((GObject*) bus, - callback, - user_data, - source_tag); + task = g_task_new (bus, cancellable, callback, user_data); + g_task_set_source_tag (task, source_tag); + + if (bus->priv->use_portal && + g_strcmp0 (bus_name, IBUS_SERVICE_IBUS) == 0) { + bus_name = IBUS_SERVICE_PORTAL; + if (g_strcmp0 (interface, IBUS_INTERFACE_IBUS) == 0) + interface = IBUS_INTERFACE_PORTAL; + } g_dbus_connection_call (bus->priv->connection, bus_name, @@ -1940,5 +2670,5 @@ ibus_bus_call_async (IBusBus *bus, timeout_msec, cancellable, (GAsyncReadyCallback) ibus_bus_call_async_done, - simple); + task); } diff --git a/src/ibusbus.h b/src/ibusbus.h index 477ff8ce2..76df4fdc0 100644 --- a/src/ibusbus.h +++ b/src/ibusbus.h @@ -1,29 +1,33 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2013 Peng Huang + * Copyright (C) 2013-2019 Takao Fujiwara + * Copyright (C) 2008-2019 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif +#ifndef __IBUS_BUS_H_ +#define __IBUS_BUS_H_ + /** * SECTION: ibusbus * @short_description: Connect with IBus daemon. @@ -31,13 +35,12 @@ * * An IBusBus connects with IBus daemon. */ -#ifndef __IBUS_BUS_H_ -#define __IBUS_BUS_H_ - #include +#include #include "ibusinputcontext.h" #include "ibusconfig.h" #include "ibuscomponent.h" +#include "ibusshare.h" /* * Type macros. @@ -84,38 +87,78 @@ GType ibus_bus_get_type (void); /** * ibus_bus_new: - * @returns: A newly allocated #IBusBus instance, and the instance is not floating. * - * New an #IBusBus instance. + * Creates a new #IBusBus instance. + * + * Returns: A newly allocated #IBusBus instance, and the instance is not + * floating. */ IBusBus *ibus_bus_new (void); +/** + * ibus_bus_new_async: + * + * Creates a new #IBusBus instance. The instance will asynchronously connect + * to the IBus daemon. + * + * Returns: A newly allocated #IBusBus instance, and the instance is not + * floating. + */ +IBusBus *ibus_bus_new_async (void); + +/** + * ibus_bus_new_async_client: + * + * Creates a new #IBusBus instance for client use only. It will possibly + * be limited in what it can do. + * + * The instance will asynchronously connect to the IBus daemon. + * + * Returns: A newly allocated #IBusBus instance, and the instance is not + * floating. + */ +IBusBus *ibus_bus_new_async_client (void); + + /** * ibus_bus_is_connected: * @bus: An #IBusBus. - * @returns: %TRUE if @bus is connected, %FALSE otherwise. * * Return %TRUE if @bus is connected to IBus daemon. + * + * Returns: %TRUE if @bus is connected, %FALSE otherwise. */ gboolean ibus_bus_is_connected (IBusBus *bus); /** * ibus_bus_get_connection: * @bus: An #IBusBus. - * @returns: (transfer none): A #GDBusConnection of an #IBusBus instance. * - * Return #GDBusConnection of an #IBusBus instance. + * Gets a #GDBusConnection of an #IBusBus instance. + * + * Returns: (transfer none): A #GDBusConnection of an #IBusBus instance. */ GDBusConnection * ibus_bus_get_connection (IBusBus *bus); +/** + * ibus_bus_get_service_name: + * @bus: An #IBusBus. + * + * Return the main service name to use for calls on the ibus connection. + * + * Returns: at dbus name. + */ +const gchar * ibus_bus_get_service_name (IBusBus *bus); + /** * ibus_bus_hello: * @bus: An #IBusBus. - * @returns: The unique name of IBus process in DBus. * * This function sends a "HELLO" message to DBus daemon, * which replies the unique name of current IBus process. + * + * Returns: The unique name of IBus process in DBus. */ const gchar *ibus_bus_hello (IBusBus *bus); @@ -124,9 +167,10 @@ const gchar *ibus_bus_hello (IBusBus *bus); * @bus: the IBusBus instance to be processed. * @name: Name to be requested. * @flags: IBusBusNameFlag. - * @returns: 0 if failed; IBusBusRequestNameReply otherwise. * * Request a name from IBus daemon synchronously. + * + * Returns: 0 if failed; IBusBusRequestNameReply otherwise. */ guint32 ibus_bus_request_name (IBusBus *bus, const gchar *name, @@ -160,9 +204,10 @@ void ibus_bus_request_name_async (IBusBus *bus, * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_request_name_async(). * @error: Return location for error or %NULL. - * @returns: 0 if failed; positive number otherwise. * * Finishes an operation started with ibus_bus_request_name_async(). + * + * Returns: 0 if failed; positive number otherwise. */ guint ibus_bus_request_name_async_finish (IBusBus *bus, @@ -173,9 +218,10 @@ guint ibus_bus_request_name_async_finish * ibus_bus_release_name: * @bus: An #IBusBus. * @name: Name to be released. - * @returns: 0 if failed; positive number otherwise. * * Release a name to IBus daemon synchronously. + * + * Returns: 0 if failed; positive number otherwise. */ guint ibus_bus_release_name (IBusBus *bus, const gchar *name); @@ -207,9 +253,10 @@ void ibus_bus_release_name_async * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_release_name_async(). * @error: Return location for error or %NULL. - * @returns: 0 if failed; positive number otherwise. * * Finishes an operation started with ibus_bus_release_name_async(). + * + * Returns: 0 if failed; positive number otherwise. */ guint ibus_bus_release_name_async_finish (IBusBus *bus, @@ -220,12 +267,12 @@ guint ibus_bus_release_name_async_finish * ibus_bus_list_queued_owners: * @bus: An IBusBus. * @name: Name to be queried. - * @returns: (transfer full) (element-type utf8): - * The unique bus names of connections currently queued for @name. * * Lists the unique bus names of connections currently queued for a bus name. - * * FIXME add an asynchronous version. + * + * Returns: (transfer full) (element-type utf8): + * The unique bus names of connections currently queued for @name. */ GList * ibus_bus_list_queued_owners (IBusBus *bus, @@ -235,9 +282,10 @@ GList * ibus_bus_list_queued_owners * ibus_bus_name_has_owner: * @bus: An #IBusBus. * @name: Name to be checked. - * @returns: %TRUE if the name has owner, %FALSE otherwise. * * Checks whether the name has owner synchronously. + * + * Returns: %TRUE if the name has owner, %FALSE otherwise. */ gboolean ibus_bus_name_has_owner (IBusBus *bus, const gchar *name); @@ -269,9 +317,10 @@ void ibus_bus_name_has_owner_async * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_name_has_owner_async(). * @error: Return location for error or %NULL. - * @returns: %TRUE if the name has owner, %FALSE otherwise. * * Finishes an operation started with ibus_bus_name_has_owner_async(). + * + * Returns: %TRUE if the name has owner, %FALSE otherwise. */ gboolean ibus_bus_name_has_owner_async_finish (IBusBus *bus, @@ -281,11 +330,12 @@ gboolean ibus_bus_name_has_owner_async_finish /** * ibus_bus_list_names: * @bus: An #IBusBus. - * @returns: (transfer full) (element-type utf8): Lists that attached to @bus. * * Return lists that attached to @bus. - * [FixMe] Not implemented yet, only return NULL. + * [FixMe] Not implemented yet, only return %NULL. * [FixMe] Add async version. + * + * Returns: (transfer full) (element-type utf8): Lists that attached to @bus. */ GList *ibus_bus_list_names (IBusBus *bus); @@ -293,9 +343,10 @@ GList *ibus_bus_list_names (IBusBus *bus); * ibus_bus_add_match: * @bus: An #IBusBus. * @rule: Match rule. - * @returns: %TRUE if the rule is added. %FALSE otherwise. * * Add a match rule to an #IBusBus synchronously. + * + * Returns: %TRUE if the rule is added. %FALSE otherwise. */ gboolean ibus_bus_add_match (IBusBus *bus, const gchar *rule); @@ -326,9 +377,10 @@ void ibus_bus_add_match_async (IBusBus *bus, * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_add_match_async(). * @error: Return location for error or %NULL. - * @returns: %TRUE if the rule is added. %FALSE otherwise. * * Finishes an operation started with ibus_bus_add_match_async(). + * + * Returns: %TRUE if the rule is added. %FALSE otherwise. */ gboolean ibus_bus_add_match_async_finish (IBusBus *bus, @@ -339,9 +391,10 @@ gboolean ibus_bus_add_match_async_finish * ibus_bus_remove_match: * @bus: An #IBusBus. * @rule: Match rule. - * @returns: %TRUE if the rule is removed. %FALSE otherwise. * * Remove a match rule to an #IBusBus synchronously. + * + * Returns: %TRUE if the rule is removed. %FALSE otherwise. */ gboolean ibus_bus_remove_match (IBusBus *bus, const gchar *rule); @@ -373,9 +426,10 @@ void ibus_bus_remove_match_async * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_remove_match_async(). * @error: Return location for error or %NULL. - * @returns: %TRUE if the rule is removed. %FALSE otherwise. * * Finishes an operation started with ibus_bus_remove_match_async(). + * + * Returns: %TRUE if the rule is removed. %FALSE otherwise. */ gboolean ibus_bus_remove_match_async_finish (IBusBus *bus, @@ -386,9 +440,10 @@ gboolean ibus_bus_remove_match_async_finish * ibus_bus_get_name_owner: * @bus: An #IBusBus. * @name: Name. - * @returns: Owner of the name. The returned value must be freed with g_free(). * * Return the name owner synchronously. + * + * Returns: Owner of the name. The returned value must be freed with g_free(). */ gchar *ibus_bus_get_name_owner (IBusBus *bus, const gchar *name); @@ -420,9 +475,10 @@ void ibus_bus_get_name_owner_async * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_get_name_owner_async(). * @error: Return location for error or %NULL. - * @returns: Owner of the name. The returned value must be freed with g_free(). * * Finishes an operation started with ibus_bus_get_name_owner_async(). + * + * Returns: Owner of the name. The returned value must be freed with g_free(). */ gchar *ibus_bus_get_name_owner_async_finish (IBusBus *bus, @@ -434,9 +490,10 @@ gchar *ibus_bus_get_name_owner_async_finish * ibus_bus_exit: * @bus: An #IBusBus. * @restart: Whether restarting the ibus. - * @returns: %TRUE if the "Exit" call is suceeded, %FALSE otherwise. * * Exit or restart ibus-daemon synchronously. + * + * Returns: %TRUE if the "Exit" call is successful, %FALSE otherwise. */ gboolean ibus_bus_exit (IBusBus *bus, gboolean restart); @@ -467,9 +524,10 @@ void ibus_bus_exit_async (IBusBus *bus, * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_exit_async(). * @error: Return location for error or %NULL. - * @returns: %TRUE if the "Exit" call is suceeded, %FALSE otherwise. * * Finishes an operation started with ibus_bus_exit_async(). + * + * Returns: %TRUE if the "Exit" call is successful, %FALSE otherwise. */ gboolean ibus_bus_exit_async_finish (IBusBus *bus, GAsyncResult *res, @@ -479,10 +537,11 @@ gboolean ibus_bus_exit_async_finish (IBusBus *bus, * ibus_bus_create_input_context: * @bus: An #IBusBus. * @client_name: Name of client. - * @returns: An newly allocated #IBusInputContext if the "CreateInputContext" - * call is suceeded, %NULL otherwise. * * Create an input context for client synchronously. + * + * Returns: (transfer full): A newly allocated #IBusInputContext if the + * "CreateInputContext" call is succeeded, %NULL otherwise. */ IBusInputContext * ibus_bus_create_input_context @@ -516,10 +575,11 @@ void ibus_bus_create_input_context_async * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_create_input_context_async(). * @error: Return location for error or %NULL. - * @returns: An newly allocated #IBusInputContext if the "CreateInputContext" - * call is suceeded, %NULL otherwise. * * Finishes an operation started with ibus_bus_create_input_context_async(). + * + * Returns: (transfer full): A newly allocated #IBusInputContext if the + * "CreateInputContext" call is succeeded, %NULL otherwise. */ IBusInputContext * ibus_bus_create_input_context_async_finish @@ -530,11 +590,12 @@ IBusInputContext * /** * ibus_bus_current_input_context: * @bus: An #IBusBus. - * @returns: The named of currently focued #IBusInputContext if the - * "CurrentInputContext" call suceeded, %NULL otherwise. The return - * value must be freed with g_free(). * * Get the current focused input context synchronously. + * + * Returns: Name of the currently focused #IBusInputContext if the + * "CurrentInputContext" call succeeded, %NULL otherwise. The return + * value must be freed with g_free(). */ gchar *ibus_bus_current_input_context (IBusBus *bus); @@ -564,11 +625,12 @@ void ibus_bus_current_input_context_async * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_current_input_context_async(). * @error: Return location for error or %NULL. - * @returns: The named of currently focued IBusInputContext if the - * "CurrentInputContext" call suceeded, %NULL otherwise. The return - * value must be freed with g_free(). * * Finishes an operation started with ibus_bus_current_input_context_async(). + * + * Returns: Name of the currently focused IBusInputContext if the + * "CurrentInputContext" call succeeded, %NULL otherwise. The return + * value must be freed with g_free(). */ gchar *ibus_bus_current_input_context_async_finish (IBusBus *bus, @@ -579,9 +641,10 @@ gchar *ibus_bus_current_input_context_async_finish * ibus_bus_register_component: * @bus: An #IBusBus. * @component: A input engine component. - * @returns: %TRUE if the "RegisterComponent" call is suceeded, %FALSE otherwise. * - * Register a componet to an #IBusBus synchronously. + * Register a component to an #IBusBus synchronously. + * + * Returns: %TRUE if the "RegisterComponent" call is successful, %FALSE otherwise. */ gboolean ibus_bus_register_component (IBusBus *bus, @@ -597,7 +660,7 @@ gboolean ibus_bus_register_component * or %NULL if you don't care about the result of the method invocation. * @user_data: The data to pass to callback. * - * Register a componet to an #IBusBus asynchronously. + * Register a component to an #IBusBus asynchronously. */ void ibus_bus_register_component_async (IBusBus *bus, @@ -614,9 +677,10 @@ void ibus_bus_register_component_async * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_register_component_async(). * @error: Return location for error or %NULL. - * @returns: %TRUE if the "RegisterComponent" call is suceeded, %FALSE otherwise. * * Finishes an operation started with ibus_bus_register_component_async(). + * + * Returns: %TRUE if the "RegisterComponent" call is successful, %FALSE otherwise. */ gboolean ibus_bus_register_component_async_finish (IBusBus *bus, @@ -626,9 +690,11 @@ gboolean ibus_bus_register_component_async_finish /** * ibus_bus_list_engines: * @bus: An #IBusBus. - * @returns: (transfer container) (element-type IBusEngineDesc): A List of engines. * * List engines synchronously. + * + * Returns: (transfer full) (element-type IBusEngineDesc): + * A List of engines. */ GList *ibus_bus_list_engines (IBusBus *bus); @@ -657,22 +723,31 @@ void ibus_bus_list_engines_async * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_list_engines_async(). * @error: Return location for error or %NULL. - * @returns: (transfer container) (element-type IBusEngineDesc): A List of engines. * * Finishes an operation started with ibus_bus_list_engines_async(). + * + * Returns: (transfer full) (element-type IBusEngineDesc): + * A List of engines. */ GList *ibus_bus_list_engines_async_finish (IBusBus *bus, GAsyncResult *res, GError **error); +#ifndef IBUS_DISABLE_DEPRECATED /** * ibus_bus_list_active_engines: * @bus: An #IBusBus. - * @returns: (transfer container) (element-type IBusEngineDesc): A List of active engines. * * List active engines synchronously. + * + * Returns: (transfer full) (element-type IBusEngineDesc): + * A List of active engines. + * + * Deprecated: 1.5.3: Read dconf value + * /desktop/ibus/general/preload-engines instead. */ +IBUS_DEPRECATED GList *ibus_bus_list_active_engines (IBusBus *bus); @@ -686,7 +761,11 @@ GList *ibus_bus_list_active_engines * @user_data: The data to pass to callback. * * List active engines asynchronously. + * + * Deprecated: 1.5.3: Read dconf value + * /desktop/ibus/general/preload-engines instead. */ +IBUS_DEPRECATED void ibus_bus_list_active_engines_async (IBusBus *bus, gint timeout_msec, @@ -701,35 +780,51 @@ void ibus_bus_list_active_engines_async * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_list_active_engines_async(). * @error: Return location for error or %NULL. - * @returns: (transfer container) (element-type IBusEngineDesc): A List of active engines. * * Finishes an operation started with ibus_bus_list_active_engines_async(). + * + * Returns: (transfer full) (element-type IBusEngineDesc): + * A List of active engines. + * + * Deprecated: 1.5.3: Read dconf value + * /desktop/ibus/general/preload-engines instead. */ +IBUS_DEPRECATED GList *ibus_bus_list_active_engines_async_finish (IBusBus *bus, GAsyncResult *res, GError **error); +#endif /* IBUS_DISABLE_DEPRECATED */ /** * ibus_bus_get_engines_by_names: * @bus: An #IBusBus. * @names: (array zero-terminated=1): A %NULL-terminated array of names. - * @returns: (array zero-terminated=1) (transfer full): A %NULL-terminated array of engines. * - * Get engines by given names synchronously. + * Get engines by given names synchronously. If some engine names do not exist, + * this function will simply ignore them, and return rest of engines. * TODO(penghuang): add asynchronous version + * + * Returns: (array zero-terminated=1) (transfer full): + * A %NULL-terminated array of engines. */ IBusEngineDesc ** ibus_bus_get_engines_by_names (IBusBus *bus, const gchar * const *names); +#ifndef IBUS_DISABLE_DEPRECATED /** * ibus_bus_get_use_sys_layout: * @bus: An #IBusBus. - * @returns: %TRUE if "use_sys_layout" option is enabled. * * Check if the bus's "use_sys_layout" option is enabled or not synchronously. + * + * Returns: %TRUE if "use_sys_layout" option is enabled. + * + * Deprecated: 1.5.3: Read dconf value + * /desktop/ibus/general/use_system_keyboard_layout instead. */ +IBUS_DEPRECATED gboolean ibus_bus_get_use_sys_layout (IBusBus *bus); @@ -743,7 +838,11 @@ gboolean ibus_bus_get_use_sys_layout * @user_data: The data to pass to callback. * * Check if the bus's "use_sys_layout" option is enabled or not asynchronously. + * + * Deprecated: 1.5.3: Read dconf value + * /desktop/ibus/general/use_system_keyboard_layout instead. */ +IBUS_DEPRECATED void ibus_bus_get_use_sys_layout_async (IBusBus *bus, gint timeout_msec, @@ -758,10 +857,15 @@ void ibus_bus_get_use_sys_layout_async * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_get_use_sys_layout_async(). * @error: Return location for error or %NULL. - * @returns: TRUE if "use_sys_layout" option is enabled. * * Finishes an operation started with ibus_bus_get_use_sys_layout_async(). + * + * Returns: TRUE if "use_sys_layout" option is enabled. + * + * Deprecated: 1.5.3: Read dconf value + * /desktop/ibus/general/use_system_keyboard_layout instead. */ +IBUS_DEPRECATED gboolean ibus_bus_get_use_sys_layout_async_finish (IBusBus *bus, GAsyncResult *res, @@ -770,10 +874,15 @@ gboolean ibus_bus_get_use_sys_layout_async_finish /** * ibus_bus_get_use_global_engine: * @bus: An #IBusBus. - * @returns: TRUE if "use_global_engine" option is enabled. * - * Check if the bus's "use_global_engine" option is enabled or not synchronously. + * Check if the bus's "use_global_engine" option is enabled or not + * synchronously. + * + * Returns: TRUE if "use_global_engine" option is enabled. + * + * Deprecated: 1.5.3: Currently global engine is always used. */ +IBUS_DEPRECATED gboolean ibus_bus_get_use_global_engine (IBusBus *bus); @@ -787,7 +896,10 @@ gboolean ibus_bus_get_use_global_engine * @user_data: The data to pass to callback. * * Check if the bus's "use_global_engine" option is enabled or not asynchronously. + * + * Deprecated: 1.5.3: Currently global engine is always used. */ +IBUS_DEPRECATED void ibus_bus_get_use_global_engine_async (IBusBus *bus, gint timeout_msec, @@ -802,10 +914,14 @@ void ibus_bus_get_use_global_engine_async * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_get_use_global_engine_async(). * @error: Return location for error or %NULL. - * @returns: %TRUE if "use_global_engine" option is enabled. * * Finishes an operation started with ibus_bus_get_use_global_engine_async(). + * + * Returns: %TRUE if "use_global_engine" option is enabled. + * + * Deprecated: 1.5.3: Currently global engine is always used. */ +IBUS_DEPRECATED gboolean ibus_bus_get_use_global_engine_async_finish (IBusBus *bus, GAsyncResult *res, @@ -814,10 +930,18 @@ gboolean ibus_bus_get_use_global_engine_async_finish /** * ibus_bus_is_global_engine_enabled: * @bus: An #IBusBus. - * @returns: %TRUE if the current global engine is enabled. * * Check if the current global engine is enabled or not synchronously. + * + * Returns: %TRUE if the current global engine is enabled. + * + * Deprecated: 1.5.3: Probably this would be used for Chrome OS only. + * Currently global engine is always used and ibus_bus_get_global_engine() + * returns NULL until the first global engine is assigned. + * You can use ibus_set_log_handler() to disable a warning when + * ibus_bus_get_global_engine() returns NULL. */ +IBUS_DEPRECATED gboolean ibus_bus_is_global_engine_enabled (IBusBus *bus); @@ -831,7 +955,14 @@ gboolean ibus_bus_is_global_engine_enabled * @user_data: The data to pass to callback. * * Check if the current global engine is enabled or not asynchronously. + * + * Deprecated: 1.5.3: Probably this would be used for Chrome OS only. + * Currently global engine is always used and ibus_bus_get_global_engine() + * returns NULL until the first global engine is assigned. + * You can use ibus_set_log_handler() to disable a warning when + * ibus_bus_get_global_engine() returns NULL. */ +IBUS_DEPRECATED void ibus_bus_is_global_engine_enabled_async (IBusBus *bus, gint timeout_msec, @@ -846,22 +977,32 @@ void ibus_bus_is_global_engine_enabled_async * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_is_global_engine_enabled_async(). * @error: Return location for error or %NULL. - * @returns: %TRUE if the current global engine is enabled. * * Finishes an operation started with ibus_bus_is_global_engine_enabled_async(). + * + * Returns: %TRUE if the current global engine is enabled. + * + * Deprecated: 1.5.3: Probably this would be used for Chrome OS only. + * Currently global engine is always used and ibus_bus_get_global_engine() + * returns NULL until the first global engine is assigned. + * You can use ibus_set_log_handler() to disable a warning when + * ibus_bus_get_global_engine() returns NULL. */ +IBUS_DEPRECATED gboolean ibus_bus_is_global_engine_enabled_async_finish (IBusBus *bus, GAsyncResult *res, GError **error); +#endif /* IBUS_DISABLE_DEPRECATED */ /** * ibus_bus_get_global_engine: * @bus: An #IBusBus. - * @returns: (transfer none): The description of current global engine, - * or %NULL if there is no global engine. * * Get the description of current global engine synchronously. + * + * Returns: (transfer full): The description of current global engine, + * or %NULL if there is no global engine. */ IBusEngineDesc * ibus_bus_get_global_engine (IBusBus *bus); @@ -891,10 +1032,11 @@ void ibus_bus_get_global_engine_async * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_get_global_engine_async_finish(). * @error: Return location for error or %NULL. - * @returns: (transfer none): The description of current global engine, - * or %NULL if there is no global engine. * * Finishes an operation started with ibus_bus_get_global_engine_async_finish(). + * + * Returns: (transfer none): The description of current global engine, + * or %NULL if there is no global engine. */ IBusEngineDesc * ibus_bus_get_global_engine_async_finish @@ -906,9 +1048,10 @@ IBusEngineDesc * * ibus_bus_set_global_engine: * @bus: An #IBusBus. * @global_engine: A new engine name. - * @returns: %TRUE if the global engine was set successfully. * * Set current global engine synchronously. + * + * Returns: %TRUE if the global engine was set successfully. */ gboolean ibus_bus_set_global_engine (IBusBus *bus, const gchar *global_engine); @@ -940,9 +1083,10 @@ void ibus_bus_set_global_engine_async * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_bus_set_global_engine_async(). * @error: Return location for error or %NULL. - * @returns: %TRUE if no IPC errros. %FALSE otherwise. * * Finishes an operation started with ibus_bus_set_global_engine_async(). + * + * Returns: %TRUE if no IPC errros. %FALSE otherwise. */ gboolean ibus_bus_set_global_engine_async_finish (IBusBus *bus, @@ -977,12 +1121,165 @@ void ibus_bus_set_watch_ibus_signal /** * ibus_bus_get_config: * @bus: An #IBusBus. - * @returns: (transfer none): An #IBusConfig object which is configurable with - * @bus. * * Get the config instance from #IBusBus. + * + * Returns: (transfer none): An #IBusConfig object which is configurable with + * @bus. */ IBusConfig *ibus_bus_get_config (IBusBus *bus); +/** + * ibus_bus_preload_engines: + * @bus: An #IBusBus. + * @names: (array zero-terminated=1): A %NULL-terminated array of engine names. + * + * Start bus components by engine names synchronously. + * + * Returns: %TRUE if components start. %FALSE otherwise. + */ +gboolean ibus_bus_preload_engines (IBusBus *bus, + const gchar * const *names); + +/** + * ibus_bus_preload_engines_async: + * @bus: An #IBusBus. + * @names: (array zero-terminated=1): A %NULL-terminated array of engine names. + * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout. + * @cancellable: A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied + * or %NULL if you don't care about the result of the method invocation. + * @user_data: The data to pass to callback. + * + * Start bus components by engine names asynchronously. + */ +void ibus_bus_preload_engines_async + (IBusBus *bus, + const gchar * const + *names, + gint timeout_msec, + GCancellable *cancellable, + GAsyncReadyCallback + callback, + gpointer user_data); + +/** + * ibus_bus_preload_engines_async_finish: + * @bus: An #IBusBus. + * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to + * ibus_bus_preload_engines_async(). + * @error: Return location for error or %NULL. + * + * Finishes an operation started with ibus_bus_preload_engines_async(). + * + * Returns: %TRUE if component starts. %FALSE otherwise. + */ +gboolean ibus_bus_preload_engines_async_finish + (IBusBus *bus, + GAsyncResult *res, + GError **error); + +/** + * ibus_bus_get_ibus_property: + * @bus: An #IBusBus. + * @property_name: property name in org.freedesktop.DBus.Properties.Get + * + * Get org.freedesktop.DBus.Properties. + * + * Returns: (transfer full): The value in org.freedesktop.DBus.Properties.Get + * The returned value must be freed with g_variant_unref(). + */ +GVariant * ibus_bus_get_ibus_property (IBusBus *bus, + const gchar *property_name); + +/** + * ibus_bus_get_ibus_property_async: + * @bus: An #IBusBus. + * @property_name: property name in org.freedesktop.DBus.Properties.Get + * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout. + * @cancellable: A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied + * or %NULL if you don't care about the result of the method invocation. + * @user_data: The data to pass to callback. + * + * Get org.freedesktop.DBus.Properties asynchronously. + */ +void ibus_bus_get_ibus_property_async + (IBusBus *bus, + const gchar *property_name, + gint timeout_msec, + GCancellable *cancellable, + GAsyncReadyCallback + callback, + gpointer user_data); + +/** + * ibus_bus_get_ibus_property_async_finish: + * @bus: An #IBusBus. + * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to + * ibus_bus_get_ibus_property_async(). + * @error: Return location for error or %NULL. + * + * Finishes an operation started with ibus_bus_get_ibus_property_async(). + * + * Returns: (transfer full): The value in org.freedesktop.DBus.Properties.Get + * The returned value must be freed with g_variant_unref(). + */ +GVariant * ibus_bus_get_ibus_property_async_finish + (IBusBus *bus, + GAsyncResult *res, + GError **error); + +/** + * ibus_bus_set_ibus_property: + * @bus: An #IBusBus. + * @property_name: property name in org.freedesktop.DBus.Properties.Set + * @value: value in org.freedesktop.DBus.Properties.Set + * + * Set org.freedesktop.DBus.Properties. + */ +void ibus_bus_set_ibus_property (IBusBus *bus, + const gchar *property_name, + GVariant *value); + +/** + * ibus_bus_set_ibus_property_async: + * @bus: An #IBusBus. + * @property_name: property name in org.freedesktop.DBus.Properties.Set + * @value: value in org.freedesktop.DBus.Properties.Set + * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout. + * @cancellable: A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied + * or %NULL if you don't care about the result of the method invocation. + * @user_data: The data to pass to callback. + * + * Set org.freedesktop.DBus.Properties asynchronously. + */ +void ibus_bus_set_ibus_property_async + (IBusBus *bus, + const gchar *property_name, + GVariant *value, + gint timeout_msec, + GCancellable *cancellable, + GAsyncReadyCallback + callback, + gpointer user_data); + +/** + * ibus_bus_set_ibus_property_async_finish: + * @bus: An #IBusBus. + * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to + * ibus_bus_set_ibus_property_async(). + * @error: Return location for error or %NULL. + * + * Finishes an operation started with ibus_bus_set_ibus_property_async(). + * + * Returns: %TRUE if property is set with async. %FALSE failed. + */ +gboolean ibus_bus_set_ibus_property_async_finish + (IBusBus *bus, + GAsyncResult *res, + GError **error); + G_END_DECLS #endif diff --git a/src/ibuscomponent.c b/src/ibuscomponent.c index 6d21b66d6..1404ada08 100644 --- a/src/ibuscomponent.c +++ b/src/ibuscomponent.c @@ -2,25 +2,27 @@ /* vim:set et sts=4: */ /* bus - The Input Bus * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2020 Takao Fujiwara + * Copyright (C) 2008-2020 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include #include "ibuscomponent.h" +#include "ibusinternal.h" enum { LAST_SIGNAL, @@ -57,7 +59,7 @@ struct _IBusComponentPrivate { }; #define IBUS_COMPONENT_GET_PRIVATE(o) \ - (G_TYPE_INSTANCE_GET_PRIVATE ((o), IBUS_TYPE_COMPONENT, IBusComponentPrivate)) + ((IBusComponentPrivate *)ibus_component_get_instance_private (o)) // static guint _signals[LAST_SIGNAL] = { 0 }; @@ -89,7 +91,9 @@ static void ibus_component_parse_observed_paths XMLNode *node, gboolean access_fs); -G_DEFINE_TYPE (IBusComponent, ibus_component, IBUS_TYPE_SERIALIZABLE) +G_DEFINE_TYPE_WITH_PRIVATE (IBusComponent, + ibus_component, + IBUS_TYPE_SERIALIZABLE) static void ibus_component_class_init (IBusComponentClass *class) @@ -98,8 +102,6 @@ ibus_component_class_init (IBusComponentClass *class) IBusObjectClass *object_class = IBUS_OBJECT_CLASS (class); IBusSerializableClass *serializable_class = IBUS_SERIALIZABLE_CLASS (class); - g_type_class_add_private (class, sizeof (IBusComponentPrivate)); - gobject_class->set_property = (GObjectSetPropertyFunc) ibus_component_set_property; gobject_class->get_property = (GObjectGetPropertyFunc) ibus_component_get_property; object_class->destroy = (IBusObjectDestroyFunc) ibus_component_destroy; @@ -219,21 +221,6 @@ static void ibus_component_init (IBusComponent *component) { component->priv = IBUS_COMPONENT_GET_PRIVATE (component); - - /* FIXME: Is it necessary? */ -#if 0 - component->priv->engines = NULL; - component->priv->observed_paths = NULL; - - component->priv->name = NULL; - component->priv->description = NULL; - component->priv->version = NULL; - component->priv->license = NULL; - component->priv->author = NULL; - component->priv->homepage = NULL; - component->priv->exec = NULL; - component->priv->textdomain = NULL; -#endif } static void @@ -379,6 +366,7 @@ ibus_component_serialize (IBusComponent *component, g_variant_builder_add (array, "v", ibus_serializable_serialize ((IBusSerializable *)p->data)); } g_variant_builder_add (builder, "av", array); + g_variant_builder_unref (array); /* serialize engine desc list */ array = g_variant_builder_new (G_VARIANT_TYPE ("av")); @@ -386,6 +374,7 @@ ibus_component_serialize (IBusComponent *component, g_variant_builder_add (array, "v", ibus_serializable_serialize ((IBusSerializable *)p->data)); } g_variant_builder_add (builder, "av", array); + g_variant_builder_unref (array); return TRUE; } @@ -399,14 +388,22 @@ ibus_component_deserialize (IBusComponent *component, retval = IBUS_SERIALIZABLE_CLASS (ibus_component_parent_class)->deserialize ((IBusSerializable *)component, variant); g_return_val_if_fail (retval, 0); - g_variant_get_child (variant, retval++, "s", &component->priv->name); - g_variant_get_child (variant, retval++, "s", &component->priv->description); - g_variant_get_child (variant, retval++, "s", &component->priv->version); - g_variant_get_child (variant, retval++, "s", &component->priv->license); - g_variant_get_child (variant, retval++, "s", &component->priv->author); - g_variant_get_child (variant, retval++, "s", &component->priv->homepage); - g_variant_get_child (variant, retval++, "s", &component->priv->exec); - g_variant_get_child (variant, retval++, "s", &component->priv->textdomain); + ibus_g_variant_get_child_string (variant, retval++, + &component->priv->name); + ibus_g_variant_get_child_string (variant, retval++, + &component->priv->description); + ibus_g_variant_get_child_string (variant, retval++, + &component->priv->version); + ibus_g_variant_get_child_string (variant, retval++, + &component->priv->license); + ibus_g_variant_get_child_string (variant, retval++, + &component->priv->author); + ibus_g_variant_get_child_string (variant, retval++, + &component->priv->homepage); + ibus_g_variant_get_child_string (variant, retval++, + &component->priv->exec); + ibus_g_variant_get_child_string (variant, retval++, + &component->priv->textdomain); GVariant *var; GVariantIter *iter = NULL; @@ -503,11 +500,7 @@ ibus_component_output (IBusComponent *component, for (p = component->priv->observed_paths; p != NULL; p = p->next ) { IBusObservedPath *path = (IBusObservedPath *) p->data; - - g_string_append_indent (output, indent + 2); - g_string_append_printf (output, "%s\n", - path->mtime, - path->path); + ibus_observed_path_output (path, output, indent + 2); } g_string_append_indent (output, indent + 1); @@ -646,9 +639,9 @@ ibus_component_parse_engines (IBusComponent *component, } static void -ibus_component_parse_observed_paths (IBusComponent *component, - XMLNode *node, - gboolean access_fs) +ibus_component_parse_observed_paths (IBusComponent *component, + XMLNode *node, + gboolean access_fs) { g_assert (IBUS_IS_COMPONENT (component)); g_assert (node); @@ -667,8 +660,8 @@ ibus_component_parse_observed_paths (IBusComponent *component, if (access_fs && path->is_dir && path->is_exist) { component->priv->observed_paths = - g_list_concat(component->priv->observed_paths, - ibus_observed_path_traverse(path)); + g_list_concat (component->priv->observed_paths, + ibus_observed_path_traverse (path, TRUE)); } } } @@ -805,8 +798,8 @@ ibus_component_add_observed_path (IBusComponent *component, if (access_fs && p->is_dir && p->is_exist) { component->priv->observed_paths = - g_list_concat(component->priv->observed_paths, - ibus_observed_path_traverse(p)); + g_list_concat (component->priv->observed_paths, + ibus_observed_path_traverse (p, TRUE)); } } @@ -841,3 +834,10 @@ ibus_component_check_modification (IBusComponent *component) } return FALSE; } + +GList * +ibus_component_get_observed_paths (IBusComponent *component) +{ + g_assert (IBUS_IS_COMPONENT (component)); + return g_list_copy (component->priv->observed_paths); +} diff --git a/src/ibuscomponent.h b/src/ibuscomponent.h index 8f35b940c..3e51caa3c 100644 --- a/src/ibuscomponent.h +++ b/src/ibuscomponent.h @@ -1,29 +1,32 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* bus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2015 Peng Huang + * Copyright (C) 2008-2015 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif +#ifndef __IBUS_COMPONENT_H_ +#define __IBUS_COMPONENT_H_ + /** * SECTION: ibuscomponent * @short_description: Component (executable) specification. @@ -39,10 +42,8 @@ * load the XML file by ibus_component_new_from_file(). * * The format of a component XML file is described at - * http://code.google.com/p/ibus/wiki/DevXML + * https://github.com/ibus/ibus/wiki/DevXML */ -#ifndef __IBUS_COMPONENT_H_ -#define __IBUS_COMPONENT_H_ #include "ibusserializable.h" #include "ibusobservedpath.h" @@ -78,14 +79,6 @@ typedef struct _IBusComponentPrivate IBusComponentPrivate; * * An IBusComponent stores component information. * You can get extended values with g_object_get_properties. - * name: Name of the component. - * description: Detailed description of component. - * version: Component version. - * license: Distribution license of this component. - * author: Author(s) of the component. - * homepage: Homepage of the component. - * command_line: path to component executable. - * textdomain: Domain name for dgettext() */ struct _IBusComponent { /*< private >*/ @@ -95,6 +88,7 @@ struct _IBusComponent { /*< public >*/ + /*< private >*/ /* padding */ gpointer pdummy[7]; // We can add 7 pointers without breaking the ABI. }; @@ -117,9 +111,10 @@ GType ibus_component_get_type (void); * @homepage: Homepage of the component. * @command_line: path to component executable. * @textdomain: Domain name for dgettext() - * @returns: A newly allocated IBusComponent. * - * New an IBusComponent. + * Creates a new #IBusComponent. + * + * Returns: A newly allocated #IBusComponent. */ IBusComponent *ibus_component_new (const gchar *name, const gchar *description, @@ -133,14 +128,16 @@ IBusComponent *ibus_component_new (const gchar *name, /** * ibus_component_new_varargs: * @first_property_name: Name of the first property. - * @Varargs: the NULL-terminated arguments of the properties and values. + * @...: the NULL-terminated arguments of the properties and values. * - * New an IBusComponent. + * Creates a new #IBusComponent. * ibus_component_new_varargs() supports the va_list format. * name property is required. e.g. * IBusComponent *component = ibus_component_new_varargs ("name", "ibus-foo", * "command_line", "/usr/libexec/ibus-engine-foo --ibus", * NULL) + * + * Returns: A newly allocated #IBusComponent. */ IBusComponent *ibus_component_new_varargs (const gchar *first_property_name, ...); @@ -148,9 +145,10 @@ IBusComponent *ibus_component_new_varargs (const gchar *first_property_ /** * ibus_component_new_from_xml_node: * @node: Root node of component XML tree. - * @returns: A newly allocated IBusComponent. * - * New an IBusComponent from an XML tree. + * Creates a new #IBusComponent from an XML tree. + * + * Returns: A newly allocated #IBusComponent. */ IBusComponent *ibus_component_new_from_xml_node (XMLNode *node); @@ -158,94 +156,103 @@ IBusComponent *ibus_component_new_from_xml_node /** * ibus_component_new_from_file: * @filename: An XML file that contains component information. - * @returns: A newly allocated IBusComponent. * - * New an IBusComponent from an XML file. + * Creates a new #IBusComponent from an XML file. * Note that a component file usually contains engine descriptions, * if it does, ibus_engine_desc_new_from_xml_node() will be called * to load the engine descriptions. + * + * Returns: A newly allocated #IBusComponent. */ IBusComponent *ibus_component_new_from_file (const gchar *filename); /** * ibus_component_get_name: - * @component: An IBusComponent - * @returns: name property in IBusComponent + * @component: An #IBusComponent * - * Return the name property in IBusComponent. It should not be freed. + * Gets the name property in #IBusComponent. It should not be freed. + * + * Returns: name property in #IBusComponent */ const gchar *ibus_component_get_name (IBusComponent *component); /** * ibus_component_get_description: - * @component: An IBusComponent - * @returns: description property in IBusComponent + * @component: An #IBusComponent + * + * Gets the description property in #IBusComponent. It should not be freed. * - * Return the description property in IBusComponent. It should not be freed. + * Returns: description property in #IBusComponent */ const gchar *ibus_component_get_description (IBusComponent *component); /** * ibus_component_get_version: - * @component: An IBusComponent - * @returns: version property in IBusComponent + * @component: An #IBusComponent + * + * Gets the version property in #IBusComponent. It should not be freed. * - * Return the version property in IBusComponent. It should not be freed. + * Returns: version property in #IBusComponent */ const gchar *ibus_component_get_version (IBusComponent *component); /** * ibus_component_get_license: - * @component: An IBusComponent - * @returns: license property in IBusComponent + * @component: An #IBusComponent * - * Return the license property in IBusComponent. It should not be freed. + * Gets the license property in #IBusComponent. It should not be freed. + * + * Returns: license property in #IBusComponent */ const gchar *ibus_component_get_license (IBusComponent *component); /** * ibus_component_get_author: - * @component: An IBusComponent - * @returns: author property in IBusComponent + * @component: An #IBusComponent + * + * Gets the author property in #IBusComponent. It should not be freed. * - * Return the author property in IBusComponent. It should not be freed. + * Returns: author property in #IBusComponent */ const gchar *ibus_component_get_author (IBusComponent *component); /** * ibus_component_get_homepage: - * @component: An IBusComponent - * @returns: homepage property in IBusComponent + * @component: An #IBusComponent * - * Return the homepage property in IBusComponent. It should not be freed. + * Gets the homepage property in #IBusComponent. It should not be freed. + * + * Returns: homepage property in #IBusComponent */ const gchar *ibus_component_get_homepage (IBusComponent *component); /** * ibus_component_get_exec: - * @component: An IBusComponent - * @returns: exec property in IBusComponent + * @component: An #IBusComponent + * + * Gets the exec property in #IBusComponent. It should not be freed. * - * Return the exec property in IBusComponent. It should not be freed. + * Returns: exec property in #IBusComponent */ const gchar *ibus_component_get_exec (IBusComponent *component); /** * ibus_component_get_textdomain: - * @component: An IBusComponent - * @returns: textdomain property in IBusComponent + * @component: An #IBusComponent * - * Return the textdomain property in IBusComponent. It should not be freed. + * Gets the textdomain property in #IBusComponent. It should not be freed. + * + * Returns: textdomain property in #IBusComponent */ const gchar *ibus_component_get_textdomain (IBusComponent *component); /** * ibus_component_add_observed_path: - * @component: An IBusComponent + * @component: An #IBusComponent * @path: Observed path to be added. - * @access_fs: TRUE for filling the file status; FALSE otherwise. + * @access_fs: %TRUE for filling the file status; %FALSE otherwise. * - * Add an observed path to IBusComponent. + * Add an observed path to #IBusComponent. */ void ibus_component_add_observed_path (IBusComponent *component, @@ -254,30 +261,32 @@ void ibus_component_add_observed_path /** * ibus_component_add_engine: - * @component: An IBusComponent + * @component: An #IBusComponent * @engine: A description of an engine. * - * Add an engine to IBusComponent according to the description in @engine. + * Add an engine to #IBusComponent according to the description in @engine. */ void ibus_component_add_engine (IBusComponent *component, IBusEngineDesc *engine); /** * ibus_component_get_engines: - * @component: An IBusComponent. - * @returns: (transfer container) (element-type IBusEngineDesc): A newly allocated GList that contains engines. + * @component: An #IBusComponent. + * + * Gets the engines of this component. * - * Get the engines of this component. + * Returns: (transfer container) (element-type IBusEngineDesc): + * A newly allocated GList that contains engines. */ GList *ibus_component_get_engines (IBusComponent *component); /** * ibus_component_output: - * @component: An IBusComponent. + * @component: An #IBusComponent. * @output: GString that holds the result. * @indent: level of indent. * - * Output IBusComponent as an XML-formatted string. + * Output #IBusComponent as an XML-formatted string. * The output string can be then shown on the screen or written to file. */ void ibus_component_output (IBusComponent *component, @@ -286,7 +295,7 @@ void ibus_component_output (IBusComponent *component, /** * ibus_component_output_engines: - * @component: An IBusComponent. + * @component: An #IBusComponent. * @output: GString that holds the result. * @indent: level of indent. * @@ -299,13 +308,28 @@ void ibus_component_output_engines (IBusComponent *component, /** * ibus_component_check_modification: - * @component: An IBusComponent. - * @returns: TRUE if at least one of the observed paths is modified; FALSE otherwise. + * @component: An #IBusComponent. * * Check whether the observed paths of component is modified. + * + * Returns: %TRUE if at least one of the observed paths is modified; + * %FALSE otherwise. */ gboolean ibus_component_check_modification (IBusComponent *component); + +/** + * ibus_component_get_observed_paths: + * @component: An #IBusComponent. + * + * Gets the observed paths of this component. + * + * Returns: (transfer container) (element-type IBusObservedPath): A + * newly allocated GList that contains observed paths. + */ +GList *ibus_component_get_observed_paths + (IBusComponent *component); + G_END_DECLS #endif diff --git a/src/ibuscomposetable.c b/src/ibuscomposetable.c new file mode 100644 index 000000000..387a24a8f --- /dev/null +++ b/src/ibuscomposetable.c @@ -0,0 +1,1903 @@ +/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ +/* ibus - The Input Bus + * Copyright (C) 2013-2014 Peng Huang + * Copyright (C) 2013-2022 Takao Fujiwara + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include +#include + +#include "ibuscomposetable.h" +#include "ibuserror.h" +#include "ibusenginesimple.h" +#include "ibuskeys.h" +#include "ibuskeysyms.h" +#include "ibustypes.h" + +#include "ibusenginesimpleprivate.h" + +/* This file contains the table of the compose sequences, + * static const guint16 gtk_compose_seqs_compact[] = {} + * It is generated from the compose-parse.py script. + */ +#include "gtkimcontextsimpleseqs.h" + + +#define IBUS_COMPOSE_TABLE_MAGIC "IBusComposeTable" +#define IBUS_COMPOSE_TABLE_VERSION (4) +#define X11_DATADIR X11_DATA_PREFIX "/share/X11/locale" +#define IBUS_MAX_COMPOSE_ALGORITHM_LEN 9 + +typedef struct { + gunichar *sequence; + gunichar *values; + char *comment; +} IBusComposeData; + + +extern const IBusComposeTableCompactEx ibus_compose_table_compact; +extern const IBusComposeTableCompactEx ibus_compose_table_compact_32bit; + + +static void +ibus_compose_data_free (IBusComposeData *compose_data) +{ + g_free (compose_data->sequence); + g_free (compose_data->values); + g_free (compose_data->comment); + g_slice_free (IBusComposeData, compose_data); +} + + +static void +ibus_compose_list_element_free (IBusComposeData *compose_data, + gpointer data) +{ + ibus_compose_data_free (compose_data); +} + + +static guint +unichar_length (gunichar *uni_array) +{ + guint i = 0; + g_return_val_if_fail (uni_array, 0); + while (uni_array[i]) + ++i; + return i; +} + + +static gboolean +is_codepoint (const char *str) +{ + int i; + + /* 'U' is not code point but 'U00C0' is code point */ + if (str[0] == '\0' || str[0] != 'U' || str[1] == '\0') + return FALSE; + + for (i = 1; str[i] != '\0'; i++) { + if (!g_ascii_isxdigit (str[i])) + return FALSE; + } + + return TRUE; +} + + +static gboolean +parse_compose_value (IBusComposeData *compose_data, + const char *val, + const char *line) +{ + char *head, *end, *p; + char *ustr = NULL; + gunichar *uchars = NULL, *up; + GError *error = NULL; + int n_uchars = 0; + + if (!(head = strchr (val, '\"'))) { + g_warning ("Need to double-quote the value: %s: %s", val, line); + goto fail; + } + ++head; + p = head; + end = NULL; + while ((*p != '\0') && (end = strchr (p, '\"'))) { + if (*(end - 1) == '\\' && *(end - 2) == '\\') + break; + if (*(end - 1) != '\\') + break; + p = end + 1; + } + if (end == NULL || *p == '\0') { + g_warning ("Need to double-quote the value: %s: %s", val, line); + goto fail; + } + ustr = g_strndup (head, end - head); + p = ustr + 1; + /* The escaped octal */ + if (*ustr == '\\' && *p >= '0' && *p <= '8') { + compose_data->values = g_new (gunichar, 2); + compose_data->values[0] = g_ascii_strtoll(p, NULL, 8); + compose_data->values[1] = 0; + } else { + if (!(uchars = g_utf8_to_ucs4 (ustr, -1, NULL, NULL, &error))) { + g_warning ("Invalid Unicode: %s: %s in %s:", + error->message, ustr, line); + g_error_free (error); + goto fail; + } else if (!uchars[0]) { + g_warning ("Invalid Unicode: \"\" in %s:", line); + goto fail; + } + + for (up = uchars; *up; up++) { + if (*up == '\\') { + ++up; + if (*up != '"' && *up != '\\') { + g_warning ("Invalid backslash: %s: %s", val, line); + goto fail; + } + } + if (!compose_data->values) { + compose_data->values = g_new (gunichar, 2); + } else { + compose_data->values = g_renew (gunichar, + compose_data->values, + n_uchars + 2); + } + compose_data->values[n_uchars++] = *up; + } + compose_data->values[n_uchars] = 0; + } + + g_free (ustr); + g_free (uchars); + compose_data->comment = g_strdup (g_strstrip (end + 1)); + + return TRUE; + +fail: + g_free (ustr); + g_free (uchars); + return FALSE; +} + + +static int +parse_compose_sequence (IBusComposeData *compose_data, + const char *seq, + const char *line) +{ + char **words = g_strsplit (seq, "<", -1); + int i; + int n = 0; + + if (g_strv_length (words) < 2) { + g_warning ("too few words; key sequence format is ...: %s", + line); + goto fail; + } + + for (i = 1; words[i] != NULL; i++) { + char *start = words[i]; + char *end = index (words[i], '>'); + char *match; + gunichar codepoint; + + if (words[i][0] == '\0') + continue; + + if (start == NULL || end == NULL || end <= start) { + g_warning ("key sequence format is ...: %s", line); + goto fail; + } + + match = g_strndup (start, end - start); + + if (compose_data->sequence == NULL) { + compose_data->sequence = g_new (gunichar, 2); + } else { + compose_data->sequence = g_renew (gunichar, + compose_data->sequence, + n + 2); + } + + if (is_codepoint (match)) { + codepoint = (gunichar) g_ascii_strtoll (match + 1, NULL, 16); + compose_data->sequence[n] = codepoint; + } else { + codepoint = (gunichar) ibus_keyval_from_name (match); + compose_data->sequence[n] = codepoint; + } + + if (codepoint == IBUS_KEY_VoidSymbol) { + g_warning ("Could not get code point of keysym %s: %s", + match, line); + g_free (match); + goto fail; + } + g_free (match); + n++; + } + if (compose_data->sequence) + compose_data->sequence[n] = 0; + + g_strfreev (words); + if (0 == n || n >= IBUS_MAX_COMPOSE_LEN) { + g_warning ("The max number of sequences is %d: %s", + IBUS_MAX_COMPOSE_LEN, line); + return -1; + } + + return n; + +fail: + g_strfreev (words); + return -1; +} + + +static char * +expand_include_path (const char *include_path) { + char *out = strdup (""); + const char *head, *i; + char *former, *o; + + for (head = i = include_path; *i; ++i) { + /* expand sequence */ + if (*i == '%') { + switch (*(i + 1)) { + case 'H': { /* $HOME */ + const char *home = getenv ("HOME"); + if (!home) { + g_warning ("while parsing XCompose include target %s, " + "%%H replacement failed because HOME is not " + "defined; the include has been ignored", + include_path); + goto fail; + } + o = out; + former = g_strndup (head, i - head); + out = g_strdup_printf ("%s%s%s", o, former, home); + head = i + 2; + g_free (o); + g_free (former); + break; + } + case 'L': /* locale compose file */ + g_warning ("while handling XCompose include target %s, found " + "redundant %%L include; the include has been " + "ignored", include_path); + goto fail; + case 'S': /* system compose dir */ + o = out; + former = g_strndup (head, i - head); + out = g_strdup_printf ("%s%s%s", o, former, X11_DATADIR); + head = i + 2; + g_free (o); + g_free (former); + break; + case '%': /* escaped % */ + o = out; + former = g_strndup (head, i - head); + out = g_strdup_printf ("%s%s%s", o, former, "%"); + head = i + 2; + g_free (o); + g_free (former); + break; + default: + g_warning ("while parsing XCompose include target %s, found " + "unknown substitution character '%c'; the include " + "has been ignored", include_path, *(i+1)); + goto fail; + } + ++i; + } + } + o = out; + out = g_strdup_printf ("%s%s", o, head); + g_free (o); + return out; +fail: + g_free (out); + return NULL; +} + + +static void +parse_compose_line (GList **compose_list, + const char *line, + int *compose_len, + char **include) +{ + char **components = NULL; + IBusComposeData *compose_data = NULL; + int l; + + g_assert (compose_len); + *compose_len = 0; + + /* eat spaces at the start of the line */ + while (*line && (*line == ' ' || *line == '\t')) line++; + + if (line[0] == '\0' || line[0] == '#') + return; + + if (g_str_has_prefix (line, "include ")) { + const char *rest = line + sizeof ("include ") - 1; + while (*rest && *rest == ' ') rest++; + + /* grabbed the path part of the line */ + char *rest2; + if (*rest == '"') { + rest++; + rest2 = g_strdup (rest); + /* eat the closing quote */ + char *i = rest2; + while (*i && *i != '"') i++; + *i = '\0'; + } else { + rest2 = g_strdup (rest); + } + *include = expand_include_path (rest2); + g_free (rest2); + return; + } + + components = g_strsplit (line, ":", 2); + + if (components[1] == NULL) { + g_warning ("No delimiter ':': %s", line); + goto fail; + } + + compose_data = g_slice_new0 (IBusComposeData); + + if ((l = parse_compose_sequence (compose_data, + g_strstrip (components[0]), + line)) < 1) { + goto fail; + } + *compose_len = l; + + if (!parse_compose_value (compose_data, g_strstrip (components[1]), line)) + goto fail; + + g_strfreev (components); + + *compose_list = g_list_append (*compose_list, compose_data); + + return; + +fail: + g_strfreev (components); + if (compose_data) + ibus_compose_data_free (compose_data); +} + + +static char * +get_en_compose_file (void) +{ + char * const sys_langs[] = { "en_US.UTF-8", "en_US", "en.UTF-8", + "en", NULL }; + char * const *sys_lang = NULL; + char *path = NULL; + for (sys_lang = sys_langs; *sys_lang; sys_lang++) { + path = g_build_filename (X11_DATADIR, *sys_lang, "Compose", NULL); + if (g_file_test (path, G_FILE_TEST_EXISTS)) + break; + g_clear_pointer (&path, g_free); + } + return path; +} + + +static GList * +ibus_compose_list_parse_file (const char *compose_file, + int *max_compose_len) +{ + char *contents = NULL; + char **lines = NULL; + gsize length = 0; + GError *error = NULL; + GList *compose_list = NULL; + int i; + + g_assert (max_compose_len); + + if (!g_file_get_contents (compose_file, &contents, &length, &error)) { + g_error ("%s", error->message); + g_error_free (error); + return NULL; + } + + lines = g_strsplit (contents, "\n", -1); + g_free (contents); + for (i = 0; lines[i] != NULL; i++) { + int compose_len = 0; + char *include = NULL; + parse_compose_line (&compose_list, lines[i], &compose_len, &include); + if (*max_compose_len < compose_len) + *max_compose_len = compose_len; + if (include && *include) { + GStatBuf buf_include = { 0, }; + GStatBuf buf_parent = { 0, }; + char *en_compose; + errno = 0; + if (g_stat (include, &buf_include)) { + g_warning ("Cannot access %s: %s", + include, + g_strerror (errno)); + g_clear_pointer (&include, g_free); + continue; + } + errno = 0; + if (g_stat (compose_file, &buf_parent)) { + g_warning ("Cannot access %s: %s", + compose_file, + g_strerror (errno)); + g_clear_pointer (&include, g_free); + continue; + } + if (buf_include.st_ino == buf_parent.st_ino) { + g_warning ("Found recursive nest same file %s", include); + g_clear_pointer (&include, g_free); + continue; + } + en_compose = get_en_compose_file (); + if (en_compose) { + errno = 0; + if (g_stat (en_compose, &buf_parent)) { + g_warning ("Cannot access %s: %s", + compose_file, + g_strerror (errno)); + g_clear_pointer (&include, g_free); + g_free (en_compose); + continue; + } + } + g_free (en_compose); + if (buf_include.st_ino == buf_parent.st_ino) { + g_message ("System en_US Compose is already loaded %s\n", + include); + g_clear_pointer (&include, g_free); + continue; + } + } + if (include && *include) { + GList *rest = ibus_compose_list_parse_file (include, + max_compose_len); + if (rest) { + compose_list = g_list_concat (compose_list, rest); + } + } + g_clear_pointer (&include, g_free); + } + g_strfreev (lines); + + return compose_list; +} + + +static GList * +ibus_compose_list_check_duplicated (GList *compose_list, + int max_compose_len) +{ + GList *list; + static guint16 *keysyms; + GList *removed_list = NULL; + IBusComposeData *compose_data; + gboolean is_32bit; + + keysyms = g_new (guint16, max_compose_len + 1); + + for (list = compose_list; list != NULL; list = list->next) { + int i; + int n_compose = 0; + gboolean compose_finish = FALSE; + gunichar *output_chars = NULL; + gunichar output_char = 0; + guint n_outputs; + + compose_data = list->data; + + for (i = 0; i < max_compose_len + 1; i++) + keysyms[i] = 0; + + for (i = 0; i < max_compose_len + 1; i++) { + gunichar codepoint = compose_data->sequence[i]; + keysyms[i] = (guint16) codepoint; + + if (codepoint == 0) + break; + + n_compose++; + } + + n_outputs = unichar_length (compose_data->values); + is_32bit = (n_outputs > 1) ? TRUE : + (compose_data->values[0] >= 0xFFFF) ? TRUE : FALSE; + if (!is_32bit && + ibus_compose_table_compact_check (&ibus_compose_table_compact, + keysyms, + n_compose, + &compose_finish, + &output_chars) && + compose_finish) { + if (compose_data->values[0] == *output_chars) + removed_list = g_list_append (removed_list, compose_data); + g_free (output_chars); + } else if (is_32bit && + ibus_compose_table_compact_check ( + &ibus_compose_table_compact_32bit, + keysyms, + n_compose, + &compose_finish, + &output_chars) && compose_finish) { + + if (n_outputs == unichar_length (output_chars)) { + int j = 0; + while (j < n_outputs && compose_data->values[j]) { + if (compose_data->values[j] != output_chars[j]) + break; + ++j; + } + if (j == n_outputs) + removed_list = g_list_append (removed_list, compose_data); + } + g_free (output_chars); + + } else if (ibus_check_algorithmically (keysyms, + n_compose, + &output_char)) { + if (compose_data->values[0] == output_char) + removed_list = g_list_append (removed_list, compose_data); + } + } + + for (list = removed_list; list != NULL; list = list->next) { + compose_data = list->data; + compose_list = g_list_remove (compose_list, compose_data); + ibus_compose_data_free (compose_data); + } + + g_list_free (removed_list); + g_free (keysyms); + + return compose_list; +} + + +static int +ibus_compose_data_compare (gpointer a, + gpointer b, + gpointer data) +{ + IBusComposeData *compose_data_a = a; + IBusComposeData *compose_data_b = b; + int max_compose_len = GPOINTER_TO_INT (data); + int i; + /* The allocation length of compose_data_a->sequence[] is different from + * one of compose_data_b->sequence[] and max_compose_len indicates + * the sequence length only but not include the compose value length. + * So max_compose_len is greater than any allocation lengths of sequence[] + * and this API should return if code_a or code_b is 0. + */ + for (i = 0; i < max_compose_len; i++) { + gunichar code_a = compose_data_a->sequence[i]; + gunichar code_b = compose_data_b->sequence[i]; + + if (code_a != code_b) + return code_a - code_b; + if (code_a == 0 && code_b == 0) + return 0; + } + return 0; +} + + +static void +ibus_compose_list_print (GList *compose_list, + int max_compose_len, + int n_index_stride) +{ + GList *list; + int i, j; + IBusComposeData *compose_data; + int total_size = 0; + const char *keyval; + + for (list = compose_list; list != NULL; list = list->next) { + compose_data = list->data; + g_printf (" "); + + for (i = 0; i < max_compose_len; i++) { + + if (compose_data->sequence[i] == 0) { + for (j = i; j < max_compose_len; j++) { + if (i == max_compose_len -1) + g_printf ("0,\n"); + else + g_printf ("0, "); + } + break; + } + + keyval = ibus_keyval_name (compose_data->sequence[i]); + if (i == max_compose_len -1) + g_printf ("%s,\n", keyval ? keyval : "(null)"); + else + g_printf ("%s, ", keyval ? keyval : "(null)"); + } + g_printf (" "); + for (i = 0; compose_data->values[i]; ++i) + g_printf ("%#06X, ", compose_data->values[i]); + g_printf (" /* %s */,\n", compose_data->comment); + + total_size += n_index_stride; + } + + g_printerr ("TOTAL_SIZE: %d\nMAX_COMPOSE_LEN: %d\nN_INDEX_STRIDE: %d\n", + total_size, max_compose_len, n_index_stride); +} + + +/* Implemented from g_str_hash() */ +static guint32 +ibus_compose_table_data_hash (gconstpointer v, + int length) +{ + const guint16 *p, *head; + unsigned char c; + guint32 h = 5381; + + for (p = v, head = v; (p - head) < length; p++) { + c = 0x00ff & (*p >> 8); + h = (h << 5) + h + c; + c = 0x00ff & *p; + h = (h << 5) + h + c; + } + + return h; +} + + +static char * +ibus_compose_hash_get_cache_path (guint32 hash) +{ + char *basename = NULL; + const char *cache_dir; + char *dir = NULL; + char *path = NULL; + + basename = g_strdup_printf ("%08x.cache", hash); + + if ((cache_dir = g_getenv ("IBUS_COMPOSE_CACHE_DIR"))) { + dir = g_strdup (cache_dir); + } else { + dir = g_build_filename (g_get_user_cache_dir (), + "ibus", "compose", NULL); + } + path = g_build_filename (dir, basename, NULL); + errno = 0; + if (g_mkdir_with_parents (dir, 0755)) { + g_warning ("Failed to mkdir %s: %s", dir, g_strerror (errno)); + g_clear_pointer (&path, g_free); + } + + g_free (dir); + g_free (basename); + + return path; +} + + +static GVariant * +ibus_compose_table_serialize (IBusComposeTableEx *compose_table) +{ + const char *header = IBUS_COMPOSE_TABLE_MAGIC; + const guint16 version = IBUS_COMPOSE_TABLE_VERSION; + guint16 max_seq_len; + guint16 index_stride; + guint16 n_seqs; + guint16 n_seqs_32bit = 0; + guint16 second_size = 0; + GVariant *variant_data = NULL; + GVariant *variant_data_32bit_first = NULL; + GVariant *variant_data_32bit_second = NULL; + GVariant *variant_table; + + g_return_val_if_fail (compose_table != NULL, NULL); + + max_seq_len = compose_table->max_seq_len; + index_stride = max_seq_len + 2; + n_seqs = compose_table->n_seqs; + + g_return_val_if_fail (max_seq_len, NULL); + + if (n_seqs) { + g_return_val_if_fail (compose_table->data, NULL); + + variant_data = g_variant_new_fixed_array (G_VARIANT_TYPE_UINT16, + compose_table->data, + (gsize)index_stride * n_seqs, + sizeof (guint16)); + if (!variant_data) { + g_warning ("Could not change compose data to GVariant."); + return NULL; + } + } else { + variant_data = g_variant_new_fixed_array ( + G_VARIANT_TYPE_UINT16, + NULL, + 0, + sizeof (guint16)); + g_assert (variant_data); + } + if (compose_table->priv) { + n_seqs_32bit = compose_table->priv->first_n_seqs; + second_size = compose_table->priv->second_size; + } + if (!n_seqs && !n_seqs_32bit) { + g_warning ("ComposeTable has not key sequences."); + goto out_serialize; + } else if (n_seqs_32bit && !second_size) { + g_warning ("Compose key sequences are loaded but the values could " \ + "not be loaded."); + goto out_serialize; + } else if (!n_seqs_32bit && second_size) { + g_warning ("Compose values are loaded but the key sequences could " \ + "not be loaded."); + goto out_serialize; + } else if (n_seqs_32bit && second_size) { + if (!compose_table->priv->data_first) { + g_warning ("data_first is NULL"); + goto out_serialize; + } + if (!compose_table->priv->data_second) { + g_warning ("data_second is NULL"); + goto out_serialize; + } + variant_data_32bit_first = g_variant_new_fixed_array ( + G_VARIANT_TYPE_UINT16, + compose_table->priv->data_first, + (gsize)index_stride * n_seqs_32bit, + sizeof (guint16)); + variant_data_32bit_second = g_variant_new_fixed_array ( + G_VARIANT_TYPE_UINT32, + compose_table->priv->data_second, + compose_table->priv->second_size, + sizeof (guint32)); + if (!variant_data_32bit_first || !variant_data_32bit_second) { + g_warning ("Could not change 32bit compose data to GVariant."); + goto out_serialize; + } + } else { + variant_data_32bit_first = g_variant_new_fixed_array ( + G_VARIANT_TYPE_UINT16, + NULL, + 0, + sizeof (guint16)); + variant_data_32bit_second = g_variant_new_fixed_array ( + G_VARIANT_TYPE_UINT32, + NULL, + 0, + sizeof (guint32)); + g_assert (variant_data_32bit_first && variant_data_32bit_second); + } + variant_table = g_variant_new ("(sqqqqqvvv)", + header, + version, + max_seq_len, + n_seqs, + n_seqs_32bit, + second_size, + variant_data, + variant_data_32bit_first, + variant_data_32bit_second); + return g_variant_ref_sink (variant_table); + +out_serialize: + g_clear_pointer (&variant_data, g_variant_unref); + g_clear_pointer (&variant_data_32bit_first, g_variant_unref); + g_clear_pointer (&variant_data_32bit_second, g_variant_unref); + return NULL; +} + + +static int +ibus_compose_table_find (gconstpointer data1, + gconstpointer data2) +{ + const IBusComposeTableEx *compose_table = + (const IBusComposeTableEx *) data1; + guint32 hash = (guint32) GPOINTER_TO_INT (data2); + return compose_table->id != hash; +} + + +static IBusComposeTableEx * +ibus_compose_table_deserialize (const char *contents, + gsize length) +{ + IBusComposeTableEx *retval = NULL; + GVariantType *type; + GVariant *variant_data = NULL; + GVariant *variant_data_32bit_first = NULL; + GVariant *variant_data_32bit_second = NULL; + GVariant *variant_table = NULL; + const char *header = NULL; + guint16 version = 0; + guint16 max_seq_len = 0; + guint16 n_seqs = 0; + guint16 n_seqs_32bit = 0; + guint16 second_size = 0; + guint16 index_stride; + gconstpointer data = NULL; + gconstpointer data_32bit_first = NULL; + gconstpointer data_32bit_second = NULL; + gsize data_length = 0; + + g_return_val_if_fail (contents != NULL, NULL); + g_return_val_if_fail (length > 0, NULL); + + /* Check the cache version at first before load whole the file content. */ + type = g_variant_type_new ("(sq)"); + variant_table = g_variant_new_from_data (type, + contents, + length, + FALSE, + NULL, + NULL); + g_variant_type_free (type); + + if (!variant_table) { + g_warning ("cache is broken."); + goto out_load_cache; + } + + g_variant_ref_sink (variant_table); + g_variant_get (variant_table, "(&sq)", &header, &version); + + if (g_strcmp0 (header, IBUS_COMPOSE_TABLE_MAGIC) != 0) { + g_warning ("cache is not IBusComposeTable."); + goto out_load_cache; + } + + if (version != IBUS_COMPOSE_TABLE_VERSION) { + g_warning ("cache version is different: %u != %u", + version, IBUS_COMPOSE_TABLE_VERSION); + goto out_load_cache; + } + + version = 0; + header = NULL; + g_variant_unref (variant_table); + variant_table = NULL; + + type = g_variant_type_new ("(sqqqqqvvv)"); + variant_table = g_variant_new_from_data (type, + contents, + length, + FALSE, + NULL, + NULL); + g_variant_type_free (type); + + if (!variant_table) { + g_warning ("cache is broken."); + goto out_load_cache; + } + + g_variant_ref_sink (variant_table); + g_variant_get (variant_table, "(&sqqqqqvvv)", + NULL, + NULL, + &max_seq_len, + &n_seqs, + &n_seqs_32bit, + &second_size, + &variant_data, + &variant_data_32bit_first, + &variant_data_32bit_second); + + if (max_seq_len == 0 || (n_seqs == 0 && n_seqs_32bit == 0)) { + g_warning ("cache size is not correct %d %d %d", + max_seq_len, n_seqs, n_seqs_32bit); + goto out_load_cache; + } + + if (n_seqs && variant_data) { + data = g_variant_get_fixed_array (variant_data, + &data_length, + sizeof (guint16)); + } + index_stride = max_seq_len + 2; + + if (data_length != (gsize)index_stride * n_seqs) { + g_warning ("cache size is not correct %d %d %lu", + max_seq_len, n_seqs, data_length); + goto out_load_cache; + } + + retval = g_new0 (IBusComposeTableEx, 1); + if (data_length) { + retval->data = g_new (guint16, data_length); + memcpy (retval->data, data, data_length * sizeof (guint16)); + } + retval->max_seq_len = max_seq_len; + retval->n_seqs = n_seqs; + + if (n_seqs_32bit && !second_size) { + g_warning ("32bit key sequences are loaded but the values " \ + "could not be loaded."); + goto out_load_cache; + } + if (!n_seqs_32bit && second_size) { + g_warning ("32bit key sequences could not loaded but the values " \ + "are loaded."); + goto out_load_cache; + } + + data_length = 0; + if (n_seqs_32bit && variant_data_32bit_first) { + data_32bit_first = g_variant_get_fixed_array (variant_data_32bit_first, + &data_length, + sizeof (guint16)); + if (data_length != (gsize) index_stride * n_seqs_32bit) { + g_warning ("32bit cache size is not correct %d %d %lu", + max_seq_len, n_seqs_32bit, data_length); + goto out_load_cache; + } + } + if (!data && !data_32bit_first) { + g_warning ("cache data is null."); + goto out_load_cache; + } + if (data_length) { + if (!(retval->priv = g_new0 (IBusComposeTablePrivate, 1))) { + g_warning ("Failed g_new"); + goto out_load_cache; + } + retval->priv->data_first = g_new (guint16, data_length); + memcpy (retval->priv->data_first, + data_32bit_first, data_length * sizeof (guint16)); + retval->priv->first_n_seqs = n_seqs_32bit; + } + + data_length = 0; + if (second_size && variant_data_32bit_second) { + data_32bit_second = g_variant_get_fixed_array ( + variant_data_32bit_second, + &data_length, + sizeof (guint32)); + if (data_length != (gsize) second_size) { + g_warning ("32bit cache size is not correct %d %d", + max_seq_len, second_size); + goto out_load_cache; + } + } + if (data_length) { + if ((retval->priv->data_second = g_new (guint32, data_length))) { + memcpy (retval->priv->data_second, + data_32bit_second, data_length * sizeof (guint32)); + retval->priv->second_size = second_size; + } else { + g_warning ("Failed g_new"); + retval->priv->second_size = 0; + } + } + + +out_load_cache: + g_clear_pointer (&variant_data, g_variant_unref); + g_clear_pointer (&variant_data_32bit_first, g_variant_unref); + g_clear_pointer (&variant_data_32bit_second, g_variant_unref); + g_clear_pointer (&variant_table, g_variant_unref); + return retval; +} + + +IBusComposeTableEx * +ibus_compose_table_load_cache (const gchar *compose_file) +{ + IBusComposeTableEx *retval = NULL; + guint32 hash; + char *path = NULL; + char *contents = NULL; + GStatBuf original_buf; + GStatBuf cache_buf; + gsize length = 0; + GError *error = NULL; + + do { + hash = g_str_hash (compose_file); + if ((path = ibus_compose_hash_get_cache_path (hash)) == NULL) + return NULL; + if (!g_file_test (path, G_FILE_TEST_EXISTS)) + break; + + if (g_stat (path, &cache_buf)) + break; + if (g_lstat (compose_file, &original_buf)) + break; + if (original_buf.st_mtime > cache_buf.st_mtime) + break; + if (g_stat (compose_file, &original_buf)) + break; + if (original_buf.st_mtime > cache_buf.st_mtime) + break; + if (!g_file_get_contents (path, &contents, &length, &error)) { + g_warning ("Failed to get cache content %s: %s", + path, error->message); + g_error_free (error); + break; + } + + retval = ibus_compose_table_deserialize (contents, length); + if (retval == NULL) + g_warning ("Failed to load the cache file: %s", path); + else + retval->id = hash; + } while (0); + + g_free (contents); + g_free (path); + return retval; +} + + +void +ibus_compose_table_save_cache (IBusComposeTableEx *compose_table) +{ + char *path = NULL; + GVariant *variant_table = NULL; + const char *contents = NULL; + GError *error = NULL; + gsize length = 0; + + if ((path = ibus_compose_hash_get_cache_path (compose_table->id)) == NULL) + return; + + variant_table = ibus_compose_table_serialize (compose_table); + if (variant_table == NULL) { + g_warning ("Failed to serialize compose table %s", path); + goto out_save_cache; + } + contents = g_variant_get_data (variant_table); + length = g_variant_get_size (variant_table); + if (!g_file_set_contents (path, contents, length, &error)) { + g_warning ("Failed to save compose table %s: %s", path, error->message); + g_error_free (error); + goto out_save_cache; + } + +out_save_cache: + g_variant_unref (variant_table); + g_free (path); +} + + +static IBusComposeTableEx * +ibus_compose_table_new_with_list (GList *compose_list, + int max_compose_len, + int n_index_stride, + guint32 hash) +{ + /* @ibus_compose_seqs: Include both compose sequence and the value(compose + * output) as the tradition GTK. The value is one character only + * and within 16bit. I.e. All compose sequences and the values + * are 16bit. + * @ibus_compose_seqs_32bit_second: Include the compose values only. + * The length of values by compose sequence is more than one characster + * or one of the values is outside 16bit but within 32bit. + * Some values could be more than one character and Emoji character + * could be outside 16bit. + * See also ibus/src/tests/ibus-compose.emoji file for e.g. + * @ibus_compose_seqs_32bit_first: Include the compose sequence only in + * case the value is included in @ibus_compose_seqs_32bit_second. + * @s_size_total: The number of compose sequences. + * @s_size_16bit: The number of compose sequences whose value is one + * character only and within 16bit. I.e. the number of the compose + * sequence in @ibus_compose_seqs is @@s_size_16bit. And + * @s_size_total - @s_size_16bit is the number of the compose sequence + * in @ibus_compose_seqs_32bit_first. + * @v_size_32bit: The total number of compose values. Each length of the + * values is more than one character or one of the value is + * outside 16bit but within 32bit. I.e. The size of + * @ibus_compose_seqs_32bit_second is @v_size_32bit. + * @v_index_32bit: Each index of the compose values in + * @ibus_compose_seqs_32bit_second and this is not a fixed value in + * this API. If a compose sequence is found in + * @ibus_compose_seqs_32bit_first and the next value is 0, 0 is lined + * in @ibus_compose_seqs_32bit_first until @max_compose_len after + * the found compose sequence. And the next value is the length of + * the compose values and the next value is the @v_index_32bit, i.e. + * the index of @ibus_compose_seqs_32bit_second. + * E.g. the following line could be found in + * @ibus_compose_seqs_32bit_first: + * ..., "U17ff", "0", "0", "0", "0", 2, 100, ... + * @ibus_compose_seqs_32bit_second[100] is "ាំ" and the character + * length is 2. + * @max_compose_len is 5 and @n_index_stride is 7. + */ + gsize s_size_total, s_size_16bit, v_size_32bit, v_index_32bit; + guint n = 0, m = 0; + int i, j; + guint16 *ibus_compose_seqs = NULL; + guint16 *ibus_compose_seqs_32bit_first = NULL; + guint32 *ibus_compose_seqs_32bit_second = NULL; + GList *list; + IBusComposeData *compose_data = NULL; + IBusComposeTableEx *retval = NULL; + + g_return_val_if_fail (compose_list != NULL, NULL); + + s_size_total = g_list_length (compose_list); + s_size_16bit = s_size_total; + v_size_32bit = 0; + + for (list = compose_list; list != NULL; list = list->next) { + compose_data = list->data; + if (unichar_length (compose_data->values) > 1 || + compose_data->values[0] >= 0xFFFF) { + --s_size_16bit; + v_size_32bit += unichar_length (compose_data->values); + } + } + + if (s_size_16bit) { + ibus_compose_seqs = g_new (guint16, s_size_16bit * n_index_stride); + if (!ibus_compose_seqs) { + g_warning ("Failed g_new"); + return NULL; + } + } + if (s_size_total > s_size_16bit) { + ibus_compose_seqs_32bit_first = + g_new (guint16, + (s_size_total - s_size_16bit) * n_index_stride); + ibus_compose_seqs_32bit_second = g_new (guint32, v_size_32bit); + if (!ibus_compose_seqs_32bit_first || !ibus_compose_seqs_32bit_second) { + g_warning ("Failed g_new"); + g_free (ibus_compose_seqs); + g_free (ibus_compose_seqs_32bit_first); + g_free (ibus_compose_seqs_32bit_second); + return NULL; + } + } + + v_index_32bit = 0; + for (list = compose_list; list != NULL; list = list->next) { + gboolean is_32bit = FALSE; + compose_data = list->data; + + is_32bit = unichar_length (compose_data->values) > 1 ? TRUE : + compose_data->values[0] >= 0xFFFF ? TRUE : FALSE; + if (is_32bit) { + g_assert (ibus_compose_seqs_32bit_first); + g_assert (ibus_compose_seqs_32bit_second); + } + for (i = 0; i < max_compose_len; i++) { + if (compose_data->sequence[i] == 0) { + for (j = i; j < max_compose_len; j++) { + if (is_32bit) { + g_assert (m < (s_size_total - s_size_16bit) + * n_index_stride); + ibus_compose_seqs_32bit_first[m++] = 0; + } else { + g_assert (n < s_size_16bit * n_index_stride); + ibus_compose_seqs[n++] = 0; + } + } + break; + } + if (is_32bit) { + g_assert (m < (s_size_total - s_size_16bit) * n_index_stride); + ibus_compose_seqs_32bit_first[m++] = + (guint16) compose_data->sequence[i]; + } else { + g_assert (n < s_size_16bit * n_index_stride); + ibus_compose_seqs[n++] = (guint16) compose_data->sequence[i]; + } + } + if (is_32bit) { + for (j = 0; compose_data->values[j]; j++) { + g_assert (v_index_32bit + j < v_size_32bit); + ibus_compose_seqs_32bit_second[v_index_32bit + j] = + compose_data->values[j]; + } + g_assert (m + 1 < (s_size_total - s_size_16bit) * n_index_stride); + ibus_compose_seqs_32bit_first[m++] = j; + ibus_compose_seqs_32bit_first[m++] = v_index_32bit; + v_index_32bit += j; + } else { + g_assert (n + 1 < s_size_16bit * n_index_stride); + ibus_compose_seqs[n++] = (guint16) compose_data->values[0]; + ibus_compose_seqs[n++] = 0; + } + } + + retval = g_new0 (IBusComposeTableEx, 1); + retval->data = ibus_compose_seqs; + retval->max_seq_len = max_compose_len; + retval->n_seqs = s_size_16bit; + retval->id = hash; + if (s_size_total > s_size_16bit) { + retval->priv = g_new0 (IBusComposeTablePrivate, 1); + retval->priv->data_first = ibus_compose_seqs_32bit_first; + retval->priv->data_second = ibus_compose_seqs_32bit_second; + retval->priv->first_n_seqs = s_size_total - s_size_16bit; + retval->priv->second_size = v_size_32bit; + } + + return retval; +} + + +IBusComposeTableEx * +ibus_compose_table_new_with_file (const gchar *compose_file) +{ + GList *compose_list = NULL; + IBusComposeTableEx *compose_table; + int max_compose_len = 0; + int n_index_stride = 0; + + g_assert (compose_file != NULL); + + compose_list = ibus_compose_list_parse_file (compose_file, + &max_compose_len); + if (compose_list == NULL) + return NULL; + n_index_stride = max_compose_len + 2; + compose_list = ibus_compose_list_check_duplicated (compose_list, + max_compose_len); + compose_list = g_list_sort_with_data ( + compose_list, + (GCompareDataFunc) ibus_compose_data_compare, + GINT_TO_POINTER (max_compose_len)); + + if (compose_list == NULL) { + g_warning ("compose file %s does not include any keys besides keys " + "in en-us compose file", compose_file); + return NULL; + } + + if (g_getenv ("IBUS_COMPOSE_TABLE_PRINT") != NULL) + ibus_compose_list_print (compose_list, max_compose_len, n_index_stride); + + compose_table = ibus_compose_table_new_with_list ( + compose_list, + max_compose_len, + n_index_stride, + g_str_hash (compose_file)); + + g_list_free_full (compose_list, + (GDestroyNotify) ibus_compose_list_element_free); + + return compose_table; +} + + +/* if ibus_compose_seqs[N - 1] is an outputed compose character, + * ibus_compose_seqs[N * 2 - 1] is also an outputed compose character. + * and ibus_compose_seqs[0] to ibus_compose_seqs[0 + N - 3] are the + * sequences and call ibus_engine_simple_add_table: + * ibus_engine_simple_add_table(engine, ibus_compose_seqs, + * N - 2, G_N_ELEMENTS(ibus_compose_seqs) / N) + * The compose sequences are allowed within G_MAXUINT16 + */ +GSList * +ibus_compose_table_list_add_array (GSList *compose_tables, + const guint16 *data, + gint max_seq_len, + gint n_seqs) +{ + guint32 hash; + IBusComposeTableEx *compose_table; + int n_index_stride = max_seq_len + 2; + int length = n_index_stride * n_seqs; + int i; + guint16 *ibus_compose_seqs = NULL; + + g_assert (length >= 0); + g_return_val_if_fail (data != NULL, compose_tables); + g_return_val_if_fail (max_seq_len <= IBUS_MAX_COMPOSE_LEN, compose_tables); + + hash = ibus_compose_table_data_hash (data, length); + + if (g_slist_find_custom (compose_tables, + GINT_TO_POINTER (hash), + ibus_compose_table_find) != NULL) { + return compose_tables; + } + + ibus_compose_seqs = g_new0 (guint16, length); + for (i = 0; i < length; i++) + ibus_compose_seqs[i] = data[i]; + + compose_table = g_new0 (IBusComposeTableEx, 1); + compose_table->data = ibus_compose_seqs; + compose_table->max_seq_len = max_seq_len; + compose_table->n_seqs = n_seqs; + compose_table->id = hash; + + return g_slist_prepend (compose_tables, compose_table); +} + + +GSList * +ibus_compose_table_list_add_file (GSList *compose_tables, + const gchar *compose_file) +{ + guint32 hash; + IBusComposeTableEx *compose_table; + + g_return_val_if_fail (compose_file != NULL, compose_tables); + + hash = g_str_hash (compose_file); + if (g_slist_find_custom (compose_tables, + GINT_TO_POINTER (hash), + ibus_compose_table_find) != NULL) { + return compose_tables; + } + + compose_table = ibus_compose_table_load_cache (compose_file); + if (compose_table != NULL) + return g_slist_prepend (compose_tables, compose_table); + + if ((compose_table = ibus_compose_table_new_with_file (compose_file)) + == NULL) { + return compose_tables; + } + + ibus_compose_table_save_cache (compose_table); + return g_slist_prepend (compose_tables, compose_table); +} + + +static int +compare_seq (const void *key, const void *value) +{ + int i = 0; + const guint16 *keysyms = key; + const guint16 *seq = value; + + while (keysyms[i]) { + if (keysyms[i] < seq[i]) + return -1; + else if (keysyms[i] > seq[i]) + return 1; + + i++; + } + + return 0; +} + + +gboolean +ibus_compose_table_check (const IBusComposeTableEx *table, + guint16 *compose_buffer, + int n_compose, + gboolean *compose_finish, + gboolean *compose_match, + GString *output, + gboolean is_32bit) +{ + int row_stride = table->max_seq_len + 2; + guint16 *data_first; + int n_seqs; + guint16 *seq; + + if (compose_finish) + *compose_finish = FALSE; + if (compose_match) + *compose_match = FALSE; + if (output) + g_string_set_size (output, 0); + + if (n_compose > table->max_seq_len) + return FALSE; + + if (is_32bit) { + if (!table->priv) + return FALSE; + data_first = table->priv->data_first; + n_seqs = table->priv->first_n_seqs; + } else { + data_first = table->data; + n_seqs = table->n_seqs; + } + seq = bsearch (compose_buffer, + data_first, n_seqs, + sizeof (guint16) * row_stride, + compare_seq); + + if (seq == NULL) + return FALSE; + + guint16 *prev_seq; + + /* Back up to the first sequence that matches to make sure + * we find the exact match if their is one. + */ + while (seq > data_first) { + prev_seq = seq - row_stride; + if (compare_seq (compose_buffer, prev_seq) != 0) + break; + seq = prev_seq; + } + + /* complete sequence */ + if (n_compose == table->max_seq_len || seq[n_compose] == 0) { + guint16 *next_seq; + gunichar value = 0; + int num = 0; + int index = 0; + char *output_str = NULL; + GError *error = NULL; + + if (is_32bit) { + num = seq[table->max_seq_len]; + index = seq[table->max_seq_len + 1]; + value = table->priv->data_second[index]; + } else { + value = seq[table->max_seq_len]; + } + + if (is_32bit) { + output_str = g_ucs4_to_utf8 (table->priv->data_second + index, + num, NULL, NULL, &error); + if (output_str) { + if (output) + g_string_append (output, output_str); + g_free (output_str); + if (compose_match) + *compose_match = TRUE; + } else { + g_warning ("Failed to output multiple characters: %s", + error->message); + g_error_free (error); + } + } else { + if (output) + g_string_append_unichar (output, value); + if (compose_match) + *compose_match = TRUE; + } + + /* We found a tentative match. See if there are any longer + * sequences containing this subsequence + */ + next_seq = seq + row_stride; + if (next_seq < data_first + row_stride * n_seqs) { + if (compare_seq (compose_buffer, next_seq) == 0) + return TRUE; + } + + if (compose_finish) + *compose_finish = TRUE; + compose_buffer[0] = 0; + } + return TRUE; +} + + +static int +compare_seq_index (const void *key, const void *value) +{ + const guint16 *keysyms = key; + const guint16 *seq = value; + + if (keysyms[0] < seq[0]) + return -1; + else if (keysyms[0] > seq[0]) + return 1; + return 0; +} + + +/** + * ibus_compose_table_compact_check: + * @table: A const `IBusComposeTableCompactEx` + * @compose_buffer: Typed compose sequence buffer + * @n_compose: The length of `compose_buffer` + * @compose_finish: If %TRUE, `output_chars` should be committed + * @output_chars: An array of gunichar of output compose characters + * + * output_chars is better to use gunichar instead of GString because + * IBusComposeData->values[] is the gunichar array. + */ +gboolean +ibus_compose_table_compact_check (const IBusComposeTableCompactEx + *table, + guint16 *compose_buffer, + int n_compose, + gboolean *compose_finish, + gunichar **output_chars) +{ + int row_stride; + guint16 *seq_index; + guint16 *seq; + int i; + + /* compose_finish and output_chars should not be initialized because + * ibus_compose_table_check() is called at first and + * engine->priv->tentative_match will be preedit after this is called. + */ + + /* Will never match, if the sequence in the compose buffer is longer + * than the sequences in the table. Further, compare_seq (key, val) + * will overrun val if key is longer than val. */ + if (n_compose > table->max_seq_len) + return FALSE; + + seq_index = bsearch (compose_buffer, + table->data, + table->n_index_size, + sizeof (guint16) * table->n_index_stride, + compare_seq_index); + + if (seq_index == NULL) + return FALSE; + + if (n_compose == 1) + return TRUE; + + seq = NULL; + + if (table->priv) { + for (i = n_compose - 1; i < table->max_seq_len; i++) { + row_stride = i + 2; + + if (seq_index[i + 1] - seq_index[i] > 0) { + g_assert (row_stride); + seq = bsearch (compose_buffer + 1, + table->data + seq_index[i], + (seq_index[i + 1] - seq_index[i]) / row_stride, + sizeof (guint16) * row_stride, + compare_seq); + if (seq) { + if (i == n_compose - 1) + break; + else + return TRUE; + } + } + } + if (!seq) { + return FALSE; + } else { + int index = seq[row_stride - 2]; + int length = seq[row_stride - 1]; + int j; + if (compose_finish) + *compose_finish = TRUE; + if (output_chars) { + if (!(*output_chars)) + *output_chars = g_new (gunichar, length + 1); + for (j = 0; j < length; j++) { + (*output_chars)[j] = table->priv->data2[index + j]; + } + (*output_chars)[length] = 0; + } + + return TRUE; + } + } else { + for (i = n_compose - 1; i < table->max_seq_len; i++) { + row_stride = i + 1; + + if (seq_index[i + 1] - seq_index[i] > 0) { + g_assert (row_stride); + seq = bsearch (compose_buffer + 1, + table->data + seq_index[i], + (seq_index[i + 1] - seq_index[i]) / row_stride, + sizeof (guint16) * row_stride, + compare_seq); + + if (seq) { + if (i == n_compose - 1) + break; + else + return TRUE; + } + } + } + if (!seq) { + return FALSE; + } else { + if (compose_finish) + *compose_finish = TRUE; + if (output_chars) { + if (!(*output_chars)) + *output_chars = g_new (gunichar, 2); + (*output_chars)[0] = seq[row_stride - 1]; + (*output_chars)[1] = 0; + } + + return TRUE; + } + } + + g_assert_not_reached (); +} + + +/* This function receives a sequence of Unicode characters and tries to + * normalize it (NFC). We check for the case the the resulting string + * has length 1 (single character). + * NFC normalisation normally rearranges diacritic marks, unless these + * belong to the same Canonical Combining Class. + * If they belong to the same canonical combining class, we produce all + * permutations of the diacritic marks, then attempt to normalize. + */ +static gboolean +check_normalize_nfc (gunichar* combination_buffer, int n_compose) +{ + gunichar combination_buffer_temp[IBUS_MAX_COMPOSE_ALGORITHM_LEN + 1]; + char *combination_utf8_temp = NULL; + char *nfc_temp = NULL; + int n_combinations; + gunichar temp_swap; + int i; + + n_combinations = 1; + + for (i = 1; i < n_compose; i++ ) + n_combinations *= i; + + /* Xorg reuses dead_tilde for the perispomeni diacritic mark. + * We check if base character belongs to Greek Unicode block, + * and if so, we replace tilde with perispomeni. */ + if (combination_buffer[0] >= 0x390 && combination_buffer[0] <= 0x3FF) { + for (i = 1; i < n_compose; i++ ) + if (combination_buffer[i] == 0x303) + combination_buffer[i] = 0x342; + } + + memcpy (combination_buffer_temp, + combination_buffer, + IBUS_MAX_COMPOSE_ALGORITHM_LEN * sizeof (gunichar) ); + + for (i = 0; i < n_combinations; i++ ) { + g_unicode_canonical_ordering (combination_buffer_temp, n_compose); + combination_utf8_temp = g_ucs4_to_utf8 (combination_buffer_temp, -1, + NULL, NULL, NULL); + nfc_temp = g_utf8_normalize (combination_utf8_temp, -1, + G_NORMALIZE_NFC); + + if (g_utf8_strlen (nfc_temp, -1) == 1) { + memcpy (combination_buffer, + combination_buffer_temp, + IBUS_MAX_COMPOSE_ALGORITHM_LEN * sizeof (gunichar) ); + + g_free (combination_utf8_temp); + g_free (nfc_temp); + + return TRUE; + } + + g_free (combination_utf8_temp); + g_free (nfc_temp); + + if (n_compose > 2) { + int j = i % (n_compose - 1) + 1; + int k = (i+1) % (n_compose - 1) + 1; + if (j >= IBUS_MAX_COMPOSE_ALGORITHM_LEN) { + g_warning ("j >= %d for combination_buffer_temp", + IBUS_MAX_COMPOSE_ALGORITHM_LEN); + break; + } + if (k >= IBUS_MAX_COMPOSE_ALGORITHM_LEN) { + g_warning ("k >= %d for combination_buffer_temp", + IBUS_MAX_COMPOSE_ALGORITHM_LEN); + break; + } + temp_swap = combination_buffer_temp[j]; + combination_buffer_temp[j] = combination_buffer_temp[k]; + combination_buffer_temp[k] = temp_swap; + } else { + break; + } + } + + return FALSE; +} + + +gboolean +ibus_check_algorithmically (const guint16 *compose_buffer, + int n_compose, + gunichar *output_char) + +{ + int i; + gunichar combination_buffer[IBUS_MAX_COMPOSE_ALGORITHM_LEN + 1]; + char *combination_utf8, *nfc; + + if (output_char) + *output_char = 0; + + /* Check the IBUS_MAX_COMPOSE_ALGORITHM_LEN length only here instead of + * IBUS_MAX_COMPOSE_LEN length. + * Because this API calls check_normalize_nfc() which calculates the factorial + * of `n_compose` and assigns the value to `n_combinations`. + * I.e. 9! == 40320 <= SHRT_MAX == 32767 + * The factorial of exceeding INT_MAX spends a long time in check_normalize_nfc() + * and causes a D-Bus timeout between GTK clients and IBusEngineSimple. + * Currenlty IBUS_MAX_COMPOSE_LEN is much larger and supports the long compose + * sequence however the max 9 would be enough for this mechanical compose. + */ + if (n_compose > IBUS_MAX_COMPOSE_ALGORITHM_LEN) + return FALSE; + + for (i = 0; i < n_compose && IS_DEAD_KEY (compose_buffer[i]); i++) + ; + if (i == n_compose) + return TRUE; + + if (i > 0 && i == n_compose - 1) { + combination_buffer[0] = ibus_keyval_to_unicode (compose_buffer[i]); + combination_buffer[n_compose] = 0; + i--; + while (i >= 0) { + combination_buffer[i+1] = ibus_keysym_to_unicode (compose_buffer[i], + TRUE, + NULL); + if (!combination_buffer[i+1]) { + combination_buffer[i+1] = + ibus_keyval_to_unicode (compose_buffer[i]); + } + i--; + } + + /* If the buffer normalizes to a single character, + * then modify the order of combination_buffer accordingly, if + * necessary, and return TRUE. + */ + if (check_normalize_nfc (combination_buffer, n_compose)) { + combination_utf8 = g_ucs4_to_utf8 (combination_buffer, -1, + NULL, NULL, NULL); + nfc = g_utf8_normalize (combination_utf8, -1, G_NORMALIZE_NFC); + + if (output_char) + *output_char = g_utf8_get_char (nfc); + + g_free (combination_utf8); + g_free (nfc); + + return TRUE; + } + } + + return FALSE; +} + + +gunichar +ibus_keysym_to_unicode (guint16 keysym, + gboolean combining, + gboolean *need_space) { +#define CASE(keysym_suffix, unicode, sp) \ + case IBUS_KEY_dead_##keysym_suffix: \ + if (need_space) \ + *need_space = sp; \ + return unicode +#define CASE_COMBINE(keysym_suffix, combined_unicode, isolated_unicode, sp) \ + case IBUS_KEY_dead_##keysym_suffix: \ + if (need_space) \ + *need_space = sp; \ + if (combining) \ + return combined_unicode; \ + else \ + return isolated_unicode + switch (keysym) { +#ifdef IBUS_ENGLISH_DEAD_KEY + CASE (a, 0x0363, 1); + CASE (A, 0x0363, 1); + CASE (i, 0x0365, 1); + CASE (I, 0x0365, 1); + CASE (u, 0x0367, 1); + CASE (U, 0x0367, 1); + CASE (e, 0x0364, 1); + CASE (E, 0x0364, 1); + CASE (o, 0x0366, 1); + CASE (O, 0x0366, 1); +#else + CASE (a, 0x3041, 0); + CASE (A, 0x3042, 0); + CASE (i, 0x3043, 0); + CASE (I, 0x3044, 0); + CASE (u, 0x3045, 0); + CASE (U, 0x3046, 0); + CASE (e, 0x3047, 0); + CASE (E, 0x3048, 0); + CASE (o, 0x3049, 0); + CASE (O, 0x304A, 0); +#endif + CASE_COMBINE (abovecomma, 0x0313, 0x02BC, 0); + CASE_COMBINE (abovedot, 0x0307, 0x02D9, 0); + CASE_COMBINE (abovereversedcomma, 0x0314, 0x02BD, 0); + CASE_COMBINE (abovering, 0x030A, 0x02DA, 0); + CASE_COMBINE (aboveverticalline, 0x030D, 0x02C8, 0); + CASE_COMBINE (acute, 0x0301, 0x00B4, 0); + CASE (belowbreve, 0x032E, 1); + CASE_COMBINE (belowcircumflex, 0x032D, 0xA788, 0); + CASE_COMBINE (belowcomma, 0x0326, 0x002C, 0); + CASE (belowdiaeresis, 0x0324, 1); + CASE_COMBINE (belowdot, 0x0323, 0x002E, 0); + CASE_COMBINE (belowmacron, 0x0331, 0x02CD, 0); + CASE_COMBINE (belowring, 0x030A, 0x02F3, 0); + CASE_COMBINE (belowtilde, 0x0330, 0x02F7, 0); + CASE_COMBINE (belowverticalline, 0x0329, 0x02CC, 0); + CASE_COMBINE (breve, 0x0306, 0x02D8, 0); + CASE_COMBINE (capital_schwa, 0x1DEA, 0x1D4A, 0); + CASE_COMBINE (caron, 0x030C, 0x02C7, 0); + CASE_COMBINE (cedilla, 0x0327, 0x00B8, 0); + CASE_COMBINE (circumflex, 0x0302, 0x005E, 0); + CASE (currency, 0x00A4, 0); + // IBUS_KEY_dead_dasia == IBUS_KEY_dead_abovereversedcomma + CASE_COMBINE (diaeresis, 0x0308, 0x00A8, 0); + CASE_COMBINE (doubleacute, 0x030B, 0x02DD, 0); + CASE_COMBINE (doublegrave, 0x030F, 0x02F5, 0); + CASE_COMBINE (grave, 0x0300, 0x0060, 0); + CASE (greek, 0x03BC, 0); + CASE_COMBINE (hook, 0x0309, 0x02C0, 0); + CASE (horn, 0x031B, 1); + CASE (invertedbreve, 0x032F, 1); + CASE_COMBINE (iota, 0x0345, 0x037A, 0); + CASE (longsolidusoverlay, 0x0338, 1); + CASE_COMBINE (lowline, 0x0332, 0x005F, 0); + CASE_COMBINE (macron, 0x0304, 0x00AF, 0); + CASE_COMBINE (ogonek, 0x0328, 0x02DB, 0); + // IBUS_KEY_dead_perispomeni == IBUS_KEY_dead_tilde + // IBUS_KEY_dead_psili == IBUS_KEY_dead_abovecomma + CASE_COMBINE (semivoiced_sound, 0x309A, 0x309C, 0); + CASE_COMBINE (small_schwa, 0x1DEA, 0x1D4A, 0); + CASE (stroke, 0x0335, 1); + CASE_COMBINE (tilde, 0x0303, 0x007E, 0); + CASE_COMBINE (voiced_sound, 0x3099, 0x309B, 0); + case IBUS_KEY_Multi_key: + if (need_space) + *need_space = FALSE; + /* We only show the Compose key visibly when it is the + * only glyph in the preedit, or when it occurs in the + * middle of the sequence. Sadly, the official character, + * U+2384, COMPOSITION SYMBOL, is bit too distracting, so + * we use U+00B7, MIDDLE DOT. + */ + return 0x00B7; + default:; + if (need_space) + *need_space = FALSE; + } + return 0x0; +#undef CASE +#undef CASE_COMBINE +} diff --git a/src/ibuscomposetable.h b/src/ibuscomposetable.h new file mode 100644 index 000000000..b60e53fe3 --- /dev/null +++ b/src/ibuscomposetable.h @@ -0,0 +1,90 @@ +/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ +/* vim:set et sts=4: */ +/* ibus - The Input Bus + * Copyright (C) 2013-2014 Peng Huang + * Copyright (C) 2013-2019 Takao Fujiwara + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef __IBUS_COMPOSETABLE_H_ +#define __IBUS_COMPOSETABLE_H_ + +#include + + +G_BEGIN_DECLS + +typedef struct _IBusComposeTable IBusComposeTable; +typedef struct _IBusComposeTableEx IBusComposeTableEx; +typedef struct _IBusComposeTablePrivate IBusComposeTablePrivate; +typedef struct _IBusComposeTableCompact IBusComposeTableCompact; +typedef struct _IBusComposeTableCompactEx IBusComposeTableCompactEx; +typedef struct _IBusComposeTableCompactPrivate IBusComposeTableCompactPrivate; + +struct _IBusComposeTable +{ + guint16 *data; + gint max_seq_len; + gint n_seqs; + guint32 id; +}; + +struct _IBusComposeTableEx +{ + IBusComposeTablePrivate *priv; + guint16 *data; + gint max_seq_len; + gint n_seqs; + guint32 id; +}; + +struct _IBusComposeTableCompact +{ + const guint16 *data; + gint max_seq_len; + gint n_index_size; + gint n_index_stride; +}; + +struct _IBusComposeTableCompactEx +{ + IBusComposeTableCompactPrivate *priv; + const guint16 *data; + gint max_seq_len; + gint n_index_size; + gint n_index_stride; +}; + +IBusComposeTableEx * + ibus_compose_table_new_with_file (const gchar *compose_file); +IBusComposeTableEx * + ibus_compose_table_load_cache (const gchar *compose_file); +void ibus_compose_table_save_cache (IBusComposeTableEx + *compose_table); +GSList * ibus_compose_table_list_add_array + (GSList + *compose_tables, + const guint16 + *data, + gint max_seq_len, + gint n_seqs); +GSList * ibus_compose_table_list_add_file (GSList + *compose_tables, + const gchar *compose_file); + +G_BEGIN_DECLS +#endif diff --git a/src/ibusconfig.c b/src/ibusconfig.c index b691277b7..713fe251f 100644 --- a/src/ibusconfig.c +++ b/src/ibusconfig.c @@ -2,30 +2,32 @@ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2019 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include "ibusinternal.h" #include "ibusmarshalers.h" #include "ibusshare.h" #include "ibusconfig.h" +#include "ibusbus.h" +#include "ibuserror.h" #define IBUS_CONFIG_GET_PRIVATE(o) \ - (G_TYPE_INSTANCE_GET_PRIVATE ((o), IBUS_TYPE_CONFIG, IBusConfigPrivate)) + ((IBusConfigPrivate *)ibus_config_get_instance_private (o)) enum { VALUE_CHANGED, @@ -35,9 +37,9 @@ enum { /* IBusConfigPriv */ struct _IBusConfigPrivate { - gpointer pad; + GArray *watch_rules; + guint watch_config_signal_id; }; -typedef struct _IBusConfigPrivate IBusConfigPrivate; static guint config_signals[LAST_SIGNAL] = { 0 }; @@ -50,7 +52,23 @@ static void ibus_config_g_signal (GDBusProxy *proxy, const gchar *signal_name, GVariant *parameters); -G_DEFINE_TYPE (IBusConfig, ibus_config, IBUS_TYPE_PROXY) +static void initable_iface_init (GInitableIface *initable_iface); +static void async_initable_iface_init (GAsyncInitableIface + *async_initable_iface); + +static gchar *_make_match_rule (const gchar *section, + const gchar *name); +static guint _signal_subscribe (GDBusProxy *proxy); +static void _signal_unsubscribe (GDBusProxy *proxy, + guint signal_id); + +static void _remove_all_match_rules (IBusConfig *config); + +G_DEFINE_TYPE_WITH_CODE (IBusConfig, ibus_config, IBUS_TYPE_PROXY, + G_ADD_PRIVATE (IBusConfig) + G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, initable_iface_init) + G_IMPLEMENT_INTERFACE (G_TYPE_ASYNC_INITABLE, async_initable_iface_init) + ); static void ibus_config_class_init (IBusConfigClass *class) @@ -58,8 +76,6 @@ ibus_config_class_init (IBusConfigClass *class) GDBusProxyClass *dbus_proxy_class = G_DBUS_PROXY_CLASS (class); IBusProxyClass *proxy_class = IBUS_PROXY_CLASS (class); - g_type_class_add_private (class, sizeof (IBusConfigPrivate)); - dbus_proxy_class->g_signal = ibus_config_g_signal; proxy_class->destroy = ibus_config_real_destroy; @@ -92,11 +108,19 @@ ibus_config_class_init (IBusConfigClass *class) static void ibus_config_init (IBusConfig *config) { + config->priv = IBUS_CONFIG_GET_PRIVATE (config); + config->priv->watch_rules = g_array_new (FALSE, FALSE, sizeof (gchar *)); } static void ibus_config_real_destroy (IBusProxy *proxy) { + IBusConfigPrivate *priv = IBUS_CONFIG_GET_PRIVATE (IBUS_CONFIG (proxy)); + + _signal_unsubscribe (G_DBUS_PROXY (proxy), priv->watch_config_signal_id); + _remove_all_match_rules (IBUS_CONFIG (proxy)); + g_array_free (priv->watch_rules, FALSE); + IBUS_PROXY_CLASS(ibus_config_parent_class)->destroy (proxy); } @@ -127,6 +151,133 @@ ibus_config_g_signal (GDBusProxy *proxy, g_return_if_reached (); } +static void +_connection_signal_cb (GDBusConnection *connection, + const gchar *sender_name, + const gchar *object_path, + const gchar *interface_name, + const gchar *signal_name, + GVariant *parameters, + IBusConfig *config) +{ + g_return_if_fail (IBUS_IS_CONFIG (config)); + + ibus_config_g_signal (G_DBUS_PROXY (config), + sender_name, + signal_name, + parameters); +} + +static gchar * +_make_match_rule (const gchar *section, + const gchar *name) +{ + GString *str = g_string_new ("type='signal'," + "interface='" IBUS_INTERFACE_CONFIG "'," + "path='" IBUS_PATH_CONFIG "'," + "member='ValueChanged'"); + if (section != NULL) { + g_string_append_printf (str, ",arg0='%s'", section); + if (name != NULL) + g_string_append_printf (str, ",arg1='%s'", name); + } + return g_string_free (str, FALSE); +} + +static void +_remove_all_match_rules (IBusConfig *config) +{ + gint i; + + for (i = 0; i < config->priv->watch_rules->len; i++) { + IBusBus *bus = ibus_bus_new (); + gchar *rule = g_array_index (config->priv->watch_rules, gchar *, i); + ibus_bus_remove_match (bus, rule); + g_object_unref (bus); + g_free (rule); + } + g_array_set_size (config->priv->watch_rules, 0); +} + +gboolean +ibus_config_watch (IBusConfig *config, + const gchar *section, + const gchar *name) +{ + g_return_val_if_fail (IBUS_IS_CONFIG (config), FALSE); + g_assert ((section != NULL) || (section == NULL && name == NULL)); + + IBusBus *bus = ibus_bus_new (); + gchar *rule; + gboolean retval; + + if (section == NULL && name == NULL) { + _remove_all_match_rules (config); + + rule = _make_match_rule (NULL, NULL); + retval = ibus_bus_add_match (bus, rule); + g_object_unref (bus); + g_free (rule); + + return retval; + } + + if (config->priv->watch_rules->len == 0) { + rule = _make_match_rule (NULL, NULL); + retval = ibus_bus_remove_match (bus, rule); + g_free (rule); + if (!retval) { + g_object_unref (bus); + return FALSE; + } + } + + rule = _make_match_rule (section, name); + retval = ibus_bus_add_match (bus, rule); + g_object_unref (bus); + if (!retval) { + g_free (rule); + return FALSE; + } + + g_array_append_val (config->priv->watch_rules, rule); + return TRUE; +} + +gboolean +ibus_config_unwatch (IBusConfig *config, + const gchar *section, + const gchar *name) +{ + g_return_val_if_fail (IBUS_IS_CONFIG (config), FALSE); + g_assert ((section != NULL) || (section == NULL && name == NULL)); + + IBusBus *bus = ibus_bus_new (); + gchar *rule = _make_match_rule (section, name); + gboolean retval; + + retval = ibus_bus_remove_match (bus, rule); + g_object_unref (bus); + if (retval && (section != NULL || name != NULL)) { + /* Remove the previously registered match rule from + config->priv->watch_rules. */ + gint i; + for (i = 0; i < config->priv->watch_rules->len; i++) { + gchar *_rule = g_array_index (config->priv->watch_rules, gchar *, + i); + if (g_strcmp0 (_rule, rule) == 0) { + config->priv->watch_rules = + g_array_remove_index_fast (config->priv->watch_rules, i); + g_free (_rule); + break; + } + } + } + g_free (rule); + + return TRUE; +} + IBusConfig * ibus_config_new (GDBusConnection *connection, GCancellable *cancellable, @@ -135,9 +286,11 @@ ibus_config_new (GDBusConnection *connection, g_assert (G_IS_DBUS_CONNECTION (connection)); GInitable *initable; + char *owner; GDBusProxyFlags flags = G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START | - G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES; + G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES | + G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS; initable = g_initable_new (IBUS_TYPE_CONFIG, cancellable, @@ -152,11 +305,17 @@ ibus_config_new (GDBusConnection *connection, if (initable == NULL) return NULL; - if (g_dbus_proxy_get_name_owner (G_DBUS_PROXY (initable)) == NULL) { + owner = g_dbus_proxy_get_name_owner (G_DBUS_PROXY (initable)); + if (owner == NULL) { /* The configuration daemon, which is usually ibus-gconf, is not started yet. */ + g_set_error (error, + IBUS_ERROR, + IBUS_ERROR_NO_CONFIG, + "Configuration daemon is not running."); g_object_unref (initable); return NULL; } + g_free (owner); /* clients should not destroy the config service. */ IBUS_PROXY (initable)->own = FALSE; @@ -174,7 +333,8 @@ ibus_config_new_async (GDBusConnection *connection, g_assert (callback != NULL); GDBusProxyFlags flags = G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START | - G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES; + G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES | + G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS; g_async_initable_new_async (IBUS_TYPE_CONFIG, G_PRIORITY_DEFAULT, @@ -209,17 +369,19 @@ ibus_config_new_async_finish (GAsyncResult *res, g_object_unref (source_object); if (object != NULL) { - if (g_dbus_proxy_get_name_owner (G_DBUS_PROXY (object)) == NULL) { + char *owner; + owner = g_dbus_proxy_get_name_owner (G_DBUS_PROXY (object)); + if (owner == NULL) { /* The configuration daemon, which is usually ibus-gconf, * is not started yet. */ - if (error != NULL) { - *error = g_error_new (G_DBUS_ERROR, - G_DBUS_ERROR_FAILED, - IBUS_SERVICE_CONFIG " does not exist."); - } + g_set_error (error, + IBUS_ERROR, + IBUS_ERROR_NO_CONFIG, + "Configuration daemon is not running."); g_object_unref (object); return NULL; } + g_free (owner); /* clients should not destroy the config service. */ IBUS_PROXY (object)->own = FALSE; return IBUS_CONFIG (object); @@ -482,3 +644,95 @@ ibus_config_unset (IBusConfig *config, g_variant_unref (result); return TRUE; } + +static guint +_signal_subscribe (GDBusProxy *proxy) +{ + GDBusConnection *connection = g_dbus_proxy_get_connection (proxy); + return g_dbus_connection_signal_subscribe (connection, + NULL, + IBUS_INTERFACE_CONFIG, + NULL, + NULL, + NULL, + G_DBUS_SIGNAL_FLAGS_NO_MATCH_RULE, + (GDBusSignalCallback) _connection_signal_cb, + g_object_ref (proxy), + (GDestroyNotify) g_object_unref); +} + +static void +_signal_unsubscribe (GDBusProxy *proxy, guint signal_id) +{ + GDBusConnection *connection = g_dbus_proxy_get_connection (proxy); + g_dbus_connection_signal_unsubscribe (connection, signal_id); +} + +static GInitableIface *initable_iface_parent = NULL; + +static gboolean +initable_init (GInitable *initable, + GCancellable *cancellable, + GError **error) +{ + if (!initable_iface_parent->init (initable, cancellable, error)) + return FALSE; + + IBusConfig *config = IBUS_CONFIG (initable); + config->priv->watch_config_signal_id = + _signal_subscribe (G_DBUS_PROXY (initable)); + + gboolean retval = ibus_config_watch (config, NULL, NULL); + if (!retval) + g_set_error (error, + IBUS_ERROR, + IBUS_ERROR_FAILED, + "Cannot watch configuration change."); + return retval; +} + +static void +initable_iface_init (GInitableIface *initable_iface) +{ + initable_iface_parent = g_type_interface_peek_parent (initable_iface); + initable_iface->init = initable_init; +} + +static GAsyncInitableIface *async_initable_iface_parent = NULL; + +static void +async_initable_init_async (GAsyncInitable *initable, + gint io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + async_initable_iface_parent->init_async (initable, + io_priority, + cancellable, + callback, + user_data); +} + +static gboolean +async_initable_init_finish (GAsyncInitable *initable, + GAsyncResult *res, + GError **error) +{ + if (!async_initable_iface_parent->init_finish (initable, res, error)) + return FALSE; + + IBusConfig *config = IBUS_CONFIG (initable); + config->priv->watch_config_signal_id = + _signal_subscribe (G_DBUS_PROXY (initable)); + return ibus_config_watch (config, NULL, NULL); +} + +static void +async_initable_iface_init (GAsyncInitableIface *async_initable_iface) +{ + async_initable_iface_parent = + g_type_interface_peek_parent (async_initable_iface); + async_initable_iface->init_async = async_initable_init_async; + async_initable_iface->init_finish = async_initable_init_finish; +} diff --git a/src/ibusconfig.h b/src/ibusconfig.h index c3e01056b..d7e853065 100644 --- a/src/ibusconfig.h +++ b/src/ibusconfig.h @@ -1,29 +1,32 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2013 Peng Huang + * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif +#ifndef __IBUS_CONFIG_H_ +#define __IBUS_CONFIG_H_ + /** * SECTION: ibusconfig * @title: IBusConfig @@ -34,8 +37,6 @@ * * Currently, IBusConfig supports gconf. */ -#ifndef __CONFIG_H_ -#define __CONFIG_H_ #include "ibusproxy.h" @@ -61,6 +62,7 @@ G_BEGIN_DECLS typedef struct _IBusConfig IBusConfig; typedef struct _IBusConfigClass IBusConfigClass; +typedef struct _IBusConfigPrivate IBusConfigPrivate; /** * IBusConfig: @@ -68,12 +70,17 @@ typedef struct _IBusConfigClass IBusConfigClass; * An opaque data type representing an IBusConfig. */ struct _IBusConfig { - IBusProxy parent; - /* instance members */ + /*< private >*/ + IBusProxy parent; + IBusConfigPrivate *priv; + + /* instance members */ }; struct _IBusConfigClass { + /*< private >*/ IBusProxyClass parent; + /* class members */ }; @@ -82,9 +89,12 @@ GType ibus_config_get_type (void); /** * ibus_config_new: * @connection: A #GDBusConnection. - * @returns: An newly allocated #IBusConfig corresponding to @connection. + * @cancellable: A #GCancellable or %NULL. + * @error: Return location for error or %NULL. * - * New an #IBusConfig from existing #GDBusConnection. + * Create a new #IBusConfig from existing #GDBusConnection. + * + * Returns: A newly allocated #IBusConfig corresponding to @connection. */ IBusConfig *ibus_config_new (GDBusConnection *connection, GCancellable *cancellable, @@ -111,9 +121,9 @@ void ibus_config_new_async (GDBusConnection *connection, * ibus_config_new_async(). * @error: Return location for error or %NULL. * - * @returns: A newly allocated #IBusConfig. - * * Finishes an operation started with ibus_config_new_async(). + * + * Returns: A newly allocated #IBusConfig. */ IBusConfig *ibus_config_new_async_finish (GAsyncResult *res, @@ -124,7 +134,6 @@ IBusConfig *ibus_config_new_async_finish * @config: An #IBusConfig * @section: Section name of the configuration option. * @name: Name of the configure option. - * @returns: A #GVariant or %NULL. Free with g_variant_unref(). * * Get the value of a configuration option synchronously. * @@ -136,6 +145,8 @@ IBusConfig *ibus_config_new_async_finish * ibus-chewing, for example, stores its setting in /desktop/ibus/engine/Chewing, * so the section name for it is "engine/Chewing". * See also: ibus_config_set_value(). + * + * Returns: A #GVariant or %NULL. Free with g_variant_unref(). */ GVariant *ibus_config_get_value (IBusConfig *config, const gchar *section, @@ -168,10 +179,11 @@ void ibus_config_get_value_async (IBusConfig *config, * @config: A #IBusConfig. * @result: A #GAsyncResult. * @error: Return location for error or %NULL. - * @returns: A #GVariant or %NULL if error is set. Free with g_variant_unref(). * * Finish get value of a configuration option. * + * Returns: A #GVariant or %NULL if error is set. Free with g_variant_unref(). + * * See also: ibus_config_get_value_async(). */ GVariant *ibus_config_get_value_async_finish @@ -183,10 +195,11 @@ GVariant *ibus_config_get_value_async_finish * ibus_config_get_values: * @config: An #IBusConfig * @section: Section name of the configuration option. - * @returns: A #GVariant or %NULL. Free with g_variant_unref(). * * Get all values in a section synchronously. * + * Returns: A #GVariant or %NULL. Free with g_variant_unref(). + * * See also: ibus_config_set_value(). */ GVariant *ibus_config_get_values (IBusConfig *config, @@ -217,10 +230,11 @@ void ibus_config_get_values_async(IBusConfig *config, * @config: A #IBusConfig. * @result: A #GAsyncResult. * @error: Return location for error or %NULL. - * @returns: A #GVariant or %NULL if error is set. Free with g_variant_unref(). * * Finish get values in a section. * + * Returns: A #GVariant or %NULL if error is set. Free with g_variant_unref(). + * * See also: ibus_config_get_values_async(). */ GVariant *ibus_config_get_values_async_finish @@ -235,9 +249,11 @@ GVariant *ibus_config_get_values_async_finish * @name: Name of the configure option its self. * @value: A #GVariant that holds the value. If the value is floating, the * function takes ownership of it. - * @returns: %TRUE if succeed; %FALSE otherwise. * * Set the value of a configuration option synchronously. + * + * Returns: %TRUE if succeed; %FALSE otherwise. + * * See also: ibus_config_get_value(). */ gboolean ibus_config_set_value (IBusConfig *config, @@ -275,10 +291,11 @@ void ibus_config_set_value_async (IBusConfig *config, * @config: A #IBusConfig. * @result: A #GAsyncResult. * @error: Return location for error or %NULL. - * @returns: %TRUE or %FALSE if error is set. * * Finish set value of a configuration option. * + * Returns: %TRUE or %FALSE if error is set. + * * See also: ibus_config_set_value_async(). */ gboolean ibus_config_set_value_async_finish @@ -291,9 +308,11 @@ gboolean ibus_config_set_value_async_finish * @config: An #IBusConfig * @section: Section name of the configuration option. * @name: Name of the configure option its self. - * @returns: %TRUE if succeed; %FALSE otherwise. * * Remove an entry of a configuration option. + * + * Returns: %TRUE if succeed; %FALSE otherwise. + * * See also: ibus_config_get_value(). */ gboolean ibus_config_unset (IBusConfig *config, @@ -302,6 +321,47 @@ gboolean ibus_config_unset (IBusConfig *config, /* FIXME add an asynchronous version of unset */ +/** + * ibus_config_watch: + * @config: An #IBusConfig + * @section: (allow-none): Section name of the configuration option. + * @name: (allow-none): Name of the configure option its self. + * + * Subscribe to the configuration option change notification. + * + * Until this function is called, every change will be notified to the + * client through #IBusConfig::value-changed signal. Clients should + * call ibus_config_watch() with the sections they are interested in, + * to reduce the number of D-Bus messages. + * + * Returns: %TRUE if succeed; %FALSE otherwise. + * + * See also: ibus_config_unwatch(). + */ +gboolean ibus_config_watch (IBusConfig *config, + const gchar *section, + const gchar *name); + +/* FIXME add an asynchronous version of watch */ + +/** + * ibus_config_unwatch: + * @config: An #IBusConfig + * @section: (allow-none): Section name of the configuration option. + * @name: (allow-none): Name of the configure option its self. + * + * Unsubscribe from the configuration option change notification. + * + * Returns: %TRUE if succeed; %FALSE otherwise. + * + * See also: ibus_config_watch. + */ +gboolean ibus_config_unwatch (IBusConfig *config, + const gchar *section, + const gchar *name); + +/* FIXME add an asynchronous version of unwatch */ + G_END_DECLS #endif diff --git a/src/ibusconfigservice.c b/src/ibusconfigservice.c index 937dfdd41..4b3c991b7 100644 --- a/src/ibusconfigservice.c +++ b/src/ibusconfigservice.c @@ -7,17 +7,17 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include "ibusshare.h" #include "ibusconfigservice.h" @@ -30,19 +30,9 @@ enum { PROP_0, }; -// static guint config_service_signals[LAST_SIGNAL] = { 0 }; - /* functions prototype */ static void ibus_config_service_class_init (IBusConfigServiceClass *class); static void ibus_config_service_init (IBusConfigService *config); -static void ibus_config_service_set_property (IBusConfigService *config, - guint prop_id, - const GValue *value, - GParamSpec *pspec); -static void ibus_config_service_get_property (IBusConfigService *config, - guint prop_id, - GValue *value, - GParamSpec *pspec); static void ibus_config_service_destroy (IBusConfigService *config); static void ibus_config_service_service_method_call (IBusService *service, @@ -123,9 +113,6 @@ ibus_config_service_class_init (IBusConfigServiceClass *class) { GObjectClass *gobject_class = G_OBJECT_CLASS (class); - gobject_class->set_property = (GObjectSetPropertyFunc) ibus_config_service_set_property; - gobject_class->get_property = (GObjectGetPropertyFunc) ibus_config_service_get_property; - IBUS_OBJECT_CLASS (gobject_class)->destroy = (IBusObjectDestroyFunc) ibus_config_service_destroy; IBUS_SERVICE_CLASS (class)->service_method_call = ibus_config_service_service_method_call; @@ -145,34 +132,6 @@ ibus_config_service_init (IBusConfigService *config) { } -static void -ibus_config_service_set_property (IBusConfigService *config, - guint prop_id, - const GValue *value, - GParamSpec *pspec) -{ - switch (prop_id) { - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (config, prop_id, pspec); - } -} - -static void -ibus_config_service_get_property (IBusConfigService *config, - guint prop_id, - GValue *value, - GParamSpec *pspec) -{ - switch (prop_id) { - #if 0 - case PROP_CONNECTION: - break; - #endif - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (config, prop_id, pspec); - } -} - static void ibus_config_service_destroy (IBusConfigService *config) { @@ -221,6 +180,7 @@ ibus_config_service_service_method_call (IBusService *service, g_dbus_method_invocation_return_gerror (invocation, error); g_error_free (error); } + g_variant_unref (value); return; } @@ -235,6 +195,7 @@ ibus_config_service_service_method_call (IBusService *service, value = IBUS_CONFIG_SERVICE_GET_CLASS (config)->get_value (config, section, name, &error); if (value != NULL) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("(v)", value)); + g_variant_unref (value); } else { g_dbus_method_invocation_return_gerror (invocation, error); diff --git a/src/ibusconfigservice.h b/src/ibusconfigservice.h index 23dcfc6d9..3f74f0845 100644 --- a/src/ibusconfigservice.h +++ b/src/ibusconfigservice.h @@ -1,29 +1,32 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2013 Peng Huang + * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif +#ifndef __IBUS_CONFIG_SERVICE_H_ +#define __IBUS_CONFIG_SERVICE_H_ + /** * SECTION: ibusconfigservice * @short_description: Configuration service back-end. @@ -95,8 +98,8 @@ * * Returns: * TRUE if succeed; FALSE otherwise. -* -* + * + * * Get value of a configuration option. * * @@ -131,8 +134,6 @@ * * */ -#ifndef __IBUS_CONFIG_SERVICE_H_ -#define __IBUS_CONFIG_SERVICE_H_ #include "ibusservice.h" @@ -185,12 +186,12 @@ struct _IBusConfigServiceClass { GError **error); /** * get_value: - * @config: An IBusConfig. + * @config: An #IBusConfig. * @section: section name * @name: value name * - * @returns: (transfer full): The value in config associated with section and name. - * + * Returns: (transfer full): The value in config associated with section + * and name. */ GVariant * (* get_value) (IBusConfigService *config, const gchar *section, @@ -213,10 +214,11 @@ GType ibus_config_service_get_type (void); /** * ibus_config_service_new: - * @connection: An GDBusConnection. - * @returns: A newly allocated IBusConfigServices. + * @connection: An #GDBusConnection. + * + * Creates an new #IBusConfigService from an #GDBusConnection. * - * New an IBusConfigService from an GDBusConnection. + * Returns: A newly allocated #IBusConfigServices. */ IBusConfigService *ibus_config_service_new (GDBusConnection *connection); diff --git a/src/ibusdebug.h b/src/ibusdebug.h index 294164e95..3ce72bd6f 100644 --- a/src/ibusdebug.h +++ b/src/ibusdebug.h @@ -1,29 +1,32 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2013 Peng Huang + * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif +#ifndef __IBUS_DEBUG_H_ +#define __IBUS_DEBUG_H_ + /** * SECTION: ibusdebug * @short_description: Debug message output. @@ -31,13 +34,11 @@ * * This section lists functions that generate debug and warning messages. */ -#ifndef __IBUS_DEBUG_H_ -#define __IBUS_DEBUG_H_ /** * ibus_warning: * @msg: A printf formatted message to be print. - * @args...: Necessary arguments for @msg. + * @...: Necessary arguments for @msg. * * A convenient wrapper for g_warning. * The output format will be diff --git a/src/ibusemoji.c b/src/ibusemoji.c new file mode 100644 index 000000000..df97264ba --- /dev/null +++ b/src/ibusemoji.c @@ -0,0 +1,599 @@ +/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ +/* vim:set et sts=4: */ +/* bus - The Input Bus + * Copyright (C) 2017-2021 Takao Fujiwara + * Copyright (C) 2017-2019 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include "ibusemoji.h" +#include "ibusinternal.h" + +#define IBUS_EMOJI_DATA_MAGIC "IBusEmojiData" +#define IBUS_EMOJI_DATA_VERSION (5) + +enum { + PROP_0 = 0, + PROP_EMOJI, + PROP_ANNOTATIONS, + PROP_DESCRIPTION, + PROP_CATEGORY, +}; + +struct _IBusEmojiDataPrivate { + gchar *emoji; + GSList *annotations; + gchar *description; + gchar *category; +}; + +#define IBUS_EMOJI_DATA_GET_PRIVATE(o) \ + ((IBusEmojiDataPrivate *)ibus_emoji_data_get_instance_private (o)) + +/* functions prototype */ +static void ibus_emoji_data_set_property (IBusEmojiData *emoji, + guint prop_id, + const GValue *value, + GParamSpec *pspec); +static void ibus_emoji_data_get_property (IBusEmojiData *emoji, + guint prop_id, + GValue *value, + GParamSpec *pspec); +static void ibus_emoji_data_destroy (IBusEmojiData *emoji); +static gboolean ibus_emoji_data_serialize (IBusEmojiData *emoji, + GVariantBuilder *builder); +static gint ibus_emoji_data_deserialize (IBusEmojiData *emoji, + GVariant *variant); +static gboolean ibus_emoji_data_copy (IBusEmojiData *emoji, + const IBusEmojiData *src); + +G_DEFINE_TYPE_WITH_PRIVATE (IBusEmojiData, + ibus_emoji_data, + IBUS_TYPE_SERIALIZABLE) + +static void +ibus_emoji_data_class_init (IBusEmojiDataClass *class) +{ + IBusObjectClass *object_class = IBUS_OBJECT_CLASS (class); + GObjectClass *gobject_class = G_OBJECT_CLASS (class); + IBusSerializableClass *serializable_class = IBUS_SERIALIZABLE_CLASS (class); + + object_class->destroy = (IBusObjectDestroyFunc) ibus_emoji_data_destroy; + gobject_class->set_property = + (GObjectSetPropertyFunc) ibus_emoji_data_set_property; + gobject_class->get_property = + (GObjectGetPropertyFunc) ibus_emoji_data_get_property; + serializable_class->serialize = + (IBusSerializableSerializeFunc) ibus_emoji_data_serialize; + serializable_class->deserialize = + (IBusSerializableDeserializeFunc) ibus_emoji_data_deserialize; + serializable_class->copy = + (IBusSerializableCopyFunc) ibus_emoji_data_copy; + + /* install properties */ + /** + * IBusEmojiData:emoji: + * + * The emoji character + */ + g_object_class_install_property (gobject_class, + PROP_EMOJI, + g_param_spec_string ("emoji", + "emoji character", + "The emoji character UTF-8", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + + /** + * IBusEmojiData:annotations: (transfer container) (element-type utf8): + * + * The emoji annotations + */ + g_object_class_install_property (gobject_class, + PROP_ANNOTATIONS, + g_param_spec_pointer ("annotations", + "emoji annotations", + "The emoji annotation list", + G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); + + /** + * IBusEmojiData:description: + * + * The emoji description + */ + g_object_class_install_property (gobject_class, + PROP_DESCRIPTION, + g_param_spec_string ("description", + "emoji description", + "The emoji description", + "", + G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); + + /** + * IBusEmojiData:category: + * + * The emoji category + */ + g_object_class_install_property (gobject_class, + PROP_CATEGORY, + g_param_spec_string ("category", + "emoji category", + "The emoji category", + "", + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); +} + +static void +ibus_emoji_data_init (IBusEmojiData *emoji) +{ + emoji->priv = IBUS_EMOJI_DATA_GET_PRIVATE (emoji); +} + +static void +free_dict_words (gpointer list) +{ + g_slist_free_full (list, g_free); +} + +static void +ibus_emoji_data_destroy (IBusEmojiData *emoji) +{ + g_clear_pointer (&emoji->priv->emoji, g_free); + g_clear_pointer (&emoji->priv->annotations, free_dict_words); + g_clear_pointer (&emoji->priv->description, g_free); + g_clear_pointer (&emoji->priv->category, g_free); + + IBUS_OBJECT_CLASS (ibus_emoji_data_parent_class)-> + destroy (IBUS_OBJECT (emoji)); +} + +static void +ibus_emoji_data_set_property (IBusEmojiData *emoji, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + switch (prop_id) { + case PROP_EMOJI: + g_assert (emoji->priv->emoji == NULL); + emoji->priv->emoji = g_value_dup_string (value); + break; + case PROP_ANNOTATIONS: + if (emoji->priv->annotations) + g_slist_free_full (emoji->priv->annotations, g_free); + emoji->priv->annotations = + g_slist_copy_deep (g_value_get_pointer (value), + (GCopyFunc) g_strdup, NULL); + break; + case PROP_DESCRIPTION: + g_free (emoji->priv->description); + emoji->priv->description = g_value_dup_string (value); + break; + case PROP_CATEGORY: + g_assert (emoji->priv->category == NULL); + emoji->priv->category = g_value_dup_string (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (emoji, prop_id, pspec); + } +} + +static void +ibus_emoji_data_get_property (IBusEmojiData *emoji, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + switch (prop_id) { + case PROP_EMOJI: + g_value_set_string (value, ibus_emoji_data_get_emoji (emoji)); + break; + case PROP_ANNOTATIONS: + g_value_set_pointer ( + value, + g_slist_copy_deep (ibus_emoji_data_get_annotations (emoji), + (GCopyFunc) g_strdup, NULL)); + break; + case PROP_DESCRIPTION: + g_value_set_string (value, ibus_emoji_data_get_description (emoji)); + break; + case PROP_CATEGORY: + g_value_set_string (value, ibus_emoji_data_get_category (emoji)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (emoji, prop_id, pspec); + } +} + +static gboolean +ibus_emoji_data_serialize (IBusEmojiData *emoji, + GVariantBuilder *builder) +{ + GSList *l; + gboolean retval = IBUS_SERIALIZABLE_CLASS (ibus_emoji_data_parent_class)-> + serialize ((IBusSerializable *)emoji, builder); + g_return_val_if_fail (retval, FALSE); + +#define NOTNULL(s) ((s) != NULL ? (s) : "") + /* If you will add a new property, you can append it at the end and + * you should not change the serialized order of name, longname, + * description, ... because the order is also used in other applications + * likes ibus-qt. */ + g_variant_builder_add (builder, "s", NOTNULL (emoji->priv->emoji)); + g_variant_builder_add (builder, "u", + g_slist_length (emoji->priv->annotations)); + for (l = emoji->priv->annotations; l != NULL; l = l->next) { + g_variant_builder_add (builder, "s", NOTNULL (l->data)); + } + g_variant_builder_add (builder, "s", NOTNULL (emoji->priv->description)); + g_variant_builder_add (builder, "s", NOTNULL (emoji->priv->category)); +#undef NOTNULL + return TRUE; +} + +static gint +ibus_emoji_data_deserialize (IBusEmojiData *emoji, + GVariant *variant) +{ + guint length, i; + GSList *annotations = NULL; + gint retval = IBUS_SERIALIZABLE_CLASS (ibus_emoji_data_parent_class)-> + deserialize ((IBusSerializable *)emoji, variant); + g_return_val_if_fail (retval, 0); + + /* If you will add a new property, you can append it at the end and + * you should not change the serialized order of name, longname, + * description, ... because the order is also used in other applications + * likes ibus-qt. */ + ibus_g_variant_get_child_string (variant, retval++, + &emoji->priv->emoji); + g_variant_get_child (variant, retval++, "u", &length); + for (i = 0; i < length; i++) { + gchar *s = NULL; + g_variant_get_child (variant, retval++, "s", &s); + annotations = g_slist_append (annotations, s); + } + emoji->priv->annotations = annotations; + ibus_g_variant_get_child_string (variant, retval++, + &emoji->priv->description); + ibus_g_variant_get_child_string (variant, retval++, + &emoji->priv->category); + return retval; +} + +static gboolean +ibus_emoji_data_copy (IBusEmojiData *dest, + const IBusEmojiData *src) +{ + gboolean retval = IBUS_SERIALIZABLE_CLASS (ibus_emoji_data_parent_class)-> + copy ((IBusSerializable *)dest, + (IBusSerializable *)src); + g_return_val_if_fail (retval, FALSE); + + dest->priv->emoji = g_strdup (src->priv->emoji); + dest->priv->annotations = g_slist_copy_deep (src->priv->annotations, + (GCopyFunc) g_strdup, + NULL); + dest->priv->description = g_strdup (src->priv->description); + dest->priv->category = g_strdup (src->priv->category); + return TRUE; +} + +IBusEmojiData * +ibus_emoji_data_new (const gchar *first_property_name, ...) +{ + va_list var_args; + IBusEmojiData *emoji; + + g_assert (first_property_name != NULL); + va_start (var_args, first_property_name); + emoji = (IBusEmojiData *) g_object_new_valist (IBUS_TYPE_EMOJI_DATA, + first_property_name, + var_args); + va_end (var_args); + /* emoji is required. Other properties are set in class_init by default. */ + g_assert (emoji->priv->emoji != NULL); + g_assert (emoji->priv->description != NULL); + g_assert (emoji->priv->category != NULL); + return emoji; +} + +const gchar * +ibus_emoji_data_get_emoji (IBusEmojiData *emoji) +{ + g_return_val_if_fail (IBUS_IS_EMOJI_DATA (emoji), NULL); + + return emoji->priv->emoji; +} + +GSList * +ibus_emoji_data_get_annotations (IBusEmojiData *emoji) +{ + g_return_val_if_fail (IBUS_IS_EMOJI_DATA (emoji), NULL); + + return emoji->priv->annotations; +} + +void +ibus_emoji_data_set_annotations (IBusEmojiData *emoji, + GSList *annotations) +{ + g_return_if_fail (IBUS_IS_EMOJI_DATA (emoji)); + + if (emoji->priv->annotations) + g_slist_free_full (emoji->priv->annotations, g_free); + emoji->priv->annotations = annotations; +} + +const gchar * +ibus_emoji_data_get_description (IBusEmojiData *emoji) +{ + g_return_val_if_fail (IBUS_IS_EMOJI_DATA (emoji), NULL); + + return emoji->priv->description; +} + +void +ibus_emoji_data_set_description (IBusEmojiData *emoji, + const gchar *description) +{ + g_return_if_fail (IBUS_IS_EMOJI_DATA (emoji)); + + g_free (emoji->priv->description); + emoji->priv->description = g_strdup (description); +} + +const gchar * +ibus_emoji_data_get_category (IBusEmojiData *emoji) +{ + g_return_val_if_fail (IBUS_IS_EMOJI_DATA (emoji), NULL); + + return emoji->priv->category; +} + +static void +variant_foreach_add_emoji (IBusEmojiData *emoji, + GVariantBuilder *builder) +{ + g_variant_builder_add ( + builder, "v", + ibus_serializable_serialize (IBUS_SERIALIZABLE (emoji))); +} + +static GVariant * +ibus_emoji_data_list_serialize (GSList *list) +{ + GVariantBuilder builder; + + g_variant_builder_init (&builder, G_VARIANT_TYPE ("av")); + g_slist_foreach (list, (GFunc) variant_foreach_add_emoji, &builder); + return g_variant_builder_end (&builder); +} + +static GSList * +ibus_emoji_data_list_deserialize (GVariant *variant) +{ + GSList *list = NULL; + GVariantIter iter; + GVariant *emoji_variant = NULL; + + g_variant_iter_init (&iter, variant); + while (g_variant_iter_loop (&iter, "v", &emoji_variant)) { + IBusEmojiData *data = + IBUS_EMOJI_DATA (ibus_serializable_deserialize (emoji_variant)); + list = g_slist_append (list, data); + g_clear_pointer (&emoji_variant, g_variant_unref); + } + + return list; +} + +void +ibus_emoji_dict_save (const gchar *path, + GHashTable *dict) +{ + GList *values, *v; + GSList *list_for_save = NULL; + + g_return_if_fail (path != NULL); + g_return_if_fail (dict != NULL); + + values = g_hash_table_get_values (dict); + for (v = values; v; v = v->next) { + IBusEmojiData *data = v->data; + if (!IBUS_IS_EMOJI_DATA (data)) { + g_warning ("Your dict format of { annotation char, emoji GSList " + "} is no longer supported.\n" + "{ emoji char, IBusEmojiData GSList } is expected."); + return; + } + list_for_save = g_slist_append (list_for_save, data); + } + + ibus_emoji_data_save (path, list_for_save); +} + +GHashTable * +ibus_emoji_dict_load (const gchar *path) +{ + GSList *list = ibus_emoji_data_load (path); + GSList *l; + GHashTable *dict = g_hash_table_new_full (g_str_hash, + g_str_equal, + g_free, + g_object_unref); + + for (l = list; l; l = l->next) { + IBusEmojiData *data = l->data; + if (!IBUS_IS_EMOJI_DATA (data)) { + g_warning ("Your dict format is no longer supported.\n" + "Need to create the dictionaries again."); + return NULL; + } + g_hash_table_insert (dict, + g_strdup (ibus_emoji_data_get_emoji (data)), + g_object_ref_sink (data)); + } + + g_slist_free (list); + + return dict; +} + + +IBusEmojiData * +ibus_emoji_dict_lookup (GHashTable *dict, + const gchar *emoji) +{ + return (IBusEmojiData *) g_hash_table_lookup (dict, emoji); +} + +void +ibus_emoji_data_save (const gchar *path, + GSList *list) +{ + GVariant *variant; + const gchar *header = IBUS_EMOJI_DATA_MAGIC; + const guint16 version = IBUS_EMOJI_DATA_VERSION; + const gchar *contents; + gsize length; + gchar *dir; + GStatBuf buf = { 0, }; + GError *error = NULL; + + g_return_if_fail (path != NULL); + g_return_if_fail (list != NULL); + if (list->data == NULL) { + g_warning ("Failed to save IBus emoji data: Need a list data."); + return; + } + + variant = g_variant_new ("(sqv)", + header, + version, + ibus_emoji_data_list_serialize (list)); + + contents = g_variant_get_data (variant); + length = g_variant_get_size (variant); + + dir = g_path_get_dirname (path); + if (g_strcmp0 (dir, ".") != 0 && g_stat (dir, &buf) != 0) { + errno = 0; + if (g_mkdir_with_parents (dir, 0777)) { + g_warning ("Failed mkdir %s: %s", dir, g_strerror (errno)); + return; + } + } + g_free (dir); + if (!g_file_set_contents (path, contents, length, &error)) { + g_warning ("Failed to save emoji dict %s: %s", path, error->message); + g_error_free (error); + } + + g_variant_unref (variant); +} + +GSList * +ibus_emoji_data_load (const gchar *path) +{ + gchar *contents = NULL; + gsize length = 0; + GError *error = NULL; + GVariant *variant_table = NULL; + GVariant *variant = NULL; + const gchar *header = NULL; + guint16 version = 0; + GSList *retval = NULL; + + if (!g_file_test (path, G_FILE_TEST_EXISTS)) { + g_warning ("Emoji dict does not exist: %s", path); + goto out_load_cache; + } + + if (!g_file_get_contents (path, &contents, &length, &error)) { + g_warning ("Failed to get dict content %s: %s", path, error->message); + g_error_free (error); + goto out_load_cache; + } + + variant_table = g_variant_new_from_data (G_VARIANT_TYPE ("(sq)"), + contents, + length, + FALSE, + NULL, + NULL); + + if (variant_table == NULL) { + g_warning ("cache table is broken."); + goto out_load_cache; + } + + g_variant_get (variant_table, "(&sq)", &header, &version); + + if (g_strcmp0 (header, IBUS_EMOJI_DATA_MAGIC) != 0) { + g_warning ("cache is not IBusEmojiData."); + goto out_load_cache; + } + + if (version > IBUS_EMOJI_DATA_VERSION) { + g_warning ("cache version is different: %u != %u", + version, IBUS_EMOJI_DATA_VERSION); + goto out_load_cache; + } + + version = 0; + header = NULL; + g_variant_unref (variant_table); + + variant_table = g_variant_new_from_data (G_VARIANT_TYPE ("(sqv)"), + contents, + length, + FALSE, + NULL, + NULL); + + if (variant_table == NULL) { + g_warning ("cache table is broken."); + goto out_load_cache; + } + + g_variant_get (variant_table, "(&sqv)", + NULL, + NULL, + &variant); + + if (variant == NULL) { + g_warning ("cache dict is broken."); + goto out_load_cache; + } + + retval = ibus_emoji_data_list_deserialize (variant); + +out_load_cache: + if (variant) + g_variant_unref (variant); + if (variant_table) + g_variant_unref (variant_table); + g_free (contents); + + return retval; +} diff --git a/src/ibusemoji.h b/src/ibusemoji.h new file mode 100644 index 000000000..5e9fbcf4a --- /dev/null +++ b/src/ibusemoji.h @@ -0,0 +1,218 @@ +/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ +/* vim:set et sts=4: */ +/* bus - The Input Bus + * Copyright (C) 2017-2019 Takao Fujiwara + * Copyright (C) 2017-2019 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) +#error "Only can be included directly" +#endif + +#ifndef __IBUS_EMOJI_H_ +#define __IBUS_EMOJI_H_ + +/** + * SECTION: ibusemoji + * @short_description: emoji utility. + * @stability: Unstable + * + * miscellaneous emoji APIs. + */ + +#include "ibusserializable.h" + +/* + * Type macros. + */ +/* define GOBJECT macros */ +#define IBUS_TYPE_EMOJI_DATA (ibus_emoji_data_get_type ()) +#define IBUS_EMOJI_DATA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + IBUS_TYPE_EMOJI_DATA, IBusEmojiData)) +#define IBUS_EMOJI_DATA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), \ + IBUS_TYPE_EMOJI_DATA, IBusEmojiDataClass)) +#define IBUS_IS_EMOJI_DATA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + IBUS_TYPE_EMOJI_DATA)) + + +G_BEGIN_DECLS + +typedef struct _IBusEmojiData IBusEmojiData; +typedef struct _IBusEmojiDataPrivate IBusEmojiDataPrivate; +typedef struct _IBusEmojiDataClass IBusEmojiDataClass; + +/** + * IBusEmojiData: + * + * Emoji data likes emoji unicode, annotations, description, category. + * You can get extended values with g_object_get_properties. + */ +struct _IBusEmojiData { + IBusSerializable parent; + /* instance members */ + + /*< public >*/ + /*< private >*/ + IBusEmojiDataPrivate *priv; +}; + +struct _IBusEmojiDataClass { + IBusSerializableClass parent; + /* class members */ +}; + +GType ibus_emoji_data_get_type (void); + +/** + * ibus_emoji_data_new: + * @first_property_name: Name of the first property. + * @...: the NULL-terminated arguments of the properties and values. + * + * Creates a new #IBusEmojiData. + * emoji property is required. e.g. + * ibus_emoji_data_new ("emoji", "😁", NULL) + * + * Returns: A newly allocated #IBusEmojiData. + */ +IBusEmojiData * ibus_emoji_data_new (const gchar *first_property_name, + ...); + +/** + * ibus_emoji_data_get_emoji: + * @emoji : An #IBusEmojiData + * + * Gets the emoji character in #IBusEmojiData. It should not be freed. + * + * Returns: emoji property in #IBusEmojiData + */ +const gchar * ibus_emoji_data_get_emoji (IBusEmojiData *emoji); + +/** + * ibus_emoji_data_get_annotations: + * @emoji : An #IBusEmojiData + * + * Gets the annotation list in #IBusEmojiData. It should not be freed. + * + * Returns: (transfer none) (element-type utf8): + * annotation list property in #IBusEmojiData + */ +GSList * ibus_emoji_data_get_annotations (IBusEmojiData *emoji); + +/** + * ibus_emoji_data_set_annotations: + * @emoji : An #IBusEmojiData + * @annotations: (transfer full) (element-type utf8): List of emoji annotations + * + * Sets the annotation list in #IBusEmojiData. + */ +void ibus_emoji_data_set_annotations (IBusEmojiData *emoji, + GSList *annotations); + +/** + * ibus_emoji_data_get_description: + * @emoji : An #IBusEmojiData + * + * Gets the emoji description in #IBusEmojiData. It should not be freed. + * + * Returns: description property in #IBusEmojiData + */ +const gchar * ibus_emoji_data_get_description (IBusEmojiData *emoji); + +/** + * ibus_emoji_data_set_description: + * @emoji : An #IBusEmojiData + * @description: An emoji description + * + * Sets the description in #IBusEmojiData. + */ +void ibus_emoji_data_set_description (IBusEmojiData *emoji, + const gchar *description); + + +/** + * ibus_emoji_data_get_category: + * @emoji : An #IBusEmojiData + * + * Gets the emoji category in #IBusEmojiData. It should not be freed. + * + * Returns: category property in #IBusEmojiData + */ +const gchar * ibus_emoji_data_get_category (IBusEmojiData *emoji); + + +/** + * ibus_emoji_dict_save: + * @path: A path of the saved dictionary file. + * @dict: (element-type utf8 gpointer) (transfer none): An Emoji dictionary + * + * Saves the Emoji dictionary to the cache file. + * Recommend to use ibus_emoji_data_save() instead becase GSList in + * GHashTable does not work with Gir and Vala. + * Calls ibus_emoji_data_save() internally. The format of the hash table + * changed and now is { emoji character, #IBusEmojiData object }. + */ +void ibus_emoji_dict_save (const gchar *path, + GHashTable *dict); +/** + * ibus_emoji_dict_load: + * @path: A path of the saved dictionary file. + * + * Returns: (element-type utf8 gpointer) (transfer none): An Emoji dictionary + * file loaded from the saved cache file. + * + * A hash table of { emoji character, #IBusEmojiData object } is loaded + * from the saved cache file. + * Recommend to use ibus_emoji_data_load() instead becase GSList in + * GHashTable does not work with Gir and Vala. + * Calls ibus_emoji_data_load() internally. + */ +GHashTable * ibus_emoji_dict_load (const gchar *path); + +/** + * ibus_emoji_dict_lookup: + * @dict: (element-type utf8 IBusEmojiData) (transfer full): An Emoji dictionary + * @emoji: an emoji character + * + * Returns: (transfer none): An #IBusEmojiData of @emoji. + * This API was prepared for the old dict foramat with Gir and Vala + * but no longer needed. + * Use ibus_emoji_data_load() instead. + */ +IBusEmojiData * ibus_emoji_dict_lookup (GHashTable *dict, + const gchar *emoji); +/** + * ibus_emoji_data_save: + * @path: A path of the saved emoji data. + * @list: (element-type IBusEmojiData) (transfer none): A list of emoji data. + * + * Save the list of #IBusEmojiData to the cache file. + */ +void ibus_emoji_data_save (const gchar *path, + GSList *list); + +/** + * ibus_emoji_data_load: + * @path: A path of the saved dictionary file. + * + * Returns: (element-type IBusEmojiData) (transfer full): + * An #IBusEmojiData list loaded from the saved cache file. + */ +GSList * ibus_emoji_data_load (const gchar *path); + +G_END_DECLS +#endif diff --git a/src/ibusemojigen.h b/src/ibusemojigen.h new file mode 100644 index 000000000..172d892cc --- /dev/null +++ b/src/ibusemojigen.h @@ -0,0 +1,41 @@ +/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ +/* vim:set et sts=4: */ +/* ibus - The Input Bus + * Copyright (C) 2016-2018 Takao Fujiwara + * Copyright (C) 2016 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + + +/* This file is generated by emoji-parser.c. */ +include + +#ifndef __IBUS_EMOJI_GEN_H_ +#define __IBUS_EMOJI_GEN_H_ +const static char *unicode_emoji_categories[] = { + N_("Activities"), + N_("Animals & Nature"), + N_("Component"), + N_("Flags"), + N_("Food & Drink"), + N_("Objects"), + N_("People & Body"), + N_("Smileys & Emotion"), + N_("Symbols"), + N_("Travel & Places"), +}; +#endif diff --git a/src/ibusengine.c b/src/ibusengine.c index 1c22d6a5c..7e8448386 100644 --- a/src/ibusengine.c +++ b/src/ibusengine.c @@ -1,33 +1,38 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2013 Peng Huang + * Copyright (C) 2018-2021 Takao Fujiwara + * Copyright (C) 2008-2021 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ -#include "ibusengine.h" #include #include + +#include "ibusaccelgroup.h" +#include "ibusengine.h" +#include "ibuskeysyms.h" #include "ibusmarshalers.h" #include "ibusinternal.h" #include "ibusshare.h" +#include "ibusxevent.h" #define IBUS_ENGINE_GET_PRIVATE(o) \ - (G_TYPE_INSTANCE_GET_PRIVATE ((o), IBUS_TYPE_ENGINE, IBusEnginePrivate)) + ((IBusEnginePrivate *)ibus_engine_get_instance_private (o)) enum { PROCESS_KEY_EVENT, @@ -49,6 +54,7 @@ enum { SET_SURROUNDING_TEXT, PROCESS_HAND_WRITING_EVENT, CANCEL_HAND_WRITING, + SET_CONTENT_TYPE, LAST_SIGNAL, }; @@ -68,11 +74,20 @@ struct _IBusEnginePrivate { IBusText *surrounding_text; guint surrounding_cursor_pos; guint selection_anchor_pos; + + /* cached content-type */ + guint content_purpose; + guint content_hints; + + GHashTable *extension_keybindings; + gboolean enable_extension; + gchar *current_extension_name; }; + static guint engine_signals[LAST_SIGNAL] = { 0 }; -static IBusText *text_empty = NULL; +static IBusText *text_empty; /* functions prototype */ static void ibus_engine_destroy (IBusEngine *engine); @@ -159,12 +174,20 @@ static void ibus_engine_process_hand_writing_event static void ibus_engine_cancel_hand_writing (IBusEngine *engine, guint n_strokes); +static void ibus_engine_set_content_type + (IBusEngine *engine, + guint purpose, + guint hints); static void ibus_engine_emit_signal (IBusEngine *engine, const gchar *signal_name, GVariant *parameters); +static void ibus_engine_dbus_property_changed + (IBusEngine *engine, + const gchar *property_name, + GVariant *value); -G_DEFINE_TYPE (IBusEngine, ibus_engine, IBUS_TYPE_SERVICE) +G_DEFINE_TYPE_WITH_PRIVATE (IBusEngine, ibus_engine, IBUS_TYPE_SERVICE) static const gchar introspection_xml[] = "" @@ -220,6 +243,12 @@ static const gchar introspection_xml[] = " " " " " " + " " + " " + " " + " " + " " + " " /* FIXME signals */ " " " " @@ -249,25 +278,49 @@ static const gchar introspection_xml[] = " " " " " " + " " + " " + " " + /* FIXME properties */ + " " " " ""; +static const guint IBUS_MODIFIER_FILTER = + IBUS_MODIFIER_MASK & ~( + IBUS_LOCK_MASK | /* Caps Lock */ + IBUS_MOD2_MASK | /* Num Lock */ + IBUS_BUTTON1_MASK | + IBUS_BUTTON2_MASK | + IBUS_BUTTON3_MASK | + IBUS_BUTTON4_MASK | + IBUS_BUTTON5_MASK | + IBUS_SUPER_MASK | + IBUS_HYPER_MASK | + IBUS_META_MASK); + static void ibus_engine_class_init (IBusEngineClass *class) { GObjectClass *gobject_class = G_OBJECT_CLASS (class); IBusObjectClass *ibus_object_class = IBUS_OBJECT_CLASS (class); - gobject_class->set_property = (GObjectSetPropertyFunc) ibus_engine_set_property; - gobject_class->get_property = (GObjectGetPropertyFunc) ibus_engine_get_property; + gobject_class->set_property = + (GObjectSetPropertyFunc) ibus_engine_set_property; + gobject_class->get_property = + (GObjectGetPropertyFunc) ibus_engine_get_property; ibus_object_class->destroy = (IBusObjectDestroyFunc) ibus_engine_destroy; - IBUS_SERVICE_CLASS (class)->service_method_call = ibus_engine_service_method_call; - IBUS_SERVICE_CLASS (class)->service_get_property = ibus_engine_service_get_property; - IBUS_SERVICE_CLASS (class)->service_set_property = ibus_engine_service_set_property; + IBUS_SERVICE_CLASS (class)->service_method_call = + ibus_engine_service_method_call; + IBUS_SERVICE_CLASS (class)->service_get_property = + ibus_engine_service_get_property; + IBUS_SERVICE_CLASS (class)->service_set_property = + ibus_engine_service_set_property; - ibus_service_class_add_interfaces (IBUS_SERVICE_CLASS (class), introspection_xml); + ibus_service_class_add_interfaces (IBUS_SERVICE_CLASS (class), + introspection_xml); class->process_key_event = ibus_engine_process_key_event; class->focus_in = ibus_engine_focus_in; @@ -289,6 +342,7 @@ ibus_engine_class_init (IBusEngineClass *class) class->process_hand_writing_event = ibus_engine_process_hand_writing_event; class->cancel_hand_writing = ibus_engine_cancel_hand_writing; + class->set_content_type = ibus_engine_set_content_type; /* install properties */ /** @@ -315,12 +369,13 @@ ibus_engine_class_init (IBusEngineClass *class) * @state: Key modifier flags. * * Emitted when a key event is received. - * Implement the member function process_key_event() in extended class to receive this signal. + * Implement the member function IBusEngineClass::process_key_event + * in extended class to receive this signal. * Both the key symbol and keycode are passed to the member function. * See ibus_input_context_process_key_event() for further explanation of * key symbol, keycode and which to use. * - * Returns: TRUE for successfully process the key; FALSE otherwise. + * Returns: %TRUE for successfully process the key; %FALSE otherwise. * See also: ibus_input_context_process_key_event(). * * Argument @user_data is ignored in this function. @@ -331,7 +386,7 @@ ibus_engine_class_init (IBusEngineClass *class) G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusEngineClass, process_key_event), g_signal_accumulator_true_handled, NULL, - _ibus_marshal_BOOL__UINT_UINT_UINT, + _ibus_marshal_BOOLEAN__UINT_UINT_UINT, G_TYPE_BOOLEAN, 3, G_TYPE_UINT, @@ -343,7 +398,8 @@ ibus_engine_class_init (IBusEngineClass *class) * @engine: An IBusEngine. * * Emitted when the client application get the focus. - * Implement the member function focus_in() in extended class to receive this signal. + * Implement the member function IBusEngineClass::focus_in + * in extended class to receive this signal. * * See also: ibus_input_context_focus_in() * Argument @user_data is ignored in this function. @@ -363,7 +419,8 @@ ibus_engine_class_init (IBusEngineClass *class) * @engine: An IBusEngine. * * Emitted when the client application lost the focus. - * Implement the member function focus_out() in extended class to receive this signal. + * Implement the member function IBusEngineClass::focus_out + * in extended class to receive this signal. * * See also: ibus_input_context_focus_out() * Argument @user_data is ignored in this function. @@ -383,7 +440,8 @@ ibus_engine_class_init (IBusEngineClass *class) * @engine: An IBusEngine. * * Emitted when the IME is reset. - * Implement the member function reset() in extended class to receive this signal. + * Implement the member function IBusEngineClass::reset + * in extended class to receive this signal. * * See also: ibus_input_context_reset(). * Argument @user_data is ignored in this function. @@ -403,9 +461,10 @@ ibus_engine_class_init (IBusEngineClass *class) * @engine: An IBusEngine. * * Emitted when the IME is enabled. - * Implement the member function set_enable() in extended class to receive this signal. + * Implement the member function IBusEngineClass::enable + * in extended class to receive this signal. * - * See also: ibus_input_context_enable(). + * See also: ibus_bus_set_global_engine(). * Argument @user_data is ignored in this function. */ engine_signals[ENABLE] = @@ -423,9 +482,10 @@ ibus_engine_class_init (IBusEngineClass *class) * @engine: An IBusEngine. * * Emitted when the IME is disabled. - * Implement the member function set_disable() in extended class to receive this signal. + * Implement the member function IBusEngineClass::disable + * in extended class to receive this signal. * - * See also: ibus_input_context_disable(). + * See also: ibus_bus_set_global_engine(). * Argument @user_data is ignored in this function. */ engine_signals[DISABLE] = @@ -447,7 +507,8 @@ ibus_engine_class_init (IBusEngineClass *class) * @h: Height of the cursor. * * Emitted when the location of IME is set. - * Implement the member function set_cursor_location() in extended class to receive this signal. + * Implement the member function IBusEngineClass::set_cursor_location + * in extended class to receive this signal. * * See also: ibus_input_context_set_cursor_location(). * Argument @user_data is ignored in this function. @@ -472,7 +533,8 @@ ibus_engine_class_init (IBusEngineClass *class) * @caps: Capabilities flags of IBusEngine, see #IBusCapabilite * * Emitted when the client application capabilities is set. - * Implement the member function set_capabilities() in extended class to receive this signal. + * Implement the member function IBusEngineClass::set_capabilities + * in extended class to receive this signal. * * See also: ibus_input_context_set_capabilities(). * Argument @user_data is ignored in this function. @@ -493,7 +555,8 @@ ibus_engine_class_init (IBusEngineClass *class) * @engine: An IBusEngine. * * Emitted when the page-up button is pressed. - * Implement the member function page_up() in extended class to receive this signal. + * Implement the member function IBusEngineClass::page_up + * in extended class to receive this signal. * * Argument @user_data is ignored in this function. */ @@ -512,7 +575,8 @@ ibus_engine_class_init (IBusEngineClass *class) * @engine: An IBusEngine. * * Emitted when the page-down button is pressed. - * Implement the member function page_down() in extended class to receive this signal. + * Implement the member function IBusEngineClass::page_down + * in extended class to receive this signal. * * Argument @user_data is ignored in this function. */ @@ -531,7 +595,8 @@ ibus_engine_class_init (IBusEngineClass *class) * @engine: An IBusEngine. * * Emitted when the up cursor button is pressed. - * Implement the member function cursor_up() in extended class to receive this signal. + * Implement the member function IBusEngineClass::cursor_up + * in extended class to receive this signal. * * Argument @user_data is ignored in this function. */ @@ -550,7 +615,8 @@ ibus_engine_class_init (IBusEngineClass *class) * @engine: An IBusEngine. * * Emitted when the down cursor button is pressed. - * Implement the member function cursor_down() in extended class to receive this signal. + * Implement the member function IBusEngineClass::cursor_down + * in extended class to receive this signal. * * Argument @user_data is ignored in this function. */ @@ -572,7 +638,8 @@ ibus_engine_class_init (IBusEngineClass *class) * @state: Keyboard state. * * Emitted when candidate on lookup table is clicked. - * Implement the member function candidate_clicked() in extended class to receive this signal. + * Implement the member function IBusEngineClass::candidate_clicked + * in extended class to receive this signal. * * Argument @user_data is ignored in this function. */ @@ -596,7 +663,8 @@ ibus_engine_class_init (IBusEngineClass *class) * @state: Property state. * * Emitted when a property is activated or change changed. - * Implement the member function property_activate() in extended class to receive this signal. + * Implement the member function IBusEngineClass::property_activate + * in extended class to receive this signal. * * Argument @user_data is ignored in this function. */ @@ -618,7 +686,8 @@ ibus_engine_class_init (IBusEngineClass *class) * @name: Property name. * * Emitted when a property is shown. - * Implement the member function property_side() in extended class to receive this signal. + * Implement the member function IBusEngineClass::property_side + * in extended class to receive this signal. * * Argument @user_data is ignored in this function. */ @@ -639,7 +708,8 @@ ibus_engine_class_init (IBusEngineClass *class) * @name: Property name. * * Emitted when a property is hidden. - * Implement the member function property_hide() in extended class to receive this signal. + * Implement the member function IBusEngineClass::property_hide + * in extended class to receive this signal. * * Argument @user_data is ignored in this function. */ @@ -661,7 +731,8 @@ ibus_engine_class_init (IBusEngineClass *class) * @coordinates_len: The number of elements in the array. * * Emitted when a hand writing operation is cancelled. - * Implement the member function cancel_hand_writing() in extended class to receive this signal. + * Implement the member function IBusEngineClass::cancel_hand_writing + * in extended class to receive this signal. * * Argument @user_data is ignored in this function. */ @@ -683,7 +754,8 @@ ibus_engine_class_init (IBusEngineClass *class) * @n_strokes: The number of strokes to be removed. 0 means "remove all". * * Emitted when a hand writing operation is cancelled. - * Implement the member function cancel_hand_writing() in extended class to receive this signal. + * Implement the member function IBusEngineClass::cancel_hand_writing + * in extended class to receive this signal. * * Argument @user_data is ignored in this function. */ @@ -698,8 +770,6 @@ ibus_engine_class_init (IBusEngineClass *class) 1, G_TYPE_UINT); - g_type_class_add_private (class, sizeof (IBusEnginePrivate)); - /** * IBusEngine::set-surrounding-text: * @engine: An IBusEngine. @@ -708,9 +778,10 @@ ibus_engine_class_init (IBusEngineClass *class) * @anchor_pos: The anchor position on selection area. * * Emitted when a surrounding text is set. - * Implement the member function set_surrounding_text() in extended class to receive this signal. - * If anchor_pos equals to cursor_pos, it means "there are no selection" or "does not support - * selection retrival". + * Implement the member function IBusEngineClass::set_surrounding_text + * in extended class to receive this signal. + * If anchor_pos equals to cursor_pos, it means "there are no selection" + * or "does not support selection retrival". * * Argument @user_data is ignored in this function. */ @@ -727,6 +798,38 @@ ibus_engine_class_init (IBusEngineClass *class) G_TYPE_UINT, G_TYPE_UINT); + /** + * IBusEngine::set-content-type: + * @engine: An #IBusEngine. + * @purpose: Primary purpose of the input context, as an #IBusInputPurpose. + * @hints: Hints that augment @purpose, as an #IBusInputHints. + * + * Emitted when the client application content-type (primary + * purpose and hints) is set. The engine could change the + * behavior according to the content-type. Implement the member + * function IBusEngineClass::set_content_type + * in extended class to receive this signal. + * + * For example, if the client application wants to restrict input + * to numbers, this signal will be emitted with @purpose set to + * #IBUS_INPUT_PURPOSE_NUMBER, so the engine can switch the input + * mode to latin. + * + * Argument @user_data is ignored in this + * function. + */ + engine_signals[SET_CONTENT_TYPE] = + g_signal_new (I_("set-content-type"), + G_TYPE_FROM_CLASS (gobject_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (IBusEngineClass, set_content_type), + NULL, NULL, + _ibus_marshal_VOID__UINT_UINT, + G_TYPE_NONE, + 2, + G_TYPE_UINT, + G_TYPE_UINT); + text_empty = ibus_text_new_from_static_string (""); g_object_ref_sink (text_empty); } @@ -734,21 +837,27 @@ ibus_engine_class_init (IBusEngineClass *class) static void ibus_engine_init (IBusEngine *engine) { - engine->priv = IBUS_ENGINE_GET_PRIVATE (engine); - - engine->priv->surrounding_text = g_object_ref_sink (text_empty); + IBusEnginePrivate *priv; + engine->priv = priv = IBUS_ENGINE_GET_PRIVATE (engine); + priv->surrounding_text = g_object_ref_sink (text_empty); + priv->extension_keybindings = g_hash_table_new_full ( + g_str_hash, + g_str_equal, + g_free, + g_free); } static void ibus_engine_destroy (IBusEngine *engine) { - g_free (engine->priv->engine_name); - engine->priv->engine_name = NULL; + IBusEnginePrivate *priv = engine->priv; - if (engine->priv->surrounding_text) { - g_object_unref (engine->priv->surrounding_text); - engine->priv->surrounding_text = NULL; - } + g_clear_pointer (&priv->engine_name, g_free); + g_clear_pointer (&priv->current_extension_name, g_free); + if (priv->surrounding_text) + g_clear_object (&priv->surrounding_text); + if (priv->extension_keybindings) + g_clear_pointer (&priv->extension_keybindings, g_hash_table_destroy); IBUS_OBJECT_CLASS(ibus_engine_parent_class)->destroy (IBUS_OBJECT (engine)); } @@ -784,6 +893,187 @@ ibus_engine_get_property (IBusEngine *engine, } } +static void +ibus_engine_panel_extension (IBusEngine *engine, + const gchar *name) +{ + IBusEnginePrivate *priv; + IBusExtensionEvent *event; + GVariant *data; + + g_assert (IBUS_IS_ENGINE (engine)); + g_assert (name); + + priv = engine->priv; + if (!g_strcmp0 (name, priv->current_extension_name)) + priv->enable_extension = !priv->enable_extension; + else + priv->enable_extension = TRUE; + if (priv->enable_extension) { + g_free (priv->current_extension_name); + priv->current_extension_name = g_strdup (name); + } + event = ibus_extension_event_new ( + "name", name, + "is-enabled", priv->enable_extension, + NULL); + g_assert (IBUS_IS_EXTENSION_EVENT (event)); + data = ibus_serializable_serialize_object ( + IBUS_SERIALIZABLE (event)); + + g_assert (data != NULL); + ibus_engine_emit_signal (engine, + "PanelExtension", + g_variant_new ("(v)", data)); + g_object_unref (event); +} + +static gboolean +ibus_engine_filter_key_event (IBusEngine *engine, + guint keyval, + guint keycode, + guint state) +{ + IBusEnginePrivate *priv; + GList *names, *n; + IBusProcessKeyEventData *keys; + guint modifiers; + + if ((state & IBUS_RELEASE_MASK) != 0) + return FALSE; + g_return_val_if_fail (IBUS_IS_ENGINE (engine), FALSE); + + priv = engine->priv; + modifiers = state & IBUS_MODIFIER_FILTER; + if (keyval >= IBUS_KEY_A && keyval <= IBUS_KEY_Z && + (modifiers & IBUS_SHIFT_MASK) != 0) { + keyval = keyval - IBUS_KEY_A + IBUS_KEY_a; + } + names = g_hash_table_get_keys (priv->extension_keybindings); + if (!names) + return FALSE; + for (n = names; n; n = n->next) { + const gchar *name = (const gchar *)n->data; + if (!g_strcmp0 (name, "emoji") && + (engine->priv->content_hints & IBUS_INPUT_HINT_NO_EMOJI)) { + continue; + } + keys = g_hash_table_lookup (priv->extension_keybindings, name); + for (; keys; keys++) { + if (keys->keyval == 0 && keys->keycode == 0 && keys->state == 0) + break; + if (keys->keyval == keyval && + keys->state == modifiers && + (keys->keycode == 0 || keys->keycode == keycode)) { + ibus_engine_panel_extension (engine, name); + return TRUE; + } + } + } + g_list_free (names); + return FALSE; +} + +static gboolean +ibus_engine_service_authorized_method (IBusService *service, + GDBusConnection *connection) +{ + if (ibus_service_get_connection (service) == connection) + return TRUE; + return FALSE; +} + +static void +ibus_engine_service_panel_extension_register_keys (IBusEngine *engine, + GVariant *parameters, + GDBusMethodInvocation + *invocation) +{ + IBusEnginePrivate *priv = engine->priv; + GVariant *v1 = NULL; + GVariant *v2 = NULL; + GVariant *v3 = NULL; + GVariant *vkeys = NULL; + GVariantIter *iter1 = NULL; + GVariantIter *iter2 = NULL; + const gchar *name = NULL; + guint failure_id = 0; + + g_variant_get (parameters, "(v)", &v1); + if (v1) + g_variant_get (v1, "(v)", &v2); + else + failure_id = 1; + if (v2) + g_variant_get (v2, "a{sv}", &iter1); + else + failure_id = 2; + if (iter1) { + while (g_variant_iter_loop (iter1, "{&sv}", &name, &vkeys)) { + if (vkeys) + g_variant_get (vkeys, "av", &iter2); + if (name && iter2) { + IBusProcessKeyEventData *keys = NULL; + gint num = 0; + while (g_variant_iter_loop (iter2, "v", &v3)) { + if (v3) { + guint keyval = 0; + guint keycode = 0; + guint state = 0; + g_variant_get (v3, "(iii)", + &keyval, &keycode, &state); + if (!keys) + keys = g_new0 (IBusProcessKeyEventData, 2); + else + keys = g_renew (IBusProcessKeyEventData, + keys, + num + 2); + keys[num].keyval = keyval; + keys[num].keycode = keycode; + keys[num].state = state; + keys[num + 1].keyval = 0; + keys[num + 1].keycode = 0; + keys[num + 1].state = 0; + g_clear_pointer (&v3, g_variant_unref); + num++; + } else { + failure_id = 5; + } + } + if (num > 0) { + g_hash_table_replace (priv->extension_keybindings, + g_strdup (name), + keys); + } else { + g_hash_table_remove (priv->extension_keybindings, name); + } + g_clear_pointer (&iter2, g_variant_iter_free); + } else { + failure_id = 4; + } + g_clear_pointer (&vkeys, g_variant_unref); + name = NULL; + } + g_variant_iter_free (iter1); + } else { + failure_id = 3; + } + if (failure_id == 0) { + g_dbus_method_invocation_return_value (invocation, NULL); + } else { + g_dbus_method_invocation_return_error ( + invocation, + G_DBUS_ERROR, + G_DBUS_ERROR_FAILED, + "PanelExtensionRegisterKeys method gives NULL: %d", + failure_id); + } + if (v2) + g_variant_unref (v2); + if (v1) + g_variant_unref (v1); +} + static void ibus_engine_service_method_call (IBusService *service, GDBusConnection *connection, @@ -795,6 +1085,7 @@ ibus_engine_service_method_call (IBusService *service, GDBusMethodInvocation *invocation) { IBusEngine *engine = IBUS_ENGINE (service); + IBusEnginePrivate *priv = engine->priv; if (g_strcmp0 (interface_name, IBUS_INTERFACE_ENGINE) != 0) { IBUS_SERVICE_CLASS (ibus_engine_parent_class)-> @@ -809,9 +1100,13 @@ ibus_engine_service_method_call (IBusService *service, return; } + if (!ibus_engine_service_authorized_method (service, connection)) + return; + if (g_strcmp0 (method_name, "ProcessKeyEvent") == 0) { guint keyval, keycode, state; gboolean retval = FALSE; + g_variant_get (parameters, "(uuu)", &keyval, &keycode, &state); g_signal_emit (engine, engine_signals[PROCESS_KEY_EVENT], @@ -820,9 +1115,42 @@ ibus_engine_service_method_call (IBusService *service, keycode, state, &retval); + if (!retval) { + retval = ibus_engine_filter_key_event (engine, + keyval, + keycode, + state); + } g_dbus_method_invocation_return_value (invocation, g_variant_new ("(b)", retval)); return; } + if (g_strcmp0 (method_name, "PanelExtensionReceived") == 0) { + GVariant *arg0 = NULL; + IBusExtensionEvent *event = NULL; + + g_variant_get (parameters, "(v)", &arg0); + if (arg0) { + event = (IBusExtensionEvent *)ibus_serializable_deserialize_object ( + arg0); + } + if (!event) { + g_dbus_method_invocation_return_error ( + invocation, + G_DBUS_ERROR, + G_DBUS_ERROR_FAILED, + "PanelExtensionReceived method gives NULL"); + return; + } + priv->enable_extension = ibus_extension_event_is_enabled (event); + g_dbus_method_invocation_return_value (invocation, NULL); + return; + } + if (g_strcmp0 (method_name, "PanelExtensionRegisterKeys") == 0) { + ibus_engine_service_panel_extension_register_keys (engine, + parameters, + invocation); + return; + } static const struct { gchar *member; @@ -1004,15 +1332,46 @@ ibus_engine_service_set_property (IBusService *service, GVariant *value, GError **error) { - return IBUS_SERVICE_CLASS (ibus_engine_parent_class)-> - service_set_property (service, - connection, - sender, - object_path, - interface_name, - property_name, - value, - error); + IBusEngine *engine = IBUS_ENGINE (service); + + if (g_strcmp0 (interface_name, IBUS_INTERFACE_ENGINE) != 0) { + return IBUS_SERVICE_CLASS (ibus_engine_parent_class)-> + service_set_property (service, + connection, + sender, + object_path, + interface_name, + property_name, + value, + error); + } + + if (!ibus_engine_service_authorized_method (service, connection)) + return FALSE; + + if (g_strcmp0 (property_name, "ContentType") == 0) { + guint purpose = 0; + guint hints = 0; + + g_variant_get (value, "(uu)", &purpose, &hints); + if (purpose != engine->priv->content_purpose || + hints != engine->priv->content_hints) { + engine->priv->content_purpose = purpose; + engine->priv->content_hints = hints; + + g_signal_emit (engine, + engine_signals[SET_CONTENT_TYPE], + 0, + purpose, + hints); + + ibus_engine_dbus_property_changed (engine, "ContentType", value); + } + + return TRUE; + } + + g_return_val_if_reached (FALSE); } static gboolean @@ -1160,6 +1519,14 @@ ibus_engine_cancel_hand_writing (IBusEngine *engine, // g_debug ("cancel-hand-writing (%u)", n_strokes); } +static void +ibus_engine_set_content_type (IBusEngine *engine, + guint purpose, + guint hints) +{ + // g_debug ("set-content-type (%u %u)", purpose, hints); +} + static void ibus_engine_emit_signal (IBusEngine *engine, const gchar *signal_name, @@ -1173,6 +1540,52 @@ ibus_engine_emit_signal (IBusEngine *engine, NULL); } +static void +ibus_engine_dbus_property_changed (IBusEngine *engine, + const gchar *property_name, + GVariant *value) +{ + const gchar *object_path; + GDBusConnection *connection; + GDBusMessage *message; + GVariantBuilder *builder; + gboolean retval; + GError *error; + + /* we cannot use ibus_service_emit_signal() here, since we need to + set sender of the signal so that GDBusProxy can properly track + the property change. */ + object_path = ibus_service_get_object_path ((IBusService *)engine); + message = g_dbus_message_new_signal (object_path, + "org.freedesktop.DBus.Properties", + "PropertiesChanged"); + + g_dbus_message_set_sender (message, "org.freedesktop.IBus"); + + builder = g_variant_builder_new (G_VARIANT_TYPE_ARRAY); + g_variant_builder_add (builder, "{sv}", property_name, value); + g_dbus_message_set_body (message, + g_variant_new ("(sa{sv}as)", + IBUS_INTERFACE_ENGINE, + builder, + NULL)); + g_variant_builder_unref (builder); + + error = NULL; + connection = ibus_service_get_connection ((IBusService *)engine); + retval = g_dbus_connection_send_message (connection, + message, + G_DBUS_SEND_MESSAGE_FLAGS_NONE, + NULL, + &error); + if (!retval) { + g_warning ("Failed to emit PropertiesChanged signal: %s", + error->message); + g_error_free (error); + } + g_object_unref (message); +} + IBusEngine * ibus_engine_new (const gchar *engine_name, const gchar *object_path, @@ -1292,12 +1705,17 @@ ibus_engine_update_lookup_table_fast (IBusEngine *engine, IBusLookupTable *table, gboolean visible) { + /* Note: gnome shell needs the previous page and next page + to correctly show the page up/down arrows, + send three pages instead of one page. */ + g_return_if_fail (IBUS_IS_ENGINE (engine)); g_return_if_fail (IBUS_IS_LOOKUP_TABLE (table)); IBusLookupTable *new_table; IBusText *text; gint page_begin; + gint cursor_pos; gint i; if (table->candidates->len < table->page_size << 2) { @@ -1306,19 +1724,31 @@ ibus_engine_update_lookup_table_fast (IBusEngine *engine, } page_begin = (table->cursor_pos / table->page_size) * table->page_size; + cursor_pos = ibus_lookup_table_get_cursor_in_page (table); + + if (table->cursor_pos >= table->page_size) { + /* has previous page, adjust the value. */ + page_begin -= table->page_size; + cursor_pos += table->page_size; + } - new_table = ibus_lookup_table_new (table->page_size, 0, table->cursor_visible, table->round); + new_table = ibus_lookup_table_new + (table->page_size, 0, table->cursor_visible, table->round); - for (i = page_begin; i < page_begin + table->page_size && i < table->candidates->len; i++) { - ibus_lookup_table_append_candidate (new_table, ibus_lookup_table_get_candidate (table, i)); + /* '3' means the previous page, current page and next page. */ + for (i = page_begin; i < page_begin + 3 * table->page_size && + i < table->candidates->len; i++) { + ibus_lookup_table_append_candidate + (new_table, ibus_lookup_table_get_candidate (table, i)); } for (i = 0; (text = ibus_lookup_table_get_label (table, i)) != NULL; i++) { ibus_lookup_table_append_label (new_table, text); } - ibus_lookup_table_set_cursor_pos (new_table, ibus_lookup_table_get_cursor_in_page (table)); - ibus_lookup_table_set_orientation (new_table, ibus_lookup_table_get_orientation (table)); + ibus_lookup_table_set_cursor_pos (new_table, cursor_pos); + ibus_lookup_table_set_orientation + (new_table, ibus_lookup_table_get_orientation (table)); ibus_engine_update_lookup_table (engine, new_table, visible); @@ -1423,6 +1853,17 @@ ibus_engine_get_surrounding_text (IBusEngine *engine, // g_debug ("get-surrounding-text ('%s', %d, %d)", (*text)->text, *cursor_pos, *anchor_pos); } +void +ibus_engine_get_content_type (IBusEngine *engine, + guint *purpose, + guint *hints) +{ + g_return_if_fail (IBUS_IS_ENGINE (engine)); + + *purpose = engine->priv->content_purpose; + *hints = engine->priv->content_hints; +} + void ibus_engine_register_properties (IBusEngine *engine, IBusPropList *prop_list) diff --git a/src/ibusengine.h b/src/ibusengine.h index d2d01a025..43eaa554e 100644 --- a/src/ibusengine.h +++ b/src/ibusengine.h @@ -1,29 +1,32 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2013 Peng Huang + * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif +#ifndef __IBUS_ENGINE_H_ +#define __IBUS_ENGINE_H_ + /** * SECTION: ibusengine * @short_description: Input method engine abstract. @@ -33,10 +36,8 @@ * An IBusEngine provides infrastructure for input method engine. * Developers can "extend" this class for input method engine development. * - * @see_also: #IBusComponent, #IBusEngineDesc + * see_also: #IBusComponent, #IBusEngineDesc */ -#ifndef __IBUS_ENGINE_H_ -#define __IBUS_ENGINE_H_ #include "ibusservice.h" #include "ibusattribute.h" @@ -148,10 +149,14 @@ struct _IBusEngineClass { void (* cancel_hand_writing) (IBusEngine *engine, guint n_strokes); + void (* set_content_type) + (IBusEngine *engine, + guint purpose, + guint hints); /*< private >*/ /* padding */ - gpointer pdummy[5]; + gpointer pdummy[4]; }; GType ibus_engine_get_type (void); @@ -161,9 +166,10 @@ GType ibus_engine_get_type (void); * @engine_name: Name of the IBusObject. * @object_path: Path for IBusService. * @connection: An opened GDBusConnection. - * @returns: A newly allocated IBusEngine. * - * New an IBusEngine. + * Create a new #IBusEngine. + * + * Returns: A newly allocated IBusEngine. */ IBusEngine *ibus_engine_new (const gchar *engine_name, const gchar *object_path, @@ -174,9 +180,10 @@ IBusEngine *ibus_engine_new (const gchar *engine_name, * @engine_name: Name of the IBusObject. * @object_path: Path for IBusService. * @connection: An opened GDBusConnection. - * @returns: A newly allocated IBusEngine. * - * New an IBusEngine. + * Create a new #IBusEngine. + * + * Returns: A newly allocated IBusEngine. */ IBusEngine *ibus_engine_new_with_type (GType engine_type, const gchar *engine_name, @@ -225,10 +232,14 @@ void ibus_engine_update_preedit_text * @visible: Whether the pre-edit buffer is visible. * @mode: Pre-edit commit mode when the focus is lost. * - * Update the pre-edit buffer with commit mode. - * if mode is IBUS_ENGINE_PREEDIT_CLEAR, - * ibus_engine_update_preedit_text_with_mode is compatible with - * ibus_engine_update_preedit_text. + * Update the pre-edit buffer with commit mode. Similar to + * ibus_engine_update_preedit_text(), this function allows users to specify + * the behavior on focus out when the pre-edit buffer is visible. + * + * If @mode is IBUS_ENGINE_PREEDIT_COMMIT, contents of the pre-edit buffer + * will be committed and cleared. + * If @mode is IBUS_ENGINE_PREEDIT_CLEAR, contents of the pre-edit buffer + * will be cleared only. * * (Note: The text object will be released, if it is floating. * If caller want to keep the object, caller should make the object @@ -419,20 +430,36 @@ void ibus_engine_delete_surrounding_text(IBusEngine *engine, * #IBusEngine::enable handler, with both @text and @cursor set to * %NULL. * - * @see_also #IBusEngine::set-surrounding-text + * See also: #IBusEngine::set-surrounding-text */ -void ibus_engine_get_surrounding_text(IBusEngine *engine, - IBusText **text, - guint *cursor_pos, - guint *anchor_pos); +void ibus_engine_get_surrounding_text (IBusEngine *engine, + IBusText **text, + guint *cursor_pos, + guint *anchor_pos); +/** + * ibus_engine_get_content_type: + * @engine: An #IBusEngine. + * @purpose: (out) (allow-none): Primary purpose of the input context. + * @hints: (out) (allow-none): Hints that augument @purpose. + * + * Get content-type (primary purpose and hints) of the current input + * context. + * + * See also: #IBusEngine::set-content-type + */ +void ibus_engine_get_content_type (IBusEngine *engine, + guint *purpose, + guint *hints); + /** * ibus_engine_get_name: * @engine: An IBusEngine. - * @returns: Name of IBusEngine. * - * Return the name of IBusEngine. + * Return the name of #IBusEngine. + * + * Returns: Name of #IBusEngine. */ const gchar *ibus_engine_get_name (IBusEngine *engine); diff --git a/src/ibusenginedesc.c b/src/ibusenginedesc.c index 48ecb07d6..064588bd1 100644 --- a/src/ibusenginedesc.c +++ b/src/ibusenginedesc.c @@ -1,26 +1,27 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* bus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2015 Peng Huang + * Copyright (C) 2008-2019 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include #include "ibusenginedesc.h" +#include "ibusinternal.h" #include "ibusxml.h" enum { @@ -37,10 +38,15 @@ enum { PROP_AUTHOR, PROP_ICON, PROP_LAYOUT, + PROP_LAYOUT_VARIANT, + PROP_LAYOUT_OPTION, PROP_RANK, PROP_HOTKEYS, PROP_SYMBOL, PROP_SETUP, + PROP_VERSION, + PROP_TEXTDOMAIN, + PROP_ICON_PROP_KEY }; @@ -54,14 +60,19 @@ struct _IBusEngineDescPrivate { gchar *author; gchar *icon; gchar *layout; + gchar *layout_variant; + gchar *layout_option; guint rank; gchar *hotkeys; gchar *symbol; gchar *setup; + gchar *version; + gchar *textdomain; + gchar *icon_prop_key; }; #define IBUS_ENGINE_DESC_GET_PRIVATE(o) \ - (G_TYPE_INSTANCE_GET_PRIVATE ((o), IBUS_TYPE_ENGINE_DESC, IBusEngineDescPrivate)) + ((IBusEngineDescPrivate *)ibus_engine_desc_get_instance_private (o)) // static guint _signals[LAST_SIGNAL] = { 0 }; @@ -84,7 +95,9 @@ static gboolean ibus_engine_desc_copy (IBusEngineDesc *des static gboolean ibus_engine_desc_parse_xml_node (IBusEngineDesc *desc, XMLNode *node); -G_DEFINE_TYPE (IBusEngineDesc, ibus_engine_desc, IBUS_TYPE_SERIALIZABLE) +G_DEFINE_TYPE_WITH_PRIVATE (IBusEngineDesc, + ibus_engine_desc, + IBUS_TYPE_SERIALIZABLE) static void @@ -102,8 +115,6 @@ ibus_engine_desc_class_init (IBusEngineDescClass *class) serializable_class->deserialize = (IBusSerializableDeserializeFunc) ibus_engine_desc_deserialize; serializable_class->copy = (IBusSerializableCopyFunc) ibus_engine_desc_copy; - g_type_class_add_private (class, sizeof (IBusEngineDescPrivate)); - /* install properties */ /** * IBusEngineDesc:name: @@ -209,6 +220,32 @@ ibus_engine_desc_class_init (IBusEngineDescClass *class) "us", G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + /** + * IBusEngineDesc:layout-variant: + * + * The keyboard variant of engine description + */ + g_object_class_install_property (gobject_class, + PROP_LAYOUT_VARIANT, + g_param_spec_string ("layout-variant", + "description keyboard variant", + "The keyboard variant of engine description", + "", + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + + /** + * IBusEngineDesc:layout-option: + * + * The keyboard option of engine description + */ + g_object_class_install_property (gobject_class, + PROP_LAYOUT_OPTION, + g_param_spec_string ("layout-option", + "description keyboard option", + "The keyboard option of engine description", + "", + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + /** * IBusEngineDesc:rank: * @@ -262,6 +299,45 @@ ibus_engine_desc_class_init (IBusEngineDescClass *class) "The exec lists of the engine setup command", "", G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + + /** + * IBusEngineDesc:version: + * + * The version number of engine description + */ + g_object_class_install_property (gobject_class, + PROP_VERSION, + g_param_spec_string ("version", + "version number", + "The version number of engine description", + "", + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + + /** + * IBusEngineDesc:textdomain: + * + * The textdomain of engine description + */ + g_object_class_install_property (gobject_class, + PROP_TEXTDOMAIN, + g_param_spec_string ("textdomain", + "textdomain", + "The textdomain of engine description", + "", + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + + /** + * IBusEngineDesc:icon-prop-key: + * + * The key of IBusProperty to change panel icon dynamically. + */ + g_object_class_install_property (gobject_class, + PROP_ICON_PROP_KEY, + g_param_spec_string ("icon-prop-key", + "icon property key", + "The key of IBusProperty for the dynamic panel icon", + "", + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); } static void @@ -277,10 +353,15 @@ ibus_engine_desc_init (IBusEngineDesc *desc) desc->priv->author = NULL; desc->priv->icon = NULL; desc->priv->layout = NULL; + desc->priv->layout_variant = NULL; + desc->priv->layout_option = NULL; desc->priv->rank = 0; desc->priv->hotkeys = NULL; desc->priv->symbol = NULL; desc->priv->setup = NULL; + desc->priv->version = NULL; + desc->priv->textdomain = NULL; + desc->priv->icon_prop_key = NULL; } static void @@ -294,9 +375,14 @@ ibus_engine_desc_destroy (IBusEngineDesc *desc) g_free (desc->priv->author); g_free (desc->priv->icon); g_free (desc->priv->layout); + g_free (desc->priv->layout_variant); + g_free (desc->priv->layout_option); g_free (desc->priv->hotkeys); g_free (desc->priv->symbol); g_free (desc->priv->setup); + g_free (desc->priv->version); + g_free (desc->priv->textdomain); + g_free (desc->priv->icon_prop_key); IBUS_OBJECT_CLASS (ibus_engine_desc_parent_class)->destroy (IBUS_OBJECT (desc)); } @@ -340,6 +426,14 @@ ibus_engine_desc_set_property (IBusEngineDesc *desc, g_assert (desc->priv->layout == NULL); desc->priv->layout = g_value_dup_string (value); break; + case PROP_LAYOUT_VARIANT: + g_assert (desc->priv->layout_variant == NULL); + desc->priv->layout_variant = g_value_dup_string (value); + break; + case PROP_LAYOUT_OPTION: + g_assert (desc->priv->layout_option == NULL); + desc->priv->layout_option = g_value_dup_string (value); + break; case PROP_RANK: desc->priv->rank = g_value_get_uint (value); break; @@ -355,6 +449,18 @@ ibus_engine_desc_set_property (IBusEngineDesc *desc, g_assert (desc->priv->setup == NULL); desc->priv->setup = g_value_dup_string (value); break; + case PROP_VERSION: + g_assert (desc->priv->version == NULL); + desc->priv->version = g_value_dup_string (value); + break; + case PROP_TEXTDOMAIN: + g_assert (desc->priv->textdomain == NULL); + desc->priv->textdomain = g_value_dup_string (value); + break; + case PROP_ICON_PROP_KEY: + g_assert (desc->priv->icon_prop_key == NULL); + desc->priv->icon_prop_key = g_value_dup_string (value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (desc, prop_id, pspec); } @@ -391,6 +497,12 @@ ibus_engine_desc_get_property (IBusEngineDesc *desc, case PROP_LAYOUT: g_value_set_string (value, ibus_engine_desc_get_layout (desc)); break; + case PROP_LAYOUT_VARIANT: + g_value_set_string (value, ibus_engine_desc_get_layout_variant (desc)); + break; + case PROP_LAYOUT_OPTION: + g_value_set_string (value, ibus_engine_desc_get_layout_option (desc)); + break; case PROP_RANK: g_value_set_uint (value, ibus_engine_desc_get_rank (desc)); break; @@ -403,6 +515,15 @@ ibus_engine_desc_get_property (IBusEngineDesc *desc, case PROP_SETUP: g_value_set_string (value, ibus_engine_desc_get_setup (desc)); break; + case PROP_VERSION: + g_value_set_string (value, ibus_engine_desc_get_version (desc)); + break; + case PROP_TEXTDOMAIN: + g_value_set_string (value, ibus_engine_desc_get_textdomain (desc)); + break; + case PROP_ICON_PROP_KEY: + g_value_set_string (value, ibus_engine_desc_get_icon_prop_key (desc)); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (desc, prop_id, pspec); } @@ -432,9 +553,15 @@ ibus_engine_desc_serialize (IBusEngineDesc *desc, g_variant_builder_add (builder, "s", NOTNULL (desc->priv->icon)); g_variant_builder_add (builder, "s", NOTNULL (desc->priv->layout)); g_variant_builder_add (builder, "u", desc->priv->rank); + /* The serialized order should be kept. */ g_variant_builder_add (builder, "s", NOTNULL (desc->priv->hotkeys)); g_variant_builder_add (builder, "s", NOTNULL (desc->priv->symbol)); g_variant_builder_add (builder, "s", NOTNULL (desc->priv->setup)); + g_variant_builder_add (builder, "s", NOTNULL (desc->priv->layout_variant)); + g_variant_builder_add (builder, "s", NOTNULL (desc->priv->layout_option)); + g_variant_builder_add (builder, "s", NOTNULL (desc->priv->version)); + g_variant_builder_add (builder, "s", NOTNULL (desc->priv->textdomain)); + g_variant_builder_add (builder, "s", NOTNULL (desc->priv->icon_prop_key)); #undef NOTNULL return TRUE; @@ -453,18 +580,48 @@ ibus_engine_desc_deserialize (IBusEngineDesc *desc, * you should not change the serialized order of name, longname, * description, ... because the order is also used in other applications * likes ibus-qt. */ - g_variant_get_child (variant, retval++, "s", &desc->priv->name); - g_variant_get_child (variant, retval++, "s", &desc->priv->longname); - g_variant_get_child (variant, retval++, "s", &desc->priv->description); - g_variant_get_child (variant, retval++, "s", &desc->priv->language); - g_variant_get_child (variant, retval++, "s", &desc->priv->license); - g_variant_get_child (variant, retval++, "s", &desc->priv->author); - g_variant_get_child (variant, retval++, "s", &desc->priv->icon); - g_variant_get_child (variant, retval++, "s", &desc->priv->layout); + ibus_g_variant_get_child_string (variant, retval++, + &desc->priv->name); + ibus_g_variant_get_child_string (variant, retval++, + &desc->priv->longname); + ibus_g_variant_get_child_string (variant, retval++, + &desc->priv->description); + ibus_g_variant_get_child_string (variant, retval++, + &desc->priv->language); + ibus_g_variant_get_child_string (variant, retval++, + &desc->priv->license); + ibus_g_variant_get_child_string (variant, retval++, + &desc->priv->author); + ibus_g_variant_get_child_string (variant, retval++, + &desc->priv->icon); + ibus_g_variant_get_child_string (variant, retval++, + &desc->priv->layout); g_variant_get_child (variant, retval++, "u", &desc->priv->rank); - g_variant_get_child (variant, retval++, "s", &desc->priv->hotkeys); - g_variant_get_child (variant, retval++, "s", &desc->priv->symbol); - g_variant_get_child (variant, retval++, "s", &desc->priv->setup); + /* The serialized order should be kept. */ + ibus_g_variant_get_child_string (variant, retval++, + &desc->priv->hotkeys); + ibus_g_variant_get_child_string (variant, retval++, + &desc->priv->symbol); + ibus_g_variant_get_child_string (variant, retval++, + &desc->priv->setup); + if (g_variant_n_children (variant) < retval + 2) + return retval; + ibus_g_variant_get_child_string (variant, retval++, + &desc->priv->layout_variant); + ibus_g_variant_get_child_string (variant, retval++, + &desc->priv->layout_option); + if (g_variant_n_children (variant) < retval + 1) + return retval; + ibus_g_variant_get_child_string (variant, retval++, + &desc->priv->version); + if (g_variant_n_children (variant) < retval + 1) + return retval; + ibus_g_variant_get_child_string (variant, retval++, + &desc->priv->textdomain); + if (g_variant_n_children (variant) < retval + 1) + return retval; + ibus_g_variant_get_child_string (variant, retval++, + &desc->priv->icon_prop_key); return retval; } @@ -487,10 +644,15 @@ ibus_engine_desc_copy (IBusEngineDesc *dest, dest->priv->author = g_strdup (src->priv->author); dest->priv->icon = g_strdup (src->priv->icon); dest->priv->layout = g_strdup (src->priv->layout); + dest->priv->layout_variant = g_strdup (src->priv->layout_variant); + dest->priv->layout_option = g_strdup (src->priv->layout_option); dest->priv->rank = src->priv->rank; dest->priv->hotkeys = g_strdup (src->priv->hotkeys); dest->priv->symbol = g_strdup (src->priv->symbol); dest->priv->setup = g_strdup (src->priv->setup); + dest->priv->version = g_strdup (src->priv->version); + dest->priv->textdomain = g_strdup (src->priv->textdomain); + dest->priv->icon_prop_key = g_strdup (src->priv->icon_prop_key); return TRUE; } @@ -527,9 +689,14 @@ ibus_engine_desc_output (IBusEngineDesc *desc, OUTPUT_ENTRY_1(author); OUTPUT_ENTRY_1(icon); OUTPUT_ENTRY_1(layout); + OUTPUT_ENTRY_1(layout_variant); + OUTPUT_ENTRY_1(layout_option); OUTPUT_ENTRY_1(hotkeys); OUTPUT_ENTRY_1(symbol); OUTPUT_ENTRY_1(setup); + OUTPUT_ENTRY_1(version); + OUTPUT_ENTRY_1(textdomain); + OUTPUT_ENTRY_1(icon_prop_key); g_string_append_indent (output, indent + 1); g_string_append_printf (output, "%u\n", desc->priv->rank); #undef OUTPUT_ENTRY @@ -562,9 +729,14 @@ ibus_engine_desc_parse_xml_node (IBusEngineDesc *desc, PARSE_ENTRY_1(author); PARSE_ENTRY_1(icon); PARSE_ENTRY_1(layout); + PARSE_ENTRY_1(layout_variant); + PARSE_ENTRY_1(layout_option); PARSE_ENTRY_1(hotkeys); PARSE_ENTRY_1(symbol); PARSE_ENTRY_1(setup); + PARSE_ENTRY_1(version); + PARSE_ENTRY_1(textdomain); + PARSE_ENTRY_1(icon_prop_key); #undef PARSE_ENTRY #undef PARSE_ENTRY_1 if (g_strcmp0 (sub_node->name , "rank") == 0) { @@ -591,10 +763,15 @@ IBUS_ENGINE_DESC_GET_PROPERTY (license, const gchar *) IBUS_ENGINE_DESC_GET_PROPERTY (author, const gchar *) IBUS_ENGINE_DESC_GET_PROPERTY (icon, const gchar *) IBUS_ENGINE_DESC_GET_PROPERTY (layout, const gchar *) +IBUS_ENGINE_DESC_GET_PROPERTY (layout_variant, const gchar *) +IBUS_ENGINE_DESC_GET_PROPERTY (layout_option, const gchar *) IBUS_ENGINE_DESC_GET_PROPERTY (rank, guint) IBUS_ENGINE_DESC_GET_PROPERTY (hotkeys, const gchar *) IBUS_ENGINE_DESC_GET_PROPERTY (symbol, const gchar *) IBUS_ENGINE_DESC_GET_PROPERTY (setup, const gchar *) +IBUS_ENGINE_DESC_GET_PROPERTY (version, const gchar *) +IBUS_ENGINE_DESC_GET_PROPERTY (textdomain, const gchar *) +IBUS_ENGINE_DESC_GET_PROPERTY (icon_prop_key, const gchar *) #undef IBUS_ENGINE_DESC_GET_PROPERTY IBusEngineDesc * @@ -641,9 +818,14 @@ ibus_engine_desc_new_varargs (const gchar *first_property_name, ...) g_assert (desc->priv->author); g_assert (desc->priv->icon); g_assert (desc->priv->layout); + g_assert (desc->priv->layout_variant); + g_assert (desc->priv->layout_option); g_assert (desc->priv->hotkeys); g_assert (desc->priv->symbol); g_assert (desc->priv->setup); + g_assert (desc->priv->version); + g_assert (desc->priv->textdomain); + g_assert (desc->priv->icon_prop_key); return desc; } diff --git a/src/ibusenginedesc.h b/src/ibusenginedesc.h index 928743e86..00a98e415 100644 --- a/src/ibusenginedesc.h +++ b/src/ibusenginedesc.h @@ -1,29 +1,33 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* bus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2015 Peng Huang + * Copyright (C) 2011-2018 Takao Fujiwara + * Copyright (C) 2008-2018 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif +#ifndef __IBUS_ENGINE_DESC_H_ +#define __IBUS_ENGINE_DESC_H_ + /** * SECTION: ibusenginedesc * @short_description: Input method engine description data. @@ -39,13 +43,10 @@ * using ibus_component_new_from_file() to load a component file, * which also includes engine description data. * - * @see_also: #IBusComponent, #IBusEngine + * see_also: #IBusComponent, #IBusEngine * */ -#ifndef __ENGINE_DESC_H_ -#define __ENGINE_DESC_H_ - #include "ibusserializable.h" #include "ibusxml.h" @@ -78,18 +79,6 @@ typedef struct _IBusEngineDescClass IBusEngineDescClass; * * Input method engine description data. * You can get extended values with g_object_get_properties. - * name: Name of the engine. - * longname: Long name of the input method engine. - * description: Input method engine description. - * language: Language (e.g. zh, jp) supported by this input method engine. - * license: License of the input method engine. - * author: Author of the input method engine. - * icon: Icon file of this engine. - * layout: Keyboard layout - * rank: Preference rank among engines, the highest ranked IME will put in - * the front. - * hotkeys: One or more hotkeys for switching to this engine, separated by - * semi-colon. */ struct _IBusEngineDesc { IBusSerializable parent; @@ -117,9 +106,14 @@ GType ibus_engine_desc_get_type (void); * @author: Author of the input method engine. * @icon: Icon file of this engine. * @layout: Keyboard layout - * @returns: A newly allocated IBusEngineDesc. * - * New a IBusEngineDesc. + * Creates a new #IBusEngineDesc. + * If layout is "default", the engine inherits the current layout and + * does not change the layout. The layouts "default" and "" are same. + * E.g. If you switch JP XKB engine and an input method engine (IME), + * the IME inherits the JP layout. + * + * Returns: A newly allocated IBusEngineDesc. */ IBusEngineDesc *ibus_engine_desc_new (const gchar *name, const gchar *longname, @@ -133,12 +127,18 @@ IBusEngineDesc *ibus_engine_desc_new (const gchar *name, /** * ibus_engine_desc_new_varargs: * @first_property_name: Name of the first property. - * @Varargs: the NULL-terminated arguments of the properties and values. + * @...: the NULL-terminated arguments of the properties and values. * - * New a IBusEngineDesc. + * Creates a new #IBusEngineDesc. * ibus_engine_desc_new_varargs() supports the va_list format. * name property is required. e.g. * ibus_engine_desc_new_varargs("name", "ibus-foo", "language", "us", NULL) + * If layout is "default", the engine inherits the current layout and + * does not change the layout. The layouts "default" and "" are same. + * E.g. If you switch JP XKB engine and an input method engine (IME), + * the IME inherits the JP layout. + * + * Returns: A newly allocated IBusEngineDesc. */ IBusEngineDesc *ibus_engine_desc_new_varargs (const gchar *first_property_name, ...); @@ -147,40 +147,44 @@ IBusEngineDesc *ibus_engine_desc_new_varargs (const gchar *first_property_nam /** * ibus_engine_desc_new_from_xml_node: * @node: An XML node - * @returns: A newly allocated IBusEngineDesc that contains description from - * @node. * - * New a IBusEngineDesc from an XML node. + * Creates a new IBusEngineDesc from an XML node. * This function is called by ibus_component_new_from_file(), * so developers normally do not need to call it directly. * + * + * Returns: A newly allocated IBusEngineDesc that contains description from + * @node. */ IBusEngineDesc *ibus_engine_desc_new_from_xml_node (XMLNode *node); /** * ibus_engine_desc_get_name: * @info: An IBusEngineDesc - * @returns: name property in IBusEngineDesc * - * Return the name property in IBusEngineDesc. It should not be freed. + * Gets the name property in IBusEngineDesc. It should not be freed. + * + * Returns: name property in IBusEngineDesc */ const gchar *ibus_engine_desc_get_name (IBusEngineDesc *info); /** * ibus_engine_desc_get_longname: * @info: An IBusEngineDesc - * @returns: longname property in IBusEngineDesc * - * Return the longname property in IBusEngineDesc. It should not be freed. + * Gets the longname property in IBusEngineDesc. It should not be freed. + * + * Returns: longname property in IBusEngineDesc */ const gchar *ibus_engine_desc_get_longname (IBusEngineDesc *info); /** * ibus_engine_desc_get_description: * @info: An IBusEngineDesc - * @returns: description property in IBusEngineDesc * - * Return the description property in IBusEngineDesc. It should not be freed. + * Gets the description property in IBusEngineDesc. It should not be freed. + * + * Returns: description property in IBusEngineDesc */ const gchar *ibus_engine_desc_get_description (IBusEngineDesc *info); @@ -188,84 +192,149 @@ const gchar *ibus_engine_desc_get_description /** * ibus_engine_desc_get_language: * @info: An IBusEngineDesc - * @returns: language property in IBusEngineDesc * - * Return the language property in IBusEngineDesc. It should not be freed. + * Gets the language property in IBusEngineDesc. It should not be freed. + * + * Returns: language property in IBusEngineDesc */ const gchar *ibus_engine_desc_get_language (IBusEngineDesc *info); + /** * ibus_engine_desc_get_license: * @info: An IBusEngineDesc - * @returns: license property in IBusEngineDesc * - * Return the license property in IBusEngineDesc. It should not be freed. + * Gets the license property in IBusEngineDesc. It should not be freed. + * + * Returns: license property in IBusEngineDesc */ const gchar *ibus_engine_desc_get_license (IBusEngineDesc *info); /** * ibus_engine_desc_get_author: * @info: An IBusEngineDesc - * @returns: author property in IBusEngineDesc * - * Return the author property in IBusEngineDesc. It should not be freed. + * Gets the author property in IBusEngineDesc. It should not be freed. + * + * Returns: author property in IBusEngineDesc */ const gchar *ibus_engine_desc_get_author (IBusEngineDesc *info); /** * ibus_engine_desc_get_icon: * @info: An IBusEngineDesc - * @returns: icon property in IBusEngineDesc * - * Return the icon property in IBusEngineDesc. It should not be freed. + * Gets the icon property in IBusEngineDesc. It should not be freed. + * + * Returns: icon property in IBusEngineDesc */ const gchar *ibus_engine_desc_get_icon (IBusEngineDesc *info); /** * ibus_engine_desc_get_layout: * @info: An IBusEngineDesc - * @returns: layout property in IBusEngineDesc * - * Return the layout property in IBusEngineDesc. It should not be freed. + * Gets the layout property in IBusEngineDesc. It should not be freed. + * + * Returns: layout property in IBusEngineDesc */ const gchar *ibus_engine_desc_get_layout (IBusEngineDesc *info); +/** + * ibus_engine_desc_get_layout_variant: + * @info: An IBusEngineDesc + * + * Gets the keyboard variant property in IBusEngineDesc. It should not be freed. + * + * Returns: keyboard variant property in IBusEngineDesc + */ +const gchar *ibus_engine_desc_get_layout_variant + (IBusEngineDesc *info); + +/** + * ibus_engine_desc_get_layout_option: + * @info: An IBusEngineDesc + * + * Gets the keyboard option property in IBusEngineDesc. It should not be freed. + * + * Returns: keyboard option property in IBusEngineDesc + */ +const gchar *ibus_engine_desc_get_layout_option + (IBusEngineDesc *info); + /** * ibus_engine_desc_get_rank: * @info: An IBusEngineDesc - * @returns: rank property in IBusEngineDesc * - * Return the rank property in IBusEngineDesc. + * Gets the rank property in IBusEngineDesc. + * + * Returns: rank property in IBusEngineDesc */ guint ibus_engine_desc_get_rank (IBusEngineDesc *info); /** * ibus_engine_desc_get_hotkeys: * @info: An IBusEngineDesc - * @returns: hotkeys property in IBusEngineDesc * - * Return the hotkeys property in IBusEngineDesc. It should not be freed. + * Gets the hotkeys property in IBusEngineDesc. It should not be freed. + * + * Returns: hotkeys property in IBusEngineDesc */ const gchar *ibus_engine_desc_get_hotkeys (IBusEngineDesc *info); /** * ibus_engine_desc_get_symbol: * @info: An IBusEngineDesc - * @returns: symbol property in IBusEngineDesc * - * Return the symbol property in IBusEngineDesc. It should not be freed. + * Gets the symbol property in IBusEngineDesc. It should not be freed. + * + * Returns: symbol property in IBusEngineDesc */ const gchar *ibus_engine_desc_get_symbol (IBusEngineDesc *info); /** * ibus_engine_desc_get_setup: * @info: An IBusEngineDesc - * @returns: setup property in IBusEngineDesc * - * Return the setup property in IBusEngineDesc. It should not be freed. + * Gets the setup property in IBusEngineDesc. It should not be freed. + * + * Returns: setup property in IBusEngineDesc */ const gchar *ibus_engine_desc_get_setup (IBusEngineDesc *info); +/** + * ibus_engine_desc_get_version: + * @info: An IBusEngineDesc + * + * Gets the version property in IBusEngineDesc. It should not be freed. + * + * Returns: version in IBusEngineDesc + */ +const gchar *ibus_engine_desc_get_version (IBusEngineDesc *info); + +/** + * ibus_engine_desc_get_textdomain: + * @info: An IBusEngineDesc + * + * Gets the textdomain property in IBusEngineDesc. It should not be freed. + * + * Returns: textdomain in IBusEngineDesc + */ +const gchar *ibus_engine_desc_get_textdomain + (IBusEngineDesc *info); + +/** + * ibus_engine_desc_get_icon_prop_key: + * @info: An IBusEngineDesc + * + * Gets the key of IBusProperty to load the panel icon dynamically + * in IBusEngineDesc. It should not be freed. + * + * Returns: IBusProperty.key for dynamic panel icon in IBusEngineDesc + */ +const gchar *ibus_engine_desc_get_icon_prop_key + (IBusEngineDesc *info); + /** * ibus_engine_desc_output: * @info: An IBusEngineDesc diff --git a/src/ibusenginesimple.c b/src/ibusenginesimple.c index d38612418..c57a3ea53 100644 --- a/src/ibusenginesimple.c +++ b/src/ibusenginesimple.c @@ -1,100 +1,155 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ +/* ibus - The Input Bus + * Copyright (C) 2014 Peng Huang + * Copyright (C) 2015-2022 Takao Fujiwara + * Copyright (C) 2014-2017 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + #ifdef HAVE_CONFIG_H # include "config.h" #endif +#include "ibuscomposetable.h" +#include "ibusemoji.h" #include "ibusenginesimple.h" +#include "ibusenginesimpleprivate.h" #include "ibuskeys.h" #include "ibuskeysyms.h" +#include "ibusutil.h" + +/* This file contains the table of the compose sequences, + * static const guint16 gtk_compose_seqs_compact[] = {} + * It is generated from the compose-parse.py script. + */ +#include "gtkimcontextsimpleseqs.h" -#include #include +#include +#define X11_DATADIR X11_DATA_PREFIX "/share/X11/locale" #define IBUS_ENGINE_SIMPLE_GET_PRIVATE(o) \ - (G_TYPE_INSTANCE_GET_PRIVATE ((o), IBUS_TYPE_ENGINE_SIMPLE, IBusEngineSimplePrivate)) + ((IBusEngineSimplePrivate *)ibus_engine_simple_get_instance_private (o)) + +#define SET_COMPOSE_BUFFER_ELEMENT_NEXT(buffer, index, value) { \ + if ((index) >= COMPOSE_BUFFER_SIZE && \ + COMPOSE_BUFFER_SIZE < IBUS_MAX_COMPOSE_LEN) { \ + COMPOSE_BUFFER_SIZE = ((index) + 10) < IBUS_MAX_COMPOSE_LEN \ + ? ((index) + 10) : IBUS_MAX_COMPOSE_LEN; \ + (buffer) = g_renew (guint16, (buffer), COMPOSE_BUFFER_SIZE + 1);\ + } \ + if ((index) < COMPOSE_BUFFER_SIZE) { \ + (buffer)[(index)] = (value); \ + (index) += 1; \ + } \ +} -typedef struct _IBusComposeTable IBusComposeTable; -struct _IBusComposeTable -{ - const guint16 *data; - gint max_seq_len; - gint n_seqs; -}; +#define SET_COMPOSE_BUFFER_ELEMENT_END(buffer, index, value) { \ + if ((index) > COMPOSE_BUFFER_SIZE) \ + (index) = COMPOSE_BUFFER_SIZE; \ + (buffer)[(index)] = (value); \ +} -typedef struct _IBusComposeTableCompact IBusComposeTableCompact; -struct _IBusComposeTableCompact -{ - const guint16 *data; - gint max_seq_len; - gint n_index_size; - gint n_index_stride; -}; +#define CHECK_COMPOSE_BUFFER_LENGTH(index) { \ + if ((index) > COMPOSE_BUFFER_SIZE) \ + (index) = COMPOSE_BUFFER_SIZE; \ +} +typedef struct { + GHashTable *dict; + int max_seq_len; +} IBusEngineDict; -typedef struct _IBusEngineSimplePrivate IBusEngineSimplePrivate; struct _IBusEngineSimplePrivate { - GSList *tables; - guint compose_buffer[IBUS_MAX_COMPOSE_LEN + 1]; - gunichar tentative_match; - gint tentative_match_len; - - guint in_hex_sequence : 1; - guint modifiers_dropped : 1; + guint16 *compose_buffer; + GString *tentative_match; + int tentative_match_len; + char *tentative_emoji; + + guint hex_mode_enabled : 1; + guint in_hex_sequence : 1; + guint in_emoji_sequence : 1; + guint in_compose_sequence : 1; + guint modifiers_dropped : 1; + IBusEngineDict *emoji_dict; + IBusLookupTable *lookup_table; + gboolean lookup_table_visible; }; -/* This file contains the table of the compose sequences, - * static const guint16 ibus_compose_seqs_compact[] = {} - * IT is generated from the compose-parse.py script. - */ -#include "gtkimcontextsimpleseqs.h" - -/* From the values below, the value 24 means the number of different first keysyms +/* From the values below, the value 30 means the number of different first keysyms * that exist in the Compose file (from Xorg). When running compose-parse.py without * parameters, you get the count that you can put here. Needed when updating the * gtkimcontextsimpleseqs.h header file (contains the compose sequences). + * Assign the value of "Number of different first items" of compose-parse.py + * to n_seqs in IBusComposeTableCompact */ -static const IBusComposeTableCompact ibus_compose_table_compact = { +IBusComposeTableCompactPrivate ibus_compose_table_compact_32bit_priv = { + gtk_compose_seqs_compact_32bit_second +}; + +const IBusComposeTableCompactEx ibus_compose_table_compact = { + NULL, gtk_compose_seqs_compact, 5, - 24, + 30, 6 }; -static const guint16 ibus_compose_ignore[] = { - IBUS_KEY_Shift_L, - IBUS_KEY_Shift_R, - IBUS_KEY_Control_L, - IBUS_KEY_Control_R, - IBUS_KEY_Caps_Lock, - IBUS_KEY_Shift_Lock, - IBUS_KEY_Meta_L, - IBUS_KEY_Meta_R, - IBUS_KEY_Alt_L, - IBUS_KEY_Alt_R, - IBUS_KEY_Super_L, - IBUS_KEY_Super_R, - IBUS_KEY_Hyper_L, - IBUS_KEY_Hyper_R, - IBUS_KEY_Mode_switch, - IBUS_KEY_ISO_Level3_Shift +const IBusComposeTableCompactEx ibus_compose_table_compact_32bit = { + &ibus_compose_table_compact_32bit_priv, + gtk_compose_seqs_compact_32bit_first, + 5, + 9, + 6 }; +guint COMPOSE_BUFFER_SIZE = 20; +G_LOCK_DEFINE_STATIC (global_tables); +static GSList *global_tables; + /* functions prototype */ static void ibus_engine_simple_destroy (IBusEngineSimple *simple); +static void ibus_engine_simple_focus_in (IBusEngine *engine); +static void ibus_engine_simple_focus_out (IBusEngine *engine); static void ibus_engine_simple_reset (IBusEngine *engine); static gboolean ibus_engine_simple_process_key_event (IBusEngine *engine, guint keyval, guint keycode, guint modifiers); +static void ibus_engine_simple_page_down (IBusEngine *engine); +static void ibus_engine_simple_page_up (IBusEngine *engine); +static void ibus_engine_simple_candidate_clicked + (IBusEngine *engine, + guint index, + guint button, + guint state); static void ibus_engine_simple_commit_char (IBusEngineSimple *simple, gunichar ch); +static void ibus_engine_simple_commit_str (IBusEngineSimple *simple, + const char *str); static void ibus_engine_simple_update_preedit_text (IBusEngineSimple *simple); -G_DEFINE_TYPE (IBusEngineSimple, ibus_engine_simple, IBUS_TYPE_ENGINE) +G_DEFINE_TYPE_WITH_PRIVATE (IBusEngineSimple, + ibus_engine_simple, + IBUS_TYPE_ENGINE) static void ibus_engine_simple_class_init (IBusEngineSimpleClass *class) @@ -105,17 +160,27 @@ ibus_engine_simple_class_init (IBusEngineSimpleClass *class) ibus_object_class->destroy = (IBusObjectDestroyFunc) ibus_engine_simple_destroy; + engine_class->focus_in = ibus_engine_simple_focus_in; + engine_class->focus_out = ibus_engine_simple_focus_out; engine_class->reset = ibus_engine_simple_reset; engine_class->process_key_event = ibus_engine_simple_process_key_event; - - g_type_class_add_private (class, sizeof (IBusEngineSimplePrivate)); + engine_class->page_down = ibus_engine_simple_page_down; + engine_class->page_up = ibus_engine_simple_page_up; + engine_class->candidate_clicked + = ibus_engine_simple_candidate_clicked; } static void ibus_engine_simple_init (IBusEngineSimple *simple) { simple->priv = IBUS_ENGINE_SIMPLE_GET_PRIVATE (simple); + simple->priv->compose_buffer = g_new0(guint16, COMPOSE_BUFFER_SIZE + 1); + simple->priv->hex_mode_enabled = + g_getenv("IBUS_ENABLE_CTRL_SHIFT_U") != NULL || + g_getenv("IBUS_ENABLE_CONTROL_SHIFT_U") != NULL; + simple->priv->tentative_match = g_string_new (""); + simple->priv->tentative_match_len = 0; } @@ -124,13 +189,37 @@ ibus_engine_simple_destroy (IBusEngineSimple *simple) { IBusEngineSimplePrivate *priv = simple->priv; - g_slist_free_full (priv->tables, g_free); - priv->tables = NULL; + if (priv->emoji_dict) { + if (priv->emoji_dict->dict) + g_clear_pointer (&priv->emoji_dict->dict, g_hash_table_destroy); + g_slice_free (IBusEngineDict, priv->emoji_dict); + priv->emoji_dict = NULL; + } + + g_clear_object (&priv->lookup_table); + g_clear_pointer (&priv->compose_buffer, g_free); + g_clear_pointer (&priv->tentative_emoji, g_free); + g_string_free (priv->tentative_match, TRUE); + priv->tentative_match = NULL; + priv->tentative_match_len = 0; IBUS_OBJECT_CLASS(ibus_engine_simple_parent_class)->destroy ( IBUS_OBJECT (simple)); } +static void +ibus_engine_simple_focus_in (IBusEngine *engine) +{ + IBUS_ENGINE_CLASS (ibus_engine_simple_parent_class)->focus_in (engine); +} + +static void +ibus_engine_simple_focus_out (IBusEngine *engine) +{ + ibus_engine_simple_reset (engine); + IBUS_ENGINE_CLASS (ibus_engine_simple_parent_class)->focus_out (engine); +} + static void ibus_engine_simple_reset (IBusEngine *engine) { @@ -139,12 +228,18 @@ ibus_engine_simple_reset (IBusEngine *engine) priv->compose_buffer[0] = 0; - if (priv->tentative_match || priv->in_hex_sequence) { + if (priv->tentative_match->len > 0 || priv->in_hex_sequence) { priv->in_hex_sequence = FALSE; - priv->tentative_match = 0; + g_string_set_size (priv->tentative_match, 0); + priv->tentative_match_len = 0; + } else if (priv->tentative_emoji || priv->in_emoji_sequence) { + priv->in_emoji_sequence = FALSE; + g_clear_pointer (&priv->tentative_emoji, g_free); + } else if (!priv->in_hex_sequence && !priv->in_emoji_sequence) { + g_string_set_size (priv->tentative_match, 0); priv->tentative_match_len = 0; - ibus_engine_hide_preedit_text ((IBusEngine *)simple); } + ibus_engine_hide_preedit_text ((IBusEngine *)simple); } static void @@ -155,52 +250,149 @@ ibus_engine_simple_commit_char (IBusEngineSimple *simple, IBusEngineSimplePrivate *priv = simple->priv; - if (priv->tentative_match || priv->in_hex_sequence) { + if (priv->in_hex_sequence || + priv->tentative_match_len > 0 || + priv->compose_buffer[0] != 0) { + g_string_set_size (priv->tentative_match, 0); + priv->tentative_match_len = 0; priv->in_hex_sequence = FALSE; - priv->tentative_match = 0; + priv->in_compose_sequence = FALSE; + priv->compose_buffer[0] = 0; + /* Don't call ibus_engine_simple_update_preedit_text() inside + * not to call it as duplilcated. + */ + } + if (priv->tentative_emoji || priv->in_emoji_sequence) { + priv->in_emoji_sequence = FALSE; + g_clear_pointer (&priv->tentative_emoji, g_free); + } + ibus_engine_commit_text ((IBusEngine *)simple, + ibus_text_new_from_unichar (ch)); +} + + +static void +ibus_engine_simple_commit_str (IBusEngineSimple *simple, + const char *str) +{ + IBusEngineSimplePrivate *priv = simple->priv; + char *backup_str; + + g_return_if_fail (str && *str); + + backup_str = g_strdup (str); + + if (priv->in_hex_sequence || + priv->tentative_match_len > 0 || + priv->compose_buffer[0] != 0) { + g_string_set_size (priv->tentative_match, 0); priv->tentative_match_len = 0; - ibus_engine_simple_update_preedit_text (simple); + priv->in_hex_sequence = FALSE; + priv->in_compose_sequence = FALSE; + priv->compose_buffer[0] = 0; + /* Don't call ibus_engine_simple_update_preedit_text() inside + * not to call it as duplilcated. + */ + } + if (priv->tentative_emoji || priv->in_emoji_sequence) { + priv->in_emoji_sequence = FALSE; + g_clear_pointer (&priv->tentative_emoji, g_free); } ibus_engine_commit_text ((IBusEngine *)simple, - ibus_text_new_from_unichar (ch)); + ibus_text_new_from_string (backup_str)); + g_free (backup_str); } static void ibus_engine_simple_update_preedit_text (IBusEngineSimple *simple) { IBusEngineSimplePrivate *priv = simple->priv; + GString *s = g_string_new (""); + int i, j; - gunichar outbuf[IBUS_MAX_COMPOSE_LEN + 2]; - int len = 0; - - if (priv->in_hex_sequence) { + if (priv->in_hex_sequence || priv->in_emoji_sequence) { int hexchars = 0; - outbuf[0] = L'u'; - len = 1; + if (priv->in_hex_sequence) + g_string_append_c (s, 'u'); + else + g_string_append_c (s, '@'); while (priv->compose_buffer[hexchars] != 0) { - outbuf[len] = ibus_keyval_to_unicode ( - priv->compose_buffer[hexchars]); - ++len; - ++hexchars; + g_string_append_unichar( + s, + ibus_keyval_to_unicode (priv->compose_buffer[hexchars++]) + ); + } + } else if (priv->tentative_emoji && *priv->tentative_emoji) { + IBusText *text = ibus_text_new_from_string (priv->tentative_emoji); + int len = strlen (priv->tentative_emoji); + ibus_text_append_attribute (text, + IBUS_ATTR_TYPE_UNDERLINE, IBUS_ATTR_UNDERLINE_SINGLE, 0, len); + ibus_engine_update_preedit_text ((IBusEngine *)simple, text, len, TRUE); + g_string_free (s, TRUE); + return; + } else if (priv->in_compose_sequence) { + if (priv->tentative_match->len > 0 && priv->compose_buffer[0] != 0) { + g_string_append (s, priv->tentative_match->str); + } else { + for (i = 0; priv->compose_buffer[i]; ++i) { + guint16 keysym = priv->compose_buffer[i]; + gboolean show_keysym = TRUE; + gboolean need_space = FALSE; + gunichar ch; + + if (keysym == IBUS_KEY_Multi_key) { + /* We only show the Compose key visibly when it is the + * only glyph in the preedit, or when it occurs in the + * middle of the sequence. Sadly, the official character, + * U+2384, COMPOSITION SYMBOL, is bit too distracting, so + * we use U+00B7, MIDDLE DOT. + */ + for (j = i + 1; priv->compose_buffer[j]; j++) { + if (priv->compose_buffer[j] != IBUS_KEY_Multi_key) { + show_keysym = FALSE; + break; + } + } + if (!show_keysym) + continue; + ch = ibus_keysym_to_unicode (keysym, FALSE, NULL); + g_string_append_unichar (s, ch); + } else if (IS_DEAD_KEY (keysym)) { + ch = ibus_keysym_to_unicode (keysym, FALSE, &need_space); + if (ch) { + if (need_space) + g_string_append_c (s, ' '); + g_string_append_unichar (s, ch); + } + } else { + ch = ibus_keyval_to_unicode (keysym); + if (ch) + g_string_append_unichar(s, ch); + } + if (!ch) { + g_warning ( + "Not found alternative character of compose key 0x%X", + priv->compose_buffer[i]); + } + } } - g_assert (len <= IBUS_MAX_COMPOSE_LEN + 1); } - else if (priv->tentative_match) - outbuf[len++] = priv->tentative_match; - outbuf[len] = L'\0'; - if (len == 0) { + if (s->len == 0) { ibus_engine_hide_preedit_text ((IBusEngine *)simple); - } - else { - IBusText *text = ibus_text_new_from_ucs4 (outbuf); + } else if (s->len >= G_MAXINT) { + g_warning ("%s is too long compose length: %lu", s->str, s->len); + } else { + guint len = (guint)g_utf8_strlen (s->str, -1); + IBusText *text = ibus_text_new_from_string (s->str); ibus_text_append_attribute (text, IBUS_ATTR_TYPE_UNDERLINE, IBUS_ATTR_UNDERLINE_SINGLE, 0, len); ibus_engine_update_preedit_text ((IBusEngine *)simple, text, len, TRUE); } + g_string_free (s, TRUE); } @@ -223,17 +415,19 @@ ibus_engine_simple_update_preedit_text (IBusEngineSimple *simple) static gboolean check_hex (IBusEngineSimple *simple, - gint n_compose) + int n_compose) { IBusEngineSimplePrivate *priv = simple->priv; - gint i; + int i; GString *str; gulong n; - gchar *nptr = NULL; - gchar buf[7]; + char *nptr = NULL; + char buf[7]; - priv->tentative_match = 0; + CHECK_COMPOSE_BUFFER_LENGTH (n_compose); + + g_string_set_size (priv->tentative_match, 0); priv->tentative_match_len = 0; str = g_string_new (NULL); @@ -244,11 +438,15 @@ check_hex (IBusEngineSimple *simple, ch = ibus_keyval_to_unicode (priv->compose_buffer[i]); - if (ch == 0) + if (ch == 0) { + g_string_free (str, TRUE); return FALSE; + } - if (!g_unichar_isxdigit (ch)) + if (!g_unichar_isxdigit (ch)) { + g_string_free (str, TRUE); return FALSE; + } buf[g_unichar_to_utf8 (ch, buf)] = '\0'; @@ -265,413 +463,470 @@ check_hex (IBusEngineSimple *simple, if (nptr - str->str < str->len) { g_string_free (str, TRUE); return FALSE; - } else + } else { g_string_free (str, TRUE); + } if (g_unichar_validate (n)) { - priv->tentative_match = n; + g_string_set_size (priv->tentative_match, 0); + g_string_append_unichar (priv->tentative_match, n); priv->tentative_match_len = n_compose; } return TRUE; } -static int -compare_seq_index (const void *key, const void *value) +static IBusEngineDict * +load_emoji_dict () { - const guint *keysyms = key; - const guint16 *seq = value; - - if (keysyms[0] < seq[0]) - return -1; - else if (keysyms[0] > seq[0]) - return 1; - return 0; -} - -static int -compare_seq (const void *key, const void *value) -{ - int i = 0; - const guint *keysyms = key; - const guint16 *seq = value; - - while (keysyms[i]) { - if (keysyms[i] < seq[i]) - return -1; - else if (keysyms[i] > seq[i]) - return 1; - - i++; + IBusEngineDict *emoji_dict; + GList *keys; + int max_length = 0; + + emoji_dict = g_slice_new0 (IBusEngineDict); + emoji_dict->dict = ibus_emoji_dict_load (IBUS_DATA_DIR "/dicts/emoji.dict"); + if (!emoji_dict->dict) + return emoji_dict; + + keys = g_hash_table_get_keys (emoji_dict->dict); + for (; keys; keys = keys->next) { + int length = strlen (keys->data); + if (max_length < length) + max_length = length; } + emoji_dict->max_seq_len = max_length; - return 0; + return emoji_dict; } - static gboolean -check_table (IBusEngineSimple *simple, - IBusComposeTable *table, - gint n_compose) +check_emoji_table (IBusEngineSimple *simple, + int n_compose, + int index) { - // g_debug("check_table"); IBusEngineSimplePrivate *priv = simple->priv; - gint row_stride = table->max_seq_len + 2; - guint16 *seq; + IBusEngineDict *emoji_dict = priv->emoji_dict; + GString *str = NULL; + int i; + char buf[7]; + GSList *words = NULL; g_assert (IBUS_IS_ENGINE_SIMPLE (simple)); - if (n_compose > table->max_seq_len) - return FALSE; + CHECK_COMPOSE_BUFFER_LENGTH (n_compose); - seq = bsearch (priv->compose_buffer, - table->data, table->n_seqs, - sizeof (guint16) * row_stride, - compare_seq); + if (priv->lookup_table == NULL) { + priv->lookup_table = ibus_lookup_table_new (10, 0, TRUE, TRUE); + g_object_ref_sink (priv->lookup_table); + } + if (emoji_dict == NULL) + emoji_dict = priv->emoji_dict = load_emoji_dict (simple); - if (seq == NULL) + if (emoji_dict == NULL || emoji_dict->dict == NULL) return FALSE; - guint16 *prev_seq; - - /* Back up to the first sequence that matches to make sure - * we find the exact match if their is one. - */ - while (seq > table->data) { - prev_seq = seq - row_stride; - if (compare_seq (priv->compose_buffer, prev_seq) != 0) { - break; - } - seq = prev_seq; - } + if (n_compose > emoji_dict->max_seq_len) + return FALSE; - /* complete sequence */ - if (n_compose == table->max_seq_len || seq[n_compose] == 0) { - guint16 *next_seq; - gunichar value = - 0x10000 * seq[table->max_seq_len] + seq[table->max_seq_len + 1]; + str = g_string_new (NULL); + priv->lookup_table_visible = FALSE; - /* We found a tentative match. See if there are any longer - * sequences containing this subsequence - */ - next_seq = seq + row_stride; - if (next_seq < table->data + row_stride * table->n_seqs) { - if (compare_seq (priv->compose_buffer, next_seq) == 0) { - priv->tentative_match = value; - priv->tentative_match_len = n_compose; + i = 0; + while (i < n_compose) { + gunichar ch; - ibus_engine_simple_update_preedit_text (simple); + ch = ibus_keyval_to_unicode (priv->compose_buffer[i]); - return TRUE; - } + if (ch == 0) { + g_string_free (str, TRUE); + return FALSE; } - ibus_engine_simple_commit_char (simple, value); - // g_debug ("U+%04X\n", value); - priv->compose_buffer[0] = 0; - } - return TRUE; -} - -static gboolean -check_compact_table (IBusEngineSimple *simple, - const IBusComposeTableCompact *table, - gint n_compose) -{ - IBusEngineSimplePrivate *priv = simple->priv; + if (!g_unichar_isprint (ch)) { + g_string_free (str, TRUE); + return FALSE; + } - gint row_stride; - guint16 *seq_index; - guint16 *seq; - gint i; + buf[g_unichar_to_utf8 (ch, buf)] = '\0'; - /* Will never match, if the sequence in the compose buffer is longer - * than the sequences in the table. Further, compare_seq (key, val) - * will overrun val if key is longer than val. */ - if (n_compose > table->max_seq_len) - return FALSE; + g_string_append (str, buf); - // g_debug ("check_compact_table(n_compose=%d) [%04x, %04x, %04x, %04x]", - // n_compose, - // priv->compose_buffer[0], - // priv->compose_buffer[1], - // priv->compose_buffer[2], - // priv->compose_buffer[3]); - - seq_index = bsearch (priv->compose_buffer, - table->data, - table->n_index_size, - sizeof (guint16) * table->n_index_stride, - compare_seq_index); - - if (seq_index == NULL) { - // g_debug ("compact: no\n"); - return FALSE; + ++i; } - if (n_compose == 1) { - // g_debug ("compact: yes\n"); - return TRUE; + if (str->str) { + words = g_hash_table_lookup (emoji_dict->dict, str->str); } + g_string_free (str, TRUE); - // g_debug ("compact: %04x ", *seq_index); - seq = NULL; - - for (i = n_compose - 1; i < table->max_seq_len; i++) { - row_stride = i + 1; + if (words != NULL) { + int i = 0; + ibus_lookup_table_clear (priv->lookup_table); + priv->lookup_table_visible = TRUE; - if (seq_index[i + 1] - seq_index[i] > 0) { - seq = bsearch (priv->compose_buffer + 1, - table->data + seq_index[i], - (seq_index[i + 1] - seq_index[i]) / row_stride, - sizeof (guint16) * row_stride, - compare_seq); - // g_debug ("seq = %p", seq); - - if (seq) { - if (i == n_compose - 1) - break; - else { - ibus_engine_simple_update_preedit_text (simple); - // g_debug ("yes\n"); - return TRUE; - } + while (words) { + if (i == index) { + g_clear_pointer (&priv->tentative_emoji, g_free); + priv->tentative_emoji = g_strdup (words->data); } + IBusText *text = ibus_text_new_from_string (words->data); + ibus_lookup_table_append_candidate (priv->lookup_table, text); + words = words->next; + i++; } - } - - if (!seq) { - // g_debug ("no\n"); - return FALSE; - } - else { - gunichar value; - - value = seq[row_stride - 1]; - ibus_engine_simple_commit_char (simple, value); - priv->compose_buffer[0] = 0; - - // g_debug ("U+%04X\n", value); return TRUE; } + + return FALSE; } -/* Checks if a keysym is a dead key. Dead key keysym values are defined in - * ../gdk/gdkkeysyms.h and the first is GDK_KEY_dead_grave. As X.Org is updated, - * more dead keys are added and we need to update the upper limit. - * Currently, the upper limit is GDK_KEY_dead_dasia+1. The +1 has to do with - * a temporary issue in the X.Org header files. - * In future versions it will be just the keysym (no +1). - */ -#define IS_DEAD_KEY(k) \ - ((k) >= IBUS_KEY_dead_grave && (k) <= (IBUS_KEY_dead_dasia + 1)) - -/* This function receives a sequence of Unicode characters and tries to - * normalize it (NFC). We check for the case the the resulting string - * has length 1 (single character). - * NFC normalisation normally rearranges diacritic marks, unless these - * belong to the same Canonical Combining Class. - * If they belong to the same canonical combining class, we produce all - * permutations of the diacritic marks, then attempt to normalize. - */ + static gboolean -check_normalize_nfc (gunichar* combination_buffer, gint n_compose) +no_sequence_matches (IBusEngineSimple *simple, + int n_compose, + guint keyval, + guint keycode, + guint modifiers) { - gunichar combination_buffer_temp[IBUS_MAX_COMPOSE_LEN]; - gchar *combination_utf8_temp = NULL; - gchar *nfc_temp = NULL; - gint n_combinations; - gunichar temp_swap; - gint i; + IBusEngineSimplePrivate *priv = simple->priv; - n_combinations = 1; + gunichar ch; - for (i = 1; i < n_compose; i++ ) - n_combinations *= i; + CHECK_COMPOSE_BUFFER_LENGTH (n_compose); - /* Xorg reuses dead_tilde for the perispomeni diacritic mark. - * We check if base character belongs to Greek Unicode block, - * and if so, we replace tilde with perispomeni. */ - if (combination_buffer[0] >= 0x390 && combination_buffer[0] <= 0x3FF) { - for (i = 1; i < n_compose; i++ ) - if (combination_buffer[i] == 0x303) - combination_buffer[i] = 0x342; - } + priv->in_compose_sequence = FALSE; - memcpy (combination_buffer_temp, - combination_buffer, - IBUS_MAX_COMPOSE_LEN * sizeof (gunichar) ); + /* No compose sequences found, check first if we have a partial + * match pending. + */ + if (priv->tentative_match_len > 0) { + guint16 *compose_buffer; + int len = priv->tentative_match_len; + int i; + char *str; - for (i = 0; i < n_combinations; i++ ) { - g_unicode_canonical_ordering (combination_buffer_temp, n_compose); - combination_utf8_temp = g_ucs4_to_utf8 (combination_buffer_temp, -1, NULL, NULL, NULL); - nfc_temp = g_utf8_normalize (combination_utf8_temp, -1, G_NORMALIZE_NFC); + compose_buffer = alloca (sizeof (guint16) * COMPOSE_BUFFER_SIZE); + memcpy (compose_buffer, + priv->compose_buffer, + sizeof (guint16) * COMPOSE_BUFFER_SIZE); - if (g_utf8_strlen (nfc_temp, -1) == 1) { - memcpy (combination_buffer, - combination_buffer_temp, - IBUS_MAX_COMPOSE_LEN * sizeof (gunichar) ); + str = g_strdup (priv->tentative_match->str); + ibus_engine_simple_commit_str (simple, str); + g_free (str); + ibus_engine_simple_update_preedit_text (simple); - g_free (combination_utf8_temp); - g_free (nfc_temp); + for (i=0; i < n_compose - len - 1; i++) { + ibus_engine_simple_process_key_event ( + (IBusEngine *)simple, + compose_buffer[len + i], + 0, 0); + } + return ibus_engine_simple_process_key_event ( + (IBusEngine *)simple, keyval, keycode, modifiers); + } else if (priv->tentative_emoji && *priv->tentative_emoji) { + ibus_engine_simple_commit_str (simple, priv->tentative_emoji); + priv->compose_buffer[0] = 0; + ibus_engine_simple_update_preedit_text (simple); + } else { + if (n_compose == 2 && IS_DEAD_KEY (priv->compose_buffer[0])) { + gboolean need_space = FALSE; + GString *s = g_string_new (""); + /* dead keys are never *really* dead */ + ch = ibus_keysym_to_unicode (priv->compose_buffer[0], + FALSE, &need_space); + if (ch) { + if (need_space) + g_string_append_c (s, ' '); + g_string_append_unichar (s, ch); + } + ch = ibus_keyval_to_unicode (priv->compose_buffer[1]); + if (ch != 0 && !g_unichar_iscntrl (ch)) + g_string_append_unichar (s, ch); + ibus_engine_simple_commit_str (simple, s->str); + g_string_free (s, TRUE); + ibus_engine_simple_update_preedit_text (simple); return TRUE; } - g_free (combination_utf8_temp); - g_free (nfc_temp); + priv->compose_buffer[0] = 0; + if (n_compose > 1) { + /* Invalid sequence */ + // FIXME beep_window (event->window); + ibus_engine_simple_update_preedit_text (simple); + return TRUE; + } - if (n_compose > 2) { - temp_swap = combination_buffer_temp[i % (n_compose - 1) + 1]; - combination_buffer_temp[i % (n_compose - 1) + 1] = combination_buffer_temp[(i+1) % (n_compose - 1) + 1]; - combination_buffer_temp[(i+1) % (n_compose - 1) + 1] = temp_swap; + ibus_engine_simple_update_preedit_text (simple); + ch = ibus_keyval_to_unicode (keyval); + /* IBUS_CHANGE: RH#769133 + * Since we use ibus xkb engines as the disable state, + * do not commit the characters locally without in_hex_sequence. */ + if (ch != 0 && !g_unichar_iscntrl (ch) && + priv->in_hex_sequence) { + return TRUE; + } else { + return FALSE; } - else - break; } - return FALSE; } static gboolean -check_algorithmically (IBusEngineSimple *simple, - gint n_compose) +is_hex_keyval (guint keyval) +{ + gunichar ch = ibus_keyval_to_unicode (keyval); + return g_unichar_isxdigit (ch); +} + +static gboolean +is_graph_keyval (guint keyval) { - IBusEngineSimplePrivate *priv = simple->priv; + gunichar ch = ibus_keyval_to_unicode (keyval); - gint i; - gunichar combination_buffer[IBUS_MAX_COMPOSE_LEN]; - gchar *combination_utf8, *nfc; + return g_unichar_isgraph (ch); +} + +static void +ibus_engine_simple_update_lookup_and_aux_table (IBusEngineSimple *simple) +{ + IBusEngineSimplePrivate *priv; + guint index, candidates; + char *aux_label = NULL; + IBusText *text = NULL; - if (n_compose >= IBUS_MAX_COMPOSE_LEN) + g_return_if_fail (IBUS_IS_ENGINE_SIMPLE (simple)); + + priv = simple->priv; + index = ibus_lookup_table_get_cursor_pos (priv->lookup_table) + 1; + candidates = ibus_lookup_table_get_number_of_candidates(priv->lookup_table); + aux_label = g_strdup_printf ("(%u / %u)", index, candidates); + text = ibus_text_new_from_string (aux_label); + g_free (aux_label); + + ibus_engine_update_auxiliary_text (IBUS_ENGINE (simple), + text, + priv->lookup_table_visible); + ibus_engine_update_lookup_table (IBUS_ENGINE (simple), + priv->lookup_table, + priv->lookup_table_visible); +} + +static gboolean +ibus_engine_simple_if_in_range_of_lookup_table (IBusEngineSimple *simple, + guint keyval) +{ + IBusEngineSimplePrivate *priv; + int index, candidates, cursor_pos, cursor_in_page, page_size; + + priv = simple->priv; + + if (priv->lookup_table == NULL || !priv->lookup_table_visible) + return FALSE; + if (keyval < IBUS_KEY_0 || keyval > IBUS_KEY_9) + return FALSE; + if (keyval == IBUS_KEY_0) + keyval = IBUS_KEY_9 + 1; + index = keyval - IBUS_KEY_1; + candidates = + ibus_lookup_table_get_number_of_candidates (priv->lookup_table); + cursor_pos = ibus_lookup_table_get_cursor_pos (priv->lookup_table); + cursor_in_page = ibus_lookup_table_get_cursor_in_page (priv->lookup_table); + page_size = ibus_lookup_table_get_page_size (priv->lookup_table); + if (index > ((candidates - (cursor_pos - cursor_in_page)) % page_size)) return FALSE; + return TRUE; +} - for (i = 0; i < n_compose && IS_DEAD_KEY (priv->compose_buffer[i]); i++) - ; - if (i == n_compose) - return TRUE; +static void +ibus_engine_simple_set_number_on_lookup_table (IBusEngineSimple *simple, + guint keyval, + int n_compose) +{ + IBusEngineSimplePrivate *priv; + int index, cursor_pos, cursor_in_page, real_index; - if (i > 0 && i == n_compose - 1) { - combination_buffer[0] = ibus_keyval_to_unicode (priv->compose_buffer[i]); - combination_buffer[n_compose] = 0; - i--; - while (i >= 0) { - switch (priv->compose_buffer[i]) { -#define CASE(keysym, unicode) \ - case IBUS_KEY_dead_##keysym: \ - combination_buffer[i+1] = unicode; \ - break - CASE (grave, 0x0300); - CASE (acute, 0x0301); - CASE (circumflex, 0x0302); - CASE (tilde, 0x0303); /* Also used with perispomeni, 0x342. */ - CASE (macron, 0x0304); - CASE (breve, 0x0306); - CASE (abovedot, 0x0307); - CASE (diaeresis, 0x0308); - CASE (hook, 0x0309); - CASE (abovering, 0x030A); - CASE (doubleacute, 0x030B); - CASE (caron, 0x030C); - CASE (abovecomma, 0x0313); /* Equivalent to psili */ - CASE (abovereversedcomma, 0x0314); /* Equivalent to dasia */ - CASE (horn, 0x031B); /* Legacy use for psili, 0x313 (or 0x343). */ - CASE (belowdot, 0x0323); - CASE (cedilla, 0x0327); - CASE (ogonek, 0x0328); /* Legacy use for dasia, 0x314.*/ - CASE (iota, 0x0345); - CASE (voiced_sound, 0x3099); /* Per Markus Kuhn keysyms.txt file. */ - CASE (semivoiced_sound, 0x309A); /* Per Markus Kuhn keysyms.txt file. */ - - /* The following cases are to be removed once xkeyboard-config, - * xorg are fully updated. - */ - /* Workaround for typo in 1.4.x xserver-xorg */ - case 0xfe66: combination_buffer[i+1] = 0x314; break; - /* CASE (dasia, 0x314); */ - /* CASE (perispomeni, 0x342); */ - /* CASE (psili, 0x343); */ -#undef CASE - default: - combination_buffer[i+1] = ibus_keyval_to_unicode (priv->compose_buffer[i]); - } - i--; - } - - /* If the buffer normalizes to a single character, - * then modify the order of combination_buffer accordingly, if necessary, - * and return TRUE. - */ - if (check_normalize_nfc (combination_buffer, n_compose)) { - gunichar value; - combination_utf8 = g_ucs4_to_utf8 (combination_buffer, -1, NULL, NULL, NULL); - nfc = g_utf8_normalize (combination_utf8, -1, G_NORMALIZE_NFC); + priv = simple->priv; - value = g_utf8_get_char (nfc); - ibus_engine_simple_commit_char (simple, value); - priv->compose_buffer[0] = 0; + if (keyval == IBUS_KEY_0) + keyval = IBUS_KEY_9 + 1; + index = keyval - IBUS_KEY_1; + cursor_pos = ibus_lookup_table_get_cursor_pos (priv->lookup_table); + cursor_in_page = ibus_lookup_table_get_cursor_in_page (priv->lookup_table); + real_index = cursor_pos - cursor_in_page + index; - g_free (combination_utf8); - g_free (nfc); + ibus_lookup_table_set_cursor_pos (priv->lookup_table, real_index); + check_emoji_table (simple, n_compose, real_index); + priv->lookup_table_visible = FALSE; + ibus_engine_simple_update_lookup_and_aux_table (simple); - return TRUE; - } + if (priv->tentative_emoji && *priv->tentative_emoji) { + ibus_engine_simple_commit_str (simple, priv->tentative_emoji); + priv->compose_buffer[0] = 0; + } else { + g_clear_pointer (&priv->tentative_emoji, g_free); + priv->in_emoji_sequence = FALSE; + priv->compose_buffer[0] = 0; } - return FALSE; + ibus_engine_simple_update_preedit_text (simple); } + static gboolean -no_sequence_matches (IBusEngineSimple *simple, - gint n_compose, - guint keyval, - guint keycode, - guint modifiers) +ibus_engine_simple_check_all_compose_table (IBusEngineSimple *simple, + int n_compose) { IBusEngineSimplePrivate *priv = simple->priv; - - gunichar ch; - - /* No compose sequences found, check first if we have a partial - * match pending. + GSList *tmp_list; + gboolean compose_finish = FALSE; + gboolean compose_match = FALSE; + GString *output = g_string_new (""); + gboolean success = FALSE; + gboolean is_32bit = FALSE; + gunichar *output_chars = NULL; + gunichar output_char = '\0'; + + /* GtkIMContextSimple output the first compose char in case of + * n_compose == 2 but it does not work in fi_FI copmose to output U+1EDD + * with the following sequence: + * : "ờ" U1EDD */ - if (priv->tentative_match) { - gint len = priv->tentative_match_len; - int i; - - ibus_engine_simple_commit_char (simple, - priv->tentative_match); - priv->compose_buffer[0] = 0; - for (i=0; i < n_compose - len - 1; i++) { - ibus_engine_simple_process_key_event ( - (IBusEngine *)simple, - priv->compose_buffer[len + i], - 0, 0); + G_LOCK (global_tables); + tmp_list = global_tables; + while (tmp_list) { + is_32bit = FALSE; + if (ibus_compose_table_check ( + (IBusComposeTableEx *)tmp_list->data, + priv->compose_buffer, + n_compose, + &compose_finish, + &compose_match, + output, + is_32bit)) { + success = TRUE; + break; } - - return ibus_engine_simple_process_key_event ( - (IBusEngine *)simple, keyval, keycode, modifiers); + is_32bit = TRUE; + if (ibus_compose_table_check ( + (IBusComposeTableEx *)tmp_list->data, + priv->compose_buffer, + n_compose, + &compose_finish, + &compose_match, + output, + is_32bit)) { + success = TRUE; + break; + } + tmp_list = tmp_list->next; } - else { - priv->compose_buffer[0] = 0; - if (n_compose > 1) { - /* Invalid sequence */ - // FIXME beep_window (event->window); + G_UNLOCK (global_tables); + + if (success) { + priv->in_compose_sequence = TRUE; + if (compose_finish) { + if (compose_match) { + if (is_32bit) { + ibus_engine_simple_commit_str (simple, output->str); + } else { + ibus_engine_simple_commit_char (simple, + g_utf8_get_char (output->str)); + } + } + ibus_engine_simple_update_preedit_text (simple); + g_string_free (output, TRUE); + return TRUE; + } else if (compose_match) { + g_string_assign (priv->tentative_match, output->str); + priv->tentative_match_len = n_compose; + ibus_engine_simple_update_preedit_text (simple); + g_string_free (output, TRUE); return TRUE; } - - ch = ibus_keyval_to_unicode (keyval); - if (ch != 0 && !g_unichar_iscntrl (ch)) { - ibus_engine_simple_commit_char (simple, ch); + } + g_string_free (output, TRUE); + output = NULL; + + if (ibus_compose_table_compact_check (&ibus_compose_table_compact, + priv->compose_buffer, + n_compose, + &compose_finish, + &output_chars)) { + priv->in_compose_sequence = TRUE; + if (compose_finish) { + if (success) { + g_string_append_unichar (priv->tentative_match, *output_chars); + priv->tentative_match_len = n_compose; + } else { + ibus_engine_simple_commit_char (simple, *output_chars); + priv->compose_buffer[0] = 0; + } + g_free (output_chars); + ibus_engine_simple_update_preedit_text (simple); return TRUE; } - else - return FALSE; + success = TRUE; + } + g_free (output_chars); + output_chars = NULL; + if (ibus_compose_table_compact_check (&ibus_compose_table_compact_32bit, + priv->compose_buffer, + n_compose, + &compose_finish, + &output_chars)) { + priv->in_compose_sequence = TRUE; + if (compose_finish) { + GError *error = NULL; + char *str = g_ucs4_to_utf8 (output_chars, -1, NULL, NULL, &error); + if (!str) { + g_warning ("Failed to output multiple characters: %s", + error->message); + g_error_free (error); + } else if (success) { + g_string_append (priv->tentative_match, str); + priv->tentative_match_len = n_compose; + } else { + ibus_engine_simple_commit_str (simple, str); + priv->compose_buffer[0] = 0; + } + g_free (str); + g_free (output_chars); + ibus_engine_simple_update_preedit_text (simple); + return TRUE; + } + success = TRUE; } + g_free (output_chars); + output_chars = NULL; + if (ibus_check_algorithmically (priv->compose_buffer, + n_compose, + &output_char)) { + priv->in_compose_sequence = TRUE; + if (output_char) { + if (success) { + g_string_append_unichar (priv->tentative_match, output_char); + priv->tentative_match_len = n_compose; + } else { + ibus_engine_simple_commit_char (simple, output_char); + priv->compose_buffer[0] = 0; + } + ibus_engine_simple_update_preedit_text (simple); + return TRUE; + } + success = TRUE; + } + if (success) { + ibus_engine_simple_update_preedit_text (simple); + return TRUE; + } + + return FALSE; } + static gboolean ibus_engine_simple_process_key_event (IBusEngine *engine, guint keyval, @@ -680,38 +935,43 @@ ibus_engine_simple_process_key_event (IBusEngine *engine, { IBusEngineSimple *simple = (IBusEngineSimple *)engine; IBusEngineSimplePrivate *priv = simple->priv; - gint n_compose = 0; + int n_compose = 0; gboolean have_hex_mods; - gboolean is_hex_start; + gboolean is_hex_start = FALSE; + gboolean is_emoji_start = FALSE; gboolean is_hex_end; + gboolean is_space; gboolean is_backspace; gboolean is_escape; guint hex_keyval; - gint i; + guint printable_keyval; + int i; - while (priv->compose_buffer[n_compose] != 0) + while (n_compose <= COMPOSE_BUFFER_SIZE && priv->compose_buffer[n_compose] != 0) n_compose++; - - if (n_compose >= IBUS_MAX_COMPOSE_LEN) - return TRUE; + if (n_compose > COMPOSE_BUFFER_SIZE) { + g_warning ("copmose table buffer is full."); + n_compose = COMPOSE_BUFFER_SIZE; + } if (modifiers & IBUS_RELEASE_MASK) { if (priv->in_hex_sequence && (keyval == IBUS_KEY_Control_L || keyval == IBUS_KEY_Control_R || keyval == IBUS_KEY_Shift_L || keyval == IBUS_KEY_Shift_R)) { - if (priv->tentative_match && - g_unichar_validate (priv->tentative_match)) { - ibus_engine_simple_commit_char (simple, - priv->tentative_match); - } - else if (n_compose == 0) { + if (priv->tentative_match->len > 0) { + char *str = g_strdup (priv->tentative_match->str); + ibus_engine_simple_commit_str (simple, str); + g_free (str); + ibus_engine_simple_update_preedit_text (simple); + } else if (n_compose == 0) { priv->modifiers_dropped = TRUE; - } - else { + } else { /* invalid hex sequence */ /* FIXME beep_window (event->window); */ - priv->tentative_match = 0; + g_string_set_size (priv->tentative_match, 0); + g_clear_pointer (&priv->tentative_emoji, g_free); priv->in_hex_sequence = FALSE; + priv->in_emoji_sequence = FALSE; priv->compose_buffer[0] = 0; ibus_engine_simple_update_preedit_text (simple); @@ -719,29 +979,86 @@ ibus_engine_simple_process_key_event (IBusEngine *engine, return TRUE; } + /* Handle Shift + Space */ + else if (priv->in_emoji_sequence && + (keyval == IBUS_KEY_Control_L || keyval == IBUS_KEY_Control_R)) { + if (priv->tentative_emoji && *priv->tentative_emoji) { + ibus_engine_simple_commit_str (simple, priv->tentative_emoji); + priv->compose_buffer[0] = 0; + ibus_engine_simple_update_preedit_text (simple); + } else if (n_compose == 0) { + priv->modifiers_dropped = TRUE; + } else { + /* invalid hex sequence */ + /* FIXME beep_window (event->window); */ + g_string_set_size (priv->tentative_match, 0); + g_clear_pointer (&priv->tentative_emoji, g_free); + priv->in_hex_sequence = FALSE; + priv->in_emoji_sequence = FALSE; + priv->compose_buffer[0] = 0; + + ibus_engine_simple_update_preedit_text (simple); + } + } else return FALSE; } /* Ignore modifier key presses */ - for (i = 0; i < G_N_ELEMENTS (ibus_compose_ignore); i++) - if (keyval == ibus_compose_ignore[i]) + for (i = 0; i < G_N_ELEMENTS (IBUS_COMPOSE_IGNORE_KEYLIST); i++) + if (keyval == IBUS_COMPOSE_IGNORE_KEYLIST[i]) return FALSE; - if (priv->in_hex_sequence && priv->modifiers_dropped) + if ((priv->in_hex_sequence || priv->in_emoji_sequence) + && priv->modifiers_dropped) { have_hex_mods = TRUE; - else + } else { have_hex_mods = (modifiers & (HEX_MOD_MASK)) == HEX_MOD_MASK; + } - is_hex_start = keyval == IBUS_KEY_U; + is_hex_start = (keyval == IBUS_KEY_U) && priv->hex_mode_enabled; is_hex_end = (keyval == IBUS_KEY_space || keyval == IBUS_KEY_KP_Space || keyval == IBUS_KEY_Return || keyval == IBUS_KEY_ISO_Enter || keyval == IBUS_KEY_KP_Enter); + is_space = (keyval == IBUS_KEY_space || keyval == IBUS_KEY_KP_Space); is_backspace = keyval == IBUS_KEY_BackSpace; is_escape = keyval == IBUS_KEY_Escape; - hex_keyval = keyval; + hex_keyval = is_hex_keyval (keyval) ? keyval : 0; + printable_keyval = is_graph_keyval (keyval) ? keyval : 0; + + /* gtkimcontextsimple causes a buffer overflow in priv->compose_buffer. + * Add the check code here. + */ + if (n_compose > COMPOSE_BUFFER_SIZE && + (priv->in_hex_sequence || priv->in_emoji_sequence)) { + if (is_backspace) { + priv->compose_buffer[--n_compose] = 0; + } + else if (is_hex_end) { + /* invalid hex sequence */ + // beep_window (event->window); + g_string_set_size (priv->tentative_match, 0); + g_clear_pointer (&priv->tentative_emoji, g_free); + priv->in_hex_sequence = FALSE; + priv->in_emoji_sequence = FALSE; + priv->compose_buffer[0] = 0; + } + else if (is_escape) { + ibus_engine_simple_reset (engine); + if (priv->lookup_table != NULL && priv->lookup_table_visible) { + priv->lookup_table_visible = FALSE; + ibus_engine_simple_update_lookup_and_aux_table (simple); + } + return TRUE; + } + + if (have_hex_mods) + ibus_engine_simple_update_preedit_text (simple); + + return TRUE; + } /* If we are already in a non-hex sequence, or * this keystroke is not hex modifiers + hex digit, don't filter @@ -751,12 +1068,16 @@ ibus_engine_simple_process_key_event (IBusEngine *engine, * ISO_Level3_Switch. */ if (!have_hex_mods || - (n_compose > 0 && !priv->in_hex_sequence) || - (n_compose == 0 && !priv->in_hex_sequence && !is_hex_start) || + (n_compose > 0 && !priv->in_hex_sequence && !priv->in_emoji_sequence) || + (n_compose == 0 && !priv->in_hex_sequence && !is_hex_start && + !priv->in_emoji_sequence && !is_emoji_start) || (priv->in_hex_sequence && !hex_keyval && - !is_hex_start && !is_hex_end && !is_escape && !is_backspace)) { + !is_hex_start && !is_hex_end && !is_escape && !is_backspace) || + (priv->in_emoji_sequence && !printable_keyval && + !is_emoji_start && !is_hex_end && !is_escape && !is_backspace)) { if (modifiers & (IBUS_MOD1_MASK | IBUS_CONTROL_MASK) || - (priv->in_hex_sequence && priv->modifiers_dropped && + ((priv->in_hex_sequence || priv->in_emoji_sequence) && + priv->modifiers_dropped && (keyval == IBUS_KEY_Return || keyval == IBUS_KEY_ISO_Enter || keyval == IBUS_KEY_KP_Enter))) { @@ -767,42 +1088,98 @@ ibus_engine_simple_process_key_event (IBusEngine *engine, /* Handle backspace */ if (priv->in_hex_sequence && have_hex_mods && is_backspace) { if (n_compose > 0) { - n_compose--; + n_compose--; priv->compose_buffer[n_compose] = 0; check_hex (simple, n_compose); + } else { + priv->in_hex_sequence = FALSE; + } + + ibus_engine_simple_update_preedit_text (simple); + + return TRUE; } - else { - priv->in_hex_sequence = FALSE; - } + if (priv->in_emoji_sequence && have_hex_mods && is_backspace) { + if (n_compose > 0) { + n_compose--; + priv->compose_buffer[n_compose] = 0; + check_emoji_table (simple, n_compose, -1); + ibus_engine_simple_update_lookup_and_aux_table (simple); + } else { + priv->in_emoji_sequence = FALSE; + } ibus_engine_simple_update_preedit_text (simple); return TRUE; } + if (!priv->in_hex_sequence && !priv->in_emoji_sequence && is_backspace) { + if (n_compose > 0) { + n_compose--; + priv->compose_buffer[n_compose] = 0; + g_string_set_size (priv->tentative_match, 0); + priv->tentative_match_len = 0; + ibus_engine_simple_check_all_compose_table (simple, n_compose); + return TRUE; + } + } /* Check for hex sequence restart */ if (priv->in_hex_sequence && have_hex_mods && is_hex_start) { - if (priv->tentative_match && - g_unichar_validate (priv->tentative_match)) { - ibus_engine_simple_commit_char (simple, priv->tentative_match); + if (priv->tentative_match->len > 0 ) { + char *str = g_strdup (priv->tentative_match->str); + ibus_engine_simple_commit_str (simple, str); + g_free (str); + ibus_engine_simple_update_preedit_text (simple); } else { /* invalid hex sequence */ if (n_compose > 0) { // FIXME beep_window (event->window); - priv->tentative_match = 0; + g_string_set_size (priv->tentative_match, 0); priv->in_hex_sequence = FALSE; priv->compose_buffer[0] = 0; } } } + if (priv->in_emoji_sequence && have_hex_mods && is_emoji_start) { + if (priv->tentative_emoji && *priv->tentative_emoji) { + ibus_engine_simple_commit_str (simple, priv->tentative_emoji); + priv->compose_buffer[0] = 0; + ibus_engine_simple_update_preedit_text (simple); + } + else { + if (n_compose > 0) { + g_clear_pointer (&priv->tentative_emoji, g_free); + priv->in_emoji_sequence = FALSE; + priv->compose_buffer[0] = 0; + } + } + } /* Check for hex sequence start */ - if (!priv->in_hex_sequence && have_hex_mods && is_hex_start) { + if (!priv->in_hex_sequence && !priv->in_emoji_sequence && + have_hex_mods && is_hex_start) { priv->compose_buffer[0] = 0; priv->in_hex_sequence = TRUE; + priv->in_emoji_sequence = FALSE; + priv->modifiers_dropped = FALSE; + g_string_set_size (priv->tentative_match, 0); + g_clear_pointer (&priv->tentative_emoji, g_free); + + // g_debug ("Start HEX MODE"); + + ibus_engine_simple_update_preedit_text (simple); + + return TRUE; + } else if (!priv->in_hex_sequence && !priv->in_emoji_sequence && + have_hex_mods && is_emoji_start) { + priv->compose_buffer[0] = 0; + priv->in_hex_sequence = FALSE; + priv->in_emoji_sequence = TRUE; priv->modifiers_dropped = FALSE; - priv->tentative_match = 0; + g_string_set_size (priv->tentative_match, 0); + g_clear_pointer (&priv->tentative_emoji, g_free); // g_debug ("Start HEX MODE"); @@ -811,44 +1188,81 @@ ibus_engine_simple_process_key_event (IBusEngine *engine, return TRUE; } - /* Then, check for compose sequences */ if (priv->in_hex_sequence) { - if (hex_keyval) - priv->compose_buffer[n_compose++] = hex_keyval; - else if (is_escape) { + if (hex_keyval) { + SET_COMPOSE_BUFFER_ELEMENT_NEXT (priv->compose_buffer, + n_compose, + hex_keyval); + } else if (is_escape) { // FIXME ibus_engine_simple_reset (engine); return TRUE; - } - else if (!is_hex_end) { + } else if (!is_hex_end) { // FIXME /* non-hex character in hex sequence */ // beep_window (event->window); return TRUE; } + } else if (priv->in_emoji_sequence) { + if (printable_keyval) { + if (!ibus_engine_simple_if_in_range_of_lookup_table (simple, + printable_keyval)) { + /* digit keyval can be an index on the current lookup table + * but it also can be a part of an emoji annotation. + * E.g. "1" and "2" are indexes of emoji "1". + * "100" is an annotation of the emoji "100". + */ + SET_COMPOSE_BUFFER_ELEMENT_NEXT (priv->compose_buffer, + n_compose, + printable_keyval); + } + } + else if (is_space && (modifiers & IBUS_SHIFT_MASK)) { + SET_COMPOSE_BUFFER_ELEMENT_NEXT (priv->compose_buffer, + n_compose, + IBUS_KEY_space); + } + else if (is_escape) { + ibus_engine_simple_reset (engine); + if (priv->lookup_table != NULL && priv->lookup_table_visible) { + priv->lookup_table_visible = FALSE; + ibus_engine_simple_update_lookup_and_aux_table (simple); + } + return TRUE; + } + } else { + if (is_escape) { + if (n_compose > 0) { + ibus_engine_simple_reset (engine); + return TRUE; + } + } + SET_COMPOSE_BUFFER_ELEMENT_NEXT (priv->compose_buffer, + n_compose, + keyval); } - else - priv->compose_buffer[n_compose++] = keyval; - priv->compose_buffer[n_compose] = 0; + SET_COMPOSE_BUFFER_ELEMENT_END (priv->compose_buffer, + n_compose, + 0); if (priv->in_hex_sequence) { /* If the modifiers are still held down, consider the sequence again */ if (have_hex_mods) { /* space or return ends the sequence, and we eat the key */ if (n_compose > 0 && is_hex_end) { - if (priv->tentative_match && - g_unichar_validate (priv->tentative_match)) { - ibus_engine_simple_commit_char (simple, - priv->tentative_match); - priv->compose_buffer[0] = 0; - } - else { + if (priv->tentative_match->len > 0) { + char *str = g_strdup (priv->tentative_match->str); + ibus_engine_simple_commit_str (simple, str); + g_free (str); + ibus_engine_simple_update_preedit_text (simple); + return TRUE; + } else { // FIXME /* invalid hex sequence */ // beep_window (event->window); - priv->tentative_match = 0; + g_string_set_size (priv->tentative_match, 0); priv->in_hex_sequence = FALSE; priv->compose_buffer[0] = 0; } @@ -862,25 +1276,85 @@ ibus_engine_simple_process_key_event (IBusEngine *engine, return TRUE; } } - else { - GSList *list = priv->tables; - while (list) { - if (check_table (simple, - (IBusComposeTable *)list->data, - n_compose)) { - // g_debug("check_table returns true"); - return TRUE; + else if (priv->in_emoji_sequence) { + if (have_hex_mods && n_compose > 0) { + gboolean update_lookup_table = FALSE; + + if (priv->lookup_table_visible) { + switch (keyval) { + case IBUS_KEY_space: + case IBUS_KEY_KP_Space: + if ((modifiers & IBUS_SHIFT_MASK) == 0) { + ibus_lookup_table_cursor_down (priv->lookup_table); + update_lookup_table = TRUE; + } + break; + case IBUS_KEY_Down: + ibus_lookup_table_cursor_down (priv->lookup_table); + update_lookup_table = TRUE; + break; + case IBUS_KEY_Up: + ibus_lookup_table_cursor_up (priv->lookup_table); + update_lookup_table = TRUE; + break; + case IBUS_KEY_Page_Down: + ibus_lookup_table_page_down (priv->lookup_table); + update_lookup_table = TRUE; + break; + case IBUS_KEY_Page_Up: + ibus_lookup_table_page_up (priv->lookup_table); + update_lookup_table = TRUE; + break; + default:; + } } - list = list->next; - } - if (check_compact_table (simple, - &ibus_compose_table_compact, - n_compose)) { + if (!update_lookup_table) { + if (ibus_engine_simple_if_in_range_of_lookup_table (simple, + keyval)) { + ibus_engine_simple_set_number_on_lookup_table ( + simple, + keyval, + n_compose); + return TRUE; + } + else if (is_hex_end && !is_space) { + if (priv->lookup_table) { + int index = (int) ibus_lookup_table_get_cursor_pos ( + priv->lookup_table); + check_emoji_table (simple, n_compose, index); + priv->lookup_table_visible = FALSE; + update_lookup_table = TRUE; + } + } else if (check_emoji_table (simple, n_compose, -1)) { + update_lookup_table = TRUE; + } else { + priv->lookup_table_visible = FALSE; + update_lookup_table = TRUE; + } + } + + if (update_lookup_table) + ibus_engine_simple_update_lookup_and_aux_table (simple); + if (is_hex_end && !is_space) { + if (priv->tentative_emoji && *priv->tentative_emoji) { + ibus_engine_simple_commit_str (simple, + priv->tentative_emoji); + priv->compose_buffer[0] = 0; + ibus_engine_simple_update_preedit_text (simple); + } else { + g_clear_pointer (&priv->tentative_emoji, g_free); + priv->in_emoji_sequence = FALSE; + priv->compose_buffer[0] = 0; + } + } + + ibus_engine_simple_update_preedit_text (simple); + return TRUE; } - - if (check_algorithmically (simple, n_compose)) + } else { /* Then, check for compose sequences */ + if (ibus_engine_simple_check_all_compose_table (simple, n_compose)) return TRUE; } @@ -888,23 +1362,191 @@ ibus_engine_simple_process_key_event (IBusEngine *engine, return no_sequence_matches (simple, n_compose, keyval, keycode, modifiers); } +static void +ibus_engine_simple_page_down (IBusEngine *engine) +{ + IBusEngineSimple *simple = (IBusEngineSimple *)engine; + IBusEngineSimplePrivate *priv = simple->priv; + if (priv->lookup_table == NULL) + return; + ibus_lookup_table_page_down (priv->lookup_table); + ibus_engine_simple_update_lookup_and_aux_table (simple); +} + +static void +ibus_engine_simple_page_up (IBusEngine *engine) +{ + IBusEngineSimple *simple = (IBusEngineSimple *)engine; + IBusEngineSimplePrivate *priv = simple->priv; + if (priv->lookup_table == NULL) + return; + ibus_lookup_table_page_up (priv->lookup_table); + ibus_engine_simple_update_lookup_and_aux_table (simple); +} + +static void +ibus_engine_simple_candidate_clicked (IBusEngine *engine, + guint index, + guint button, + guint state) +{ + IBusEngineSimple *simple = (IBusEngineSimple *)engine; + IBusEngineSimplePrivate *priv = simple->priv; + guint keyval; + int n_compose = 0; + + if (priv->lookup_table == NULL || !priv->lookup_table_visible) + return; + if (index == 9) + keyval = IBUS_KEY_0; + else + keyval = IBUS_KEY_1 + index; + while (priv->compose_buffer[n_compose] != 0) + n_compose++; + CHECK_COMPOSE_BUFFER_LENGTH (n_compose); + ibus_engine_simple_set_number_on_lookup_table (simple, keyval, n_compose); +} + void ibus_engine_simple_add_table (IBusEngineSimple *simple, - guint16 *data, + const guint16 *data, gint max_seq_len, gint n_seqs) { - IBusEngineSimplePrivate *priv = simple->priv; - g_return_if_fail (IBUS_IS_ENGINE_SIMPLE (simple)); - g_return_if_fail (data != NULL); - g_return_if_fail (max_seq_len <= IBUS_MAX_COMPOSE_LEN); - IBusComposeTable *table = g_new (IBusComposeTable, 1); - table->data = data; - table->max_seq_len = max_seq_len; - table->n_seqs = n_seqs; + global_tables = ibus_compose_table_list_add_array (global_tables, + data, + max_seq_len, + n_seqs); +} - priv->tables = g_slist_prepend (priv->tables, table); +gboolean +ibus_engine_simple_add_table_by_locale (IBusEngineSimple *simple, + const gchar *locale) +{ + /* Now ibus_engine_simple_add_compose_file() always returns TRUE. */ + gboolean retval = TRUE; + char *path = NULL; + const char *home; +#if GLIB_CHECK_VERSION (2, 58, 0) + const char * const *langs; + const char * const *lang = NULL; +#else + const char *_locale; + char **langs = NULL; + char **lang = NULL; +#endif + char * const sys_langs[] = { "el_gr", "fi_fi", "pt_br", NULL }; + char * const *sys_lang = NULL; + + if (locale == NULL) { + path = g_build_filename (g_get_user_config_dir (), + "ibus", "Compose", NULL); + if (g_file_test (path, G_FILE_TEST_EXISTS)) { + ibus_engine_simple_add_compose_file (simple, path); + g_free (path); + return retval; + } + g_clear_pointer(&path, g_free); + + path = g_build_filename (g_get_user_config_dir (), + "gtk-4.0", "Compose", NULL); + if (g_file_test (path, G_FILE_TEST_EXISTS)) { + ibus_engine_simple_add_compose_file (simple, path); + g_free (path); + return retval; + } + g_clear_pointer(&path, g_free); + + path = g_build_filename (g_get_user_config_dir (), + "gtk-3.0", "Compose", NULL); + if (g_file_test (path, G_FILE_TEST_EXISTS)) { + ibus_engine_simple_add_compose_file (simple, path); + g_free (path); + return retval; + } + g_clear_pointer(&path, g_free); + + home = g_get_home_dir (); + if (home == NULL) + return retval; + + path = g_build_filename (home, ".XCompose", NULL); + if (g_file_test (path, G_FILE_TEST_EXISTS)) { + ibus_engine_simple_add_compose_file (simple, path); + g_free (path); + return retval; + } + g_clear_pointer(&path, g_free); + +#if GLIB_CHECK_VERSION (2, 58, 0) + langs = g_get_language_names_with_category ("LC_CTYPE"); +#else + _locale = g_getenv ("LC_CTYPE"); + if (_locale == NULL) + _locale = g_getenv ("LANG"); + if (_locale == NULL) + _locale = "C"; + + /* FIXME: https://bugzilla.gnome.org/show_bug.cgi?id=751826 */ + langs = g_get_locale_variants (_locale); +#endif + + for (lang = langs; *lang; lang++) { + if (g_str_has_prefix (*lang, "en_US")) + break; + if (**lang == 'C') + break; + + /* Other languages just include en_us compose table. */ + for (sys_lang = sys_langs; *sys_lang; sys_lang++) { + if (g_ascii_strncasecmp (*lang, *sys_lang, + strlen (*sys_lang)) == 0) { + path = g_build_filename (X11_DATADIR, + *lang, "Compose", NULL); + break; + } + } + if (path == NULL) + continue; + + if (g_file_test (path, G_FILE_TEST_EXISTS)) + break; + g_clear_pointer(&path, g_free); + } + +#if !GLIB_CHECK_VERSION (2, 58, 0) + g_strfreev (langs); +#endif + + if (path != NULL) + ibus_engine_simple_add_compose_file (simple, path); + g_clear_pointer(&path, g_free); + } else { + path = g_build_filename (X11_DATADIR, locale, "Compose", NULL); + do { + if (g_file_test (path, G_FILE_TEST_EXISTS)) + break; + g_clear_pointer(&path, g_free); + } while (0); + if (path == NULL) + return retval; + ibus_engine_simple_add_compose_file (simple, path); + } + + return retval; } + +gboolean +ibus_engine_simple_add_compose_file (IBusEngineSimple *simple, + const gchar *compose_file) +{ + g_return_val_if_fail (IBUS_IS_ENGINE_SIMPLE (simple), TRUE); + + global_tables = ibus_compose_table_list_add_file (global_tables, + compose_file); + return TRUE; +} + diff --git a/src/ibusenginesimple.h b/src/ibusenginesimple.h index d5e579594..3c490f08b 100644 --- a/src/ibusenginesimple.h +++ b/src/ibusenginesimple.h @@ -1,47 +1,50 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2015 Peng Huang + * Copyright (C) 2015-2019 Takao Fujiwara + * Copyright (C) 2008-2017 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif +#ifndef __IBUS_ENGINE_SIMPLE_H__ +#define __IBUS_ENGINE_SIMPLE_H__ + /** - * SECTION: ibussimpleengine + * SECTION: ibusenginesimple * @short_description: Input method engine supporting table-based input method * @title: IBusEngineSimple * @stability: Stable * * An IBusEngineSimple provides table-based input method logic. * - * @see_also: #IBusEngine + * see_also: #IBusEngine */ -#ifndef __IBUS_ENGINE_SIMPLE_H__ -#define __IBUS_ENGINE_SIMPLE_H__ #include "ibusengine.h" +#include "ibuskeysyms.h" G_BEGIN_DECLS -#define IBUS_MAX_COMPOSE_LEN 7 +#define IBUS_MAX_COMPOSE_LEN 0xFF /* * Type macros. @@ -92,14 +95,35 @@ struct _IBusEngineSimpleClass { gpointer pdummy[8]; }; +static const guint16 IBUS_COMPOSE_IGNORE_KEYLIST[] = { + IBUS_KEY_Shift_L, + IBUS_KEY_Shift_R, + IBUS_KEY_Control_L, + IBUS_KEY_Control_R, + IBUS_KEY_Caps_Lock, + IBUS_KEY_Shift_Lock, + IBUS_KEY_Meta_L, + IBUS_KEY_Meta_R, + IBUS_KEY_Alt_L, + IBUS_KEY_Alt_R, + IBUS_KEY_Super_L, + IBUS_KEY_Super_R, + IBUS_KEY_Hyper_L, + IBUS_KEY_Hyper_R, + IBUS_KEY_Mode_switch, + IBUS_KEY_ISO_Level3_Shift +}; + GType ibus_engine_simple_get_type (void); /** * ibus_engine_simple_add_table: * @simple: An IBusEngineSimple. - * @data: The table. - * @ max_seq_len: Maximum length of a swquence in the table (cannot be greater + * @data: (element-type guint16) (array): The table which must be available + * during the whole life of the simple engine. + * @max_seq_len: Maximum length of a sequence in the table (cannot be greater * than %IBUS_MAX_COMPOSE_LEN) + * @n_seqs: number of sequences in the table * * Adds an additional table to search to the engine. Each row of the table * consists of max_seq_len key symbols followed by two guint16 interpreted as @@ -109,11 +133,37 @@ GType ibus_engine_simple_get_type (void); * The table must be sorted in dictionary order on the numeric value of the key * symbol fields. (Values beyond the length of the sequence should be zero.) */ -void ibus_engine_simple_add_table (IBusEngineSimple *simple, - guint16 *data, - gint max_seq_len, - gint n_seqs); +void ibus_engine_simple_add_table (IBusEngineSimple *simple, + const guint16 *data, + gint max_seq_len, + gint n_seqs); + +/** + * ibus_engine_simple_add_table_by_locale: + * @simple: An IBusEngineSimple. + * @locale: (allow-none): The locale name. If the locale is %NULL, + * the current locale is used. + * + * Call ibus_engine_simple_add_table() internally by locale. + * + * Returns: %TRUE if the @locale is matched to the table. + */ +gboolean ibus_engine_simple_add_table_by_locale + (IBusEngineSimple *simple, + const gchar *locale); +/** + * ibus_engine_simple_add_compose_file: + * @simple: An IBusEngineSimple. + * @file: The compose file. + * + * Call ibus_engine_simple_add_table() internally by locale. + * + * Returns: %TRUE if the @file is loaded. + */ +gboolean ibus_engine_simple_add_compose_file + (IBusEngineSimple *simple, + const gchar *file); G_END_DECLS #endif // __IBUS_ENGINE_SIMPLE_H__ diff --git a/src/ibusenginesimpleprivate.h b/src/ibusenginesimpleprivate.h new file mode 100644 index 000000000..ad93d2d29 --- /dev/null +++ b/src/ibusenginesimpleprivate.h @@ -0,0 +1,75 @@ +/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ +/* vim:set et sts=4: */ +/* ibus - The Input Bus + * Copyright (C) 2016-2019 Takao Fujiwara + * Copyright (C) 2016 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + */ + +#ifndef __IBUS_ENGINE_SIMPLE_PRIVATE_H__ +#define __IBUS_ENGINE_SIMPLE_PRIVATE_H__ + +#include + + +G_BEGIN_DECLS + +/* Checks if a keysym is a dead key. Dead key keysym values are defined in + * ibuskeysyms.h and the first is GDK_KEY_dead_grave. + */ +#define IS_DEAD_KEY(k) \ + ((k) >= IBUS_KEY_dead_grave && (k) <= IBUS_KEY_dead_greek) + +extern const IBusComposeTableCompactEx ibus_compose_table_compact; +extern const IBusComposeTableCompactEx ibus_compose_table_compact_32bit; + +struct _IBusComposeTablePrivate +{ + guint16 *data_first; + guint32 *data_second; + gsize first_n_seqs; + gsize second_size; +}; + +struct _IBusComposeTableCompactPrivate +{ + const guint32 *data2; +}; + +gboolean ibus_check_algorithmically (const guint16 *compose_buffer, + int n_compose, + gunichar *output); +gboolean ibus_compose_table_check (const IBusComposeTableEx *table, + guint16 *compose_buffer, + int n_compose, + gboolean *compose_finish, + gboolean *compose_match, + GString *output, + gboolean is_32bit); +gboolean ibus_compose_table_compact_check + (const IBusComposeTableCompactEx + *table, + guint16 *compose_buffer, + int n_compose, + gboolean *compose_finish, + gunichar **output_chars); +gunichar ibus_keysym_to_unicode (guint16 keysym, + gboolean combining, + gboolean *need_space); + +G_END_DECLS + + +#endif /* __IBUS_IM_CONTEXT_SIMPLE_PRIVATE_H__ */ diff --git a/src/ibusenumtypes.h.template b/src/ibusenumtypes.h.template index 734d4ef1b..6a754b661 100644 --- a/src/ibusenumtypes.h.template +++ b/src/ibusenumtypes.h.template @@ -1,11 +1,4 @@ /*** BEGIN file-header ***/ -/** - * SECTION: ibusenumtypes - * @short_description: Enumeration definition in IBus. - * @stability: Stable - * - * IBusEnumTypes lists IBus enumeration types. - */ #ifndef __IBUS_ENUM_TYPES_H__ #define __IBUS_ENUM_TYPES_H__ diff --git a/src/ibuserror.c b/src/ibuserror.c index c50c164ae..c6e53a1f3 100644 --- a/src/ibuserror.c +++ b/src/ibuserror.c @@ -6,17 +6,17 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include "ibuserror.h" diff --git a/src/ibuserror.h b/src/ibuserror.h index 75c64b908..03fab52cc 100644 --- a/src/ibuserror.h +++ b/src/ibuserror.h @@ -1,40 +1,39 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus - * Copyright (C) 2011 Peng Huang + * Copyright (C) 2011-2013 Peng Huang * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif +#ifndef __IBUS_ERROR_H_ +#define __IBUS_ERROR_H_ + /** - * SECTION: ibusshare - * @short_description: Shared utility functions and definition. + * SECTION: ibuserror + * @short_description: Error functions and definition. * @stability: Stable * - * This file defines some utility functions and definition - * which are shared among ibus component and services. + * This file defines some error functions and definition. */ -#ifndef __IBUS_ERROR_H_ -#define __IBUS_ERROR_H_ - #include G_BEGIN_DECLS diff --git a/src/ibusfactory.c b/src/ibusfactory.c index d6d12311e..cb9b53ccd 100644 --- a/src/ibusfactory.c +++ b/src/ibusfactory.c @@ -1,23 +1,23 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2015 Peng Huang + * Copyright (C) 2008-2019 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include "ibusfactory.h" #include "ibusengine.h" @@ -26,7 +26,7 @@ #include "ibusinternal.h" #define IBUS_FACTORY_GET_PRIVATE(o) \ - (G_TYPE_INSTANCE_GET_PRIVATE ((o), IBUS_TYPE_FACTORY, IBusFactoryPrivate)) + ((IBusFactoryPrivate *)ibus_factory_get_instance_private (o)) enum { CREATE_ENGINE, @@ -87,7 +87,7 @@ static void ibus_factory_engine_destroy_cb (IBusEngine *engine, IBusFactory *factory); -G_DEFINE_TYPE (IBusFactory, ibus_factory, IBUS_TYPE_SERVICE) +G_DEFINE_TYPE_WITH_PRIVATE (IBusFactory, ibus_factory, IBUS_TYPE_SERVICE) static const gchar introspection_xml[] = "" @@ -158,19 +158,18 @@ ibus_factory_class_init (IBusFactoryClass *class) ibus_service_class_add_interfaces (IBUS_SERVICE_CLASS (class), introspection_xml); - g_type_class_add_private (class, sizeof (IBusFactoryPrivate)); - /** * IBusFactory::create-engine: * @factory: the factory which received the signal * @engine_name: the engine_name which received the signal - * @returns: (transfer full): An IBusEngine + * @returns: (nullable) (transfer full): An IBusEngine * * The ::create-engine signal is a signal to create IBusEngine * with @engine_name, which gets emitted when IBusFactory * received CreateEngine dbus method. The callback functions * will be called until a callback returns a non-null object - * of IBusEngine. */ + * of IBusEngine. + */ factory_signals[CREATE_ENGINE] = g_signal_new (I_("create-engine"), G_TYPE_FROM_CLASS (gobject_class), @@ -286,12 +285,11 @@ ibus_factory_service_method_call (IBusService *service, g_free (object_path); } else { - gchar *error_message = g_strdup_printf ("Can not fond engine %s", engine_name); g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, - error_message); - g_free (error_message); + "Cannot find engine %s", + engine_name); } return; } @@ -352,10 +350,10 @@ ibus_factory_new (GDBusConnection *connection) { g_return_val_if_fail (G_IS_DBUS_CONNECTION (connection), NULL); - IBusEngine *object = g_object_new (IBUS_TYPE_FACTORY, - "object-path", IBUS_PATH_FACTORY, - "connection", connection, - NULL); + IBusFactory *object = g_object_new (IBUS_TYPE_FACTORY, + "object-path", IBUS_PATH_FACTORY, + "connection", connection, + NULL); return IBUS_FACTORY (object); } diff --git a/src/ibusfactory.h b/src/ibusfactory.h index dd683d078..912f5d5e1 100644 --- a/src/ibusfactory.h +++ b/src/ibusfactory.h @@ -1,29 +1,32 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2013 Peng Huang + * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif +#ifndef __IBUS_FACTORY_H_ +#define __IBUS_FACTORY_H_ + /** * SECTION: ibusfactory * @short_description: Factory for creating engine instances. @@ -34,11 +37,9 @@ * It provides CreateEngine remote method, which creates an IME instance by name, * and returns the D-Bus object path to IBus daemon. * - * @see_also: #IBusEngine + * see_also: #IBusEngine * */ -#ifndef __IBUS_FACTORY_H_ -#define __IBUS_FACTORY_H_ #include "ibusservice.h" #include "ibusserializable.h" @@ -141,18 +142,20 @@ struct _IBusFactoryClass { /** * ibus_factory_info_get_type: - * @returns: GType of IBus factory information. * - * Return GType of IBus factory information. + * Gets GType of IBus factory information. + * + * Returns: GType of IBus factory information. */ GType ibus_factory_get_type (void); /** * ibus_factory_new: * @connection: An GDBusConnection. - * @returns: A newly allocated IBusFactory. * - * New an IBusFactory. + * Creates a new #IBusFactory. + * + * Returns: A newly allocated #IBusFactory. */ IBusFactory *ibus_factory_new (GDBusConnection *connection); @@ -172,9 +175,10 @@ void ibus_factory_add_engine (IBusFactory *factory, * ibus_factory_create_engine: * @factory: An #IBusFactory. * @engine_name: Name of an engine. - * @returns: (transfer full): #IBusEngine with @engine_name. * - * Create an #IBusEngine with @engine_name. + * Creates an #IBusEngine with @engine_name. + * + * Returns: (transfer full): #IBusEngine with @engine_name. */ IBusEngine *ibus_factory_create_engine (IBusFactory *factory, const gchar *engine_name); diff --git a/src/ibushotkey.c b/src/ibushotkey.c index e39456a29..e72b8305e 100644 --- a/src/ibushotkey.c +++ b/src/ibushotkey.c @@ -2,22 +2,23 @@ /* vim:set et sts=4: */ /* IBus - The Input Bus * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2018-2021 Takao Fujiwara + * Copyright (C) 2008-2019 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include "ibushotkey.h" #include "ibusmarshalers.h" @@ -26,7 +27,7 @@ #include "ibusshare.h" #define IBUS_HOTKEY_PROFILE_GET_PRIVATE(o) \ - (G_TYPE_INSTANCE_GET_PRIVATE ((o), IBUS_TYPE_HOTKEY_PROFILE, IBusHotkeyProfilePrivate)) + ((IBusHotkeyProfilePrivate *)ibus_hotkey_profile_get_instance_private (o)) enum { TRIGGER, @@ -78,7 +79,10 @@ static guint normalize_modifiers (guint key guint modifiers); static gboolean is_modifier (guint keyval); -static IBusSerializableClass *parent_class = NULL; +G_DEFINE_TYPE_WITH_PRIVATE (IBusHotkeyProfile, + ibus_hotkey_profile, + IBUS_TYPE_SERIALIZABLE) + static guint profile_signals[LAST_SIGNAL] = { 0 }; @@ -140,43 +144,12 @@ ibus_hotkey_cmp_with_data (IBusHotkey *hotkey1, -GType -ibus_hotkey_profile_get_type (void) -{ - static GType type = 0; - - static const GTypeInfo type_info = { - sizeof (IBusHotkeyProfileClass), - (GBaseInitFunc) NULL, - (GBaseFinalizeFunc) NULL, - (GClassInitFunc) ibus_hotkey_profile_class_init, - NULL, /* class finialize */ - NULL, /* class data */ - sizeof (IBusHotkeyProfile), - 0, - (GInstanceInitFunc) ibus_hotkey_profile_init, - }; - - if (type == 0) { - type = g_type_register_static (IBUS_TYPE_SERIALIZABLE, - "IBusHotkeyProfile", - &type_info, - 0); - } - - return type; -} - static void ibus_hotkey_profile_class_init (IBusHotkeyProfileClass *class) { IBusObjectClass *object_class = IBUS_OBJECT_CLASS (class); IBusSerializableClass *serializable_class = IBUS_SERIALIZABLE_CLASS (class); - parent_class = (IBusSerializableClass *) g_type_class_peek_parent (class); - - g_type_class_add_private (class, sizeof (IBusHotkeyProfilePrivate)); - object_class->destroy = (IBusObjectDestroyFunc) ibus_hotkey_profile_destroy; serializable_class->serialize = (IBusSerializableSerializeFunc) ibus_hotkey_profile_serialize; @@ -254,7 +227,8 @@ ibus_hotkey_profile_destroy (IBusHotkeyProfile *profile) priv->hotkeys = NULL; } - IBUS_OBJECT_CLASS (parent_class)->destroy ((IBusObject *)profile); + IBUS_OBJECT_CLASS (ibus_hotkey_profile_parent_class)-> + destroy ((IBusObject *)profile); } static gboolean @@ -263,7 +237,8 @@ ibus_hotkey_profile_serialize (IBusHotkeyProfile *profile, { gboolean retval; - retval = parent_class->serialize ((IBusSerializable *) profile, builder); + retval = IBUS_SERIALIZABLE_CLASS (ibus_hotkey_profile_parent_class)-> + serialize ((IBusSerializable *) profile, builder); g_return_val_if_fail (retval, FALSE); return TRUE; @@ -275,7 +250,8 @@ ibus_hotkey_profile_deserialize (IBusHotkeyProfile *profile, { gint retval; - retval = parent_class->deserialize ((IBusSerializable *) profile, variant); + retval = IBUS_SERIALIZABLE_CLASS (ibus_hotkey_profile_parent_class)-> + deserialize ((IBusSerializable *) profile, variant); g_return_val_if_fail (retval, 0); return retval; @@ -287,8 +263,8 @@ ibus_hotkey_profile_copy (IBusHotkeyProfile *dest, { gboolean retval; - retval = parent_class->copy ((IBusSerializable *)dest, - (IBusSerializable *)src); + retval = IBUS_SERIALIZABLE_CLASS (ibus_hotkey_profile_parent_class)-> + copy ((IBusSerializable *)dest, (IBusSerializable *)src); g_return_val_if_fail (retval, FALSE); g_return_val_if_fail (IBUS_IS_HOTKEY_PROFILE (dest), FALSE); @@ -397,6 +373,8 @@ ibus_hotkey_profile_add_hotkey (IBusHotkeyProfile *profile, p->event = event; } + if (!p) + return FALSE; p->hotkeys = g_list_append (p->hotkeys, hotkey); return TRUE; @@ -453,7 +431,7 @@ ibus_hotkey_profile_remove_hotkey (IBusHotkeyProfile *profile, break; } - g_assert (p2->event == event); + g_assert (p2 && p2->event == event); p2->hotkeys = g_list_remove (p2->hotkeys, p1); if (p2->hotkeys == NULL) { diff --git a/src/ibushotkey.h b/src/ibushotkey.h index 65cdc5b57..8153036fa 100644 --- a/src/ibushotkey.h +++ b/src/ibushotkey.h @@ -1,29 +1,32 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* IBus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2013 Peng Huang + * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif +#ifndef __IBUS_HOTKEY_H_ +#define __IBUS_HOTKEY_H_ + /** * SECTION: ibushotkey * @short_description: Hotkeys and associated events. @@ -31,8 +34,6 @@ * * An IBusHotkeyProfile associates a hotkey and an event. */ -#ifndef __IBUS_HOTKEY_H_ -#define __IBUS_HOTKEY_H_ #include "ibusserializable.h" @@ -81,9 +82,10 @@ struct _IBusHotkeyProfileClass { GType ibus_hotkey_profile_get_type (void); /** * ibus_hotkey_profile_new: - * @returns: A newly allocated IBusHotkeyProfile. * - * New an IBusHotkeyProfile. + * Creates a new #IBusHotkeyProfile. + * + * Returns: A newly allocated #IBusHotkeyProfile. */ IBusHotkeyProfile *ibus_hotkey_profile_new (void); @@ -94,9 +96,10 @@ IBusHotkeyProfile * @keyval: Keycode of the hotkey. * @modifiers: Modifiers of the hotkey. * @event: The event to be associated. - * @returns: Always TRUE. * - * Add a hotkey and its associated event to an IBusHotkeyProfile. + * Adds a hotkey and its associated event to an #IBusHotkeyProfile. + * + * Returns: Always %TRUE. */ gboolean ibus_hotkey_profile_add_hotkey (IBusHotkeyProfile *profile, guint keyval, @@ -108,10 +111,12 @@ gboolean ibus_hotkey_profile_add_hotkey (IBusHotkeyProfile *profile, * @profile: An IBusHotkeyProfile. * @str: Key in string representation. '+' is the separator. * @event: The event to be associated. - * @returns: FALSE if @str contains invalid symbol; TRUE otherwise. * - * Add a hotkey and its associated event to an IBusHotkeyProfile. - * The hotkey is in string format, such like Control+Shift+A. + * Adds a hotkey and its associated event to an #IBusHotkeyProfile. + * The hotkey is in string format, such like + * Control+Shift+A. + * + * Returns: FALSE if @str contains invalid symbol; TRUE otherwise. */ gboolean ibus_hotkey_profile_add_hotkey_from_string (IBusHotkeyProfile *profile, @@ -123,9 +128,10 @@ gboolean ibus_hotkey_profile_add_hotkey_from_string * @profile: An IBusHotkeyProfile. * @keyval: Keycode of the hotkey. * @modifiers: Modifiers of the hotkey. - * @returns: FALSE if the key is not in @profile, TRUE otherwise. * - * Remove the hotkey for an IBusHotkeyProfile. + * Removes the hotkey for an #IBusHotkeyProfile. + * + * Returns: %FALSE if the key is not in @profile, %TRUE otherwise. */ gboolean ibus_hotkey_profile_remove_hotkey (IBusHotkeyProfile *profile, @@ -136,9 +142,10 @@ gboolean ibus_hotkey_profile_remove_hotkey * ibus_hotkey_profile_remove_hotkey_by_event: * @profile: An IBusHotkeyProfile. * @event: The associated event. - * @returns: FALSE if no such event in @profile, TRUE otherwise. * - * Remove the hotkey for an IBusHotkeyProfile by event. + * Removes the hotkey for an #IBusHotkeyProfile by event. + * + * Returns: %FALSE if no such event in @profile, %TRUE otherwise. */ gboolean ibus_hotkey_profile_remove_hotkey_by_event (IBusHotkeyProfile *profile, @@ -152,9 +159,11 @@ gboolean ibus_hotkey_profile_remove_hotkey_by_event * @prev_keyval: Keycode of the hotkey. * @prev_modifiers: Modifiers of the hotkey. * @user_data: user data for signal "trigger". - * @returns: 0 if releasing a hotkey and the hotkey is not in the profile ; an associated event otherwise. * - * Emit a ::trigger signal when a hotkey is in a profile. + * Emits a ::trigger signal when a hotkey is in a profile. + * + * Returns: 0 if releasing a hotkey and the hotkey is not in the profile; + * an associated event otherwise. * * See also: ::trigger */ @@ -171,7 +180,8 @@ GQuark ibus_hotkey_profile_filter_key_event * @profile: An IBusHotkeyProfile. * @keyval: Keycode of the hotkey. * @modifiers: Modifiers of the hotkey. - * @returns: The event associated to the hotkey or 0 if the hotkey is not in the + * + * Returns: The event associated to the hotkey or 0 if the hotkey is not in the * profile. */ GQuark ibus_hotkey_profile_lookup_hotkey diff --git a/src/ibusinputcontext.c b/src/ibusinputcontext.c index fa8301b0a..7981de381 100644 --- a/src/ibusinputcontext.c +++ b/src/ibusinputcontext.c @@ -1,23 +1,24 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2013 Peng Huang + * Copyright (C) 2018-2019 Takao Fujiwara + * Copyright (C) 2008-2019 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include "ibusinputcontext.h" #include @@ -30,7 +31,7 @@ #include "ibuserror.h" #define IBUS_INPUT_CONTEXT_GET_PRIVATE(o) \ - (G_TYPE_INSTANCE_GET_PRIVATE ((o), IBUS_TYPE_INPUT_CONTEXT, IBusInputContextPrivate)) + ((IBusInputContextPrivate *)ibus_input_context_get_instance_private (o)) enum { ENABLED, @@ -39,6 +40,7 @@ enum { FORWARD_KEY_EVENT, DELETE_SURROUNDING_TEXT, UPDATE_PREEDIT_TEXT, + UPDATE_PREEDIT_TEXT_WITH_MODE, SHOW_PREEDIT_TEXT, HIDE_PREEDIT_TEXT, UPDATE_AUXILIARY_TEXT, @@ -81,7 +83,9 @@ static void ibus_input_context_g_signal (GDBusProxy *proxy, const gchar *signal_name, GVariant *parameters); -G_DEFINE_TYPE (IBusInputContext, ibus_input_context, IBUS_TYPE_PROXY) +G_DEFINE_TYPE_WITH_PRIVATE (IBusInputContext, + ibus_input_context, + IBUS_TYPE_PROXY) static void ibus_input_context_class_init (IBusInputContextClass *class) @@ -89,8 +93,6 @@ ibus_input_context_class_init (IBusInputContextClass *class) IBusProxyClass *ibus_proxy_class = IBUS_PROXY_CLASS (class); GDBusProxyClass *g_dbus_proxy_class = G_DBUS_PROXY_CLASS (class); - g_type_class_add_private (class, sizeof (IBusInputContextPrivate)); - ibus_proxy_class->destroy = ibus_input_context_real_destroy; g_dbus_proxy_class->g_signal = ibus_input_context_g_signal; @@ -133,9 +135,9 @@ ibus_input_context_class_init (IBusInputContextClass *class) * * Emitted when the text is going to be committed. * - * (Note: The text object is floating, and it will be released after the signal. - * If singal handler want to keep the object, the handler should use g_object_ref_sink() - * to get the ownership of the object.) + * (Note: The text object is floating, and it will be released after the + * signal. If signal handler wants to keep the object, the handler should + * use g_object_ref_sink() to get the ownership of the object.) */ context_signals[COMMIT_TEXT] = g_signal_new (I_("commit-text"), @@ -200,9 +202,9 @@ ibus_input_context_class_init (IBusInputContextClass *class) * * Emitted to update preedit text. * - * (Note: The text object is floating, and it will be released after the signal. - * If singal handler want to keep the object, the handler should use g_object_ref_sink() - * to get the ownership of the object.) + * (Note: The text object is floating, and it will be released after the + * signal. If signal handler wants to keep the object, the handler should + * use g_object_ref_sink() to get the ownership of the object.) */ context_signals[UPDATE_PREEDIT_TEXT] = g_signal_new (I_("update-preedit-text"), @@ -217,6 +219,34 @@ ibus_input_context_class_init (IBusInputContextClass *class) G_TYPE_UINT, G_TYPE_BOOLEAN); + /** + * IBusInputContext::update-preedit-text-with-mode: + * @context: An IBusInputContext. + * @text: Text to be updated. + * @cursor_pos: Cursor position. + * @visible: Whether the update is visible. + * @mode: Preedit mode. + * + * Emitted to update preedit text with the mode. + * + * (Note: The text object is floating, and it will be released after the + * signal. If signal handler wants to keep the object, the handler should + * use g_object_ref_sink() to get the ownership of the object.) + */ + context_signals[UPDATE_PREEDIT_TEXT_WITH_MODE] = + g_signal_new (I_("update-preedit-text-with-mode"), + G_TYPE_FROM_CLASS (class), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + _ibus_marshal_VOID__OBJECT_UINT_BOOLEAN_UINT, + G_TYPE_NONE, + 4, + IBUS_TYPE_TEXT, + G_TYPE_UINT, + G_TYPE_BOOLEAN, + G_TYPE_UINT); + /** * IBusInputContext::show-preedit-text: * @context: An IBusInputContext. @@ -250,12 +280,14 @@ ibus_input_context_class_init (IBusInputContextClass *class) /** * IBusInputContext::update-auxiliary-text: * @context: An IBusInputContext. + * @text: An auxiliary text + * @visible: The visibility of @text * * Emitted to hide auxilary text. * - * (Note: The text object is floating, and it will be released after the signal. - * If singal handler want to keep the object, the handler should use g_object_ref_sink() - * to get the ownership of the object.) + * (Note: The text object is floating, and it will be released after the + * signal. If signal handler wants to keep the object, the handler should + * use g_object_ref_sink() to get the ownership of the object.) */ context_signals[UPDATE_AUXILIARY_TEXT] = g_signal_new (I_("update-auxiliary-text"), @@ -306,9 +338,9 @@ ibus_input_context_class_init (IBusInputContextClass *class) * * Emitted to update lookup table. * - * (Note: The table object is floating, and it will be released after the signal. - * If singal handler want to keep the object, the handler should use g_object_ref_sink() - * to get the ownership of the object.) + * (Note: The table object is floating, and it will be released after the + * signal. If signal handler wants to keep the object, the handler should + * use g_object_ref_sink() to get the ownership of the object.) */ context_signals[UPDATE_LOOKUP_TABLE] = g_signal_new (I_("update-lookup-table"), @@ -419,9 +451,9 @@ ibus_input_context_class_init (IBusInputContextClass *class) * * Emitted to register the properties in @props. * - * (Note: The props object is floating, and it will be released after the signal. - * If singal handler want to keep the object, the handler should use g_object_ref_sink() - * to get the ownership of the object.) + * (Note: The props object is floating, and it will be released after the + * signal. If signal handler wants to keep the object, the handler should + * use g_object_ref_sink() to get the ownership of the object.) */ context_signals[REGISTER_PROPERTIES] = g_signal_new (I_("register-properties"), @@ -441,9 +473,9 @@ ibus_input_context_class_init (IBusInputContextClass *class) * * Emitted to update the property @prop. * - * (Note: The prop object is floating, and it will be released after the signal. - * If singal handler want to keep the object, the handler should use g_object_ref_sink() - * to get the ownership of the object.) + * (Note: The prop object is floating, and it will be released after the + * signal. If signal handler wants to keep the object, the handler should + * use g_object_ref_sink() to get the ownership of the object.) */ context_signals[UPDATE_PROPERTY] = g_signal_new (I_("update-property"), @@ -517,8 +549,10 @@ ibus_input_context_g_signal (GDBusProxy *proxy, g_variant_unref (variant); g_signal_emit (context, context_signals[COMMIT_TEXT], 0, text); - if (g_object_is_floating (text)) + if (g_object_is_floating (text)) { + g_object_ref_sink (text); g_object_unref (text); + } return; } if (g_strcmp0 (signal_name, "UpdatePreeditText") == 0) { @@ -536,8 +570,34 @@ ibus_input_context_g_signal (GDBusProxy *proxy, cursor_pos, visible); - if (g_object_is_floating (text)) + if (g_object_is_floating (text)) { + g_object_ref_sink (text); + g_object_unref (text); + } + return; + } + if (g_strcmp0 (signal_name, "UpdatePreeditTextWithMode") == 0) { + GVariant *variant = NULL; + gint32 cursor_pos; + gboolean visible; + guint mode = 0; + g_variant_get (parameters, + "(vubu)", &variant, &cursor_pos, &visible, &mode); + IBusText *text = IBUS_TEXT (ibus_serializable_deserialize (variant)); + g_variant_unref (variant); + + g_signal_emit (context, + context_signals[UPDATE_PREEDIT_TEXT_WITH_MODE], + 0, + text, + cursor_pos, + visible, + mode); + + if (g_object_is_floating (text)) { + g_object_ref_sink (text); g_object_unref (text); + } return; } @@ -564,8 +624,10 @@ ibus_input_context_g_signal (GDBusProxy *proxy, 0, text, visible); - if (g_object_is_floating (text)) + if (g_object_is_floating (text)) { + g_object_ref_sink (text); g_object_unref (text); + } return; } @@ -582,8 +644,10 @@ ibus_input_context_g_signal (GDBusProxy *proxy, 0, table, visible); - if (g_object_is_floating (table)) + if (g_object_is_floating (table)) { + g_object_ref_sink (table); g_object_unref (table); + } return; } @@ -600,8 +664,10 @@ ibus_input_context_g_signal (GDBusProxy *proxy, 0, prop_list); - if (g_object_is_floating (prop_list)) + if (g_object_is_floating (prop_list)) { + g_object_ref_sink (prop_list); g_object_unref (prop_list); + } return; } @@ -613,8 +679,10 @@ ibus_input_context_g_signal (GDBusProxy *proxy, g_signal_emit (context, context_signals[UPDATE_PROPERTY], 0, prop); - if (g_object_is_floating (prop)) + if (g_object_is_floating (prop)) { + g_object_ref_sink (prop); g_object_unref (prop); + } return; } @@ -682,17 +750,20 @@ ibus_input_context_new (const gchar *path, { g_assert (path != NULL); g_assert (G_IS_DBUS_CONNECTION (connection)); + const gchar *service_name = IBUS_SERVICE_IBUS; GInitable *initable; - GDBusProxyFlags flags = G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START | - G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES; + GDBusProxyFlags flags = G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START; + + if (g_object_get_data (G_OBJECT (connection), "ibus-portal-connection")) + service_name = IBUS_SERVICE_PORTAL; initable = g_initable_new (IBUS_TYPE_INPUT_CONTEXT, cancellable, error, "g-connection", connection, - "g-name", IBUS_SERVICE_IBUS, + "g-name", service_name, "g-flags", flags, "g-interface-name", IBUS_INTERFACE_INPUT_CONTEXT, "g-object-path", path, @@ -713,9 +784,12 @@ ibus_input_context_new_async (const gchar *path, g_assert (path != NULL); g_assert (G_IS_DBUS_CONNECTION (connection)); g_assert (callback != NULL); + const gchar *service_name = IBUS_SERVICE_IBUS; - GDBusProxyFlags flags = G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START | - G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES; + GDBusProxyFlags flags = G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START; + + if (g_object_get_data (G_OBJECT (connection), "ibus-portal-connection")) + service_name = IBUS_SERVICE_PORTAL; g_async_initable_new_async (IBUS_TYPE_INPUT_CONTEXT, G_PRIORITY_DEFAULT, @@ -723,7 +797,7 @@ ibus_input_context_new_async (const gchar *path, callback, user_data, "g-connection", connection, - "g-name", IBUS_SERVICE_IBUS, + "g-name", service_name, "g-flags", flags, "g-interface-name", IBUS_INTERFACE_INPUT_CONTEXT, "g-object-path", path, @@ -943,6 +1017,26 @@ ibus_input_context_set_cursor_location (IBusInputContext *context, ); } +void +ibus_input_context_set_cursor_location_relative (IBusInputContext *context, + gint32 x, + gint32 y, + gint32 w, + gint32 h) +{ + g_assert (IBUS_IS_INPUT_CONTEXT (context)); + + g_dbus_proxy_call ((GDBusProxy *) context, + "SetCursorLocationRelative", /* method_name */ + g_variant_new ("(iiii)", x, y, w, h),/* parameters */ + G_DBUS_CALL_FLAGS_NONE, /* flags */ + -1, /* timeout */ + NULL, /* cancellable */ + NULL, /* callback */ + NULL /* user_data */ + ); +} + void ibus_input_context_set_capabilities (IBusInputContext *context, guint32 capabilites) @@ -1015,10 +1109,11 @@ ibus_input_context_set_surrounding_text (IBusInputContext *context, guint32 cursor_pos, guint32 anchor_pos) { + IBusInputContextPrivate *priv; + g_assert (IBUS_IS_INPUT_CONTEXT (context)); g_assert (IBUS_IS_TEXT (text)); - IBusInputContextPrivate *priv; priv = IBUS_INPUT_CONTEXT_GET_PRIVATE (context); if (cursor_pos != priv->surrounding_cursor_pos || @@ -1057,6 +1152,43 @@ ibus_input_context_needs_surrounding_text (IBusInputContext *context) return priv->needs_surrounding_text; } +void +ibus_input_context_set_content_type (IBusInputContext *context, + guint purpose, + guint hints) +{ + GVariant *cached_content_type; + GVariant *content_type; + + g_assert (IBUS_IS_INPUT_CONTEXT (context)); + + cached_content_type = + g_dbus_proxy_get_cached_property ((GDBusProxy *) context, + "ContentType"); + content_type = g_variant_new ("(uu)", purpose, hints); + + g_variant_ref_sink (content_type); + if (cached_content_type == NULL || + !g_variant_equal (content_type, cached_content_type)) { + g_dbus_proxy_call ((GDBusProxy *) context, + "org.freedesktop.DBus.Properties.Set", + g_variant_new ("(ssv)", + IBUS_INTERFACE_INPUT_CONTEXT, + "ContentType", + content_type), + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, /* cancellable */ + NULL, /* callback */ + NULL /* user_data */ + ); + } + + if (cached_content_type != NULL) + g_variant_unref (cached_content_type); + g_variant_unref (content_type); +} + void ibus_input_context_get_engine_async (IBusInputContext *context, gint timeout_msec, @@ -1080,18 +1212,22 @@ ibus_input_context_get_engine_async_finish (IBusInputContext *context, GAsyncResult *res, GError **error) { + GVariant *variant; + GVariant *engine_desc_variant; + IBusEngineDesc *desc; + g_assert (IBUS_IS_INPUT_CONTEXT (context)); g_assert (G_IS_ASYNC_RESULT (res)); g_assert (error == NULL || *error == NULL); - GVariant *variant = g_dbus_proxy_call_finish ((GDBusProxy *) context, - res, error); + variant = g_dbus_proxy_call_finish ((GDBusProxy *) context, res, error); if (variant == NULL) { return NULL; } - GVariant *engine_desc_variant = g_variant_get_child_value (variant, 0); - IBusEngineDesc *desc = IBUS_ENGINE_DESC (ibus_serializable_deserialize (engine_desc_variant)); + engine_desc_variant = g_variant_get_child_value (variant, 0); + desc = IBUS_ENGINE_DESC ( + ibus_serializable_deserialize (engine_desc_variant)); g_variant_unref (engine_desc_variant); g_variant_unref (variant); @@ -1101,9 +1237,13 @@ ibus_input_context_get_engine_async_finish (IBusInputContext *context, IBusEngineDesc * ibus_input_context_get_engine (IBusInputContext *context) { - g_assert (IBUS_IS_INPUT_CONTEXT (context)); GVariant *result = NULL; GError *error = NULL; + GVariant *engine_desc_variant; + IBusEngineDesc *desc; + + g_assert (IBUS_IS_INPUT_CONTEXT (context)); + result = g_dbus_proxy_call_sync ((GDBusProxy *) context, "GetEngine", /* method_name */ NULL, /* parameters */ @@ -1127,8 +1267,9 @@ ibus_input_context_get_engine (IBusInputContext *context) return NULL; } - GVariant *engine_desc_variant = g_variant_get_child_value (result, 0); - IBusEngineDesc *desc = IBUS_ENGINE_DESC (ibus_serializable_deserialize (engine_desc_variant)); + engine_desc_variant = g_variant_get_child_value (result, 0); + desc = IBUS_ENGINE_DESC ( + ibus_serializable_deserialize (engine_desc_variant)); g_variant_unref (engine_desc_variant); g_variant_unref (result); @@ -1152,6 +1293,41 @@ ibus_input_context_set_engine (IBusInputContext *context, ); } +void +ibus_input_context_set_client_commit_preedit (IBusInputContext *context, + gboolean client_commit) +{ + GVariant *cached_content_type; + GVariant *var_client_commit; + + g_assert (IBUS_IS_INPUT_CONTEXT (context)); + + cached_content_type = + g_dbus_proxy_get_cached_property ((GDBusProxy *) context, + "ClientCommitPreedit"); + var_client_commit = g_variant_new ("(b)", client_commit); + + g_variant_ref_sink (var_client_commit); + if (cached_content_type == NULL) { + g_dbus_proxy_call ((GDBusProxy *) context, + "org.freedesktop.DBus.Properties.Set", + g_variant_new ("(ssv)", + IBUS_INTERFACE_INPUT_CONTEXT, + "ClientCommitPreedit", + var_client_commit), + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, /* cancellable */ + NULL, /* callback */ + NULL /* user_data */ + ); + } + + if (cached_content_type != NULL) + g_variant_unref (cached_content_type); + g_variant_unref (var_client_commit); +} + #define DEFINE_FUNC(name, Name) \ void \ ibus_input_context_##name (IBusInputContext *context) \ diff --git a/src/ibusinputcontext.h b/src/ibusinputcontext.h index 659732b1b..099921489 100644 --- a/src/ibusinputcontext.h +++ b/src/ibusinputcontext.h @@ -1,29 +1,33 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2013 Peng Huang + * Copyright (C) 2018 Takao Fujiwara + * Copyright (C) 2008-2018 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif +#ifndef __IBUS_INPUT_CONTEXT_H_ +#define __IBUS_INPUT_CONTEXT_H_ + /** * SECTION: ibusinputcontext * @short_description: IBus input context proxy object. @@ -36,9 +40,6 @@ * Clients call the IBusInputContext to invoke BusInputContext, * through which invokes IBusEngine. */ -#ifndef __IBUS_INPUT_CONTEXT_H_ -#define __IBUS_INPUT_CONTEXT_H_ - #include "ibusproxy.h" #include "ibusenginedesc.h" #include "ibustext.h" @@ -90,13 +91,13 @@ GType ibus_input_context_get_type (void); /** * ibus_input_context_new: * @path: The path to the object that emitting the signal. - * @connection: An #GDBusConnection. + * @connection: A #GDBusConnection. * @cancellable: A #GCancellable or %NULL. * @error: Return location for error or %NULL. * - * @returns: A newly allocated IBusInputContext. + * Creates a new #IBusInputContext. * - * New an IBusInputContext. + * Returns: A newly allocated #IBusInputContext. */ IBusInputContext * ibus_input_context_new (const gchar *path, @@ -106,13 +107,13 @@ IBusInputContext * /** * ibus_input_context_new_async: * @path: The path to the object that emitting the signal. - * @connection: An #GDBusConnection. + * @connection: A #GDBusConnection. * @cancellable: A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * The callback should not be %NULL. * @user_data: The data to pass to callback. * - * New an #IBusInputContext asynchronously. + * Creates a new #IBusInputContext asynchronously. */ void ibus_input_context_new_async (const gchar *path, GDBusConnection *connection, @@ -126,9 +127,9 @@ void ibus_input_context_new_async (const gchar *path, * ibus_input_context_new_async(). * @error: Return location for error or %NULL. * - * @returns: A newly allocated #IBusInputContext. - * * Finishes an operation started with ibus_input_context_new_async(). + * + * Returns: A newly allocated #IBusInputContext. */ IBusInputContext * ibus_input_context_new_async_finish @@ -137,10 +138,11 @@ IBusInputContext * /** * ibus_input_context_get_input_context: * @path: The path to the object that emitting the signal. - * @connection: An #GDBusConnection. - * @returns: (transfer none): An existing #IBusInputContext. + * @connection: A GDBusConnection. * * Gets an existing IBusInputContext. + * + * Returns: (transfer none): An existing #IBusInputContext. */ IBusInputContext * ibus_input_context_get_input_context @@ -149,13 +151,13 @@ IBusInputContext * /** * ibus_input_context_get_input_context_async: * @path: The path to the object that emitting the signal. - * @connection: An #GDBusConnection. + * @connection: A #GDBusConnection. * @cancellable: A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * The callback should not be %NULL. * @user_data: The data to pass to callback. * - * Get an existing #IBusInputContext asynchronously. + * Gets an existing #IBusInputContext asynchronously. */ void ibus_input_context_get_input_context_async (const gchar *path, @@ -170,9 +172,10 @@ void ibus_input_context_get_input_context_async * ibus_input_context_get_input_context_async(). * @error: Return location for error or %NULL. * - * @returns: (transfer none): An existing #IBusInputContext. + * Finishes an operation started with + * ibus_input_context_get_input_context_async(). * - * Finishes an operation started with ibus_input_contex_get_input_context_async(). + * Returns: (transfer none): An existing #IBusInputContext. */ IBusInputContext * ibus_input_context_get_input_context_async_finish @@ -180,7 +183,7 @@ IBusInputContext * GError **error); /** - * ibus_input_context_process_hand_writing_event + * ibus_input_context_process_hand_writing_event: * @context: An IBusInputContext. * @coordinates: An array of gdouble (0.0 to 1.0) which represents a stroke (i.e. [x1, y1, x2, y2, x3, y3, ...]). * @coordinates_len: The number of elements in the array. The number should be even and >= 4. @@ -203,7 +206,7 @@ void ibus_input_context_process_hand_writing_event guint coordinates_len); /** - * ibus_input_context_cancel_hand_writing + * ibus_input_context_cancel_hand_writing: * @context: An IBusInputContext. * @n_strokes: The number of strokes to be removed. Pass 0 to remove all. * @@ -259,14 +262,16 @@ void ibus_input_context_process_key_event_async /** * ibus_input_context_process_key_event_async_finish: - * @context: An IBusInputContext. - * @res: A GAsyncResult obtained from the GAsyncReadyCallback passed to + * @context: An #IBusInputContext. + * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to + * ibus_input_context_process_key_event_async(). + * @error: Return location for error or %NULL. + * + * Finishes an operation started with * ibus_input_context_process_key_event_async(). - * @error: Return location for error or NULL. - * @returns: %TRUE if the key event is processed; - * %FALSE otherwise or some errors happen and the @error will be set. * - * Finishes an operation started with ibus_input_context_process_key_event_async(). + * Returns: %TRUE if the key event is processed; + * %FALSE otherwise or some errors happen and the @error will be set. */ gboolean ibus_input_context_process_key_event_async_finish (IBusInputContext *context, @@ -275,13 +280,15 @@ gboolean ibus_input_context_process_key_event_async_finish /** * ibus_input_context_process_key_event: - * @context: An IBusInputContext. + * @context: An #IBusInputContext. * @keyval: Key symbol of a key event. * @keycode: Keycode of a key event. * @state: Key modifier flags. - * @returns: TRUE for successfully process the key; FALSE otherwise. * - * Pass the key event to input method engine and wait for the reply from ibus (i.e. synchronous IPC). + * Pass the key event to input method engine and wait for the reply from + * ibus (i.e. synchronous IPC). + * + * Returns: %TRUE for successfully process the key; %FALSE otherwise. * * See also: ibus_input_context_process_key_event_async() */ @@ -310,6 +317,22 @@ void ibus_input_context_set_cursor_location gint32 y, gint32 w, gint32 h); +/** + * ibus_input_context_set_cursor_location_relative: + * @context: An IBusInputContext. + * @x: X coordinate of the cursor. + * @y: Y coordinate of the cursor. + * @w: Width of the cursor. + * @h: Height of the cursor. + * + * Set the relative cursor location of IBus input context asynchronously. + */ +void ibus_input_context_set_cursor_location_relative + (IBusInputContext *context, + gint32 x, + gint32 y, + gint32 w, + gint32 h); /** * ibus_input_context_set_capabilities: * @context: An IBusInputContext. @@ -326,8 +349,8 @@ void ibus_input_context_set_capabilities guint32 capabilities); /** - * ibus_input_context_property_activate - * @context: An IBusInputContext. + * ibus_input_context_property_activate: + * @context: An #IBusInputContext. * @prop_name: A property name (e.g. "InputMode.WideLatin") * @state: A status of the property (e.g. PROP_STATE_CHECKED) * @@ -342,9 +365,10 @@ void ibus_input_context_property_activate /** * ibus_input_context_focus_in: - * @context: An IBusInputContext. + * @context: An #IBusInputContext. * - * Invoked when the client application get focus. An asynchronous IPC will be performed. + * Invoked when the client application get focus. An asynchronous IPC will + * be performed. * * see_also: #IBusEngine::focus_in. */ @@ -352,7 +376,7 @@ void ibus_input_context_focus_in (IBusInputContext *context); /** * ibus_input_context_focus_out: - * @context: An IBusInputContext. + * @context: An #IBusInputContext. * * Invoked when the client application get focus. An asynchronous IPC will be performed. * @@ -363,7 +387,7 @@ void ibus_input_context_focus_out (IBusInputContext *context); /** * ibus_input_context_reset: - * @context: An IBusInputContext. + * @context: An #IBusInputContext. * * Invoked when the IME is reset. An asynchronous IPC will be performed. * @@ -376,8 +400,8 @@ void ibus_input_context_reset (IBusInputContext *context); * @context: An #IBusInputContext. * @timeout_msec: The timeout in milliseconds or -1 to use the default timeout. * @cancellable: A #GCancellable or %NULL. - * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL - * if you don't care about the result of the method invocation. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied or + * %NULL if you don't care about the result of the method invocation. * @user_data: The data to pass to callback. * * An asynchronous IPC will be performed. @@ -395,9 +419,11 @@ void ibus_input_context_get_engine_async * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to * ibus_input_context_get_engine_async(). * @error: Return location for error or %NULL. - * @returns: (transfer none): An IME engine description for the context, or %NULL. * * Finishes an operation started with ibus_input_context_get_engine_async(). + * + * Returns: (transfer none): An IME engine description for the context, or + * %NULL. */ IBusEngineDesc * ibus_input_context_get_engine_async_finish @@ -407,18 +433,19 @@ IBusEngineDesc * /** * ibus_input_context_get_engine: - * @context: An IBusInputContext. - * @returns: (transfer none): An IME engine description for the context, or NULL. + * @context: An #IBusInputContext. * - * Returns an IME engine description for the context. + * Gets an IME engine description for the context. * A synchronous IPC will be performed. + * + * Returns: (transfer none): An IME engine description for the context, or NULL. */ IBusEngineDesc * ibus_input_context_get_engine (IBusInputContext *context); /** * ibus_input_context_set_engine: - * @context: An IBusInputContext. + * @context: An #IBusInputContext. * @name: A name of the engine. * * Invoked when the IME engine is changed. @@ -443,13 +470,58 @@ void ibus_input_context_set_surrounding_text /** * ibus_input_context_needs_surrounding_text: * @context: An #IBusInputContext. - * @returns: %TRUE if surrounding-text is needed by the current engine; - * %FALSE otherwise. * * Check whether the current engine requires surrounding-text. + * + * Returns: %TRUE if surrounding-text is needed by the current engine; + * %FALSE otherwise. */ gboolean ibus_input_context_needs_surrounding_text (IBusInputContext *context); +/** + * ibus_input_context_set_content_type: + * @context: An #IBusInputContext. + * @purpose: Primary purpose of the input context, as an #IBusInputPurpose. + * @hints: Hints that augment @purpose, as an #IBusInputHints. + * + * Set content-type (primary purpose and hints) of the context. This + * information is particularly useful to implement intelligent + * behavior in engines, such as automatic input-mode switch and text + * prediction. For example, to restrict input to numbers, the client + * can call this function with @purpose set to + * #IBUS_INPUT_PURPOSE_NUMBER. + * + * See also: #IBusEngine::set-content-type + */ +void ibus_input_context_set_content_type + (IBusInputContext *context, + guint purpose, + guint hints); + +/** + * ibus_input_context_set_client_commit_preedit: + * @context: An #IBusInputContext. + * @client_commit: %TRUE if your input context commits pre-edit texts + * with Space or Enter key events or mouse click events. %FALSE if + * ibus-daemon commits pre-edit texts with those events. + * The default is %FALSE. The behavior is decided with + * ibus_engine_update_preedit_text_with_mode() to commit, clear or + * keep the pre-edit text and this API is important in ibus-hangul. + * + * Set whether #IBusInputContext commits pre-edit texts or not. + * If %TRUE, 'update-preedit-text-with-mode' signal is emitted + * instead of 'update-preedit-text' signal. + * If your client receives the 'update-preedit-text-with-mode' signal, + * the client needs to implement commit_text() of pre-edit text when + * GtkIMContextClass.focus_out() is called in case an IME desires that + * behavior but it depends on each IME. + * + * See also ibus_engine_update_preedit_text_with_mode(). + */ +void ibus_input_context_set_client_commit_preedit ( + IBusInputContext *context, + gboolean client_commit); + G_END_DECLS #endif diff --git a/src/ibusinternal.h b/src/ibusinternal.h index 6feb5f391..c2637ab53 100644 --- a/src/ibusinternal.h +++ b/src/ibusinternal.h @@ -7,32 +7,23 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif -/** - * SECTION: ibusinternal - * @short_description: IBus internal. - * @title: IBusInternal - * @stability: Stable - * - * This section contain several IBus house keeping functions. - * - */ #ifndef __IBUS_INTERNEL_H_ #define __IBUS_INTERNEL_H_ @@ -47,5 +38,29 @@ */ #define I_(string) g_intern_static_string (string) +/** + * DBUS_SERVICE_DBUS: + * + * Address of D-Bus service. + */ +#define DBUS_SERVICE_DBUS "org.freedesktop.DBus" + +/** + * DBUS_PATH_DBUS: + * + * D-Bus path for D-Bus. + */ +#define DBUS_PATH_DBUS "/org/freedesktop/DBus" + +/** + * DBUS_INTERFACE_DBUS: + * + * D-Bus interface for D-Bus. + */ +#define DBUS_INTERFACE_DBUS "org.freedesktop.DBus" + +G_GNUC_INTERNAL void +ibus_g_variant_get_child_string (GVariant *variant, gsize index, char **str); + #endif diff --git a/src/ibuskeymap.c b/src/ibuskeymap.c index e6d454770..5abfb99a7 100644 --- a/src/ibuskeymap.c +++ b/src/ibuskeymap.c @@ -2,22 +2,23 @@ /* vim:set et sts=4: */ /* IBus - The Input Bus * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2018 Takao Fujiwara + * Copyright (C) 2008-2018 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include #include @@ -72,7 +73,7 @@ static gboolean ibus_keymap_parse_line (gchar *str, KEYMAP keymap) { - gchar *p1, *p2; + gchar *p1, *p2, ch; gint i; guint keycode; guint keysym; @@ -139,11 +140,12 @@ ibus_keymap_parse_line (gchar *str, if (keysym == IBUS_KEY_VoidSymbol) return FALSE; + /* Do not assign *p1 to g_ascii_isalpha() directly for the syntax check */ if (i == 0 && strncmp (p2, "addupper", sizeof ("addupper") - 1) == 0 && - g_ascii_isalpha (*p1)) { + (ch = *p1) && (ch >= 0) && g_ascii_isalpha (ch)) { gchar buf[] = "a"; - buf[0] = g_ascii_toupper(*p1); + buf[0] = g_ascii_toupper(ch); keymap[keycode][0] = keymap[keycode][3] = keysym; keymap[keycode][1] = keymap[keycode][2] = ibus_keyval_from_name (buf); @@ -159,13 +161,17 @@ static gboolean ibus_keymap_load (const gchar *name, KEYMAP keymap) { + const gchar *envstr; gchar *fname; FILE *pf; gchar buf[256]; gint lineno; - fname = g_build_filename (IBUS_DATA_DIR, "keymaps", name, NULL); + if ((envstr = g_getenv ("IBUS_KEYMAP_PATH")) != NULL) + fname = g_build_filename (envstr, name, NULL); + else + fname = g_build_filename (IBUS_DATA_DIR, "keymaps", name, NULL); if (fname == NULL) { return FALSE; diff --git a/src/ibuskeymap.h b/src/ibuskeymap.h index 9221babbb..7f079ef93 100644 --- a/src/ibuskeymap.h +++ b/src/ibuskeymap.h @@ -7,23 +7,26 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif +#ifndef __IBUS_KEYMAP_H_ +#define __IBUS_KEYMAP_H_ + /** * SECTION: ibuskeymap * @short_description: Keyboard mapping handling. @@ -41,13 +44,10 @@ * Then ibus_keymap_lookup_keysym() can * convert scancodes back to the key symbols. * - * @see_also: #IBusComponent, #IBusEngineDesc + * see_also: #IBusComponent, #IBusEngineDesc * */ -#ifndef __IBUS_KEYMAP_H_ -#define __IBUS_KEYMAP_H_ - #include "ibusobject.h" /* @@ -113,13 +113,14 @@ GType ibus_keymap_get_type (void); /** * ibus_keymap_new: * @name: The keymap file to be loaded, such as 'us', 'jp'. - * @returns: An IBusKeymap associated with the giving name; or NULL if failed. * - * Get an IBusKeymap associated with the giving name. + * Get an #IBusKeymap associated with the giving name. * * This function loads the keymap file specified in @name * in the IBUS_DATA_DIR/keymaps directory. * + * Returns: An #IBusKeymap associated with the giving name; or %NULL if failed. + * * Deprecated: This function has been deprecated and should * not be used in newly written code. Please use ibus_keymap_get(). */ @@ -129,12 +130,14 @@ IBusKeymap *ibus_keymap_new (const gchar *name) /** * ibus_keymap_get: * @name: The keymap file to be loaded, such as 'us', 'jp'. - * @returns: An IBusKeymap associated with the giving name; or NULL if failed. * * Get an IBusKeymap associated with the giving name. * * This function loads the keymap file specified in @name * in the IBUS_DATA_DIR/keymaps directory. + * + * Returns: (transfer full): An #IBusKeymap associated with the giving name; + * or %NULL if failed. */ IBusKeymap *ibus_keymap_get (const gchar *name); @@ -143,9 +146,10 @@ IBusKeymap *ibus_keymap_get (const gchar *name); * @keymap: An IBusKeymap. * @keycode: A scancode to be converted. * @state: Modifier flags(such as Ctrl, Shift). - * @returns: Corresponding keysym. * - * Convert the scancode to keysym, given the keymap. + * Converts the scancode to keysym, given the keymap. + * + * Returns: Corresponding keysym. */ guint ibus_keymap_lookup_keysym (IBusKeymap *keymap, guint16 keycode, diff --git a/src/ibuskeynames.c b/src/ibuskeynames.c index 39ec4275b..544c6ade9 100644 --- a/src/ibuskeynames.c +++ b/src/ibuskeynames.c @@ -14,9 +14,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library. If not, see . */ /* @@ -33,6 +31,7 @@ #include #include "ibuskeysyms.h" #include "keyname-table.h" +#include "ibuskeys.h" #define IBUS_NUM_KEYS G_N_ELEMENTS (gdk_keys_by_keyval) @@ -125,7 +124,7 @@ modifier_name[] = { NULL, // 31 }; -const gchar * +gchar * ibus_key_event_to_string (guint keyval, guint modifiers) { @@ -193,8 +192,154 @@ ibus_key_event_from_string (const gchar *string, if (*keyval != IBUS_KEY_VoidSymbol) retval = TRUE; _out: - if (tokens) - g_strfreev (tokens); + g_strfreev (tokens); return retval; } +guint +ibus_keyval_to_upper (guint keyval) +{ + guint result; + + ibus_keyval_convert_case (keyval, NULL, &result); + + return result; +} + +guint +ibus_keyval_to_lower (guint keyval) +{ + guint result; + + ibus_keyval_convert_case (keyval, &result, NULL); + + return result; +} + +void +ibus_keyval_convert_case (guint symbol, + guint *lower, + guint *upper) +{ + guint xlower, xupper; + + xlower = symbol; + xupper = symbol; + + /* Check for directly encoded 24-bit UCS characters: */ + if ((symbol & 0xff000000) == 0x01000000) + { + if (lower) + *lower = ibus_unicode_to_keyval (g_unichar_tolower (symbol & 0x00ffffff)); + if (upper) + *upper = ibus_unicode_to_keyval (g_unichar_toupper (symbol & 0x00ffffff)); + return; + } + + switch (symbol >> 8) + { + case 0: /* Latin 1 */ + if ((symbol >= IBUS_KEY_A) && (symbol <= IBUS_KEY_Z)) + xlower += (IBUS_KEY_a - IBUS_KEY_A); + else if ((symbol >= IBUS_KEY_a) && (symbol <= IBUS_KEY_z)) + xupper -= (IBUS_KEY_a - IBUS_KEY_A); + else if ((symbol >= IBUS_KEY_Agrave) && (symbol <= IBUS_KEY_Odiaeresis)) + xlower += (IBUS_KEY_agrave - IBUS_KEY_Agrave); + else if ((symbol >= IBUS_KEY_agrave) && (symbol <= IBUS_KEY_odiaeresis)) + xupper -= (IBUS_KEY_agrave - IBUS_KEY_Agrave); + else if ((symbol >= IBUS_KEY_Ooblique) && (symbol <= IBUS_KEY_Thorn)) + xlower += (IBUS_KEY_oslash - IBUS_KEY_Ooblique); + else if ((symbol >= IBUS_KEY_oslash) && (symbol <= IBUS_KEY_thorn)) + xupper -= (IBUS_KEY_oslash - IBUS_KEY_Ooblique); + break; + + case 1: /* Latin 2 */ + /* Assume the KeySym is a legal value (ignore discontinuities) */ + if (symbol == IBUS_KEY_Aogonek) + xlower = IBUS_KEY_aogonek; + else if (symbol >= IBUS_KEY_Lstroke && symbol <= IBUS_KEY_Sacute) + xlower += (IBUS_KEY_lstroke - IBUS_KEY_Lstroke); + else if (symbol >= IBUS_KEY_Scaron && symbol <= IBUS_KEY_Zacute) + xlower += (IBUS_KEY_scaron - IBUS_KEY_Scaron); + else if (symbol >= IBUS_KEY_Zcaron && symbol <= IBUS_KEY_Zabovedot) + xlower += (IBUS_KEY_zcaron - IBUS_KEY_Zcaron); + else if (symbol == IBUS_KEY_aogonek) + xupper = IBUS_KEY_Aogonek; + else if (symbol >= IBUS_KEY_lstroke && symbol <= IBUS_KEY_sacute) + xupper -= (IBUS_KEY_lstroke - IBUS_KEY_Lstroke); + else if (symbol >= IBUS_KEY_scaron && symbol <= IBUS_KEY_zacute) + xupper -= (IBUS_KEY_scaron - IBUS_KEY_Scaron); + else if (symbol >= IBUS_KEY_zcaron && symbol <= IBUS_KEY_zabovedot) + xupper -= (IBUS_KEY_zcaron - IBUS_KEY_Zcaron); + else if (symbol >= IBUS_KEY_Racute && symbol <= IBUS_KEY_Tcedilla) + xlower += (IBUS_KEY_racute - IBUS_KEY_Racute); + else if (symbol >= IBUS_KEY_racute && symbol <= IBUS_KEY_tcedilla) + xupper -= (IBUS_KEY_racute - IBUS_KEY_Racute); + break; + + case 2: /* Latin 3 */ + /* Assume the KeySym is a legal value (ignore discontinuities) */ + if (symbol >= IBUS_KEY_Hstroke && symbol <= IBUS_KEY_Hcircumflex) + xlower += (IBUS_KEY_hstroke - IBUS_KEY_Hstroke); + else if (symbol >= IBUS_KEY_Gbreve && symbol <= IBUS_KEY_Jcircumflex) + xlower += (IBUS_KEY_gbreve - IBUS_KEY_Gbreve); + else if (symbol >= IBUS_KEY_hstroke && symbol <= IBUS_KEY_hcircumflex) + xupper -= (IBUS_KEY_hstroke - IBUS_KEY_Hstroke); + else if (symbol >= IBUS_KEY_gbreve && symbol <= IBUS_KEY_jcircumflex) + xupper -= (IBUS_KEY_gbreve - IBUS_KEY_Gbreve); + else if (symbol >= IBUS_KEY_Cabovedot && symbol <= IBUS_KEY_Scircumflex) + xlower += (IBUS_KEY_cabovedot - IBUS_KEY_Cabovedot); + else if (symbol >= IBUS_KEY_cabovedot && symbol <= IBUS_KEY_scircumflex) + xupper -= (IBUS_KEY_cabovedot - IBUS_KEY_Cabovedot); + break; + + case 3: /* Latin 4 */ + /* Assume the KeySym is a legal value (ignore discontinuities) */ + if (symbol >= IBUS_KEY_Rcedilla && symbol <= IBUS_KEY_Tslash) + xlower += (IBUS_KEY_rcedilla - IBUS_KEY_Rcedilla); + else if (symbol >= IBUS_KEY_rcedilla && symbol <= IBUS_KEY_tslash) + xupper -= (IBUS_KEY_rcedilla - IBUS_KEY_Rcedilla); + else if (symbol == IBUS_KEY_ENG) + xlower = IBUS_KEY_eng; + else if (symbol == IBUS_KEY_eng) + xupper = IBUS_KEY_ENG; + else if (symbol >= IBUS_KEY_Amacron && symbol <= IBUS_KEY_Umacron) + xlower += (IBUS_KEY_amacron - IBUS_KEY_Amacron); + else if (symbol >= IBUS_KEY_amacron && symbol <= IBUS_KEY_umacron) + xupper -= (IBUS_KEY_amacron - IBUS_KEY_Amacron); + break; + + case 6: /* Cyrillic */ + /* Assume the KeySym is a legal value (ignore discontinuities) */ + if (symbol >= IBUS_KEY_Serbian_DJE && symbol <= IBUS_KEY_Serbian_DZE) + xlower -= (IBUS_KEY_Serbian_DJE - IBUS_KEY_Serbian_dje); + else if (symbol >= IBUS_KEY_Serbian_dje && symbol <= IBUS_KEY_Serbian_dze) + xupper += (IBUS_KEY_Serbian_DJE - IBUS_KEY_Serbian_dje); + else if (symbol >= IBUS_KEY_Cyrillic_YU && symbol <= IBUS_KEY_Cyrillic_HARDSIGN) + xlower -= (IBUS_KEY_Cyrillic_YU - IBUS_KEY_Cyrillic_yu); + else if (symbol >= IBUS_KEY_Cyrillic_yu && symbol <= IBUS_KEY_Cyrillic_hardsign) + xupper += (IBUS_KEY_Cyrillic_YU - IBUS_KEY_Cyrillic_yu); + break; + + case 7: /* Greek */ + /* Assume the KeySym is a legal value (ignore discontinuities) */ + if (symbol >= IBUS_KEY_Greek_ALPHAaccent && symbol <= IBUS_KEY_Greek_OMEGAaccent) + xlower += (IBUS_KEY_Greek_alphaaccent - IBUS_KEY_Greek_ALPHAaccent); + else if (symbol >= IBUS_KEY_Greek_alphaaccent && symbol <= IBUS_KEY_Greek_omegaaccent && + symbol != IBUS_KEY_Greek_iotaaccentdieresis && + symbol != IBUS_KEY_Greek_upsilonaccentdieresis) + xupper -= (IBUS_KEY_Greek_alphaaccent - IBUS_KEY_Greek_ALPHAaccent); + else if (symbol >= IBUS_KEY_Greek_ALPHA && symbol <= IBUS_KEY_Greek_OMEGA) + xlower += (IBUS_KEY_Greek_alpha - IBUS_KEY_Greek_ALPHA); + else if (symbol == IBUS_KEY_Greek_finalsmallsigma) + xupper = IBUS_KEY_Greek_SIGMA; + else if (symbol >= IBUS_KEY_Greek_alpha && symbol <= IBUS_KEY_Greek_omega) + xupper -= (IBUS_KEY_Greek_alpha - IBUS_KEY_Greek_ALPHA); + break; + } + + if (lower) + *lower = xlower; + if (upper) + *upper = xupper; +} diff --git a/src/ibuskeys.h b/src/ibuskeys.h index e728c227d..74c23a68a 100644 --- a/src/ibuskeys.h +++ b/src/ibuskeys.h @@ -7,17 +7,17 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) @@ -29,23 +29,26 @@ #include +G_BEGIN_DECLS /** * ibus_keyval_name: * @keyval: Key symbol. - * @returns: Corresponding key name. %NULL if no such key symbol. * * Return the name of a key symbol. * * Note that the returned string is used internally, so don't free it. + * + * Returns: Corresponding key name. %NULL if no such key symbol. */ const gchar *ibus_keyval_name (guint keyval); /** * ibus_keyval_from_name: * @keyval_name: Key name in #gdk_keys_by_name. - * @returns: Corresponding key symbol. * * Return the key symbol that associate with the key name. + * + * Returns: Corresponding key symbol. */ guint ibus_keyval_from_name (const gchar *keyval_name); @@ -55,9 +58,9 @@ guint ibus_keyval_from_name (const gchar *keyval_name); * * Convert from a ISO10646 character to a key symbol. * - * Return value: the corresponding IBus key symbol, if one exists. - * or, if there is no corresponding symbol, - * wc | 0x01000000 + * Returns: the corresponding IBus key symbol, if one exists. + * or, if there is no corresponding symbol, + * wc | 0x01000000 **/ guint ibus_unicode_to_keyval (gunichar wc); @@ -68,9 +71,43 @@ guint ibus_unicode_to_keyval (gunichar wc); * Convert from an IBus key symbol to the corresponding ISO10646 (Unicode) * character. * - * Return value: the corresponding unicode character, or 0 if there - * is no corresponding character. + * Returns: the corresponding unicode character, or 0 if there + * is no corresponding character. **/ gunichar ibus_keyval_to_unicode (guint keyval); +/** + * ibus_keyval_to_upper: + * @keyval: a key value. + * + * Converts a key value to upper case, if applicable. + * + * Returns: the upper case form of @keyval, or @keyval itself if it is already + * in upper case or it is not subject to case conversion. + */ +guint ibus_keyval_to_upper (guint keyval); + +/** + * ibus_keyval_to_lower: + * @keyval: a key value. + * + * Converts a key value to lower case, if applicable. + * + * Returns: the lower case form of @keyval, or @keyval itself if it is already + * in lower case or it is not subject to case conversion. + */ +guint ibus_keyval_to_lower (guint keyval); + +/** + * ibus_keyval_convert_case: + * @symbol: a keyval + * @lower: (out): return location for lowercase version of @symbol + * @upper: (out): return location for uppercase version of @symbol + * + * Obtains the upper- and lower-case versions of the keyval @symbol. + * Examples of keyvals are #IBUS_KEY_a, #IBUS_KEY_Return, #IBUS_KEY_F1, etc. + */ +void ibus_keyval_convert_case (guint symbol, guint *lower, guint *upper); + +G_END_DECLS #endif // __IBUS_KEYS_H_ diff --git a/src/ibuskeysyms-compat.h b/src/ibuskeysyms-compat.h index c131ed13d..111b8da9f 100644 --- a/src/ibuskeysyms-compat.h +++ b/src/ibuskeysyms-compat.h @@ -1,28 +1,31 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* ibus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2013 Peng Huang + * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif +#ifndef __IBUS_KEYSYMS_COMPAT_H__ +#define __IBUS_KEYSYMS_COMPAT_H__ + /** * SECTION: ibuskeysyms * @short_description: Key symbol definition. @@ -36,13 +39,10 @@ * Most of the key symbols are not explicit documented, * because they are self-explaining. * - * @see_also: #IBusKeymap, #IBusHotkeyProfile + * see_also: #IBusKeymap, #IBusHotkeyProfile * */ -#ifndef __IBUS_KEYSYMS_COMPAT_H__ -#define __IBUS_KEYSYMS_COMPAT_H__ - #define IBUS_VoidSymbol 0xffffff #define IBUS_BackSpace 0xff08 diff --git a/src/ibuskeysyms.h b/src/ibuskeysyms.h index ff46414a1..2fb2ea193 100644 --- a/src/ibuskeysyms.h +++ b/src/ibuskeysyms.h @@ -1,23 +1,23 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2013 Peng Huang + * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) @@ -274,6 +274,10 @@ #define IBUS_KEY_dead_invertedbreve 0xfe6d #define IBUS_KEY_dead_belowcomma 0xfe6e #define IBUS_KEY_dead_currency 0xfe6f +#define IBUS_KEY_dead_lowline 0xfe90 +#define IBUS_KEY_dead_aboveverticalline 0xfe91 +#define IBUS_KEY_dead_belowverticalline 0xfe92 +#define IBUS_KEY_dead_longsolidusoverlay 0xfe93 #define IBUS_KEY_dead_a 0xfe80 #define IBUS_KEY_dead_A 0xfe81 #define IBUS_KEY_dead_e 0xfe82 @@ -286,6 +290,7 @@ #define IBUS_KEY_dead_U 0xfe89 #define IBUS_KEY_dead_small_schwa 0xfe8a #define IBUS_KEY_dead_capital_schwa 0xfe8b +#define IBUS_KEY_dead_greek 0xfe8c #define IBUS_KEY_First_Virtual_Screen 0xfed0 #define IBUS_KEY_Prev_Virtual_Screen 0xfed1 #define IBUS_KEY_Next_Virtual_Screen 0xfed2 @@ -1200,6 +1205,7 @@ #define IBUS_KEY_leftdoublequotemark 0xad2 #define IBUS_KEY_rightdoublequotemark 0xad3 #define IBUS_KEY_prescription 0xad4 +#define IBUS_KEY_permille 0xad5 #define IBUS_KEY_minutes 0xad6 #define IBUS_KEY_seconds 0xad7 #define IBUS_KEY_latincross 0xad9 @@ -1633,6 +1639,8 @@ #define IBUS_KEY_obarred 0x1000275 #define IBUS_KEY_SCHWA 0x100018f #define IBUS_KEY_schwa 0x1000259 +#define IBUS_KEY_EZH 0x10001b7 +#define IBUS_KEY_ezh 0x1000292 #define IBUS_KEY_Lbelowdot 0x1001e36 #define IBUS_KEY_lbelowdot 0x1001e37 #define IBUS_KEY_Abelowdot 0x1001ea0 @@ -2118,5 +2126,184 @@ #define IBUS_KEY_Sinh_ruu2 0x1000df2 #define IBUS_KEY_Sinh_luu2 0x1000df3 #define IBUS_KEY_Sinh_kunddaliya 0x1000df4 +#define IBUS_KEY_ModeLock 0x1008ff01 +#define IBUS_KEY_MonBrightnessUp 0x1008ff02 +#define IBUS_KEY_MonBrightnessDown 0x1008ff03 +#define IBUS_KEY_KbdLightOnOff 0x1008ff04 +#define IBUS_KEY_KbdBrightnessUp 0x1008ff05 +#define IBUS_KEY_KbdBrightnessDown 0x1008ff06 +#define IBUS_KEY_Standby 0x1008ff10 +#define IBUS_KEY_AudioLowerVolume 0x1008ff11 +#define IBUS_KEY_AudioMute 0x1008ff12 +#define IBUS_KEY_AudioRaiseVolume 0x1008ff13 +#define IBUS_KEY_AudioPlay 0x1008ff14 +#define IBUS_KEY_AudioStop 0x1008ff15 +#define IBUS_KEY_AudioPrev 0x1008ff16 +#define IBUS_KEY_AudioNext 0x1008ff17 +#define IBUS_KEY_HomePage 0x1008ff18 +#define IBUS_KEY_Mail 0x1008ff19 +#define IBUS_KEY_Start 0x1008ff1a +#define IBUS_KEY_Search 0x1008ff1b +#define IBUS_KEY_AudioRecord 0x1008ff1c +#define IBUS_KEY_Calculator 0x1008ff1d +#define IBUS_KEY_Memo 0x1008ff1e +#define IBUS_KEY_ToDoList 0x1008ff1f +#define IBUS_KEY_Calendar 0x1008ff20 +#define IBUS_KEY_PowerDown 0x1008ff21 +#define IBUS_KEY_ContrastAdjust 0x1008ff22 +#define IBUS_KEY_RockerUp 0x1008ff23 +#define IBUS_KEY_RockerDown 0x1008ff24 +#define IBUS_KEY_RockerEnter 0x1008ff25 +#define IBUS_KEY_Back 0x1008ff26 +#define IBUS_KEY_Forward 0x1008ff27 +#define IBUS_KEY_Stop 0x1008ff28 +#define IBUS_KEY_Refresh 0x1008ff29 +#define IBUS_KEY_PowerOff 0x1008ff2a +#define IBUS_KEY_WakeUp 0x1008ff2b +#define IBUS_KEY_Eject 0x1008ff2c +#define IBUS_KEY_ScreenSaver 0x1008ff2d +#define IBUS_KEY_WWW 0x1008ff2e +#define IBUS_KEY_Sleep 0x1008ff2f +#define IBUS_KEY_Favorites 0x1008ff30 +#define IBUS_KEY_AudioPause 0x1008ff31 +#define IBUS_KEY_AudioMedia 0x1008ff32 +#define IBUS_KEY_MyComputer 0x1008ff33 +#define IBUS_KEY_VendorHome 0x1008ff34 +#define IBUS_KEY_LightBulb 0x1008ff35 +#define IBUS_KEY_Shop 0x1008ff36 +#define IBUS_KEY_History 0x1008ff37 +#define IBUS_KEY_OpenURL 0x1008ff38 +#define IBUS_KEY_AddFavorite 0x1008ff39 +#define IBUS_KEY_HotLinks 0x1008ff3a +#define IBUS_KEY_BrightnessAdjust 0x1008ff3b +#define IBUS_KEY_Finance 0x1008ff3c +#define IBUS_KEY_Community 0x1008ff3d +#define IBUS_KEY_AudioRewind 0x1008ff3e +#define IBUS_KEY_BackForward 0x1008ff3f +#define IBUS_KEY_Launch0 0x1008ff40 +#define IBUS_KEY_Launch1 0x1008ff41 +#define IBUS_KEY_Launch2 0x1008ff42 +#define IBUS_KEY_Launch3 0x1008ff43 +#define IBUS_KEY_Launch4 0x1008ff44 +#define IBUS_KEY_Launch5 0x1008ff45 +#define IBUS_KEY_Launch6 0x1008ff46 +#define IBUS_KEY_Launch7 0x1008ff47 +#define IBUS_KEY_Launch8 0x1008ff48 +#define IBUS_KEY_Launch9 0x1008ff49 +#define IBUS_KEY_LaunchA 0x1008ff4a +#define IBUS_KEY_LaunchB 0x1008ff4b +#define IBUS_KEY_LaunchC 0x1008ff4c +#define IBUS_KEY_LaunchD 0x1008ff4d +#define IBUS_KEY_LaunchE 0x1008ff4e +#define IBUS_KEY_LaunchF 0x1008ff4f +#define IBUS_KEY_ApplicationLeft 0x1008ff50 +#define IBUS_KEY_ApplicationRight 0x1008ff51 +#define IBUS_KEY_Book 0x1008ff52 +#define IBUS_KEY_CD 0x1008ff53 +#define IBUS_KEY_WindowClear 0x1008ff55 +#define IBUS_KEY_Close 0x1008ff56 +#define IBUS_KEY_Copy 0x1008ff57 +#define IBUS_KEY_Cut 0x1008ff58 +#define IBUS_KEY_Display 0x1008ff59 +#define IBUS_KEY_DOS 0x1008ff5a +#define IBUS_KEY_Documents 0x1008ff5b +#define IBUS_KEY_Excel 0x1008ff5c +#define IBUS_KEY_Explorer 0x1008ff5d +#define IBUS_KEY_Game 0x1008ff5e +#define IBUS_KEY_Go 0x1008ff5f +#define IBUS_KEY_iTouch 0x1008ff60 +#define IBUS_KEY_LogOff 0x1008ff61 +#define IBUS_KEY_Market 0x1008ff62 +#define IBUS_KEY_Meeting 0x1008ff63 +#define IBUS_KEY_MenuKB 0x1008ff65 +#define IBUS_KEY_MenuPB 0x1008ff66 +#define IBUS_KEY_MySites 0x1008ff67 +#define IBUS_KEY_New 0x1008ff68 +#define IBUS_KEY_News 0x1008ff69 +#define IBUS_KEY_OfficeHome 0x1008ff6a +#define IBUS_KEY_Open 0x1008ff6b +#define IBUS_KEY_Option 0x1008ff6c +#define IBUS_KEY_Paste 0x1008ff6d +#define IBUS_KEY_Phone 0x1008ff6e +#define IBUS_KEY_Reply 0x1008ff72 +#define IBUS_KEY_Reload 0x1008ff73 +#define IBUS_KEY_RotateWindows 0x1008ff74 +#define IBUS_KEY_RotationPB 0x1008ff75 +#define IBUS_KEY_RotationKB 0x1008ff76 +#define IBUS_KEY_Save 0x1008ff77 +#define IBUS_KEY_ScrollUp 0x1008ff78 +#define IBUS_KEY_ScrollDown 0x1008ff79 +#define IBUS_KEY_ScrollClick 0x1008ff7a +#define IBUS_KEY_Send 0x1008ff7b +#define IBUS_KEY_Spell 0x1008ff7c +#define IBUS_KEY_SplitScreen 0x1008ff7d +#define IBUS_KEY_Support 0x1008ff7e +#define IBUS_KEY_TaskPane 0x1008ff7f +#define IBUS_KEY_Terminal 0x1008ff80 +#define IBUS_KEY_Tools 0x1008ff81 +#define IBUS_KEY_Travel 0x1008ff82 +#define IBUS_KEY_UserPB 0x1008ff84 +#define IBUS_KEY_User1KB 0x1008ff85 +#define IBUS_KEY_User2KB 0x1008ff86 +#define IBUS_KEY_Video 0x1008ff87 +#define IBUS_KEY_WheelButton 0x1008ff88 +#define IBUS_KEY_Word 0x1008ff89 +#define IBUS_KEY_Xfer 0x1008ff8a +#define IBUS_KEY_ZoomIn 0x1008ff8b +#define IBUS_KEY_ZoomOut 0x1008ff8c +#define IBUS_KEY_Away 0x1008ff8d +#define IBUS_KEY_Messenger 0x1008ff8e +#define IBUS_KEY_WebCam 0x1008ff8f +#define IBUS_KEY_MailForward 0x1008ff90 +#define IBUS_KEY_Pictures 0x1008ff91 +#define IBUS_KEY_Music 0x1008ff92 +#define IBUS_KEY_Battery 0x1008ff93 +#define IBUS_KEY_Bluetooth 0x1008ff94 +#define IBUS_KEY_WLAN 0x1008ff95 +#define IBUS_KEY_UWB 0x1008ff96 +#define IBUS_KEY_AudioForward 0x1008ff97 +#define IBUS_KEY_AudioRepeat 0x1008ff98 +#define IBUS_KEY_AudioRandomPlay 0x1008ff99 +#define IBUS_KEY_Subtitle 0x1008ff9a +#define IBUS_KEY_AudioCycleTrack 0x1008ff9b +#define IBUS_KEY_CycleAngle 0x1008ff9c +#define IBUS_KEY_FrameBack 0x1008ff9d +#define IBUS_KEY_FrameForward 0x1008ff9e +#define IBUS_KEY_Time 0x1008ff9f +#define IBUS_KEY_SelectButton 0x1008ffa0 +#define IBUS_KEY_View 0x1008ffa1 +#define IBUS_KEY_TopMenu 0x1008ffa2 +#define IBUS_KEY_Red 0x1008ffa3 +#define IBUS_KEY_Green 0x1008ffa4 +#define IBUS_KEY_Yellow 0x1008ffa5 +#define IBUS_KEY_Blue 0x1008ffa6 +#define IBUS_KEY_Suspend 0x1008ffa7 +#define IBUS_KEY_Hibernate 0x1008ffa8 +#define IBUS_KEY_TouchpadToggle 0x1008ffa9 +#define IBUS_KEY_TouchpadOn 0x1008ffb0 +#define IBUS_KEY_TouchpadOff 0x1008ffb1 +#define IBUS_KEY_AudioMicMute 0x1008ffb2 +#define IBUS_KEY_Keyboard 0x1008ffb3 +#define IBUS_KEY_WWAN 0x1008ffb4 +#define IBUS_KEY_RFKill 0x1008ffb5 +#define IBUS_KEY_AudioPreset 0x1008ffb6 +#define IBUS_KEY_Switch_VT_1 0x1008fe01 +#define IBUS_KEY_Switch_VT_2 0x1008fe02 +#define IBUS_KEY_Switch_VT_3 0x1008fe03 +#define IBUS_KEY_Switch_VT_4 0x1008fe04 +#define IBUS_KEY_Switch_VT_5 0x1008fe05 +#define IBUS_KEY_Switch_VT_6 0x1008fe06 +#define IBUS_KEY_Switch_VT_7 0x1008fe07 +#define IBUS_KEY_Switch_VT_8 0x1008fe08 +#define IBUS_KEY_Switch_VT_9 0x1008fe09 +#define IBUS_KEY_Switch_VT_10 0x1008fe0a +#define IBUS_KEY_Switch_VT_11 0x1008fe0b +#define IBUS_KEY_Switch_VT_12 0x1008fe0c +#define IBUS_KEY_Ungrab 0x1008fe20 +#define IBUS_KEY_ClearGrab 0x1008fe21 +#define IBUS_KEY_Next_VMode 0x1008fe22 +#define IBUS_KEY_Prev_VMode 0x1008fe23 +#define IBUS_KEY_LogWindowTree 0x1008fe24 +#define IBUS_KEY_LogGrabInfo 0x1008fe25 #endif /* __IBUS_KEYSYMS_H__ */ diff --git a/src/ibuskeyuni.c b/src/ibuskeyuni.c index ec0bcebf9..8d66ac3a7 100644 --- a/src/ibuskeyuni.c +++ b/src/ibuskeyuni.c @@ -12,9 +12,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library. If not, see . */ /* @@ -863,16 +861,6 @@ static const struct { { 0xFFFF /* Delete */, '\177' } }; -/** - * ibus_keyval_to_unicode: - * @keyval: an IBus key symbol - * - * Convert from an IBus key symbol to the corresponding ISO10646 (Unicode) - * character. - * - * Return value: the corresponding unicode character, or 0 if there - * is no corresponding character. - **/ gunichar ibus_keyval_to_unicode (guint keyval) { @@ -1663,16 +1651,6 @@ static const struct { { 0x0ef7, 0x318e }, /* Hangul_AraeAE ㆎ HANGUL LETTER ARAEAE */ }; -/** - * ibus_unicode_to_keyval: - * @wc: a ISO10646 encoded character - * - * Convert from a ISO10646 character to a key symbol. - * - * Return value: the corresponding IBus key symbol, if one exists. - * or, if there is no corresponding symbol, - * wc | 0x01000000 - **/ guint ibus_unicode_to_keyval (gunichar wc) { diff --git a/src/ibuslookuptable.c b/src/ibuslookuptable.c index 9782f39c4..48f3a94a4 100644 --- a/src/ibuslookuptable.c +++ b/src/ibuslookuptable.c @@ -7,17 +7,17 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include "ibuslookuptable.h" diff --git a/src/ibuslookuptable.h b/src/ibuslookuptable.h index 53d08d3e3..843e2e21b 100644 --- a/src/ibuslookuptable.h +++ b/src/ibuslookuptable.h @@ -1,43 +1,46 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* IBus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2013 Peng Huang + * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif +#ifndef __IBUS_LOOKUP_TABLE_H_ +#define __IBUS_LOOKUP_TABLE_H_ + /** * SECTION: ibuslookuptable * @short_description: Candidate word/phrase lookup table. * @stability: Stable - * @see_also: #IBusEngine * - * An IBusLookuptable stores the candidate words or phrases for users to choose from. + * An IBusLookuptable stores the candidate words or phrases for users to + * choose from. * * Use ibus_engine_update_lookup_table(), ibus_engine_show_lookup_table(), * and ibus_engine_hide_lookup_table() to update, show and hide the lookup * table. + * + * see_also: #IBusEngine */ -#ifndef __IBUS_LOOKUP_TABLE_H_ -#define __IBUS_LOOKUP_TABLE_H_ #include "ibusserializable.h" #include "ibustext.h" @@ -108,9 +111,10 @@ GType ibus_lookup_table_get_type (void); * @cursor_pos: position index of cursor. * @cursor_visible: whether the cursor is visible. * @round: TRUE for lookup table wrap around. - * @returns: A newly allocated IBusLookupTable. * - * New a IBusLookupTable. + * Craetes a new #IBusLookupTable. + * + * Returns: A newly allocated #IBusLookupTable. */ IBusLookupTable *ibus_lookup_table_new (guint page_size, guint cursor_pos, @@ -131,9 +135,10 @@ void ibus_lookup_table_append_candidate /** * ibus_lookup_table_get_number_of_candidates: * @table: An IBusLookupTable. - * @returns: The number of candidates in the table * * Return the number of candidate in the table. + * + * Returns: The number of candidates in the table */ guint ibus_lookup_table_get_number_of_candidates (IBusLookupTable *table); @@ -142,9 +147,11 @@ guint ibus_lookup_table_get_number_of_candidates * ibus_lookup_table_get_candidate: * @table: An IBusLookupTable. * @index: Index in the Lookup table. - * @returns: (transfer none): IBusText at the given index; NULL if no such IBusText. * - * Return IBusText at the given index. Borrowed reference. + * Return #IBusText at the given index. Borrowed reference. + * + * Returns: (transfer none): IBusText at the given index; NULL if no such + * #IBusText. */ IBusText *ibus_lookup_table_get_candidate (IBusLookupTable *table, @@ -182,9 +189,11 @@ void ibus_lookup_table_set_label * ibus_lookup_table_get_label: * @table: An IBusLookupTable. * @index: Index in the Lookup table. - * @returns: (transfer none): IBusText at the given index; NULL if no such IBusText. * - * Return IBusText at the given index. Borrowed reference. + * Return #IBusText at the given index. Borrowed reference. + * + * Returns: (transfer none): #IBusText at the given index; %NULL if no such + * #IBusText. */ IBusText *ibus_lookup_table_get_label (IBusLookupTable *table, @@ -205,9 +214,10 @@ void ibus_lookup_table_set_cursor_pos /** * ibus_lookup_table_get_cursor_pos: * @table: An IBusLookupTable. - * @returns: The position of cursor. * - * Get the cursor position of IBusLookupTable. + * Gets the cursor position of #IBusLookupTable. + * + * Returns: The position of cursor. */ guint ibus_lookup_table_get_cursor_pos (IBusLookupTable *table); @@ -225,10 +235,11 @@ void ibus_lookup_table_set_cursor_visible /** * ibus_lookup_table_is_cursor_visible: - * @table: An IBusLookupTable. - * @returns: Whether the cursor of @table is visible. + * @table: An #IBusLookupTable. + * + * Returns whether the cursor of an #IBusLookupTable is visible. * - * Returns whether the cursor of an IBusLookupTable is visible. + * Returns: Whether the cursor of @table is visible. */ gboolean ibus_lookup_table_is_cursor_visible (IBusLookupTable *table); @@ -236,9 +247,10 @@ gboolean ibus_lookup_table_is_cursor_visible /** * ibus_lookup_table_get_cursor_in_page: * @table: An IBusLookupTable. - * @returns: The position of cursor in current page. * - * Get the cursor position in current page of IBusLookupTable. + * Gets the cursor position in current page of #IBusLookupTable. + * + * Returns: The position of cursor in current page. */ guint ibus_lookup_table_get_cursor_in_page (IBusLookupTable *table); @@ -256,9 +268,11 @@ void ibus_lookup_table_set_page_size /** * ibus_lookup_table_get_page_size: * @table: An IBusLookupTable. - * @returns: Page size, i.e., number of candidate shown per page. * - * Get the number of candidate shown per page. + * Gets the number of candidate shown per page. + * + * Returns: Page size, i.e., number of candidate shown per page. +dd */ guint ibus_lookup_table_get_page_size (IBusLookupTable *table); @@ -276,9 +290,10 @@ void ibus_lookup_table_set_round /** * ibus_lookup_table_is_round: * @table: An IBusLookupTable. - * @returns: Whether the @table is round. * - * Returns whether the IBusLookupTable is round. + * Returns whether the #IBusLookupTable is round. + * + * Returns: Whether the @table is round. */ gboolean ibus_lookup_table_is_round (IBusLookupTable *table); @@ -296,9 +311,10 @@ void ibus_lookup_table_set_orientation /** * ibus_lookup_table_get_orientation: * @table: An IBusLookupTable. - * @returns: The orientation of the @table. * - * Returns the orientation of the IBusLookupTable. + * Returns the orientation of the #IBusLookupTable. + * + * Returns: The orientation of the @table. */ gint ibus_lookup_table_get_orientation (IBusLookupTable *table); @@ -315,52 +331,56 @@ void ibus_lookup_table_clear (IBusLookupTable *table); /** * ibus_lookup_table_page_up: * @table: An IBusLookupTable. - * @returns: TRUE if succeed. * - * Go to previous page of an IBusLookupTable. + * Go to previous page of an #IBusLookupTable. * * It returns FALSE if it is already at the first page, * unless table>-round==TRUE, where it will go * to the last page. + * + * Returns: %TRUE if succeed. */ gboolean ibus_lookup_table_page_up (IBusLookupTable *table); /** * ibus_lookup_table_page_down: * @table: An IBusLookupTable. - * @returns: TRUE if succeed. * - * Go to next page of an IBusLookupTable. + * Go to next page of an #IBusLookupTable. * * It returns FALSE if it is already at the last page, * unless table>-round==TRUE, where it will go * to the first page. + * + * Returns: %TRUE if succeed. */ gboolean ibus_lookup_table_page_down(IBusLookupTable *table); /** * ibus_lookup_table_cursor_up: * @table: An IBusLookupTable. - * @returns: TRUE if succeed. * - * Go to previous candidate of an IBusLookupTable. + * Go to previous candidate of an #IBusLookupTable. * * It returns FALSE if it is already at the first candidate, * unless table>-round==TRUE, where it will go * to the last candidate. + * + * Returns: %TRUE if succeed. */ gboolean ibus_lookup_table_cursor_up(IBusLookupTable *table); /** * ibus_lookup_table_cursor_down: * @table: An IBusLookupTable. - * @returns: TRUE if succeed. * - * Go to next candidate of an IBusLookupTable. + * Go to next candidate of an #IBusLookupTable. * * It returns FALSE if it is already at the last candidate, * unless table>-round==TRUE, where it will go * to the first candidate. + * + * Returns: %TRUE if succeed. */ gboolean ibus_lookup_table_cursor_down (IBusLookupTable *table); diff --git a/src/ibusmarshalers.list b/src/ibusmarshalers.list index 918bc7f7a..aa9ea82ac 100644 --- a/src/ibusmarshalers.list +++ b/src/ibusmarshalers.list @@ -1,27 +1,28 @@ -VOID:NONE +VOID:VOID VOID:OBJECT VOID:POINTER VOID:STRING VOID:STRING,INT VOID:STRING,UINT -BOOL:POINTER -BOOL:POINTER,POINTER -BOOL:UINT,UINT -BOOL:UINT,UINT,UINT -BOOL:ULONG +BOOLEAN:POINTER +BOOLEAN:POINTER,POINTER +BOOLEAN:UINT,UINT +BOOLEAN:UINT,UINT,UINT +BOOLEAN:ULONG VOID:INT,INT,INT,INT VOID:UINT,UINT VOID:INT,UINT VOID:UINT,UINT,UINT -VOID:OBJECT,UINT,BOOL -VOID:OBJECT,UINT,BOOL,UINT +VOID:OBJECT,UINT,BOOLEAN +VOID:OBJECT,UINT,BOOLEAN,UINT VOID:OBJECT,UINT,UINT -VOID:OBJECT,BOOL -VOID:BOXED,BOOL +VOID:OBJECT,BOOLEAN +VOID:BOXED,BOOLEAN VOID:BOXED VOID:STRING,STRING,VARIANT VOID:STRING,STRING,STRING VOID:UINT VOID:UINT,POINTER VOID:POINTER,UINT +VOID:VARIANT OBJECT:STRING diff --git a/src/ibusobject.c b/src/ibusobject.c index 12a4fb009..15d9aa3ab 100644 --- a/src/ibusobject.c +++ b/src/ibusobject.c @@ -1,23 +1,23 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2013 Peng Huang + * Copyright (C) 2008-2019 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include "ibusobject.h" @@ -25,7 +25,7 @@ #include "ibusinternal.h" #define IBUS_OBJECT_GET_PRIVATE(o) \ - (G_TYPE_INSTANCE_GET_PRIVATE ((o), IBUS_TYPE_OBJECT, IBusObjectPrivate)) + ((IBusObjectPrivate *)ibus_object_get_instance_private (o)) enum { DESTROY, @@ -53,7 +53,7 @@ static void ibus_object_dispose (IBusObject *obj); static void ibus_object_finalize (IBusObject *obj); static void ibus_object_real_destroy (IBusObject *obj); -G_DEFINE_TYPE (IBusObject, ibus_object, G_TYPE_INITIALLY_UNOWNED) +G_DEFINE_TYPE_WITH_PRIVATE (IBusObject, ibus_object, G_TYPE_INITIALLY_UNOWNED) static void ibus_object_class_init (IBusObjectClass *class) @@ -86,8 +86,6 @@ ibus_object_class_init (IBusObjectClass *class) _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); - g_type_class_add_private (class, sizeof (IBusObjectPrivate)); - #ifdef DEBUG_MEMORY _count_table = g_hash_table_new (g_direct_hash, g_direct_equal); #endif @@ -162,13 +160,6 @@ ibus_object_real_destroy (IBusObject *obj) g_signal_handlers_destroy (obj); } -/** - * ibus_object_new: - * - * Creates a new instance of an #IBusObject. - * - * Returns: a new instance of #IBusObject. - */ IBusObject * ibus_object_new (void) { diff --git a/src/ibusobject.h b/src/ibusobject.h index 790adf657..2117316fb 100644 --- a/src/ibusobject.h +++ b/src/ibusobject.h @@ -1,29 +1,32 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2013 Peng Huang + * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif +#ifndef __IBUS_OBJECT_H_ +#define __IBUS_OBJECT_H_ + /** * SECTION: ibusobject * @short_description: Base object of IBus. @@ -32,8 +35,6 @@ * * IBusObject is the base object for all objects in IBus. */ -#ifndef __IBUS_OBJECT_H_ -#define __IBUS_OBJECT_H_ #include #include "ibustypes.h" @@ -57,6 +58,15 @@ #define IBUS_OBJECT_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_OBJECT, IBusObjectClass)) +/** + * IBusObjectFlags: + * @IBUS_IN_DESTRUCTION: Used in GObjectClass::dispose + * @IBUS_DESTROYED: Used during emitting IBusObject::destroy signal. + * @IBUS_RESERVED_1: Reserved. + * @IBUS_RESERVED_2: Reserved. + * + * The flags are used internally. + */ typedef enum { IBUS_IN_DESTRUCTION = (1 << 0), IBUS_DESTROYED = (1 << 1), @@ -90,7 +100,7 @@ struct _IBusObject { IBusObjectPrivate *priv; }; -typedef void ( *IBusObjectDestroyFunc) (IBusObject *); +typedef void ( *IBusObjectDestroyFunc) (IBusObject *object); struct _IBusObjectClass { GInitiallyUnownedClass parent; @@ -107,9 +117,10 @@ GType ibus_object_get_type (void); /** * ibus_object_new: - * @returns: A newly allocated IBusObject * - * New an IBusObject. + * Creates a new #IBusObject. + * + * Returns: A newly allocated #IBusObject */ IBusObject *ibus_object_new (void); @@ -117,7 +128,7 @@ IBusObject *ibus_object_new (void); * ibus_object_destroy: * @object: an #IBusObject to destroy. * - * Emit the "destory" signal notifying all reference holders that they should + * Emit the "destroy" signal notifying all reference holders that they should * release the #IBusObject. * * The memory for the object itself won't be deleted until its reference count diff --git a/src/ibusobservedpath.c b/src/ibusobservedpath.c index b3b82a029..42192431b 100644 --- a/src/ibusobservedpath.c +++ b/src/ibusobservedpath.c @@ -1,26 +1,28 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input IBus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2015 Peng Huang + * Copyright (C) 2020 Takao Fujiwara + * Copyright (C) 2008-2020 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include #include +#include "ibusinternal.h" #include "ibusobservedpath.h" @@ -29,14 +31,14 @@ enum { }; -/* IBusObservedPathPriv */ +/* IBusObservedPathPrivate */ struct _IBusObservedPathPrivate { - gpointer pad; + guint *file_hash_list; }; typedef struct _IBusObservedPathPrivate IBusObservedPathPrivate; #define IBUS_OBSERVED_PATH_GET_PRIVATE(o) \ - (G_TYPE_INSTANCE_GET_PRIVATE ((o), IBUS_TYPE_OBSERVED_PATH, IBusObservedPathPrivate)) + ((IBusObservedPathPrivate *)ibus_observed_path_get_instance_private (o)) // static guint _signals[LAST_SIGNAL] = { 0 }; @@ -51,7 +53,9 @@ static gboolean ibus_observed_path_copy (IBusObservedPath *des static gboolean ibus_observed_path_parse_xml_node (IBusObservedPath *path, XMLNode *node); -G_DEFINE_TYPE (IBusObservedPath, ibus_observed_path, IBUS_TYPE_SERIALIZABLE) +G_DEFINE_TYPE_WITH_PRIVATE (IBusObservedPath, + ibus_observed_path, + IBUS_TYPE_SERIALIZABLE) static void ibus_observed_path_class_init (IBusObservedPathClass *class) @@ -59,8 +63,6 @@ ibus_observed_path_class_init (IBusObservedPathClass *class) IBusObjectClass *object_class = IBUS_OBJECT_CLASS (class); IBusSerializableClass *serializable_class = IBUS_SERIALIZABLE_CLASS (class); - // g_type_class_add_private (class, sizeof (IBusObservedPathPrivate)); - object_class->destroy = (IBusObjectDestroyFunc) ibus_observed_path_destroy; serializable_class->serialize = (IBusSerializableSerializeFunc) ibus_observed_path_serialize; @@ -85,14 +87,26 @@ static gboolean ibus_observed_path_serialize (IBusObservedPath *path, GVariantBuilder *builder) { + IBusObservedPathPrivate *priv = IBUS_OBSERVED_PATH_GET_PRIVATE (path); gboolean retval; + guint i; - retval = IBUS_SERIALIZABLE_CLASS (ibus_observed_path_parent_class)->serialize ((IBusSerializable *)path, builder); + retval = IBUS_SERIALIZABLE_CLASS (ibus_observed_path_parent_class)-> + serialize ((IBusSerializable *)path, builder); g_return_val_if_fail (retval, FALSE); g_variant_builder_add (builder, "s", path->path); g_variant_builder_add (builder, "x", path->mtime); + if (!priv->file_hash_list) { + g_variant_builder_add (builder, "u", 0); + return TRUE; + } + for (i = 0; priv->file_hash_list[i]; i++); + g_variant_builder_add (builder, "u", i); + for (i = 0; priv->file_hash_list[i]; i++) + g_variant_builder_add (builder, "u", priv->file_hash_list[i]); + return TRUE; } @@ -100,14 +114,26 @@ static gint ibus_observed_path_deserialize (IBusObservedPath *path, GVariant *variant) { + IBusObservedPathPrivate *priv = IBUS_OBSERVED_PATH_GET_PRIVATE (path); gint retval; + guint i, length = 0; - retval = IBUS_SERIALIZABLE_CLASS (ibus_observed_path_parent_class)->deserialize ((IBusSerializable *)path, variant); + retval = IBUS_SERIALIZABLE_CLASS (ibus_observed_path_parent_class)-> + deserialize ((IBusSerializable *)path, variant); g_return_val_if_fail (retval, 0); - g_variant_get_child (variant, retval++, "s", &path->path); + ibus_g_variant_get_child_string (variant, retval++, &path->path); g_variant_get_child (variant, retval++, "x", &path->mtime); + if (g_variant_n_children (variant) < retval + 2) + return retval; + g_variant_get_child (variant, retval++, "u", &length); + if (!length) + return retval; + priv->file_hash_list = g_new0 (guint, length + 1); + for (i = 0; i < length; i++) + g_variant_get_child (variant, retval++, "u", &priv->file_hash_list[i]); + return retval; } @@ -115,14 +141,27 @@ static gboolean ibus_observed_path_copy (IBusObservedPath *dest, const IBusObservedPath *src) { + IBusObservedPathPrivate *dest_priv = IBUS_OBSERVED_PATH_GET_PRIVATE (dest); + IBusObservedPathPrivate *src_priv = + IBUS_OBSERVED_PATH_GET_PRIVATE ((IBusObservedPath *)src); gboolean retval; + guint i; - retval = IBUS_SERIALIZABLE_CLASS (ibus_observed_path_parent_class)->copy ((IBusSerializable *)dest, (IBusSerializable *)src); + retval = IBUS_SERIALIZABLE_CLASS (ibus_observed_path_parent_class)-> + copy ((IBusSerializable *)dest, (IBusSerializable *)src); g_return_val_if_fail (retval, FALSE); dest->path = g_strdup (src->path); dest->mtime = src->mtime; + g_clear_pointer (&dest_priv->file_hash_list, g_free); + if (!src_priv->file_hash_list) + return TRUE; + for (i = 0; src_priv->file_hash_list[i]; i++); + dest_priv->file_hash_list = g_new0 (guint, i + 1); + for (i = 0; src_priv->file_hash_list[i]; i++) + dest_priv->file_hash_list[i] = src_priv->file_hash_list[i]; + return TRUE; } @@ -136,31 +175,128 @@ ibus_observed_path_copy (IBusObservedPath *dest, void ibus_observed_path_output (IBusObservedPath *path, - GString *output, - gint indent) + GString *output, + gint indent) { + IBusObservedPathPrivate *priv = IBUS_OBSERVED_PATH_GET_PRIVATE (path); + guint i; + g_assert (IBUS_IS_OBSERVED_PATH (path)); g_assert (output); - g_string_append_indent (output, indent); - g_string_append_printf (output, "%s\n", - path->mtime, - path->path); + if (!priv->file_hash_list) { + g_string_append_indent (output, indent); + g_string_append_printf (output, "%s\n", + path->mtime, + path->path); + } else { + g_string_append_indent (output, indent); + g_string_append_printf ( + output, + "\n", + path->mtime, + path->path); + for (i = 0; priv->file_hash_list[i]; i++) { + g_string_append_indent (output, indent + 1); + g_string_append_printf (output, "\n", + priv->file_hash_list[i]); + } + g_string_append_indent (output, indent); + g_string_append_printf (output, "\n"); + } } gboolean ibus_observed_path_check_modification (IBusObservedPath *path) { - g_assert (IBUS_IS_OBSERVED_PATH (path)); + IBusObservedPathPrivate *priv = IBUS_OBSERVED_PATH_GET_PRIVATE (path); + gchar *real_path = NULL; struct stat buf; + gboolean retval = FALSE; + GDir *dir = NULL; + const gchar *name; + guint i = 0; + guint file_num = 0; - if (g_stat (path->path, &buf) != 0) { + g_assert (IBUS_IS_OBSERVED_PATH (path)); + + if (path->path[0] == '~') { + const gchar *homedir = g_get_home_dir (); + real_path = g_build_filename (homedir, path->path + 2, NULL); + } + else { + real_path = g_strdup (path->path); + } + + if (g_stat (real_path, &buf) != 0) { buf.st_mtime = 0; } - if (path->mtime == buf.st_mtime) - return FALSE; - return TRUE; + + if (path->mtime != buf.st_mtime) { + retval = TRUE; + goto end_check_modification; + } + + /* If an ibus engine is installed, normal file system updates + * the directory mtime of "/usr/share/ibus/component" and + * path->mtime of the cache file and buf.st_mtime of the current directory + * could have the different values. + * + * But under a special file system, the buf.st_mtime is not updated + * even if an ibus engine is installed, likes Fedora Silverblue + * and ibus_observed_path_check_modification() could not detect + * the installed ibus engines. + * Now path->priv->file_hash_list reserves the hash list of the files + * in the observed directory and if a new ibus engine is installed, + * the hash of the compose file does not exists in the cache's + * file_hash_list and ibus-daemon regenerate the cache successfully. + */ + if (!priv->file_hash_list) { + /* If the cache version is old, ibus_registry_load_cache() returns + * FALSE and ibus_registry_check_modification() and this are not + * called. + * If the cache version is the latest, the cache file includes the + * filled file_hash_list for directories with ibus_observed_path_new() + * when the cache was generated. + * Then if file_hash_list is null, it's a simple file in ibus + * components and return here simply. + */ + goto end_check_modification; + } + dir = g_dir_open (real_path, 0, NULL); + g_return_val_if_fail (dir, FALSE); + + while ((name = g_dir_read_name (dir)) != NULL) { + guint current_hash; + gboolean has_file = FALSE; + + if (!g_str_has_suffix (name, ".xml")) + continue; + current_hash = g_str_hash (name); + for (i = 0; priv->file_hash_list[i]; i++) { + if (current_hash == priv->file_hash_list[i]) { + has_file = TRUE; + break; + } + } + if (!has_file) { + retval = TRUE; + goto end_check_modification; + } + file_num++; + } + if (!retval) { + for (i = 0; priv->file_hash_list[i]; i++); + if (file_num != i) + retval = TRUE; + } + +end_check_modification: + if (dir) + g_dir_close (dir); + g_free (real_path); + return retval; } static void @@ -185,7 +321,8 @@ ibus_observed_path_fill_stat (IBusObservedPath *path) } GList * -ibus_observed_path_traverse (IBusObservedPath *path) +ibus_observed_path_traverse (IBusObservedPath *path, + gboolean dir_only) { g_assert (IBUS_IS_OBSERVED_PATH (path)); @@ -206,54 +343,115 @@ ibus_observed_path_traverse (IBusObservedPath *path) sub->path = g_build_filename (path->path, name, NULL); ibus_observed_path_fill_stat (sub); - paths = g_list_append (paths, sub); - - if (sub->is_exist && sub->is_dir) - paths = g_list_concat (paths, ibus_observed_path_traverse (sub)); + if (sub->is_exist && sub->is_dir) { + paths = g_list_append (paths, sub); + paths = g_list_concat (paths, + ibus_observed_path_traverse (sub, dir_only)); + } else if (sub->is_exist && !dir_only) { + paths = g_list_append (paths, sub); + } } g_dir_close (dir); return paths; } + +static gboolean +ibus_observed_path_parse_file (IBusObservedPath *path, + XMLNode *node, + int *nth) +{ + IBusObservedPathPrivate *priv = IBUS_OBSERVED_PATH_GET_PRIVATE (path); + gchar **attr; + + for (attr = node->attributes; attr[0]; attr += 2) { + guint hash = 0; + + if (g_strcmp0 (*attr, "hash") == 0) + hash = atol (attr[1]); + else if (g_strcmp0 (*attr, "name") == 0) + hash = g_str_hash (attr[1]); + if (hash) { + if (!priv->file_hash_list) { + *nth = 0; + priv->file_hash_list = g_new0 (guint, *nth + 2); + } else { + priv->file_hash_list = g_renew (guint, priv->file_hash_list, + *nth + 2); + } + priv->file_hash_list[*nth] = hash; + priv->file_hash_list[*nth + 1] = 0; + *nth += 1; + continue; + } + g_warning ("Unkonwn attribute %s", attr[0]); + } + + return TRUE; +} + + static gboolean ibus_observed_path_parse_xml_node (IBusObservedPath *path, XMLNode *node) { + gchar **attr; + const gchar *full_path = node->text; + GList *p; + int i = 0; + g_assert (IBUS_IS_OBSERVED_PATH (path)); g_assert (node); - if (G_UNLIKELY (g_strcmp0 (node->name, "path") != 0)) { + if (G_UNLIKELY (g_strcmp0 (node->name, "path") != 0)) return FALSE; + + for (attr = node->attributes; attr[0]; attr += 2) { + if (g_strcmp0 (*attr, "mtime") == 0) { + path->mtime = atol (attr[1]); + continue; + } + if (g_strcmp0 (*attr, "path") == 0) { + full_path = attr[1]; + continue; + } + if (g_strcmp0 (*attr, "type") == 0) { + if (!g_strcmp0 (attr[1], "dir")) + path->is_dir = TRUE; + else if (!g_strcmp0 (attr[1], "file")) + path->is_dir = FALSE; + else + g_warning ("The type attribute can be \"dir\" or \"file\"."); + continue; + } + g_warning ("Unkonwn attribute %s", attr[0]); } - if (node->text[0] == '~' && node->text[1] != G_DIR_SEPARATOR) { - g_warning ("invalide path \"%s\"", node->text); + if (full_path[0] == '~' && full_path[1] != G_DIR_SEPARATOR) { + g_warning ("Invalid path \"%s\"", full_path); return FALSE; } - if (node->text[0] == '~') { - const gchar *homedir = g_getenv ("HOME"); - if (homedir == NULL) - homedir = g_get_home_dir (); - path->path = g_build_filename (homedir, node->text + 2, NULL); - } - else { - path->path = g_strdup (node->text); - } + path->path = g_strdup (full_path); - gchar **attr; - for (attr = node->attributes; attr[0]; attr += 2) { - if (g_strcmp0 (*attr, "mtime") == 0) { - path->mtime = atol (attr[1]); + if (!path->is_dir) + return TRUE; + + for (i = 0, p = node->sub_nodes; p != NULL; p = p->next) { + XMLNode *sub_node = (XMLNode *)p->data; + + if (G_UNLIKELY (g_strcmp0 (sub_node->name, "file") != 0)) { + g_warning ("Unkonwn tag %s", sub_node->name); continue; } - g_warning ("Unkonwn attribute %s", attr[0]); + ibus_observed_path_parse_file (path, sub_node, &i); } return TRUE; } + IBusObservedPath * ibus_observed_path_new_from_xml_node (XMLNode *node, gboolean fill_stat) @@ -279,16 +477,46 @@ IBusObservedPath * ibus_observed_path_new (const gchar *path, gboolean fill_stat) { - g_assert (path); - IBusObservedPath *op; + IBusObservedPathPrivate *priv; + GList *file_list, *l; + guint i = 0; + g_assert (path); op = (IBusObservedPath *) g_object_new (IBUS_TYPE_OBSERVED_PATH, NULL); op->path = g_strdup (path); - if (fill_stat) { - ibus_observed_path_fill_stat (op); + priv = IBUS_OBSERVED_PATH_GET_PRIVATE (op); + l = file_list = ibus_observed_path_traverse (op, FALSE); + for (; l; l = l->next) { + IBusObservedPath *sub = l->data; + const gchar *file = NULL; + + g_return_val_if_fail (sub && sub->path, op); + + file = sub->path; + if (!g_str_has_suffix (file, ".xml")) + continue; + if (g_str_has_prefix (file, path)) { + file += strlen (path); + if (*file == '/') + file++; + /* Ignore sub directories */ + if (strchr (file, '/')) + continue; + } + if (!i) + priv->file_hash_list = g_new0 (guint, i + 2); + else + priv->file_hash_list = g_renew (guint, priv->file_hash_list, i + 2); + priv->file_hash_list[i] = g_str_hash (file); + priv->file_hash_list[i + 1] = 0; + ++i; } + g_list_free_full (file_list, (GDestroyNotify)ibus_observed_path_destroy); + + if (fill_stat) + ibus_observed_path_fill_stat (op); return op; } diff --git a/src/ibusobservedpath.h b/src/ibusobservedpath.h index e0d7033fc..3715380b6 100644 --- a/src/ibusobservedpath.h +++ b/src/ibusobservedpath.h @@ -1,29 +1,32 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input IBus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2013 Peng Huang + * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif +#ifndef __IBUS_OBSERVED_PATH_H_ +#define __IBUS_OBSERVED_PATH_H_ + /** * SECTION: ibusobservedpath * @short_description: Path object of IBus. @@ -33,9 +36,6 @@ * such as monitor modification, directory tree traversal. */ -#ifndef __IBUS_OBSERVED_PATH_H_ -#define __IBUS_OBSERVED_PATH_H_ - #include "ibusserializable.h" #include "ibusxml.h" @@ -75,6 +75,7 @@ struct _IBusObservedPath { IBusSerializable parent; /* instance members */ + /*< public >*/ gchar *path; glong mtime; gboolean is_dir; @@ -94,9 +95,10 @@ GType ibus_observed_path_get_type (void); * ibus_observed_path_new_from_xml_node: * @node: An XML node that contain path. * @fill_stat: Auto-fill the path status. - * @returns: A newly allocated IBusObservedPath. * - * New an IBusObservedPath from an XML node. + * Creates an new #IBusObservedPath from an XML node. + * + * Returns: A newly allocated #IBusObservedPath. */ IBusObservedPath *ibus_observed_path_new_from_xml_node (XMLNode *node, gboolean fill_stat); @@ -105,9 +107,10 @@ IBusObservedPath *ibus_observed_path_new_from_xml_node (XMLNode * ibus_observed_path_new: * @path: The path string. * @fill_stat: Auto-fill the path status. - * @returns: A newly allocated IBusObservedPath. * - * New an IBusObservedPath from an XML node. + * Creates a new #IBusObservedPath from an XML node. + * + * Returns: A newly allocated #IBusObservedPath. */ IBusObservedPath *ibus_observed_path_new (const gchar *path, gboolean fill_stat); @@ -115,20 +118,26 @@ IBusObservedPath *ibus_observed_path_new (const gchar /** * ibus_observed_path_traverse: * @path: An IBusObservedPath. - * @returns: (element-type IBusObservedPath): A newly allocate GList which holds content in path; NULL if @path is not directory. + * @dir_only: Only looks for subdirs, not files * - * Recursively traverse the path and put the files and subdirectory in to a newly allocated + * Recursively traverse the path and put the files and subdirectory in to + * a newly allocated * GLists, if the @path is a directory. Otherwise returns NULL. + * + * Returns: (transfer full) (element-type IBusObservedPath): A newly allocate + * GList which holds content in path; NULL if @path is not directory. */ -GList *ibus_observed_path_traverse (IBusObservedPath *path); +GList *ibus_observed_path_traverse (IBusObservedPath *path, + gboolean dir_only); /** * ibus_observed_path_check_modification: * @path: An IBusObservedPath. - * @returns: TRUE if mtime is changed; FALSE otherwise. * - * Checks whether the path is modified by comparing the mtime in object and mtime in file system. - * Returns TRUE if imtime is changed, otherwise FALSE. + * Checks whether the path is modified by comparing the mtime in object and + * mtime in file system. + * + * Returns: %TRUE if imtime is changed, otherwise %FALSE. */ gboolean ibus_observed_path_check_modification (IBusObservedPath *path); diff --git a/src/ibuspanelservice.c b/src/ibuspanelservice.c index f02739077..984cc890b 100644 --- a/src/ibuspanelservice.c +++ b/src/ibuspanelservice.c @@ -1,29 +1,34 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus - * Copyright (c) 2009, Google Inc. All rights reserved. - * Copyright (C) 2010 Peng Huang + * Copyright (c) 2009-2014 Google Inc. All rights reserved. + * Copyright (C) 2010-2014 Peng Huang + * Copyright (C) 2017-2018 Takao Fujiwara * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include "ibusshare.h" #include "ibuspanelservice.h" #include "ibusmarshalers.h" #include "ibusinternal.h" +#define IBUS_PANEL_SERVICE_GET_PRIVATE(o) \ + (G_TYPE_INSTANCE_GET_PRIVATE ((o), IBUS_TYPE_PANEL_SERVICE, \ + IBusPanelServicePrivate)) + enum { UPDATE_PREEDIT_TEXT, UPDATE_AUXILIARY_TEXT, @@ -33,6 +38,7 @@ enum { REGISTER_PROPERTIES, UPDATE_PROPERTY, SET_CURSOR_LOCATION, + SET_CURSOR_LOCATION_RELATIVE, CURSOR_UP_LOOKUP_TABLE, CURSOR_DOWN_LOOKUP_TABLE, HIDE_AUXILIARY_TEXT, @@ -48,6 +54,12 @@ enum { SHOW_PREEDIT_TEXT, START_SETUP, STATE_CHANGED, + DESTROY_CONTEXT, + SET_CONTENT_TYPE, + PANEL_EXTENSION_RECEIVED, + PROCESS_KEY_EVENT, + COMMIT_TEXT_RECEIVED, + CANDIDATE_CLICKED_LOOKUP_TABLE, LAST_SIGNAL, }; @@ -58,62 +70,93 @@ enum { static guint panel_signals[LAST_SIGNAL] = { 0 }; /* functions prototype */ -static void ibus_panel_service_set_property (IBusPanelService *panel, - guint prop_id, - const GValue *value, - GParamSpec *pspec); -static void ibus_panel_service_get_property (IBusPanelService *panel, - guint prop_id, - GValue *value, - GParamSpec *pspec); -static void ibus_panel_service_real_destroy (IBusPanelService *panel); -static void ibus_panel_service_service_method_call (IBusService *service, - GDBusConnection *connection, - const gchar *sender, - const gchar *object_path, - const gchar *interface_name, - const gchar *method_name, - GVariant *parameters, - GDBusMethodInvocation *invocation); -static GVariant *ibus_panel_service_service_get_property (IBusService *service, - GDBusConnection *connection, - const gchar *sender, - const gchar *object_path, - const gchar *interface_name, - const gchar *property_name, - GError **error); -static gboolean ibus_panel_service_service_set_property (IBusService *service, - GDBusConnection *connection, - const gchar *sender, - const gchar *object_path, - const gchar *interface_name, - const gchar *property_name, - GVariant *value, - GError **error); -static void ibus_panel_service_not_implemented (IBusPanelService *panel); -static void ibus_panel_service_focus_in (IBusPanelService *panel, - const gchar *input_context_path); -static void ibus_panel_service_focus_out (IBusPanelService *panel, - const gchar *input_context_path); -static void ibus_panel_service_register_properties (IBusPanelService *panel, - IBusPropList *prop_list); -static void ibus_panel_service_set_cursor_location (IBusPanelService *panel, - gint x, - gint y, - gint w, - gint h); -static void ibus_panel_service_update_auxiliary_text (IBusPanelService *panel, - IBusText *text, - gboolean visible); -static void ibus_panel_service_update_lookup_table (IBusPanelService *panel, - IBusLookupTable *lookup_table, - gboolean visible); -static void ibus_panel_service_update_preedit_text (IBusPanelService *panel, - IBusText *text, - guint cursor_pos, - gboolean visible); -static void ibus_panel_service_update_property (IBusPanelService *panel, - IBusProperty *prop); +static void ibus_panel_service_set_property + (IBusPanelService *panel, + guint prop_id, + const GValue *value, + GParamSpec *pspec); +static void ibus_panel_service_get_property + (IBusPanelService *panel, + guint prop_id, + GValue *value, + GParamSpec *pspec); +static void ibus_panel_service_real_destroy + (IBusPanelService *panel); +static void ibus_panel_service_service_method_call + (IBusService *service, + GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *method_name, + GVariant *parameters, + GDBusMethodInvocation *invocation); +static GVariant *ibus_panel_service_service_get_property + (IBusService *service, + GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *property_name, + GError **error); +static gboolean ibus_panel_service_service_set_property + (IBusService *service, + GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *property_name, + GVariant *value, + GError **error); +static void ibus_panel_service_not_implemented + (IBusPanelService *panel); +static void ibus_panel_service_focus_in + (IBusPanelService *panel, + const gchar *input_context_path); +static void ibus_panel_service_focus_out + (IBusPanelService *panel, + const gchar *input_context_path); +static void ibus_panel_service_destroy_context + (IBusPanelService *panel, + const gchar *input_context_path); +static void ibus_panel_service_register_properties + (IBusPanelService *panel, + IBusPropList *prop_list); +static void ibus_panel_service_set_cursor_location + (IBusPanelService *panel, + gint x, + gint y, + gint w, + gint h); +static void ibus_panel_service_set_cursor_location_relative + (IBusPanelService *panel, + gint x, + gint y, + gint w, + gint h); +static void ibus_panel_service_update_auxiliary_text + (IBusPanelService *panel, + IBusText *text, + gboolean visible); +static void ibus_panel_service_update_lookup_table + (IBusPanelService *panel, + IBusLookupTable *lookup_table, + gboolean visible); +static void ibus_panel_service_update_preedit_text + (IBusPanelService *panel, + IBusText *text, + guint cursor_pos, + gboolean visible); +static void ibus_panel_service_update_property + (IBusPanelService *panel, + IBusProperty *prop); +static void ibus_panel_service_set_content_type + (IBusPanelService *panel, + guint purpose, + guint hints); +static void ibus_panel_service_panel_extension_received + (IBusPanelService *panel, + IBusExtensionEvent *event); G_DEFINE_TYPE (IBusPanelService, ibus_panel_service, IBUS_TYPE_SERVICE) @@ -144,6 +187,11 @@ static const gchar introspection_xml[] = " " " " " " + " " + " " + " " + " " + " " " " " " " " @@ -156,17 +204,42 @@ static const gchar introspection_xml[] = " " " " " " + " " + " " + " " " " " " " " " " " " " " + " " + " " + " " + " " + " " + " " " " " " " " " " " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " /* Signals */ " " " " @@ -187,6 +260,28 @@ static const gchar introspection_xml[] = " " " " " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " " " ""; @@ -194,27 +289,40 @@ static void ibus_panel_service_class_init (IBusPanelServiceClass *class) { GObjectClass *gobject_class = G_OBJECT_CLASS (class); - ibus_panel_service_parent_class = IBUS_SERVICE_CLASS (g_type_class_peek_parent (class)); + ibus_panel_service_parent_class = + IBUS_SERVICE_CLASS (g_type_class_peek_parent (class)); - gobject_class->set_property = (GObjectSetPropertyFunc) ibus_panel_service_set_property; - gobject_class->get_property = (GObjectGetPropertyFunc) ibus_panel_service_get_property; + gobject_class->set_property = + (GObjectSetPropertyFunc) ibus_panel_service_set_property; + gobject_class->get_property = + (GObjectGetPropertyFunc) ibus_panel_service_get_property; - IBUS_OBJECT_CLASS (gobject_class)->destroy = (IBusObjectDestroyFunc) ibus_panel_service_real_destroy; + IBUS_OBJECT_CLASS (gobject_class)->destroy = + (IBusObjectDestroyFunc) ibus_panel_service_real_destroy; - IBUS_SERVICE_CLASS (class)->service_method_call = ibus_panel_service_service_method_call; - IBUS_SERVICE_CLASS (class)->service_get_property = ibus_panel_service_service_get_property; - IBUS_SERVICE_CLASS (class)->service_set_property = ibus_panel_service_service_set_property; + IBUS_SERVICE_CLASS (class)->service_method_call = + ibus_panel_service_service_method_call; + IBUS_SERVICE_CLASS (class)->service_get_property = + ibus_panel_service_service_get_property; + IBUS_SERVICE_CLASS (class)->service_set_property = + ibus_panel_service_service_set_property; - ibus_service_class_add_interfaces (IBUS_SERVICE_CLASS (class), introspection_xml); + ibus_service_class_add_interfaces (IBUS_SERVICE_CLASS (class), + introspection_xml); class->focus_in = ibus_panel_service_focus_in; class->focus_out = ibus_panel_service_focus_out; + class->destroy_context = ibus_panel_service_destroy_context; class->register_properties = ibus_panel_service_register_properties; class->set_cursor_location = ibus_panel_service_set_cursor_location; + class->set_cursor_location_relative = ibus_panel_service_set_cursor_location_relative; class->update_lookup_table = ibus_panel_service_update_lookup_table; class->update_auxiliary_text = ibus_panel_service_update_auxiliary_text; class->update_preedit_text = ibus_panel_service_update_preedit_text; class->update_property = ibus_panel_service_update_property; + class->set_content_type = ibus_panel_service_set_content_type; + class->panel_extension_received = + ibus_panel_service_panel_extension_received; class->cursor_down_lookup_table = ibus_panel_service_not_implemented; class->cursor_up_lookup_table = ibus_panel_service_not_implemented; @@ -235,14 +343,18 @@ ibus_panel_service_class_init (IBusPanelServiceClass *class) /* install signals */ /** * IBusPanelService::update-preedit-text: + * @panel: An #IBusPanelService * @text: A preedit text to be updated. * @cursor_pos: The cursor position of the text. * @visible: Whether the update is visible. * - * Emitted when the client application get the update-preedit-text. - * Implement the member function update_preedit_text() in extended class to receive this signal. + * Emitted when the client application get the ::update-preedit-text. + * Implement the member function + * IBusPanelServiceClass::update_preedit_text in extended class + * to receive this signal. * - * Argument @user_data is ignored in this function. + * Argument @user_data is ignored in this function. + * */ panel_signals[UPDATE_PREEDIT_TEXT] = g_signal_new (I_("update-preedit-text"), @@ -259,13 +371,17 @@ ibus_panel_service_class_init (IBusPanelServiceClass *class) /** * IBusPanelService::update-auxiliary-text: + * @panel: An #IBusPanelService * @text: A preedit text to be updated. * @visible: Whether the update is visible. * - * Emitted when the client application get the update-auxiliary-text. - * Implement the member function update_auxiliary_text() in extended class to receive this signal. + * Emitted when the client application get the ::update-auxiliary-text. + * Implement the member function + * IBusPanelServiceClass::update_auxiliary_text in extended class + * to receive this signal. * - * Argument @user_data is ignored in this function. + * Argument @user_data is ignored in this function. + * */ panel_signals[UPDATE_AUXILIARY_TEXT] = g_signal_new (I_("update-auxiliary-text"), @@ -281,13 +397,17 @@ ibus_panel_service_class_init (IBusPanelServiceClass *class) /** * IBusPanelService::update-lookup-table: + * @panel: An #IBusPanelService * @lookup_table: A lookup table to be updated. * @visible: Whether the update is visible. * - * Emitted when the client application get the update-lookup-table. - * Implement the member function update_lookup_table() in extended class to receive this signal. + * Emitted when the client application get the ::update-lookup-table. + * Implement the member function + * IBusPanelServiceClass::update_lookup_table in extended class + * to receive this signal. * - * Argument @user_data is ignored in this function. + * Argument @user_data is ignored in this function. + * */ panel_signals[UPDATE_LOOKUP_TABLE] = g_signal_new (I_("update-lookup-table"), @@ -303,12 +423,16 @@ ibus_panel_service_class_init (IBusPanelServiceClass *class) /** * IBusPanelService::focus-in: + * @panel: An #IBusPanelService * @input_context_path: Object path of InputContext. * - * Emitted when the client application get the focus-in. - * Implement the member function focus_in() in extended class to receive this signal. + * Emitted when the client application get the ::focus-in. + * Implement the member function + * IBusPanelServiceClass::focus_in in extended class to receive + * this signal. * - * Argument @user_data is ignored in this function. + * Argument @user_data is ignored in this function. + * */ panel_signals[FOCUS_IN] = g_signal_new (I_("focus-in"), @@ -323,12 +447,16 @@ ibus_panel_service_class_init (IBusPanelServiceClass *class) /** * IBusPanelService::focus-out: + * @panel: An #IBusPanelService * @input_context_path: Object path of InputContext. * - * Emitted when the client application get the focus-out. - * Implement the member function focus_out() in extended class to receive this signal. + * Emitted when the client application get the ::focus-out. + * Implement the member function + * IBusPanelServiceClass::focus_out in extended class to receive + * this signal. * - * Argument @user_data is ignored in this function. + * Argument @user_data is ignored in this function. + * */ panel_signals[FOCUS_OUT] = g_signal_new (I_("focus-out"), @@ -343,12 +471,16 @@ ibus_panel_service_class_init (IBusPanelServiceClass *class) /** * IBusPanelService::register-properties: + * @panel: An #IBusPanelService * @prop_list: An IBusPropList that contains properties. * - * Emitted when the client application get the register-properties. - * Implement the member function register_properties() in extended class to receive this signal. + * Emitted when the client application get the ::register-properties. + * Implement the member function + * IBusPanelServiceClass::register_properties in extended class + * to receive this signal. * - * Argument @user_data is ignored in this function. + * Argument @user_data is ignored in this function. + * */ panel_signals[REGISTER_PROPERTIES] = g_signal_new (I_("register-properties"), @@ -363,12 +495,16 @@ ibus_panel_service_class_init (IBusPanelServiceClass *class) /** * IBusPanelService::update-property: + * @panel: An #IBusPanelService * @prop: The IBusProperty to be updated. * - * Emitted when the client application get the update-property. - * Implement the member function update_property() in extended class to receive this signal. + * Emitted when the client application get the ::update-property. + * Implement the member function + * IBusPanelServiceClass::update_property in extended class to + * receive this signal. * - * Argument @user_data is ignored in this function. + * Argument @user_data is ignored in this function. + * */ panel_signals[UPDATE_PROPERTY] = g_signal_new (I_("update-property"), @@ -383,15 +519,19 @@ ibus_panel_service_class_init (IBusPanelServiceClass *class) /** * IBusPanelService::set-cursor-location: + * @panel: An #IBusPanelService * @x: X coordinate of the cursor. * @y: Y coordinate of the cursor. * @w: Width of the cursor. * @h: Height of the cursor. * - * Emitted when the client application get the set-cursor-location. - * Implement the member function set_cursor_location() in extended class to receive this signal. + * Emitted when the client application get the ::set-cursor-location. + * Implement the member function + * IBusPanelServiceClass::set_cursor_location in extended class + * to receive this signal. * - * Argument @user_data is ignored in this function. + * Argument @user_data is ignored in this function. + * */ panel_signals[SET_CURSOR_LOCATION] = g_signal_new (I_("set-cursor-location"), @@ -407,13 +547,46 @@ ibus_panel_service_class_init (IBusPanelServiceClass *class) G_TYPE_INT, G_TYPE_INT); + /** + * IBusPanelService::set-cursor-location-relative: + * @panel: An #IBusPanelService + * @x: X coordinate of the cursor. + * @y: Y coordinate of the cursor. + * @w: Width of the cursor. + * @h: Height of the cursor. + * + * Emitted when the client application get the set-cursor-location-relative. + * Implement the member function set_cursor_location_relative() in + * extended class to receive this signal. + * + * Argument @user_data is ignored in this function. + * + */ + panel_signals[SET_CURSOR_LOCATION_RELATIVE] = + g_signal_new (I_("set-cursor-location-relative"), + G_TYPE_FROM_CLASS (gobject_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (IBusPanelServiceClass, set_cursor_location_relative), + NULL, NULL, + _ibus_marshal_VOID__INT_INT_INT_INT, + G_TYPE_NONE, + 4, + G_TYPE_INT, + G_TYPE_INT, + G_TYPE_INT, + G_TYPE_INT); + /** * IBusPanelService::cursor-up-lookup-table: + * @panel: An #IBusPanelService * - * Emitted when the client application get the cursor-up-lookup-table. - * Implement the member function cursor_up_lookup_table() in extended class to receive this signal. + * Emitted when the client application get the ::cursor-up-lookup-table. + * Implement the member function + * IBusPanelServiceClass::cursor_up_lookup_table in extended + * class to receive this signal. * - * Argument @user_data is ignored in this function. + * Argument @user_data is ignored in this function. + * */ panel_signals[CURSOR_UP_LOOKUP_TABLE] = g_signal_new (I_("cursor-up-lookup-table"), @@ -426,11 +599,15 @@ ibus_panel_service_class_init (IBusPanelServiceClass *class) /** * IBusPanelService::cursor-down-lookup-table: + * @panel: An #IBusPanelService * - * Emitted when the client application get the cursor-down-lookup-table. - * Implement the member function cursor_down_lookup_table() in extended class to receive this signal. + * Emitted when the client application get the ::cursor-down-lookup-table. + * Implement the member function + * IBusPanelServiceClass::cursor_down_lookup_table in extended + * class to receive this signal. * - * Argument @user_data is ignored in this function. + * Argument @user_data is ignored in this function. + * */ panel_signals[CURSOR_DOWN_LOOKUP_TABLE] = g_signal_new (I_("cursor-down-lookup-table"), @@ -443,11 +620,15 @@ ibus_panel_service_class_init (IBusPanelServiceClass *class) /** * IBusPanelService::hide-auxiliary-text: + * @panel: An #IBusPanelService * - * Emitted when the client application get the hide-auxiliary-text. - * Implement the member function hide_auxiliary_text() in extended class to receive this signal. + * Emitted when the client application get the ::hide-auxiliary-text. + * Implement the member function + * IBusPanelServiceClass::hide_auxiliary_text in extended class + * to receive this signal. * - * Argument @user_data is ignored in this function. + * Argument @user_data is ignored in this function. + * */ panel_signals[HIDE_AUXILIARY_TEXT] = g_signal_new (I_("hide-auxiliary-text"), @@ -460,11 +641,15 @@ ibus_panel_service_class_init (IBusPanelServiceClass *class) /** * IBusPanelService::hide-language-bar: + * @panel: An #IBusPanelService * - * Emitted when the client application get the hide-language-bar. - * Implement the member function hide_language_bar() in extended class to receive this signal. + * Emitted when the client application get the ::hide-language-bar. + * Implement the member function + * IBusPanelServiceClass::hide_language_bar in extended class to + * receive this signal. * - * Argument @user_data is ignored in this function. + * Argument @user_data is ignored in this function. + * */ panel_signals[HIDE_LANGUAGE_BAR] = g_signal_new (I_("hide-language-bar"), @@ -477,11 +662,15 @@ ibus_panel_service_class_init (IBusPanelServiceClass *class) /** * IBusPanelService::hide-lookup-table: + * @panel: An #IBusPanelService * - * Emitted when the client application get the hide-lookup-table. - * Implement the member function hide_lookup_table() in extended class to receive this signal. + * Emitted when the client application get the ::hide-lookup-table. + * Implement the member function + * IBusPanelServiceClass::hide_lookup_table in extended class to + * receive this signal. * - * Argument @user_data is ignored in this function. + * Argument @user_data is ignored in this function. + * */ panel_signals[HIDE_LOOKUP_TABLE] = g_signal_new (I_("hide-lookup-table"), @@ -494,11 +683,15 @@ ibus_panel_service_class_init (IBusPanelServiceClass *class) /** * IBusPanelService::hide-preedit-text: + * @panel: An #IBusPanelService * - * Emitted when the client application get the hide-preedit-text. - * Implement the member function hide_preedit_text() in extended class to receive this signal. + * Emitted when the client application get the ::hide-preedit-text. + * Implement the member function + * IBusPanelServiceClass::hide_preedit_text in extended class to + * receive this signal. * - * Argument @user_data is ignored in this function. + * Argument @user_data is ignored in this function. + * */ panel_signals[HIDE_PREEDIT_TEXT] = g_signal_new (I_("hide-preedit-text"), @@ -511,11 +704,15 @@ ibus_panel_service_class_init (IBusPanelServiceClass *class) /** * IBusPanelService::page-up-lookup-table: + * @panel: An #IBusPanelService * - * Emitted when the client application get the page-up-lookup-table. - * Implement the member function page_up_lookup_table() in extended class to receive this signal. + * Emitted when the client application get the ::page-up-lookup-table. + * Implement the member function + * IBusPanelServiceClass::page_up_lookup_table in extended class + * to receive this signal. * - * Argument @user_data is ignored in this function. + * Argument @user_data is ignored in this function. + * */ panel_signals[PAGE_UP_LOOKUP_TABLE] = g_signal_new (I_("page-up-lookup-table"), @@ -528,11 +725,15 @@ ibus_panel_service_class_init (IBusPanelServiceClass *class) /** * IBusPanelService::page-down-lookup-table: + * @panel: An #IBusPanelService * - * Emitted when the client application get the page-down-lookup-table. - * Implement the member function page_down_lookup_table() in extended class to receive this signal. + * Emitted when the client application get the ::page-down-lookup-table. + * Implement the member function + * IBusPanelServiceClass::page_down_lookup_table in extended + * class to receive this signal. * - * Argument @user_data is ignored in this function. + * Argument @user_data is ignored in this function. + * */ panel_signals[PAGE_DOWN_LOOKUP_TABLE] = g_signal_new (I_("page-down-lookup-table"), @@ -545,11 +746,15 @@ ibus_panel_service_class_init (IBusPanelServiceClass *class) /** * IBusPanelService::reset: + * @panel: An #IBusPanelService * - * Emitted when the client application get the reset. - * Implement the member function reset() in extended class to receive this signal. + * Emitted when the client application get the ::reset. + * Implement the member function + * IBusPanelServiceClass::reset in extended class to receive this + * signal. * - * Argument @user_data is ignored in this function. + * Argument @user_data is ignored in this function. + * */ panel_signals[RESET] = g_signal_new (I_("reset"), @@ -562,11 +767,15 @@ ibus_panel_service_class_init (IBusPanelServiceClass *class) /** * IBusPanelService::show-auxiliary-text: + * @panel: An #IBusPanelService * - * Emitted when the client application get the show-auxiliary-text. - * Implement the member function show_auxiliary_text() in extended class to receive this signal. + * Emitted when the client application get the ::show-auxiliary-text. + * Implement the member function + * IBusPanelServiceClass::show_auxiliary_text in extended class + * to receive this signal. * - * Argument @user_data is ignored in this function. + * Argument @user_data is ignored in this function. + * */ panel_signals[SHOW_AUXILIARY_TEXT] = g_signal_new (I_("show-auxiliary-text"), @@ -579,11 +788,15 @@ ibus_panel_service_class_init (IBusPanelServiceClass *class) /** * IBusPanelService::show-language-bar: + * @panel: An #IBusPanelService * - * Emitted when the client application get the show-language-bar. - * Implement the member function show_language_bar() in extended class to receive this signal. + * Emitted when the client application get the ::show-language-bar. + * Implement the member function + * IBusPanelServiceClass::show_language_bar in extended class to + * receive this signal. * - * Argument @user_data is ignored in this function. + * Argument @user_data is ignored in this function. + * */ panel_signals[SHOW_LANGUAGE_BAR] = g_signal_new (I_("show-language-bar"), @@ -596,11 +809,15 @@ ibus_panel_service_class_init (IBusPanelServiceClass *class) /** * IBusPanelService::show-lookup-table: + * @panel: An #IBusPanelService * - * Emitted when the client application get the show-lookup-table. - * Implement the member function show_lookup_table() in extended class to receive this signal. + * Emitted when the client application get the ::show-lookup-table. + * Implement the member function + * IBusPanelServiceClass::show_lookup_table in extended class to + * receive this signal. * - * Argument @user_data is ignored in this function. + * Argument @user_data is ignored in this function. + * */ panel_signals[SHOW_LOOKUP_TABLE] = g_signal_new (I_("show-lookup-table"), @@ -613,11 +830,15 @@ ibus_panel_service_class_init (IBusPanelServiceClass *class) /** * IBusPanelService::show-preedit-text: + * @panel: An #IBusPanelService * - * Emitted when the client application get the show-preedit-text. - * Implement the member function show_preedit_text() in extended class to receive this signal. + * Emitted when the client application get the ::show-preedit-text. + * Implement the member function + * IBusPanelServiceClass::show_preedit_text in extended class to + * receive this signal. * - * Argument @user_data is ignored in this function. + * Argument @user_data is ignored in this function. + * */ panel_signals[SHOW_PREEDIT_TEXT] = g_signal_new (I_("show-preedit-text"), @@ -630,11 +851,15 @@ ibus_panel_service_class_init (IBusPanelServiceClass *class) /** * IBusPanelService::start-setup: + * @panel: An #IBusPanelService * - * Emitted when the client application get the start-setup. - * Implement the member function start_setup() in extended class to receive this signal. + * Emitted when the client application get the ::start-setup. + * Implement the member function + * IBusPanelServiceClass::start_setup in extended class to + * receive this signal. * - * Argument @user_data is ignored in this function. + * Argument @user_data is ignored in this function. + * */ panel_signals[START_SETUP] = g_signal_new (I_("start-setup"), @@ -647,11 +872,15 @@ ibus_panel_service_class_init (IBusPanelServiceClass *class) /** * IBusPanelService::state-changed: + * @panel: An #IBusPanelService * - * Emitted when the client application get the state-changed. - * Implement the member function state_changed() in extended class to receive this signal. + * Emitted when the client application get the ::state-changed. + * Implement the member function + * IBusPanelServiceClass::state_changed in extended class to + * receive this signal. * - * Argument @user_data is ignored in this function. + * Argument @user_data is ignored in this function. + * */ panel_signals[STATE_CHANGED] = g_signal_new (I_("state-changed"), @@ -661,6 +890,151 @@ ibus_panel_service_class_init (IBusPanelServiceClass *class) NULL, NULL, _ibus_marshal_VOID__VOID, G_TYPE_NONE, 0); + + /** + * IBusPanelService::destroy-context: + * @panel: An #IBusPanelService + * @input_context_path: Object path of InputContext. + * + * Emitted when the client application destroys. + * Implement the member function + * IBusPanelServiceClass::destroy_context in extended class to + * receive this signal. + * + * Argument @user_data is ignored in this function. + * + */ + panel_signals[DESTROY_CONTEXT] = + g_signal_new (I_("destroy-context"), + G_TYPE_FROM_CLASS (gobject_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (IBusPanelServiceClass, destroy_context), + NULL, NULL, + _ibus_marshal_VOID__STRING, + G_TYPE_NONE, + 1, + G_TYPE_STRING); + + /** + * IBusPanelService::set-content-type: + * @panel: An #IBusPanelService + * @purpose: Input purpose. + * @hints: Input hints. + * + * Emitted when the client application get the ::set-content-type. + * Implement the member function + * IBusPanelServiceClass::set_content_type in extended class to + * receive this signal. + * + * Argument @user_data is ignored in this function. + * + */ + panel_signals[SET_CONTENT_TYPE] = + g_signal_new (I_("set-content-type"), + G_TYPE_FROM_CLASS (gobject_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (IBusPanelServiceClass, set_content_type), + NULL, NULL, + _ibus_marshal_VOID__UINT_UINT, + G_TYPE_NONE, + 2, + G_TYPE_UINT, + G_TYPE_UINT); + + /** + * IBusPanelService::panel-extension-received: + * @panel: An #IBusPanelService + * @data: A #GVariant + * + * Emitted when the client application get the ::panel-extension-received. + * Implement the member function + * IBusPanelServiceClass::panel_extension_received in extended class to + * receive this signal. + * + * Argument @user_data is ignored in this function. + * + */ + panel_signals[PANEL_EXTENSION_RECEIVED] = + g_signal_new (I_("panel-extension-received"), + G_TYPE_FROM_CLASS (gobject_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (IBusPanelServiceClass, panel_extension_received), + NULL, NULL, + _ibus_marshal_VOID__OBJECT, + G_TYPE_NONE, + 1, + IBUS_TYPE_EXTENSION_EVENT); + + /** + * IBusPanelService::process-key-event: + * @panel: An #IBusPanelService + * @keyval: Key symbol of the key press. + * @keycode: KeyCode of the key press. + * @state: Key modifier flags. + * + * Emitted when a key event is received. + * Implement the member function IBusPanelServiceClass::process_key_event + * in extended class to receive this signal. + * Both the key symbol and keycode are passed to the member function. + * See ibus_input_context_process_key_event() for further explanation of + * key symbol, keycode and which to use. + * + * Returns: %TRUE for successfully process the key; %FALSE otherwise. + * See also: ibus_input_context_process_key_event(). + * + * Argument @user_data is ignored in this function. + * + */ + panel_signals[PROCESS_KEY_EVENT] = + g_signal_new (I_("process-key-event"), + G_TYPE_FROM_CLASS (gobject_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (IBusPanelServiceClass, process_key_event), + g_signal_accumulator_true_handled, NULL, + _ibus_marshal_BOOLEAN__UINT_UINT_UINT, + G_TYPE_BOOLEAN, + 3, + G_TYPE_UINT, + G_TYPE_UINT, + G_TYPE_UINT); + + /** + * IBusPanelService::commit-text-received: + * @panel: An #IBusPanelService + * @text: A #IBusText + * + * Emitted when the client application get the ::commit-text-received. + * Implement the member function + * IBusPanelServiceClass::commit_text_received in extended class to + * receive this signal. + * + * Argument @user_data is ignored in this function. + * + */ + panel_signals[COMMIT_TEXT_RECEIVED] = + g_signal_new (I_("commit-text-received"), + G_TYPE_FROM_CLASS (gobject_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (IBusPanelServiceClass, commit_text_received), + NULL, NULL, + _ibus_marshal_VOID__OBJECT, + G_TYPE_NONE, + 1, + IBUS_TYPE_TEXT); + + panel_signals[CANDIDATE_CLICKED_LOOKUP_TABLE] = + g_signal_new (I_("candidate-clicked-lookup-table"), + G_TYPE_FROM_CLASS (gobject_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (IBusPanelServiceClass, + candidate_clicked_lookup_table), + NULL, NULL, + _ibus_marshal_VOID__UINT_UINT_UINT, + G_TYPE_NONE, + 3, + G_TYPE_UINT, + G_TYPE_UINT, + G_TYPE_UINT); } static void @@ -706,6 +1080,15 @@ _g_object_unref_if_floating (gpointer instance) g_object_unref (instance); } +static gboolean +ibus_panel_service_service_authorized_method (IBusService *service, + GDBusConnection *connection) +{ + if (ibus_service_get_connection (service) == connection) + return TRUE; + return FALSE; +} + static void ibus_panel_service_service_method_call (IBusService *service, GDBusConnection *connection, @@ -731,6 +1114,9 @@ ibus_panel_service_service_method_call (IBusService *service, return; } + if (!ibus_panel_service_service_authorized_method (service, connection)) + return; + if (g_strcmp0 (method_name, "UpdatePreeditText") == 0) { GVariant *variant = NULL; guint cursor = 0; @@ -790,6 +1176,14 @@ ibus_panel_service_service_method_call (IBusService *service, return; } + if (g_strcmp0 (method_name, "DestroyContext") == 0) { + const gchar *path; + g_variant_get (parameters, "(&o)", &path); + g_signal_emit (panel, panel_signals[DESTROY_CONTEXT], 0, path); + g_dbus_method_invocation_return_value (invocation, NULL); + return; + } + if (g_strcmp0 (method_name, "RegisterProperties") == 0) { GVariant *variant = g_variant_get_child_value (parameters, 0); IBusPropList *prop_list = IBUS_PROP_LIST (ibus_serializable_deserialize (variant)); @@ -820,6 +1214,99 @@ ibus_panel_service_service_method_call (IBusService *service, return; } + if (g_strcmp0 (method_name, "SetCursorLocationRelative") == 0) { + gint x, y, w, h; + g_variant_get (parameters, "(iiii)", &x, &y, &w, &h); + g_signal_emit (panel, panel_signals[SET_CURSOR_LOCATION_RELATIVE], + 0, x, y, w, h); + g_dbus_method_invocation_return_value (invocation, NULL); + return; + } + + if (g_strcmp0 (method_name, "ContentType") == 0) { + guint purpose, hints; + g_variant_get (parameters, "(uu)", &purpose, &hints); + g_signal_emit (panel, panel_signals[SET_CONTENT_TYPE], 0, + purpose, hints); + g_dbus_method_invocation_return_value (invocation, NULL); + return; + } + + if (g_strcmp0 (method_name, "PanelExtensionReceived") == 0) { + GVariant *arg0 = NULL; + IBusExtensionEvent *event = NULL; + g_variant_get (parameters, "(v)", &arg0); + if (arg0) { + event = IBUS_EXTENSION_EVENT (ibus_serializable_deserialize (arg0)); + g_variant_unref (arg0); + } + if (!event) { + g_dbus_method_invocation_return_error ( + invocation, + G_DBUS_ERROR, + G_DBUS_ERROR_FAILED, + "PanelExtensionReceived method gives NULL"); + return; + } + g_signal_emit (panel, panel_signals[PANEL_EXTENSION_RECEIVED], 0, + event); + _g_object_unref_if_floating (event); + g_dbus_method_invocation_return_value (invocation, NULL); + return; + } + if (g_strcmp0 (method_name, "ProcessKeyEvent") == 0) { + guint keyval, keycode, state; + gboolean retval = FALSE; + + g_variant_get (parameters, "(uuu)", &keyval, &keycode, &state); + g_signal_emit (panel, + panel_signals[PROCESS_KEY_EVENT], + 0, + keyval, + keycode, + state, + &retval); + g_dbus_method_invocation_return_value (invocation, + g_variant_new ("(b)", retval)); + return; + } + if (g_strcmp0 (method_name, "CommitTextReceived") == 0) { + GVariant *arg0 = NULL; + IBusText *text = NULL; + + g_variant_get (parameters, "(v)", &arg0); + if (arg0) { + text = (IBusText *) ibus_serializable_deserialize (arg0); + g_variant_unref (arg0); + } + if (!text) { + g_dbus_method_invocation_return_error ( + invocation, + G_DBUS_ERROR, + G_DBUS_ERROR_FAILED, + "CommitTextReceived method gives NULL"); + return; + } + g_signal_emit (panel, + panel_signals[COMMIT_TEXT_RECEIVED], + 0, + text); + _g_object_unref_if_floating (text); + return; + } + if (g_strcmp0 (method_name, "CandidateClickedLookupTable") == 0) { + guint index = 0; + guint button = 0; + guint state = 0; + g_variant_get (parameters, "(uuu)", &index, &button, &state); + g_signal_emit (panel, + panel_signals[CANDIDATE_CLICKED_LOOKUP_TABLE], + 0, + index, button, state); + return; + } + + const static struct { const gchar *name; const gint signal_id; @@ -917,6 +1404,13 @@ ibus_panel_service_focus_out (IBusPanelService *panel, ibus_panel_service_not_implemented(panel); } +static void +ibus_panel_service_destroy_context (IBusPanelService *panel, + const gchar *input_context_path) +{ + ibus_panel_service_not_implemented(panel); +} + static void ibus_panel_service_register_properties (IBusPanelService *panel, IBusPropList *prop_list) @@ -934,6 +1428,16 @@ ibus_panel_service_set_cursor_location (IBusPanelService *panel, ibus_panel_service_not_implemented(panel); } +static void +ibus_panel_service_set_cursor_location_relative (IBusPanelService *panel, + gint x, + gint y, + gint w, + gint h) +{ + ibus_panel_service_not_implemented(panel); +} + static void ibus_panel_service_update_auxiliary_text (IBusPanelService *panel, IBusText *text, @@ -966,6 +1470,21 @@ ibus_panel_service_update_property (IBusPanelService *panel, ibus_panel_service_not_implemented(panel); } +static void +ibus_panel_service_set_content_type (IBusPanelService *panel, + guint purpose, + guint hints) +{ + ibus_panel_service_not_implemented(panel); +} + +static void +ibus_panel_service_panel_extension_received (IBusPanelService *panel, + IBusExtensionEvent *event) +{ + ibus_panel_service_not_implemented(panel); +} + IBusPanelService * ibus_panel_service_new (GDBusConnection *connection) { @@ -1034,6 +1553,172 @@ ibus_panel_service_property_hide (IBusPanelService *panel, NULL); } +void +ibus_panel_service_commit_text (IBusPanelService *panel, + IBusText *text) +{ + GVariant *variant; + g_return_if_fail (IBUS_IS_PANEL_SERVICE (panel)); + g_return_if_fail (IBUS_IS_TEXT (text)); + + variant = ibus_serializable_serialize ((IBusSerializable *)text); + ibus_service_emit_signal ((IBusService *) panel, + NULL, + IBUS_INTERFACE_PANEL, + "CommitText", + g_variant_new ("(v)", variant), + NULL); + + if (g_object_is_floating (text)) { + g_object_unref (text); + } +} + +void +ibus_panel_service_panel_extension (IBusPanelService *panel, + IBusExtensionEvent *event) +{ + GVariant *variant; + g_return_if_fail (IBUS_IS_PANEL_SERVICE (panel)); + g_return_if_fail (IBUS_IS_EXTENSION_EVENT (event)); + + variant = ibus_serializable_serialize ((IBusSerializable *)event); + ibus_service_emit_signal ((IBusService *) panel, + NULL, + IBUS_INTERFACE_PANEL, + "PanelExtension", + g_variant_new ("(v)", variant), + NULL); + + if (g_object_is_floating (event)) { + g_object_unref (event); + } +} + +void +ibus_panel_service_panel_extension_register_keys (IBusPanelService *panel, + const gchar + *first_property_name, + ...) +{ + GVariantBuilder builder; + GVariantBuilder child; + const gchar *name; + va_list var_args; + IBusProcessKeyEventData *keys; + + g_return_if_fail (first_property_name); + + g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); + name = first_property_name; + + va_start (var_args, first_property_name); + do { + keys = va_arg (var_args, IBusProcessKeyEventData *); + if (keys == NULL) { + va_end (var_args); + g_warning ("Failed to va_arg for IBusProcessKeyEventData"); + return; + } + g_variant_builder_init (&child, G_VARIANT_TYPE ("av")); + for (; keys; keys++) { + if (keys->keyval == 0 && keys->keycode == 0 && keys->state == 0) + break; + g_variant_builder_add (&child, "v", + g_variant_new ("(iii)", + keys->keyval, + keys->keycode, + keys->state)); + } + g_variant_builder_add (&builder, "{sv}", + g_strdup (name), g_variant_builder_end (&child)); + } while ((name = va_arg (var_args, const gchar *))); + va_end (var_args); + + ibus_service_emit_signal ((IBusService *) panel, + NULL, + IBUS_INTERFACE_PANEL, + "PanelExtensionRegisterKeys", + g_variant_new ("(v)", + g_variant_builder_end (&builder)), + NULL); +} + +void +ibus_panel_service_update_preedit_text_received (IBusPanelService *panel, + IBusText *text, + guint cursor_pos, + gboolean visible) +{ + GVariant *variant; + + g_return_if_fail (IBUS_IS_PANEL_SERVICE (panel)); + g_return_if_fail (IBUS_IS_TEXT (text)); + + variant = ibus_serializable_serialize ((IBusSerializable *)text); + g_return_if_fail (variant); + ibus_service_emit_signal ((IBusService *) panel, + NULL, + IBUS_INTERFACE_PANEL, + "UpdatePreeditTextReceived", + g_variant_new ("(vub)", + variant, cursor_pos, visible), + NULL); + + if (g_object_is_floating (text)) { + g_object_unref (text); + } +} + +void +ibus_panel_service_update_auxiliary_text_received (IBusPanelService *panel, + IBusText *text, + gboolean visible) +{ + GVariant *variant; + g_return_if_fail (IBUS_IS_PANEL_SERVICE (panel)); + g_return_if_fail (IBUS_IS_TEXT (text)); + + variant = ibus_serializable_serialize ((IBusSerializable *)text); + g_return_if_fail (variant); + ibus_service_emit_signal ((IBusService *) panel, + NULL, + IBUS_INTERFACE_PANEL, + "UpdateAuxiliaryTextReceived", + g_variant_new ("(vb)", + variant, visible), + NULL); + + if (g_object_is_floating (text)) { + g_object_unref (text); + } +} + +void +ibus_panel_service_update_lookup_table_received (IBusPanelService *panel, + IBusLookupTable *table, + gboolean visible) +{ + GVariant *variant; + + g_return_if_fail (IBUS_IS_PANEL_SERVICE (panel)); + g_return_if_fail (IBUS_IS_LOOKUP_TABLE (table)); + + variant = ibus_serializable_serialize ((IBusSerializable *)table); + g_return_if_fail (variant); + ibus_service_emit_signal ((IBusService *) panel, + NULL, + IBUS_INTERFACE_PANEL, + "UpdateLookupTableReceived", + g_variant_new ("(vb)", + variant, visible), + NULL); + + if (g_object_is_floating (table)) { + g_object_unref (table); + } +} + #define DEFINE_FUNC(name, Name) \ void \ ibus_panel_service_##name (IBusPanelService *panel) \ @@ -1051,4 +1736,3 @@ DEFINE_FUNC (cursor_up, CursorUp) DEFINE_FUNC (page_down, PageDown) DEFINE_FUNC (page_up, PageUp) #undef DEFINE_FUNC - diff --git a/src/ibuspanelservice.h b/src/ibuspanelservice.h index 7678922af..d91f2309d 100644 --- a/src/ibuspanelservice.h +++ b/src/ibuspanelservice.h @@ -1,28 +1,32 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus - * Copyright (c) 2009, Google Inc. All rights reserved. + * Copyright (c) 2009-2014 Google Inc. All rights reserved. + * Copyright (c) 2017-2018 Takao Fujiwara * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif +#ifndef __IBUS_PANEL_SERVICE_H_ +#define __IBUS_PANEL_SERVICE_H_ + /** * SECTION: ibuspanelservice * @short_description: Panel service back-end. @@ -31,12 +35,10 @@ * An IBusPanelService is a base class for UI services. * Developers can "extend" this class for panel UI development. */ -#ifndef __IBUS_PANEL_SERVICE_H_ -#define __IBUS_PANEL_SERVICE_H_ - #include "ibuslookuptable.h" #include "ibusservice.h" #include "ibusproplist.h" +#include "ibusxevent.h" /* * Type macros. @@ -76,9 +78,11 @@ struct _IBusPanelServiceClass { /* class members */ void (* focus_in) (IBusPanelService *panel, - const gchar *input_context_path); + const gchar + *input_context_path); void (* focus_out) (IBusPanelService *panel, - const gchar *input_context_path); + const gchar + *input_context_path); void (* register_properties) (IBusPanelService *panel, IBusPropList *prop_list); void (* set_cursor_location) (IBusPanelService *panel, @@ -93,7 +97,7 @@ struct _IBusPanelServiceClass { IBusLookupTable *lookup_table, gboolean visible); void (* update_preedit_text) (IBusPanelService *panel, - IBusText *text, + IBusText *text, guint cursor_pos, gboolean visible); void (* update_property) (IBusPanelService *panel, @@ -113,10 +117,38 @@ struct _IBusPanelServiceClass { void (* show_preedit_text) (IBusPanelService *panel); void (* start_setup) (IBusPanelService *panel); void (* state_changed) (IBusPanelService *panel); + void (* destroy_context) (IBusPanelService *panel, + const gchar + *input_context_path); + void (* set_content_type) (IBusPanelService *panel, + guint purpose, + guint hints); + void (* set_cursor_location_relative) + (IBusPanelService *panel, + gint x, + gint y, + gint w, + gint h); + void (* panel_extension_received) + (IBusPanelService *panel, + IBusExtensionEvent *event); + gboolean (* process_key_event) + (IBusPanelService *panel, + guint keyval, + guint keycode, + guint state); + void (* commit_text_received) + (IBusPanelService *panel, + IBusText *text); + void (* candidate_clicked_lookup_table) + (IBusPanelService *panel, + guint index, + guint button, + guint state); /*< private >*/ /* padding */ - gpointer pdummy[8]; // We can add 8 pointers without breaking the ABI. + gpointer pdummy[2]; // We can add 8 pointers without breaking the ABI. }; GType ibus_panel_service_get_type (void); @@ -124,14 +156,15 @@ GType ibus_panel_service_get_type (void); /** * ibus_panel_service_new: * @connection: An GDBusConnection. - * @returns: A newly allocated IBusPanelService. * - * New an IBusPanelService from an GDBusConnection. + * Creates a new #IBusPanelService from an #GDBusConnection. + * + * Returns: A newly allocated #IBusPanelService. */ IBusPanelService *ibus_panel_service_new (GDBusConnection *connection); /** - * ibus_panel_service_candidate_clicked + * ibus_panel_service_candidate_clicked: * @panel: An IBusPanelService * @index: Index in the Lookup table * @button: GdkEventButton::button (1: left button, etc.) @@ -146,7 +179,7 @@ void ibus_panel_service_candidate_clicked (IBusPanelService *panel, guint state); /** - * ibus_panel_service_cursor_down + * ibus_panel_service_cursor_down: * @panel: An IBusPanelService * * Notify that the cursor is down @@ -155,7 +188,7 @@ void ibus_panel_service_candidate_clicked (IBusPanelService *panel, void ibus_panel_service_cursor_down (IBusPanelService *panel); /** - * ibus_panel_service_cursor_up + * ibus_panel_service_cursor_up: * @panel: An IBusPanelService * * Notify that the cursor is up @@ -164,7 +197,7 @@ void ibus_panel_service_cursor_down (IBusPanelService *panel); void ibus_panel_service_cursor_up (IBusPanelService *panel); /** - * ibus_panel_service_page_down + * ibus_panel_service_page_down: * @panel: An IBusPanelService * * Notify that the page is down @@ -173,7 +206,7 @@ void ibus_panel_service_cursor_up (IBusPanelService *panel); void ibus_panel_service_page_down (IBusPanelService *panel); /** - * ibus_panel_service_page_up + * ibus_panel_service_page_up: * @panel: An IBusPanelService * * Notify that the page is up @@ -182,7 +215,7 @@ void ibus_panel_service_page_down (IBusPanelService *panel); void ibus_panel_service_page_up (IBusPanelService *panel); /** - * ibus_panel_service_property_activate + * ibus_panel_service_property_activate: * @panel: An IBusPanelService * @prop_name: A property name * @prop_state: State of the property @@ -194,7 +227,7 @@ void ibus_panel_service_property_activate (IBusPanelService *panel, const gchar *prop_name, guint prop_state); /** - * ibus_panel_service_property_show + * ibus_panel_service_property_show: * @panel: An IBusPanelService * @prop_name: A property name * @@ -205,7 +238,7 @@ void ibus_panel_service_property_show (IBusPanelService *panel, const gchar *prop_name); /** - * ibus_panel_service_property_hide + * ibus_panel_service_property_hide: * @panel: An IBusPanelService * @prop_name: A property name * @@ -215,6 +248,119 @@ void ibus_panel_service_property_show (IBusPanelService *panel, void ibus_panel_service_property_hide (IBusPanelService *panel, const gchar *prop_name); +/** + * ibus_panel_service_commit_text: + * @panel: An #IBusPanelService + * @text: An #IBusText + * + * Notify that a text is sent + * by sending a "CommitText" message to IBus service. + */ +void ibus_panel_service_commit_text (IBusPanelService *panel, + IBusText *text); + +/** + * ibus_panel_service_panel_extension: + * @panel: An #IBusPanelService + * @event: (transfer full): A #PanelExtensionEvent which is sent to a + * panel extension. + * + * Enable or disable a panel extension with #IBusExtensionEvent. + * Notify that a data is sent + * by sending a "PanelExtension" message to IBus panel extension service. + */ +void ibus_panel_service_panel_extension (IBusPanelService *panel, + IBusExtensionEvent *event); + +/** + * ibus_panel_service_panel_extension_register_keys: + * @panel: An #IBusPanelService + * @first_property_name: the first name of the shortcut keys. This is %NULL + " terminated. + * + * Register shortcut keys to enable panel extensions with #IBusExtensionEvent. + * Notify that a data is sent + * by sending a "PanelExtensionRegisterKeys" message to IBus panel extension + * service. Seems Vala does not support uint[][3] and use + * IBusProcessKeyEventData[]. E.g. + * IBusProcessKeyEventData[] keys = {{ + * IBUS_KEY_e, 0, IBUS_SHIFT_MASK | IBUS_SUPER_MASK }}; + * ibus_panel_service_panel_extension_register_keys(panel, "emoji", keys, NULL); + */ +void ibus_panel_service_panel_extension_register_keys + (IBusPanelService *panel, + const gchar *first_property_name, + ...); +/** + * ibus_panel_service_update_preedit_text_received: + * @panel: An #IBusPanelService + * @text: Update content. + * @cursor_pos: Current position of cursor + * @visible: Whether the pre-edit buffer is visible. + * + * Notify that the preedit is updated by the panel extension + * + * (Note: The table object will be released, if it is floating. + * If caller want to keep the object, caller should make the object + * sink by g_object_ref_sink.) + */ +void ibus_panel_service_update_preedit_text_received + (IBusPanelService *panel, + IBusText *text, + guint cursor_pos, + gboolean visible); + +/** + * ibus_panel_service_show_preedit_text_received: + * @panel: An IBusPanelService + * + * Notify that the preedit is shown by the panel extension + */ +void ibus_panel_service_show_preedit_text_received + (IBusPanelService *panel); + +/** + * ibus_panel_service_hide_preedit_text_received: + * @panel: An IBusPanelService + * + * Notify that the preedit is hidden by the panel extension + */ +void ibus_panel_service_hide_preedit_text_received + (IBusPanelService *panel); + +/** + * ibus_panel_service_update_auxiliary_text_received: + * @panel: An #IBusPanelService + * @text: An #IBusText + * @visible: Whether the auxilirary text is visible. + * + * Notify that the auxilirary is updated by the panel extension. + * + * (Note: The table object will be released, if it is floating. + * If caller want to keep the object, caller should make the object + * sink by g_object_ref_sink.) + */ +void ibus_panel_service_update_auxiliary_text_received + (IBusPanelService *panel, + IBusText *text, + gboolean visible); + +/** + * ibus_panel_service_update_lookup_table_received: + * @panel: An #IBusPanelService + * @table: An #IBusLookupTable + * @visible: Whether the lookup table is visible. + * + * Notify that the lookup table is updated by the panel extension. + * + * (Note: The table object will be released, if it is floating. + * If caller want to keep the object, caller should make the object + * sink by g_object_ref_sink.) + */ +void ibus_panel_service_update_lookup_table_received + (IBusPanelService *panel, + IBusLookupTable *table, + gboolean visible); G_END_DECLS #endif diff --git a/src/ibusproperty.c b/src/ibusproperty.c index e5480fa6a..cd8a0e2a6 100644 --- a/src/ibusproperty.c +++ b/src/ibusproperty.c @@ -2,23 +2,24 @@ /* vim:set et sts=4: */ /* IBus - The Input Bus * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2019 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ +#include "ibusinternal.h" #include "ibusproperty.h" #include "ibusproplist.h" #include "ibusenumtypes.h" @@ -32,6 +33,7 @@ enum { PROP_KEY, PROP_ICON, PROP_LABEL, + PROP_SYMBOL, PROP_TOOLTIP, PROP_SENSITIVE, PROP_VISIBLE, @@ -45,6 +47,7 @@ struct _IBusPropertyPrivate { gchar *key; gchar *icon; IBusText *label; + IBusText *symbol; IBusText *tooltip; gboolean sensitive; @@ -56,7 +59,7 @@ struct _IBusPropertyPrivate { }; #define IBUS_PROPERTY_GET_PRIVATE(o) \ - (G_TYPE_INSTANCE_GET_PRIVATE ((o), IBUS_TYPE_PROPERTY, IBusPropertyPrivate)) + ((IBusPropertyPrivate *)ibus_property_get_instance_private (o)) /* functions prototype */ static void ibus_property_set_property (IBusProperty *prop, @@ -75,7 +78,7 @@ static gint ibus_property_deserialize (IBusProperty *prop, static gboolean ibus_property_copy (IBusProperty *dest, const IBusProperty *src); -G_DEFINE_TYPE (IBusProperty, ibus_property, IBUS_TYPE_SERIALIZABLE) +G_DEFINE_TYPE_WITH_PRIVATE (IBusProperty, ibus_property, IBUS_TYPE_SERIALIZABLE) static void ibus_property_class_init (IBusPropertyClass *class) @@ -84,8 +87,6 @@ ibus_property_class_init (IBusPropertyClass *class) IBusObjectClass *object_class = IBUS_OBJECT_CLASS (class); IBusSerializableClass *serializable_class = IBUS_SERIALIZABLE_CLASS (class); - g_type_class_add_private (class, sizeof (IBusPropertyPrivate)); - gobject_class->set_property = (GObjectSetPropertyFunc) ibus_property_set_property; gobject_class->get_property = (GObjectGetPropertyFunc) ibus_property_get_property; @@ -135,6 +136,19 @@ ibus_property_class_init (IBusPropertyClass *class) IBUS_TYPE_TEXT, G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); + /** + * IBusPropert:symbol: + * + * The symbol of property + */ + g_object_class_install_property (gobject_class, + PROP_SYMBOL, + g_param_spec_object("symbol", + "symbol", + "The symbol of property", + IBUS_TYPE_TEXT, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); + /** * IBusPropert:tooltip: * @@ -221,6 +235,7 @@ ibus_property_init (IBusProperty *prop) prop->priv = IBUS_PROPERTY_GET_PRIVATE (prop); ibus_property_set_label (prop, NULL); + ibus_property_set_symbol (prop, NULL); ibus_property_set_tooltip (prop, NULL); ibus_property_set_sub_props (prop, NULL); @@ -242,6 +257,9 @@ ibus_property_set_property (IBusProperty *prop, case PROP_LABEL: ibus_property_set_label (prop, g_value_get_object (value)); break; + case PROP_SYMBOL: + ibus_property_set_symbol (prop, g_value_get_object (value)); + break; case PROP_TOOLTIP: ibus_property_set_tooltip (prop, g_value_get_object (value)); break; @@ -282,6 +300,9 @@ ibus_property_get_property (IBusProperty *prop, case PROP_LABEL: g_value_set_object (value, ibus_property_get_label (prop)); break; + case PROP_SYMBOL: + g_value_set_object (value, ibus_property_get_symbol (prop)); + break; case PROP_TOOLTIP: g_value_set_object (value, ibus_property_get_tooltip (prop)); break; @@ -319,6 +340,11 @@ ibus_property_destroy (IBusProperty *prop) prop->priv->label = NULL; } + if (prop->priv->symbol) { + g_object_unref (prop->priv->symbol); + prop->priv->symbol = NULL; + } + if (prop->priv->tooltip) { g_object_unref (prop->priv->tooltip); prop->priv->tooltip = NULL; @@ -355,6 +381,9 @@ ibus_property_serialize (IBusProperty *prop, g_variant_builder_add (builder, "u", prop->priv->state); g_variant_builder_add (builder, "v", ibus_serializable_serialize ((IBusSerializable *)prop->priv->sub_props)); + /* Keep the serialized order for the compatibility when add new members. */ + g_variant_builder_add (builder, "v", + ibus_serializable_serialize ((IBusSerializable *)prop->priv->symbol)); return TRUE; } @@ -368,17 +397,23 @@ ibus_property_deserialize (IBusProperty *prop, retval = IBUS_SERIALIZABLE_CLASS (ibus_property_parent_class)->deserialize ((IBusSerializable *) prop, variant); g_return_val_if_fail (retval, 0); - g_variant_get_child (variant, retval++, "s", &prop->priv->key); + ibus_g_variant_get_child_string (variant, retval++, &prop->priv->key); g_variant_get_child (variant, retval++, "u", &prop->priv->type); GVariant *subvar = g_variant_get_child_value (variant, retval++); + if (prop->priv->label) { + g_object_unref (prop->priv->label); + } prop->priv->label = IBUS_TEXT (ibus_serializable_deserialize (subvar)); g_object_ref_sink (prop->priv->label); g_variant_unref (subvar); - g_variant_get_child (variant, retval++, "s", &prop->priv->icon); + ibus_g_variant_get_child_string (variant, retval++, &prop->priv->icon); subvar = g_variant_get_child_value (variant, retval++); + if (prop->priv->tooltip) { + g_object_unref (prop->priv->tooltip); + } prop->priv->tooltip = IBUS_TEXT (ibus_serializable_deserialize (subvar)); g_object_ref_sink (prop->priv->tooltip); g_variant_unref (subvar); @@ -388,10 +423,22 @@ ibus_property_deserialize (IBusProperty *prop, g_variant_get_child (variant, retval++, "u", &prop->priv->state); subvar = g_variant_get_child_value (variant, retval++); + if (prop->priv->sub_props != NULL) { + g_object_unref (prop->priv->sub_props); + } prop->priv->sub_props = IBUS_PROP_LIST (ibus_serializable_deserialize (subvar)); g_object_ref_sink (prop->priv->sub_props); g_variant_unref (subvar); + /* Keep the serialized order for the compatibility when add new members. */ + subvar = g_variant_get_child_value (variant, retval++); + if (prop->priv->symbol) { + g_object_unref (prop->priv->symbol); + } + prop->priv->symbol = IBUS_TEXT (ibus_serializable_deserialize (subvar)); + g_object_ref_sink (prop->priv->symbol); + g_variant_unref (subvar); + return retval; } @@ -414,6 +461,11 @@ ibus_property_copy (IBusProperty *dest, } else dest->priv->label = ibus_text_new_from_static_string (""); + if (src->priv->symbol) { + dest->priv->symbol = (IBusText *) ibus_serializable_copy ((IBusSerializable *) src->priv->symbol); + } + else + dest->priv->symbol = ibus_text_new_from_static_string (""); if (src->priv->tooltip) { dest->priv->tooltip = (IBusText *) ibus_serializable_copy ((IBusSerializable *) src->priv->tooltip); } @@ -446,19 +498,36 @@ ibus_property_new (const gchar *key, type <= PROP_TYPE_SEPARATOR, NULL); + return ibus_property_new_varargs ("key", key, + "prop-type", type, + "label", label, + "icon", icon, + "tooltip", tooltip, + "sensitive", sensitive, + "visible", visible, + "state", state, + "sub-props", props, + NULL); +} + +IBusProperty * +ibus_property_new_varargs (const gchar *first_property_name, ...) +{ + va_list var_args; IBusProperty *prop; - prop = (IBusProperty *)g_object_new (IBUS_TYPE_PROPERTY, - "key", key, - "prop-type", type, - "label", label, - "icon", icon, - "tooltip", tooltip, - "sensitive", sensitive, - "visible", visible, - "state", state, - "sub-props", props, - NULL); + g_assert (first_property_name); + + va_start (var_args, first_property_name); + prop = (IBusProperty *) g_object_new_valist (IBUS_TYPE_PROPERTY, + first_property_name, + var_args); + va_end (var_args); + + g_assert (prop->priv->key); + g_assert (prop->priv->type >= PROP_TYPE_NORMAL && + prop->priv->type <= PROP_TYPE_SEPARATOR); + return prop; } @@ -472,6 +541,7 @@ ibus_property_get_ ## field (IBusProperty *prop) \ IBUS_PROPERTY_GET_FIELD (key, const gchar *) IBUS_PROPERTY_GET_FIELD (icon, const gchar *) IBUS_PROPERTY_GET_FIELD (label, IBusText *) +IBUS_PROPERTY_GET_FIELD (symbol, IBusText *) IBUS_PROPERTY_GET_FIELD (tooltip, IBusText *) IBUS_PROPERTY_GET_FIELD (sensitive, gboolean) IBUS_PROPERTY_GET_FIELD (visible, gboolean) @@ -502,8 +572,31 @@ ibus_property_set_label (IBusProperty *prop, prop->priv->label = ibus_text_new_from_static_string (""); } else { - prop->priv->label = g_object_ref_sink (label); + prop->priv->label = label; } + + g_object_ref_sink (prop->priv->label); +} + +void +ibus_property_set_symbol (IBusProperty *prop, + IBusText *symbol) +{ + g_assert (IBUS_IS_PROPERTY (prop)); + g_return_if_fail (symbol == NULL || IBUS_IS_TEXT (symbol)); + + if (prop->priv->symbol) { + g_object_unref (prop->priv->symbol); + } + + if (symbol == NULL) { + prop->priv->symbol = ibus_text_new_from_static_string (""); + } + else { + prop->priv->symbol = symbol; + } + + g_object_ref_sink (prop->priv->symbol); } void @@ -523,20 +616,18 @@ ibus_property_set_tooltip (IBusProperty *prop, g_assert (IBUS_IS_PROPERTY (prop)); g_assert (tooltip == NULL || IBUS_IS_TEXT (tooltip)); - IBusPropertyPrivate *priv = prop->priv; - - if (priv->tooltip) { - g_object_unref (priv->tooltip); + if (prop->priv->tooltip) { + g_object_unref (prop->priv->tooltip); } if (tooltip == NULL) { - priv->tooltip = ibus_text_new_from_static_string (""); - g_object_ref_sink (priv->tooltip); + prop->priv->tooltip = ibus_text_new_from_static_string (""); } else { - priv->tooltip = tooltip; - g_object_ref_sink (priv->tooltip); + prop->priv->tooltip = tooltip; } + + g_object_ref_sink (prop->priv->tooltip); } void @@ -609,6 +700,7 @@ ibus_property_update (IBusProperty *prop, ibus_property_set_icon (prop, ibus_property_get_icon (prop_update)); ibus_property_set_label (prop, ibus_property_get_label (prop_update)); + ibus_property_set_symbol (prop, ibus_property_get_symbol (prop_update)); ibus_property_set_tooltip (prop, ibus_property_get_tooltip (prop_update)); ibus_property_set_visible (prop, ibus_property_get_visible (prop_update)); ibus_property_set_state (prop, ibus_property_get_state (prop_update)); diff --git a/src/ibusproperty.h b/src/ibusproperty.h index 96b1a1384..8bd481446 100644 --- a/src/ibusproperty.h +++ b/src/ibusproperty.h @@ -7,23 +7,29 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif +#ifndef __IBUS_PROPERTY_H_ +#define __IBUS_PROPERTY_H_ + +#include "ibusserializable.h" +#include "ibustext.h" + /** * SECTION: ibusproperty * @short_description: UI component for input method engine property. @@ -37,14 +43,8 @@ * pressing ctrl-space or click on the Eng/Chi switch button. * And the IBusProperty shows the change correspondingly. * - * @see_also: #IBusPropList, #IBusEngine + * see_also: #IBusPropList, #IBusEngine */ -#ifndef __IBUS_PROPERTY_H_ -#define __IBUS_PROPERTY_H_ - -#include "ibusserializable.h" -#include "ibustext.h" - G_BEGIN_DECLS /* @@ -90,7 +90,7 @@ typedef enum { * @PROP_STATE_INCONSISTENT: The state is inconsistent with the associated IME * property. * - * State of IBusProperty. The actual effect depends on #IBusPropType of the + * State of #IBusProperty. The actual effect depends on #IBusPropType of the * IBusProperty. * * @@ -124,17 +124,6 @@ typedef struct _IBusPropListClass IBusPropListClass; /** * IBusProperty: - * @key: Unique Identity for the IBusProperty. - * @icon: Icon file for the IBusProperty. - * @label: Text shown in UI. - * @tooltip: Message shown if mouse hovered the IBusProperty. - * @sensitive: Whether the IBusProperty is sensitive to keyboard and mouse event. - * @visible: Whether the IBusProperty is visible. - * @type: IBusPropType of IBusProperty. - * @state: IBusPropState of IBusProperty. - * @sub_props: IBusPropList that contains sub IBusProperties. These IBusProperties are usually - * shown as sub menu item. - * * UI component for input method engine property. */ struct _IBusProperty { @@ -153,18 +142,19 @@ GType ibus_property_get_type (); /** * ibus_property_new: - * @key: Unique Identity for the IBusProperty. - * @type: IBusPropType of IBusProperty. + * @key: Unique Identity for the #IBusProperty. + * @type: #IBusPropType of #IBusProperty. * @label: Text shown in UI. - * @icon: (allow-none): Icon file for the IBusProperty. - * @tooltip: Message shown if mouse hovered the IBusProperty. - * @sensitive: Whether the IBusProperty is sensitive to keyboard and mouse event. - * @visible: Whether the IBusProperty is visible. - * @state: IBusPropState of IBusProperty. - * @prop_list: (allow-none): IBusPropList that contains sub IBusProperties. - * @returns: A newly allocated IBusProperty. - * - * New a IBusProperty. + * @icon: (allow-none): Icon file for the #IBusProperty. + * @tooltip: Message shown if mouse hovered the #IBusProperty. + * @sensitive: Whether the #IBusProperty is sensitive to keyboard and mouse event. + * @visible: Whether the #IBusProperty is visible. + * @state: IBusPropState of #IBusProperty. + * @prop_list: (allow-none): #IBusPropList that contains sub IBusProperties. + * + * Creates a new #IBusProperty. + * + * Returns: A newly allocated #IBusProperty. */ IBusProperty *ibus_property_new (const gchar *key, IBusPropType type, @@ -176,152 +166,196 @@ IBusProperty *ibus_property_new (const gchar *key, IBusPropState state, IBusPropList *prop_list); +/** + * ibus_property_new_varargs: + * @first_property_name: Name of the first property. + * @...: the NULL-terminated arguments of the properties and values. + * + * Creates a new #IBusProperty. + * ibus_property_new_varargs() supports the va_list format. + * name property is required. e.g. + * ibus_property_new_varargs("key", "TypingMode", "type", PROP_TYPE_MENU, NULL) + * + * Returns: A newly allocated #IBusProperty. + */ +IBusProperty *ibus_property_new_varargs (const gchar *first_property_name, + ...); + /** * ibus_property_get_key: - * @prop: An IBusProperty. - * @returns: the key of IBusProperty. Should not be freed. + * @prop: An #IBusProperty. * - * Get the key of IBusProperty. + * Get the key of #IBusProperty. + * + * Returns: the key of #IBusProperty. Should not be freed. */ const gchar * ibus_property_get_key (IBusProperty *prop); /** * ibus_property_get_label: - * @prop: An IBusProperty. - * @returns: (transfer none): the label of IBusProperty. Should not be freed. + * @prop: An #IBusProperty. + * + * Get the label of #IBusProperty. * - * Get the label of IBusProperty. + * Returns: (transfer none): the label of #IBusProperty. Should not be freed. */ -IBusText * ibus_property_get_label (IBusProperty *prop); +IBusText * ibus_property_get_label (IBusProperty *prop); /** * ibus_property_set_label: - * @prop: An IBusProperty. + * @prop: An #IBusProperty. * @label: Text shown in UI. * - * Set the label of IBusProperty. + * Set the label of #IBusProperty. */ void ibus_property_set_label (IBusProperty *prop, IBusText *label); +/** + * ibus_property_get_symbol: + * @prop: An #IBusProperty. + * + * Get the symbol of #IBusProperty. + * + * Returns: (transfer none): the symbol of #IBusProperty. Should not be freed. + */ +IBusText * ibus_property_get_symbol (IBusProperty *prop); + +/** + * ibus_property_set_symbol: + * @prop: An #IBusProperty. + * @symbol: Text shown in UI. + * + * Set the symbol of #IBusProperty. + */ +void ibus_property_set_symbol (IBusProperty *prop, + IBusText *symbol); + /** * ibus_property_get_icon: - * @prop: An IBusProperty. - * @returns: the icon of IBusProperty. Should not be freed. + * @prop: An #IBusProperty. * - * Get the icon of IBusProperty. + * Get the icon of #IBusProperty. + * + * Returns: the icon of #IBusProperty. Should not be freed. */ const gchar * ibus_property_get_icon (IBusProperty *prop); /** * ibus_property_set_icon: - * @prop: An IBusProperty. + * @prop: An #IBusProperty. * @icon: Icon shown in UI. It could be a full path of an icon file or an icon name. * - * Set the icon of IBusProperty. + * Set the icon of #IBusProperty. */ void ibus_property_set_icon (IBusProperty *prop, const gchar *icon); /** * ibus_property_get_tooltip: - * @prop: An IBusProperty. - * @returns: (transfer none): the tooltip of IBusProperty. Should not be freed. + * @prop: An #IBusProperty. + * + * Get the tooltip of #IBusProperty. * - * Get the tooltip of IBusProperty. + * Returns: (transfer none): the tooltip of #IBusProperty. Should not be freed. */ -IBusText * ibus_property_get_tooltip (IBusProperty *prop); +IBusText * ibus_property_get_tooltip (IBusProperty *prop); /** * ibus_property_set_tooltip: - * @prop: An IBusProperty. + * @prop: An #IBusProperty. * @tooltip: Text of the tooltip. * - * Set the tooltip of IBusProperty. + * Set the tooltip of #IBusProperty. */ void ibus_property_set_tooltip (IBusProperty *prop, IBusText *tooltip); /** * ibus_property_get_sensitive: - * @prop: An IBusProperty. - * @returns: the sensitive of IBusProperty. + * @prop: An #IBusProperty. + * + * Get the sensitive of #IBusProperty. * - * Get the sensitive of IBusProperty. + * Returns: the sensitive of #IBusProperty. */ gboolean ibus_property_get_sensitive(IBusProperty *prop); /** * ibus_property_set_sensitive: - * @prop: An IBusProperty. - * @sensitive: Whether the IBusProperty is sensitive. + * @prop: An #IBusProperty. + * @sensitive: Whether the #IBusProperty is sensitive. * - * Set whether the IBusProperty is sensitive. + * Set whether the #IBusProperty is sensitive. */ void ibus_property_set_sensitive(IBusProperty *prop, gboolean sensitive); /** * ibus_property_get_visible: - * @prop: An IBusProperty. - * @returns: the visible of IBusProperty. + * @prop: An #IBusProperty. * - * Get the visible of IBusProperty. + * Get the visible of #IBusProperty. + * + * Returns: the visible of #IBusProperty. */ gboolean ibus_property_get_visible (IBusProperty *prop); /** * ibus_property_set_visible: - * @prop: An IBusProperty. - * @visible: Whether the IBusProperty is visible. + * @prop: An #IBusProperty. + * @visible: Whether the #IBusProperty is visible. * - * Set whether the IBusProperty is visible. + * Set whether the #IBusProperty is visible. */ void ibus_property_set_visible (IBusProperty *prop, gboolean visible); /** * ibus_property_get_property_type: - * @prop: An IBusProperty. - * @returns: the type of IBusProperty. + * @prop: An #IBusProperty. + * + * Get the type of #IBusProperty. * - * Get the type of IBusProperty. + * Returns: the type of #IBusProperty. */ IBusPropType ibus_property_get_prop_type(IBusProperty *prop); /** * ibus_property_get_state: - * @prop: An IBusProperty. - * @returns: the state of IBusProperty. + * @prop: An #IBusProperty. * - * Get the state of IBusProperty. + * Get the state of #IBusProperty. + * + * Returns: the state of #IBusProperty. */ IBusPropState ibus_property_get_state (IBusProperty *prop); /** * ibus_property_set_state: - * @prop: An IBusProperty. - * @state: The state of the IBusProperty. + * @prop: An #IBusProperty. + * @state: The state of the #IBusProperty. * - * Set the state of the IBusProperty. + * Set the state of the #IBusProperty. */ void ibus_property_set_state (IBusProperty *prop, IBusPropState state); /** * ibus_property_get_sub_props: - * @prop: An IBusProperty. - * @returns: (transfer none): the IBusPropList of IBusProperty. - * Should not be freed. + * @prop: An #IBusProperty. + * + * Get the IBusPropList of #IBusProperty. * - * Get the IBusPropList of IBusProperty. + * Returns: (transfer none): the IBusPropList of #IBusProperty. + * Should not be freed. */ IBusPropList * ibus_property_get_sub_props(IBusProperty *prop); /** * ibus_property_set_sub_props: - * @prop: An IBusProperty. - * @prop_list: IBusPropList that contains sub IBusProperties. + * @prop: An #IBusProperty. + * @prop_list: #IBusPropList that contains sub IBusProperties. * * Set the sub IBusProperties. */ @@ -330,13 +364,14 @@ void ibus_property_set_sub_props(IBusProperty *prop, /** * ibus_property_update: - * @prop: An IBusProperty. - * @prop_update: IBusPropList that contains sub IBusProperties. - * @returns: TRUE for update suceeded; FALSE otherwise. + * @prop: An #IBusProperty. + * @prop_update: #IBusPropList that contains sub IBusProperties. * - * Update the content of an IBusProperty. - * IBusProperty @prop_update can either be sub-property of @prop, + * Update the content of an #IBusProperty. + * #IBusProperty @prop_update can either be sub-property of @prop, * or holds new values for @prop. + * + * Returns: TRUE if update succeeded; FALSE otherwise. */ gboolean ibus_property_update (IBusProperty *prop, diff --git a/src/ibusproplist.c b/src/ibusproplist.c index 88245fbae..535aad99b 100644 --- a/src/ibusproplist.c +++ b/src/ibusproplist.c @@ -7,17 +7,17 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include "ibusproplist.h" @@ -108,7 +108,6 @@ ibus_prop_list_deserialize (IBusPropList *prop_list, GVariant *var; while (g_variant_iter_loop (iter, "v", &var)) { IBusProperty *prop = IBUS_PROPERTY (ibus_serializable_deserialize (var)); - g_object_ref_sink (prop); ibus_prop_list_append (prop_list, prop); } g_variant_iter_free (iter); diff --git a/src/ibusproplist.h b/src/ibusproplist.h index 91c1284c2..dce60879f 100644 --- a/src/ibusproplist.h +++ b/src/ibusproplist.h @@ -1,40 +1,41 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* IBus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2013 Peng Huang + * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif +#ifndef __IBUS_PROP_LIST_H_ +#define __IBUS_PROP_LIST_H_ + /** * SECTION: ibusproplist * @Title: IBusPropList * @Short_description: An #IBusProperty container. * @Stability: Stable * - * @See_also: #IBusProperty, #IBusEngine + * See_also: #IBusProperty, #IBusEngine * */ -#ifndef __IBUS_PROP_LIST_H_ -#define __IBUS_PROP_LIST_H_ #include "ibusserializable.h" #include "ibusproperty.h" @@ -58,6 +59,19 @@ G_BEGIN_DECLS #define IBUS_PROP_LIST_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_PROP_LIST, IBusPropListClass)) +/* FIXME: https://mail.gnome.org/archives/gtk-doc-list/2015-July/msg00004.html + * If ibusproperty.h and ibusproplist.h includes each other, + * gtk-doc build outputs several warnings: + * + * # cd html && gtkdoc-mkhtml ibus ../ibus-docs.sgml + * ../ibus-docs.sgml:4: element refentry: validity error : ID IBusPropList + * already defined + * ../ibus-docs.sgml:172: element refsect2: validity error : ID + * IBusPropListClass already defined + * Warning: multiple "IDs" for constraint linkend: IBusPropList. + * Warning: multiple "IDs" for constraint linkend: IBusPropList. + * Warning: multiple "IDs" for constraint linkend: IBusPropListClass. + */ #ifndef __PROPLIST_DEFINED #define __PROPLIST_DEFINED typedef struct _IBusPropList IBusPropList; @@ -77,6 +91,12 @@ struct _IBusPropList { GArray *properties; }; +/** + * IBusPropListClass: + * @parent: The parent class. + * + * Class structure for #IBusPropList. + */ struct _IBusPropListClass { IBusSerializableClass parent; }; @@ -85,9 +105,10 @@ GType ibus_prop_list_get_type (); /** * ibus_prop_list_new: - * @returns: A newly allocated IBusPropList. * - * New a IBusPropList. + * Create a new #IBusPropList. + * + * Returns: A newly allocated #IBusPropList. */ IBusPropList *ibus_prop_list_new (); @@ -105,9 +126,11 @@ void ibus_prop_list_append (IBusPropList *prop_list, * ibus_prop_list_get: * @prop_list: An IBusPropList. * @index: Index of an IBusPropList. - * @returns: (transfer none): IBusProperty at given index, NULL if no such IBusProperty. * - * Returns IBusProperty at given index. Borrowed reference. + * Gets #IBusProperty at given index. Borrowed reference. + * + * Returns: (transfer none): #IBusProperty at given index, %NULL if no such + * #IBusProperty. */ IBusProperty *ibus_prop_list_get (IBusPropList *prop_list, guint index); @@ -116,9 +139,10 @@ IBusProperty *ibus_prop_list_get (IBusPropList *prop_list, * ibus_prop_list_update_property: * @prop_list: An IBusPropList. * @prop: IBusProperty to be update. - * @returns: TRUE if succeeded, FALSE otherwise. * * Update an IBusProperty in IBusPropList. + * + * Returns: %TRUE if succeeded, %FALSE otherwise. */ gboolean ibus_prop_list_update_property (IBusPropList *prop_list, diff --git a/src/ibusproxy.c b/src/ibusproxy.c index 40e8d4b2e..c8a2c1f9f 100644 --- a/src/ibusproxy.c +++ b/src/ibusproxy.c @@ -7,17 +7,17 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include "ibusproxy.h" diff --git a/src/ibusproxy.h b/src/ibusproxy.h index 758479234..7365863bb 100644 --- a/src/ibusproxy.h +++ b/src/ibusproxy.h @@ -1,43 +1,47 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2013 Peng Huang + * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif +#ifndef __IBUS_PROXY_H_ +#define __IBUS_PROXY_H_ + /** * SECTION: ibusproxy * @short_description: Base proxy object. * @stability: Stable * * An IBusProxy is the base of all proxy objects, - * which communicate the corresponding #IBusServices on the other end of IBusConnection. - * For example, IBus clients (such as editors, web browsers) invoke the proxy object, - * IBusInputContext to communicate with the InputContext service of the ibus-daemon. + * which communicate the corresponding #IBusServices on the other end of + * IBusConnection. + * For example, IBus clients (such as editors, web browsers) invoke the proxy + * object, + * IBusInputContext to communicate with the InputContext service of the + * ibus-daemon. * * Almost all services have corresponding proxies, except very simple services. */ -#ifndef __IBUS_PROXY_H_ -#define __IBUS_PROXY_H_ #include @@ -95,12 +99,15 @@ GType ibus_proxy_get_type (void); /** * ibus_proxy_destroy: + * @proxy: An #IBusProxy * - * Dispose the proxy object. If the dbus connection is alive and the own variable above - * is TRUE (which is the default), org.freedesktop.IBus.Service.Destroy method will be - * called. Note that "destroy" signal might be emitted when ibus_proxy_destroy is called - * or the underlying dbus connection for the proxy is terminated. In the callback of the - * destroy signal, you might have to call something like 'g_object_unref(the_proxy);'. + * Dispose the proxy object. If the dbus connection is alive and the own + * variable above is TRUE (which is the default), + * org.freedesktop.IBus.Service.Destroy method will be called. + * Note that "destroy" signal might be emitted when ibus_proxy_destroy is + * called or the underlying dbus connection for the proxy is terminated. + * In the callback of the destroy signal, you might have to call something + * like 'g_object_unref(the_proxy);'. */ void ibus_proxy_destroy (IBusProxy *proxy); diff --git a/src/ibusregistry.c b/src/ibusregistry.c new file mode 100644 index 000000000..962afb20c --- /dev/null +++ b/src/ibusregistry.c @@ -0,0 +1,695 @@ +/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ +/* vim:set et sts=4: */ +/* bus - The Input Bus + * Copyright (C) 2015 Peng Huang + * Copyright (C) 2015-2021 Takao Fujiwara + * Copyright (C) 2015-2020 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include + +#include "ibusinternal.h" +#include "ibusmarshalers.h" +#include "ibusregistry.h" + +#define IBUS_CACHE_MAGIC 0x49425553 /* "IBUS" */ +#define IBUS_CACHE_VERSION 0x00010522 + +enum { + CHANGED, + LAST_SIGNAL, +}; + +static guint _signals[LAST_SIGNAL] = { 0 }; + +struct _IBusRegistryPrivate { + /* a list of IBusObservedPath objects. */ + GList *observed_paths; + + /* a list of IBusComponent objects that are created from component XML + * files (or from the cache of them). */ + GList *components; + + gboolean changed; + + /* a mapping from GFile to GFileMonitor. */ + GHashTable *monitor_table; + + guint monitor_timeout_id; +}; + +#define IBUS_REGISTRY_GET_PRIVATE(o) \ + ((IBusRegistryPrivate *)ibus_registry_get_instance_private (o)) + +/* functions prototype */ +static void ibus_registry_destroy (IBusRegistry *registry); +static void ibus_registry_remove_all (IBusRegistry *registry); +static gboolean ibus_registry_serialize (IBusRegistry *registry, + GVariantBuilder *builder); +static gint ibus_registry_deserialize (IBusRegistry *registry, + GVariant *variant); +static gboolean ibus_registry_copy (IBusRegistry *dest, + const IBusRegistry *src); + +G_DEFINE_TYPE_WITH_PRIVATE (IBusRegistry, ibus_registry, IBUS_TYPE_SERIALIZABLE) + +static void +ibus_registry_class_init (IBusRegistryClass *class) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (class); + IBusObjectClass *ibus_object_class = IBUS_OBJECT_CLASS (class); + IBusSerializableClass *serializable_class = IBUS_SERIALIZABLE_CLASS (class); + + ibus_object_class->destroy = (IBusObjectDestroyFunc) ibus_registry_destroy; + + serializable_class->serialize = + (IBusSerializableSerializeFunc) ibus_registry_serialize; + serializable_class->deserialize = + (IBusSerializableDeserializeFunc) ibus_registry_deserialize; + serializable_class->copy = (IBusSerializableCopyFunc) ibus_registry_copy; + + /* install signals */ + /** + * IBusRegistry::changed: + * @registry: An #IBusRegistry. + * + * Emitted when any observed paths are changed. + * A method is not associated in this class. the "changed" + * signal would be handled in other classes. + * + * See also: ibus_registry_start_monitor_changes(). + */ + _signals[CHANGED] = + g_signal_new (I_("changed"), + G_TYPE_FROM_CLASS (gobject_class), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + _ibus_marshal_VOID__VOID, + G_TYPE_NONE, + 0); +} + +static void +ibus_registry_init (IBusRegistry *registry) +{ + registry->priv = IBUS_REGISTRY_GET_PRIVATE (registry); + + registry->priv->observed_paths = NULL; + registry->priv->components = NULL; + registry->priv->changed = FALSE; + registry->priv->monitor_table = + g_hash_table_new_full (g_file_hash, + (GEqualFunc) g_file_equal, + (GDestroyNotify) g_object_unref, + (GDestroyNotify) g_object_unref); +} + +static void +ibus_registry_destroy (IBusRegistry *registry) +{ + ibus_registry_remove_all (registry); + + g_hash_table_destroy (registry->priv->monitor_table); + registry->priv->monitor_table = NULL; + + if (registry->priv->monitor_timeout_id > 0) { + g_source_remove (registry->priv->monitor_timeout_id); + registry->priv->monitor_timeout_id = 0; + } + + IBUS_OBJECT_CLASS (ibus_registry_parent_class)-> + destroy (IBUS_OBJECT (registry)); +} + +static gboolean +ibus_registry_serialize (IBusRegistry *registry, + GVariantBuilder *builder) +{ + gboolean retval; + + retval = IBUS_SERIALIZABLE_CLASS (ibus_registry_parent_class)-> + serialize ((IBusSerializable *)registry, builder); + g_return_val_if_fail (retval, FALSE); + + GList *p; + GVariantBuilder *array; + + array = g_variant_builder_new (G_VARIANT_TYPE ("av")); + for (p = registry->priv->observed_paths; p != NULL; p = p->next) { + IBusSerializable *serializable = (IBusSerializable *) p->data; + g_variant_builder_add (array, + "v", + ibus_serializable_serialize (serializable)); + } + g_variant_builder_add (builder, "av", array); + g_variant_builder_unref (array); + + array = g_variant_builder_new (G_VARIANT_TYPE ("av")); + for (p = registry->priv->components; p != NULL; p = p->next) { + IBusSerializable *serializable = (IBusSerializable *) p->data; + g_variant_builder_add (array, + "v", + ibus_serializable_serialize (serializable)); + } + g_variant_builder_add (builder, "av", array); + g_variant_builder_unref (array); + + return TRUE; +} + +static gint +ibus_registry_deserialize (IBusRegistry *registry, + GVariant *variant) +{ + GVariant *var; + GVariantIter *iter; + gint retval; + + retval = IBUS_SERIALIZABLE_CLASS (ibus_registry_parent_class)-> + deserialize ((IBusSerializable *)registry, variant); + g_return_val_if_fail (retval, 0); + + g_variant_get_child (variant, retval++, "av", &iter); + while (g_variant_iter_loop (iter, "v", &var)) { + IBusSerializable *serializable = ibus_serializable_deserialize (var); + registry->priv->observed_paths = + g_list_append (registry->priv->observed_paths, + IBUS_OBSERVED_PATH (serializable)); + } + g_variant_iter_free (iter); + + g_variant_get_child (variant, retval++, "av", &iter); + while (g_variant_iter_loop (iter, "v", &var)) { + IBusSerializable *serializable = ibus_serializable_deserialize (var); + registry->priv->components = + g_list_append (registry->priv->components, + IBUS_COMPONENT (serializable)); + } + g_variant_iter_free (iter); + + return retval; +} + +static gboolean +ibus_registry_copy (IBusRegistry *dest, + const IBusRegistry *src) +{ + gboolean retval; + + retval = IBUS_SERIALIZABLE_CLASS (ibus_registry_parent_class)-> + copy ((IBusSerializable *)dest, (IBusSerializable *)src); + g_return_val_if_fail (retval, FALSE); + + dest->priv->components = g_list_copy (src->priv->components); + dest->priv->observed_paths = g_list_copy (src->priv->observed_paths); + + return TRUE; +} + +/** + * ibus_registry_remove_all: + * + * Remove the loaded registry. + */ +static void +ibus_registry_remove_all (IBusRegistry *registry) +{ + g_assert (IBUS_IS_REGISTRY (registry)); + + g_list_free_full (registry->priv->observed_paths, g_object_unref); + registry->priv->observed_paths = NULL; + + g_list_free_full (registry->priv->components, g_object_unref); + registry->priv->components = NULL; +} + +void +ibus_registry_load (IBusRegistry *registry) +{ + const gchar *envstr; + GPtrArray *path; + gchar **d, **search_path; + + g_assert (IBUS_IS_REGISTRY (registry)); + + path = g_ptr_array_new(); + + envstr = g_getenv ("IBUS_COMPONENT_PATH"); + if (envstr) { + gchar **dirs = g_strsplit (envstr, G_SEARCHPATH_SEPARATOR_S, 0); + for (d = dirs; *d != NULL; d++) + g_ptr_array_add (path, *d); + g_free (dirs); + } else { + gchar *dirname; + + dirname = g_build_filename (IBUS_DATA_DIR, "component", NULL); + g_ptr_array_add (path, dirname); + +#if 0 + /* FIXME Should we support install some IME in user dir? */ + dirname = g_build_filename (g_get_user_data_dir (), + "ibus", "component", + NULL); + g_ptr_array_add (path, dirname); +#endif + } + + g_ptr_array_add (path, NULL); + search_path = (gchar **) g_ptr_array_free (path, FALSE); + for (d = search_path; *d != NULL; d++) { + ibus_registry_load_in_dir (registry, *d); + } + g_strfreev (search_path); +} + +gboolean +ibus_registry_load_cache (IBusRegistry *registry, + gboolean is_user) +{ + gchar *filename; + gboolean retval; + + g_assert (IBUS_IS_REGISTRY (registry)); + + if (is_user) { + filename = g_build_filename (g_get_user_cache_dir (), + "ibus", "bus", "registry", NULL); + } else { + filename = g_build_filename (IBUS_CACHE_DIR, + "bus", "registry", NULL); + } + + retval = ibus_registry_load_cache_file (registry, filename); + g_free (filename); + + return retval; +} + +gboolean +ibus_registry_load_cache_file (IBusRegistry *registry, + const gchar *filename) +{ + gchar *contents, *p; + gsize length; + GVariant *variant; + GError *error; + + g_assert (IBUS_IS_REGISTRY (registry)); + g_assert (filename != NULL); + + if (!g_file_test (filename, G_FILE_TEST_EXISTS)) + return FALSE; + + error = NULL; + if (!g_file_get_contents (filename, &contents, &length, &error)) { + g_warning ("cannot read %s: %s", filename, error->message); + g_error_free (error); + return FALSE; + } + + p = contents; + + /* read file header including magic and version */ + if (length < 8) { + g_free (contents); + return FALSE; + } + + if (GUINT32_FROM_BE (*(guint32 *) p) != IBUS_CACHE_MAGIC) { + g_free (contents); + return FALSE; + } + p += 4; + + if (GUINT32_FROM_BE (*(guint32 *) p) != IBUS_CACHE_VERSION) { + g_free (contents); + return FALSE; + } + p += 4; + + /* read serialized IBusRegistry */ + variant = g_variant_new_from_data (G_VARIANT_TYPE ("(sa{sv}avav)"), + p, + length - (p - contents), + FALSE, + (GDestroyNotify) g_free, + NULL); + if (variant == NULL) { + g_free (contents); + return FALSE; + } + + ibus_registry_deserialize (registry, variant); + g_variant_unref (variant); + g_free (contents); + + return TRUE; +} + +gboolean +ibus_registry_check_modification (IBusRegistry *registry) +{ + GList *p; + + g_assert (IBUS_IS_REGISTRY (registry)); + + for (p = registry->priv->observed_paths; p != NULL; p = p->next) { + if (!IBUS_IS_OBSERVED_PATH (p->data)) { + g_warning ("The registry cache of observed_paths might be " \ + "broken and have to generate the cache again."); + g_list_free_full (registry->priv->observed_paths, g_object_unref); + registry->priv->observed_paths = NULL; + return TRUE; + } + if (ibus_observed_path_check_modification ( + (IBusObservedPath *) p->data)) + return TRUE; + } + + for (p = registry->priv->components; p != NULL; p = p->next) { + if (!IBUS_IS_COMPONENT (p->data)) { + g_warning ("The registry cache of components might be " \ + "broken and have to generate the cache again."); + g_list_free_full (registry->priv->components, g_object_unref); + registry->priv->components = NULL; + return TRUE; + } + if (ibus_component_check_modification ((IBusComponent *) p->data)) + return TRUE; + } + + return FALSE; +} + +gboolean +ibus_registry_save_cache (IBusRegistry *registry, + gboolean is_user) +{ + gchar *filename; + gboolean retval; + + g_assert (IBUS_IS_REGISTRY (registry)); + + if (is_user) { + filename = g_build_filename (g_get_user_cache_dir (), + "ibus", "bus", "registry", NULL); + } else { + filename = g_build_filename (IBUS_CACHE_DIR, + "bus", "registry", NULL); + } + + retval = ibus_registry_save_cache_file (registry, filename); + g_free (filename); + + return retval; +} + +gboolean +ibus_registry_save_cache_file (IBusRegistry *registry, + const gchar *filename) +{ + gchar *cachedir; + GVariant *variant; + gchar *contents, *p; + gsize length; + gboolean retval; + guint32 intval; + GError *error; + + g_assert (IBUS_IS_REGISTRY (registry)); + g_assert (filename != NULL); + + cachedir = g_path_get_dirname (filename); + errno = 0; + if (g_mkdir_with_parents (cachedir, 0775)) { + g_warning ("Failed to mkdir %s: %s", cachedir, g_strerror (errno)); + g_free (cachedir); + return FALSE; + } + g_free (cachedir); + + variant = ibus_serializable_serialize (IBUS_SERIALIZABLE (registry)); + length = 8 + g_variant_get_size (variant); + p = contents = g_slice_alloc (length); + + /* write file header */ + intval = GUINT32_TO_BE (IBUS_CACHE_MAGIC); + memcpy (p, (gchar *) &intval, 4); + p += 4; + + intval = GUINT32_TO_BE (IBUS_CACHE_VERSION); + memcpy (p, (gchar *) &intval, 4); + p += 4; + + /* write serialized IBusRegistry */ + g_variant_store (variant, p); + + error = NULL; + retval = g_file_set_contents (filename, contents, length, &error); + + g_variant_unref (variant); + g_slice_free1 (length, contents); + + if (!retval) { + g_warning ("cannot write %s: %s", filename, error->message); + g_error_free (error); + return FALSE; + } + + if (g_str_has_prefix (filename, g_get_user_cache_dir ())) { + g_warn_if_fail (!g_chmod (filename, 0644)); + } + + return TRUE; +} + +#define g_string_append_indent(string, indent) \ + { \ + gint i; \ + for (i = 0; i < (indent); i++) { \ + g_string_append (string, " "); \ + } \ + } + +void +ibus_registry_output (IBusRegistry *registry, + GString *output, + int indent) +{ + GList *p; + + g_assert (IBUS_IS_REGISTRY (registry)); + g_return_if_fail (output != NULL); + + g_string_append (output, "\n"); + g_string_append (output, "\n"); + + if (registry->priv->observed_paths) { + g_string_append_indent (output, indent); + g_string_append (output, "\n"); + for (p = registry->priv->observed_paths; p != NULL; p = p->next) { + ibus_observed_path_output ((IBusObservedPath *) p->data, + output, indent * 2); + } + g_string_append_indent (output, indent); + g_string_append (output, "\n"); + } + + if (registry->priv->components) { + g_string_append_indent (output, indent); + g_string_append (output, "\n"); + for (p = registry->priv->components; p != NULL; p = p->next) { + ibus_component_output ((IBusComponent *) p->data, + output, indent * 2); + } + g_string_append_indent (output, indent); + g_string_append (output, "\n"); + } + + g_string_append (output, "\n"); +} + +void +ibus_registry_load_in_dir (IBusRegistry *registry, + const gchar *dirname) +{ + GError *error = NULL; + GDir *dir; + IBusObservedPath *observed_path = NULL; + const gchar *filename; + + g_assert (IBUS_IS_REGISTRY (registry)); + g_assert (dirname); + + dir = g_dir_open (dirname, 0, &error); + + if (dir == NULL) { + g_warning ("Unable open directory %s : %s", dirname, error->message); + g_error_free (error); + return; + } + + observed_path = ibus_observed_path_new (dirname, TRUE); + + registry->priv->observed_paths = + g_list_append (registry->priv->observed_paths, + observed_path); + + while ((filename = g_dir_read_name (dir)) != NULL) { + glong size; + gchar *path; + IBusComponent *component; + + size = g_utf8_strlen (filename, -1); + if (g_strcmp0 (MAX (filename, filename + size - 4), ".xml") != 0) + continue; + + path = g_build_filename (dirname, filename, NULL); + component = ibus_component_new_from_file (path); + if (component != NULL) { + g_object_ref_sink (component); + registry->priv->components = + g_list_append (registry->priv->components, component); + } + + g_free (path); + } + + g_dir_close (dir); +} + + +IBusRegistry * +ibus_registry_new (void) +{ + IBusRegistry *registry; + registry = (IBusRegistry *) g_object_new (IBUS_TYPE_REGISTRY, NULL); + return registry; +} + +GList * +ibus_registry_get_components (IBusRegistry *registry) +{ + g_assert (IBUS_IS_REGISTRY (registry)); + + return g_list_copy (registry->priv->components); +} + +GList * +ibus_registry_get_observed_paths (IBusRegistry *registry) +{ + g_assert (IBUS_IS_REGISTRY (registry)); + + return g_list_copy (registry->priv->observed_paths); +} + +static gboolean +_monitor_timeout_cb (IBusRegistry *registry) +{ + g_hash_table_remove_all (registry->priv->monitor_table); + registry->priv->changed = TRUE; + g_signal_emit (registry, _signals[CHANGED], 0); + registry->priv->monitor_timeout_id = 0; + return FALSE; +} + +static void +_monitor_changed_cb (GFileMonitor *monitor, + GFile *file, + GFile *other_file, + GFileMonitorEvent event_type, + IBusRegistry *registry) +{ + g_assert (IBUS_IS_REGISTRY (registry)); + + if (event_type != G_FILE_MONITOR_EVENT_CHANGED && + event_type != G_FILE_MONITOR_EVENT_DELETED && + event_type != G_FILE_MONITOR_EVENT_CREATED && + event_type != G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED) + return; + + /* Merge successive file changes into one, with a low priority + timeout handler. */ + if (registry->priv->monitor_timeout_id > 0) + return; + + registry->priv->monitor_timeout_id = + g_timeout_add_full (G_PRIORITY_DEFAULT_IDLE, + 5000, + (GSourceFunc) _monitor_timeout_cb, + g_object_ref (registry), + (GDestroyNotify) g_object_unref); +} + +void +ibus_registry_start_monitor_changes (IBusRegistry *registry) +{ + GList *observed_paths, *p; + + g_assert (IBUS_IS_REGISTRY (registry)); + + g_hash_table_remove_all (registry->priv->monitor_table); + + observed_paths = g_list_copy (registry->priv->observed_paths); + for (p = registry->priv->components; p != NULL; p = p->next) { + IBusComponent *component = (IBusComponent *) p->data; + GList *component_observed_paths = + ibus_component_get_observed_paths (component); + observed_paths = g_list_concat (observed_paths, + component_observed_paths); + } + + for (p = observed_paths; p != NULL; p = p->next) { + IBusObservedPath *path = (IBusObservedPath *) p->data; + GFile *file = g_file_new_for_path (path->path); + if (g_hash_table_lookup (registry->priv->monitor_table, file) == NULL) { + GFileMonitor *monitor; + GError *error; + + error = NULL; + monitor = g_file_monitor (file, + G_FILE_MONITOR_NONE, + NULL, + &error); + + if (monitor != NULL) { + g_signal_connect (monitor, "changed", + G_CALLBACK (_monitor_changed_cb), + registry); + + g_hash_table_replace (registry->priv->monitor_table, + g_object_ref (file), + monitor); + } else { + g_warning ("Can't monitor directory %s: %s", + path->path, + error->message); + g_error_free (error); + } + } + g_object_unref (file); + } + g_list_free (observed_paths); +} diff --git a/src/ibusregistry.h b/src/ibusregistry.h new file mode 100644 index 000000000..6a540cc4d --- /dev/null +++ b/src/ibusregistry.h @@ -0,0 +1,231 @@ +/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ +/* vim:set et sts=4: */ +/* bus - The Input Bus + * Copyright (C) 2013 Peng Huang + * Copyright (C) 2013 Takao Fujiwara + * Copyright (C) 2013 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) +#error "Only can be included directly" +#endif + +#ifndef __IBUS_REGISTRY_H_ +#define __IBUS_REGISTRY_H_ + +/** + * SECTION: ibusregistry + * @short_description: Registry cache handling. + * @title: IBusRegistry + * @stability: Stable + * + * An #IBusRegistry loads IBus component files and generates the cache files. + * + * see_also: #IBusComponent + */ + +#include "ibuscomponent.h" + +/* + * Type macros. + */ + +/* define GOBJECT macros */ +#define IBUS_TYPE_REGISTRY \ + (ibus_registry_get_type ()) +#define IBUS_REGISTRY(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_REGISTRY, IBusRegistry)) +#define IBUS_REGISTRY_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_REGISTRY, IBusRegistryClass)) +#define IBUS_IS_REGISTRY(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_REGISTRY)) +#define IBUS_IS_REGISTRY_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_REGISTRY)) +#define IBUS_REGISTRY_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_REGISTRY, IBusRegistryClass)) + +G_BEGIN_DECLS + +typedef struct _IBusRegistry IBusRegistry; +typedef struct _IBusRegistryPrivate IBusRegistryPrivate; +typedef struct _IBusRegistryClass IBusRegistryClass; + +/** + * IBusRegistry: + * + * Registry cache handling. + * You can load the registry from compose files or a cache file. + */ +struct _IBusRegistry { + /* instance members */ + /*< private >*/ + IBusSerializable parent; + IBusRegistryPrivate *priv; +}; + +struct _IBusRegistryClass { + /* class members */ + /*< private >*/ + IBusSerializableClass parent; +}; + +GType ibus_registry_get_type (void); + +/** + * ibus_registry_new: + * + * Creates a new #IBusRegistry + * + * Returns: A newly allocated #IBusRegistry. + */ +IBusRegistry *ibus_registry_new (void); + +/** + * ibus_registry_load: + * @registry: An #IBusRegistry. + * + * Read all XML files in a IBus component directory (typically + * /usr/share/ibus/component/ *.xml) and update the registry object. + * IBUS_COMPONENT_PATH environment valuable is also available for + * the custom component directories, whose delimiter is ':'. + */ +void ibus_registry_load (IBusRegistry *registry); + +/** + * ibus_registry_load_in_dir: + * @registry: An #IBusRegistry. + * @dirname: IBus component directory which includes XML files. + * + * Read all XML files in @dirname, create a #IBusComponent object for each file, + * and add the component objects to the registry. + * If @dirname is "/usr/share/ibus/component", this API and + * ibus_registry_load() are same. + */ +void ibus_registry_load_in_dir (IBusRegistry *registry, + const gchar *dirname); + +/** + * ibus_registry_load_cache: + * @registry: An #IBusRegistry. + * @is_user: %TRUE if the registry cache is loaded in the user directory. + * + * Load the user or system registry cache. + * + * Returns: %TRUE if the cache exists and is loaded successfully, + * %FALSE otherwise. + */ +gboolean ibus_registry_load_cache (IBusRegistry *registry, + gboolean is_user); + +/** + * ibus_registry_load_cache_file: + * @registry: An #IBusRegistry. + * @filename: The file path of the registry cache + * + * Load the registry cache @filename. + * + * Returns: %TRUE if the cache exists and is loaded successfully, + * %FALSE otherwise. + */ +gboolean ibus_registry_load_cache_file (IBusRegistry *registry, + const gchar *filename); + +/** + * ibus_registry_save_cache: + * @registry: An #IBusRegistry. + * @is_user: %TRUE if the registry cache is saved in the user directory. + * + * Save the registry in a user directory or system directory. + * + * Returns: %TRUE if the cache is saved successfully, %FALSE otherwise. + */ +gboolean ibus_registry_save_cache (IBusRegistry *registry, + gboolean is_user); + +/** + * ibus_registry_save_cache_file: + * @registry: An #IBusRegistry. + * @filename: The file path of the registry cache + * + * Save the registry cache @filename. + * + * Returns: %TRUE if the cache is saved successfully, %FALSE otherwise. + */ +gboolean ibus_registry_save_cache_file (IBusRegistry *registry, + const gchar *filename); + +/** + * ibus_registry_output: + * @registry: An #IBusRegistry. + * @output: GString that holds the result. + * @indent: level of indent. + * + * Output #IBusRegistry as an XML-formatted string. + * The output string can be then shown on the screen or written to file. + */ +void ibus_registry_output (IBusRegistry *registry, + GString *output, + int indent); + +/** + * ibus_registry_check_modification: + * @registry: An #IBusRegistry. + * + * Check if the registry is updated. + * + * Returns: %TRUE if mtime is changed; %FALSE otherwise. + */ +gboolean ibus_registry_check_modification + (IBusRegistry *registry); + +/** + * ibus_registry_get_components: + * @registry: An #IBusRegistry. + * + * List components. + * + * Returns: (transfer container) (element-type IBusComponent): + * a list of #IBusComponent objects. + * The caller has to call g_list_free() for the returned list. + */ +GList *ibus_registry_get_components (IBusRegistry *registry); + +/** + * ibus_registry_get_observed_paths: + * @registry: An #IBusRegistry. + * + * List observed paths. + * + * Returns: (transfer container) (element-type IBusObservedPath): + * a list of #IBusObservedPath objects. + * The caller has to call g_list_free() for the returned list. + */ +GList *ibus_registry_get_observed_paths + (IBusRegistry *registry); + +/** + * ibus_registry_start_monitor_changes: + * @registry: An #IBusRegistry. + * + * Start to monitor observed paths. + */ +void ibus_registry_start_monitor_changes + (IBusRegistry *registry); + +G_END_DECLS +#endif diff --git a/src/ibusserializable.c b/src/ibusserializable.c index 6251c89ce..231020b72 100644 --- a/src/ibusserializable.c +++ b/src/ibusserializable.c @@ -2,28 +2,29 @@ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2018-2019 Takao Fujiwara + * Copyright (C) 2008-2019 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include "ibusinternal.h" #include "ibusserializable.h" #define IBUS_SERIALIZABLE_GET_PRIVATE(o) \ - (G_TYPE_INSTANCE_GET_PRIVATE ((o), IBUS_TYPE_SERIALIZABLE, IBusSerializablePrivate)) + ((IBusSerializablePrivate *)ibus_serializable_get_instance_private (o)) enum { LAST_SIGNAL, @@ -49,7 +50,15 @@ static gboolean ibus_serializable_real_copy (IBusSerializable *des const IBusSerializable *src); static IBusObjectClass *parent_class = NULL; +static gint ibus_serializable_private_offset; +G_GNUC_UNUSED +static inline gpointer +ibus_serializable_get_instance_private (IBusSerializable *self) +{ + return (G_STRUCT_MEMBER_P (self, ibus_serializable_private_offset)); +} + GType ibus_serializable_get_type (void) { @@ -60,7 +69,7 @@ ibus_serializable_get_type (void) (GBaseInitFunc) ibus_serializable_base_init, (GBaseFinalizeFunc) ibus_serializable_base_fini, (GClassInitFunc) ibus_serializable_class_init, - NULL, /* class finialize */ + NULL, /* class finalize */ NULL, /* class data */ sizeof (IBusSerializable), 0, @@ -72,6 +81,9 @@ ibus_serializable_get_type (void) "IBusSerializable", &type_info, 0); + ibus_serializable_private_offset = + g_type_add_instance_private (type, + sizeof (IBusSerializablePrivate)); } return type; @@ -100,7 +112,10 @@ ibus_serializable_class_init (IBusSerializableClass *class) parent_class = (IBusObjectClass *) g_type_class_peek_parent (class); - g_type_class_add_private (class, sizeof (IBusSerializablePrivate)); + if (ibus_serializable_private_offset) { + g_type_class_adjust_private_offset (class, + &ibus_serializable_private_offset); + } object_class->destroy = (IBusObjectDestroyFunc) ibus_serializable_destroy; @@ -161,7 +176,6 @@ ibus_serializable_real_deserialize (IBusSerializable *object, key, attachment); g_variant_unref (attachment); - g_variant_unref (value); } g_variant_iter_free (iter); return 2; @@ -184,7 +198,7 @@ ibus_serializable_real_copy (IBusSerializable *dest, { IBusSerializablePrivate *src_priv; IBusSerializablePrivate *dest_priv; - src_priv = IBUS_SERIALIZABLE_GET_PRIVATE (src); + src_priv = IBUS_SERIALIZABLE_GET_PRIVATE (IBUS_SERIALIZABLE (src)); dest_priv = IBUS_SERIALIZABLE_GET_PRIVATE (dest); g_datalist_foreach (&src_priv->attachments, @@ -252,7 +266,7 @@ ibus_serializable_copy (IBusSerializable *object) } GVariant * -ibus_serializable_serialize (IBusSerializable *object) +ibus_serializable_serialize_object (IBusSerializable *object) { g_return_val_if_fail (IBUS_IS_SERIALIZABLE (object), FALSE); gboolean retval; @@ -268,7 +282,7 @@ ibus_serializable_serialize (IBusSerializable *object) } IBusSerializable * -ibus_serializable_deserialize (GVariant *variant) +ibus_serializable_deserialize_object (GVariant *variant) { g_return_val_if_fail (variant != NULL, NULL); diff --git a/src/ibusserializable.h b/src/ibusserializable.h index 742aeb6a8..102de1bdb 100644 --- a/src/ibusserializable.h +++ b/src/ibusserializable.h @@ -1,29 +1,33 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2013 Peng Huang + * Copyright (C) 2018 Takao Fujiwara + * Copyright (C) 2008-2018 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif +#ifndef __IBUS_SERIALIZABLE_H_ +#define __IBUS_SERIALIZABLE_H_ + /** * SECTION: ibusserializable * @short_description: A serializable object. @@ -48,8 +52,6 @@ * See IBusSerializableSerializeFunc(), IBusSerializableDeserializeFunc(), IBusSerializableCopyFunc() * for function prototype. */ -#ifndef __IBUS_SERIALIZABLE_H_ -#define __IBUS_SERIALIZABLE_H_ #include "ibusobject.h" @@ -128,12 +130,13 @@ struct _IBusSerializable { * IBusSerializableSerializeFunc: * @serializable: An #IBusSerializable. * @builder: A #GVariantBuilder. - * @returns: %TRUE if succeed; %FALSE otherwise. * * Prototype of serialize function. * Serialize function convert an #IBusSerializable to #GVariantBuilder. * Returns a gboolean value which indicates whether the conversion is success. * Return %TRUE if succeed. + * + * Returns: %TRUE if succeed; %FALSE otherwise. */ typedef gboolean (* IBusSerializableSerializeFunc) (IBusSerializable *serializable, GVariantBuilder *builder); @@ -142,12 +145,13 @@ typedef gboolean (* IBusSerializableSerializeFunc) (IBusSerializable * IBusSerializableDeserializeFunc: * @serializable: An #IBusSerializable. * @variant: A #GVariant contains a tuple. - * @returns: The number of values in the variant(tuple) are consumed. * * Prototype of deserialize function. * Deserialize function convert a #GVariant to #IBusSerializable. * Returns an integer value which indicates how many values in * the variant(tuple) are consumed. + * + * Returns: The number of values in the variant(tuple) are consumed. */ typedef gint (* IBusSerializableDeserializeFunc) (IBusSerializable *serializable, GVariant *variant); @@ -156,11 +160,12 @@ typedef gint (* IBusSerializableDeserializeFunc) (IBusSerializable * IBusSerializableCopyFunc: * @dest: The destination #IBusSerializable. * @src: A source #IBusSerializable. - * @returns: %TRUE if succeed; %FALSE otherwise. * * Prototype of copy function. * Copy function copy from source #IBusSerializable to the destination one. * Returns a gboolean value which indicates whether the copying is success. + * + * Returns: %TRUE if succeed; %FALSE otherwise. */ typedef gboolean (* IBusSerializableCopyFunc) (IBusSerializable *dest, const IBusSerializable *src); @@ -210,9 +215,11 @@ void ibus_serializable_set_qattachment (IBusSerializable *ser * ibus_serializable_get_qattachment: * @serializable: An #IBusSerializable. * @key: String formatted key for indexing value. - * @returns: The attached value; or %NULL if fail to retrieve the value. * - * Get a value from attachment of an #IBusSerializable. + * Gets a value from attachment of an #IBusSerializable. + * + * Returns: The attached value; or %NULL if fail to retrieve the value. + * * See also: ibus_serializable_set_attachment(). */ GVariant *ibus_serializable_get_qattachment (IBusSerializable *serializable, @@ -233,38 +240,47 @@ void ibus_serializable_remove_qattachment /** * ibus_serializable_copy: * @serializable: An #IBusSerializable. - * @returns: A newly allocated clone object; or %NULL if @object is not serializable. * * Clone an #IBusSerializable. * The copy method should be implemented in extended class. * + * Returns: (transfer none): A newly allocated clone object; or %NULL + * if @object is not serializable. + * * See also: IBusSerializableCopyFunc(). */ -IBusSerializable *ibus_serializable_copy (IBusSerializable *serializable); +IBusSerializable *ibus_serializable_copy (IBusSerializable *serializable); /** - * ibus_serializable_serialize: + * ibus_serializable_serialize_object: * @serializable: An #IBusSerializable. - * @returns: A #GVariant. * * Serialize an #IBusSerializable to a #GVariant. * The serialize method should be implemented in extended class. * + * Returns: A #GVariant. + * * See also: IBusSerializableCopyFunc(). */ -GVariant *ibus_serializable_serialize (IBusSerializable *serializable); +GVariant *ibus_serializable_serialize_object + (IBusSerializable *serializable); /** - * ibus_serializable_deserialize: + * ibus_serializable_deserialize_object: * @variant: A #GVariant. - * @returns: The deserialized #IBusSerializable. * * Deserialize a #GVariant to an #IBusSerializable/ * The deserialize method should be implemented in extended class. * + * Returns: (transfer none): The deserialized #IBusSerializable. + * * See also: IBusSerializableCopyFunc(). */ -IBusSerializable *ibus_serializable_deserialize (GVariant *variant); +IBusSerializable *ibus_serializable_deserialize_object + (GVariant *variant); + +#define ibus_serializable_serialize ibus_serializable_serialize_object +#define ibus_serializable_deserialize ibus_serializable_deserialize_object G_END_DECLS #endif diff --git a/src/ibusservice.c b/src/ibusservice.c index e94feda57..60255bd50 100644 --- a/src/ibusservice.c +++ b/src/ibusservice.c @@ -1,29 +1,30 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2015 Peng Huang + * Copyright (C) 2015-2019 Takao Fujiwara + * Copyright (C) 2008-2019 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include "ibusservice.h" #include "ibusinternal.h" #define IBUS_SERVICE_GET_PRIVATE(o) \ - (G_TYPE_INSTANCE_GET_PRIVATE ((o), IBUS_TYPE_SERVICE, IBusServicePrivate)) + ((IBusServicePrivate *)ibus_service_get_instance_private (o)) enum { LAST_SIGNAL @@ -132,6 +133,13 @@ static const GDBusInterfaceVTable ibus_service_interface_vtable = { }; static IBusObjectClass *ibus_service_parent_class = NULL; +static gint ibus_service_private_offset; + +static inline gpointer +ibus_service_get_instance_private (IBusService *self) +{ + return (G_STRUCT_MEMBER_P (self, ibus_service_private_offset)); +} GType ibus_service_get_type (void) @@ -143,7 +151,7 @@ ibus_service_get_type (void) (GBaseInitFunc) ibus_service_base_init, (GBaseFinalizeFunc) ibus_service_base_fini, (GClassInitFunc) ibus_service_class_init, - NULL, /* class finialize */ + NULL, /* class finalize */ NULL, /* class data */ sizeof (IBusService), 0, @@ -155,6 +163,9 @@ ibus_service_get_type (void) "IBusService", &type_info, 0); + ibus_service_private_offset = + g_type_add_instance_private (type, + sizeof (IBusServicePrivate)); } return type; @@ -197,12 +208,20 @@ ibus_service_class_init (IBusServiceClass *class) GObjectClass *gobject_class = G_OBJECT_CLASS (class); IBusObjectClass *ibus_object_class = IBUS_OBJECT_CLASS (class); - ibus_service_parent_class = IBUS_OBJECT_CLASS (g_type_class_peek_parent (class)); + ibus_service_parent_class = + IBUS_OBJECT_CLASS (g_type_class_peek_parent (class)); + if (ibus_service_private_offset) { + g_type_class_adjust_private_offset (class, + &ibus_service_private_offset); + } gobject_class->constructed = ibus_service_constructed; - gobject_class->set_property = (GObjectSetPropertyFunc) ibus_service_set_property; - gobject_class->get_property = (GObjectGetPropertyFunc) ibus_service_get_property; - ibus_object_class->destroy = (IBusObjectDestroyFunc) ibus_service_destroy; + gobject_class->set_property = + (GObjectSetPropertyFunc) ibus_service_set_property; + gobject_class->get_property = + (GObjectGetPropertyFunc) ibus_service_get_property; + ibus_object_class->destroy = + (IBusObjectDestroyFunc) ibus_service_destroy; /* virtual functions */ class->service_method_call = ibus_service_service_method_call; @@ -251,8 +270,6 @@ ibus_service_class_init (IBusServiceClass *class) G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB) ); - - g_type_class_add_private (class, sizeof (IBusServicePrivate)); } static void @@ -500,13 +517,14 @@ ibus_service_register (IBusService *service, GDBusConnection *connection, GError **error) { + GArray *array = NULL; + GArray *interfaces; + GDBusInterfaceInfo **p; + g_return_val_if_fail (IBUS_IS_SERVICE (service), FALSE); g_return_val_if_fail (G_IS_DBUS_CONNECTION (connection), FALSE); - g_return_val_if_fail (connection != service->priv->connection || service->priv->constructed == FALSE, FALSE); g_return_val_if_fail (error == NULL || *error == NULL, FALSE); - GArray *array = NULL; - if (g_hash_table_lookup (service->priv->table, connection)) { if (error) { *error = g_error_new (G_DBUS_ERROR, G_DBUS_ERROR_OBJECT_PATH_IN_USE, @@ -516,7 +534,9 @@ ibus_service_register (IBusService *service, goto error_out; } - GDBusInterfaceInfo **p = (GDBusInterfaceInfo **)IBUS_SERVICE_GET_CLASS (service)->interfaces->data; + interfaces = IBUS_SERVICE_GET_CLASS (service)->interfaces; + g_assert (interfaces); + p = (GDBusInterfaceInfo **)interfaces->data; if (*p == NULL) { if (error) { *error = g_error_new (G_DBUS_ERROR, G_DBUS_ERROR_FAILED, @@ -620,7 +640,7 @@ ibus_service_class_add_interfaces (IBusServiceClass *class, g_array_append_val (class->interfaces, *p); p++; } - // g_dbus_node_info_unref (introspection_data); + g_dbus_node_info_unref (introspection_data); return TRUE; } } diff --git a/src/ibusservice.h b/src/ibusservice.h index 94f9bb7a6..d3723a97d 100644 --- a/src/ibusservice.h +++ b/src/ibusservice.h @@ -1,29 +1,32 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2015 Peng Huang + * Copyright (C) 2008-2015 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif +#ifndef __IBUS_SERVICE_H_ +#define __IBUS_SERVICE_H_ + /** * SECTION: ibusservice * @short_description: IBus service back-end. @@ -32,9 +35,6 @@ * An IBusService is a base class for services. */ -#ifndef __IBUS_SERVICE_H_ -#define __IBUS_SERVICE_H_ - #include #include "ibusobject.h" @@ -79,6 +79,20 @@ struct _IBusServiceClass { /*< public >*/ /* virtual functions */ + /** + * IBusServiceClass::service_method_call: + * @service: An #IBusService. + * @connection: A dbus connection. + * @sender: A sender. + * @object_path: An object path. + * @interface_name: An interface name. + * @method_name: A method name. + * @parameters: A parameters. + * @invocation: A dbus method invocation. + * + * The ::service_method_call class method is to connect + * GDBusInterfaceMethodCallFunc(). + */ void (* service_method_call) (IBusService *service, GDBusConnection *connection, @@ -89,6 +103,21 @@ struct _IBusServiceClass { GVariant *parameters, GDBusMethodInvocation *invocation); + /** + * IBusServiceClass::service_get_property: + * @service: An #IBusService. + * @connection: A dbus connection. + * @sender: A sender. + * @object_path: An object path. + * @interface_name: An interface name. + * @property_name: A property name. + * @error: Return location for error or %NULL. + * + * The ::service_get_property class method is to connect + * GDBusInterfaceGetPropertyFunc(). + * + * Returns: (nullable) (transfer full): A variant. + */ GVariant * (* service_get_property) (IBusService *service, GDBusConnection *connection, @@ -97,6 +126,22 @@ struct _IBusServiceClass { const gchar *interface_name, const gchar *property_name, GError **error); + /** + * IBusServiceClass::service_set_property: + * @service: An #IBusService. + * @connection: A dbus connection. + * @sender: A sender. + * @object_path: An object path. + * @interface_name: An interface name. + * @property_name: An property name. + * @value: An property value. + * @error: Return location for error or %NULL. + * + * The ::service_set_property class method is to connect + * GDBusInterfaceSetPropertyFunc(). + * + * Returns: %TRUE if set the value else %FALSE. + */ gboolean (* service_set_property) (IBusService *service, GDBusConnection *connection, @@ -118,28 +163,32 @@ GType ibus_service_get_type (void); /** * ibus_service_new: + * @connection: A GDBusConnection. * @path: Object path. - * @returns: A newly allocated IBusService * - * New an IBusService. + * Creantes a new #IBusService. + * + * Returns: A newly allocated #IBusService */ IBusService *ibus_service_new (GDBusConnection *connection, const gchar *path); /** * ibus_service_get_object_path: * @service: An IBusService. - * @returns: The object path of @service * - * Returns the object path of an IBusService. + * Gets the object path of an IBusService. + * + * Returns: The object path of @service */ const gchar *ibus_service_get_object_path (IBusService *service); /** * ibus_service_get_connection: * @service: An IBusService. - * @returns: (transfer none): A #GDBusConnection of an #IBusService instance. * - * Returns a connections. + * Gets a connections. + * + * Returns: (transfer none): A #GDBusConnection of an #IBusService instance. */ GDBusConnection *ibus_service_get_connection (IBusService *service); @@ -148,9 +197,10 @@ GDBusConnection *ibus_service_get_connection (IBusService *service); * @service: An IBusService. * @connection: A GDBusConnection the service will be registered to. * @error: Return location for error or NULL. - * @returns: TRUE if the service was registered, FALSE otherwise. * * Registers service to a connection. + * + * Returns: %TRUE if the service was registered, %FALSE otherwise. */ gboolean ibus_service_register (IBusService *service, GDBusConnection *connection, @@ -174,11 +224,12 @@ void ibus_service_unregister (IBusService *service, * @name: Name of the signal. * @first_arg_type: Type of first argument. * @...: Rest of arguments, NULL to mark the end. - * @returns: TRUE if succeed; FALSE otherwise. * - * Send signal to all the IBusConnections of an IBusService. + * Sends signal to all the #IBusConnections of an #IBusService. + * + * Returns: %TRUE if succeed; %FALSE otherwise. * - * @see_also: g_dbus_connection_emit_signal() + * see_also: g_dbus_connection_emit_signal() */ gboolean ibus_service_emit_signal (IBusService *service, const gchar *dest_bus_name, @@ -192,6 +243,9 @@ gboolean ibus_service_emit_signal (IBusService *service, * @xml_data: The introspection xml data. * * Set the interface introspection information with the service class. + * + * Returns: %TRUE if @xml_data is valid and succeeded to be added; + * %FALSE otherwise. */ gboolean ibus_service_class_add_interfaces (IBusServiceClass *klass, diff --git a/src/ibusshare.c b/src/ibusshare.c index 9215369b9..0c0bda104 100644 --- a/src/ibusshare.c +++ b/src/ibusshare.c @@ -2,23 +2,27 @@ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2015-2021 Takao Fujiwara + * Copyright (C) 2008-2018 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ +#ifdef HAVE_CONFIG_H +#include +#endif #include "ibusshare.h" #include @@ -44,14 +48,20 @@ ibus_get_local_machine_id (void) if (!g_file_get_contents ("/var/lib/dbus/machine-id", &machine_id, NULL, - &error)) { + &error) && + !g_file_get_contents ("/etc/machine-id", + &machine_id, + NULL, + NULL)) { g_warning ("Unable to load /var/lib/dbus/machine-id: %s", error->message); - g_error_free (error); machine_id = "machine-id"; } else { g_strstrip (machine_id); } + if (error != NULL) { + g_error_free (error); + } } return machine_id; @@ -69,63 +79,12 @@ const gchar * ibus_get_user_name (void) { return g_get_user_name (); -#if 0 - static gchar *username = NULL; - if (username == NULL) { - username = g_strdup (getlogin()); - if (username == NULL) - username = g_strdup (g_getenv("SUDO_USER")); - if (username == NULL) { - const gchar *uid = g_getenv ("USERHELPER_UID"); - if (uid != NULL) { - gchar *end; - uid_t id = (uid_t)strtol(uid, &end, 10); - if (uid != end) { - struct passwd *pw = getpwuid (id); - if (pw != NULL) { - username = g_strdup (pw->pw_name); - } - } - } - } - if (username == NULL) - username = g_strdup (g_getenv("USERNAME")); - if (username == NULL) - username = g_strdup (g_getenv("LOGNAME")); - if (username == NULL) - username = g_strdup (g_getenv("USER")); - if (username == NULL) - username = g_strdup (g_getenv("LNAME")); - - } - return username; -#endif } glong ibus_get_daemon_uid (void) { return getuid (); -#if 0 - struct passwd *pwd; - uid_t uid; - const gchar *username; - - uid = getuid (); - - if (uid != 0) - return uid; - - username = ibus_get_user_name (); - if (username == NULL) - return 0; - - pwd = getpwnam (username); - if (pwd == NULL) - return 0; - - return pwd->pw_uid; -#endif } const gchar * @@ -144,6 +103,7 @@ ibus_get_socket_path (void) gchar *display; gchar *displaynumber = "0"; /* gchar *screennumber = "0"; */ + gboolean is_wayland = FALSE; gchar *p; path = g_strdup (g_getenv ("IBUS_ADDRESS_FILE")); @@ -152,16 +112,19 @@ ibus_get_socket_path (void) } if (_display == NULL) { - display = g_strdup (g_getenv ("DISPLAY")); + display = g_strdup (g_getenv ("WAYLAND_DISPLAY")); + if (display) + is_wayland = TRUE; + else + display = g_strdup (g_getenv ("DISPLAY")); } else { display = g_strdup (_display); } - if (display == NULL) { - g_warning ("DISPLAY is empty! We use default DISPLAY (:0.0)"); - } - else { + if (is_wayland) { + displaynumber = display; + } else if (display) { p = display; hostname = display; for (; *p != ':' && *p != '\0'; p++); @@ -189,6 +152,12 @@ ibus_get_socket_path (void) ibus_get_local_machine_id (), hostname, displaynumber); + /* Qt5 IBus module has a hard-coded path and we cannot change this + * for the back compatibility. + * XDG_RUNTIME_DIR is not useful because it's generated by + * login but not `su` command and ibus-daemon can be run with `su` + * and we may change the path to XDG_CACHE_HOME in the future. + */ path = g_build_filename (g_get_user_config_dir (), "ibus", "bus", @@ -203,8 +172,9 @@ ibus_get_socket_path (void) gint ibus_get_timeout (void) { - /* 6000 ms is the default timeout on the ibus-daemon side (5 sec) plus 1. */ - static const gint default_timeout = 6000; + /* 16000 ms is the default timeout on the ibus-daemon side + * (15 sec) plus 1. */ + static const gint default_timeout = 16000; static gint64 timeout = -2; if (timeout == -2) { @@ -230,22 +200,17 @@ ibus_get_address (void) FILE *pf; /* free address */ - if (address != NULL) { - g_free (address); - address = NULL; - } + g_clear_pointer (&address, g_free); /* get address from env variable */ address = g_strdup (g_getenv ("IBUS_ADDRESS")); - if (address) { + if (address) return address; - } /* read address from ~/.config/ibus/bus/soketfile */ pf = fopen (ibus_get_socket_path (), "r"); - if (pf == NULL) { + if (pf == NULL) return NULL; - } while (!feof (pf)) { gchar *p = buffer; @@ -257,11 +222,12 @@ ibus_get_address (void) continue; /* parse IBUS_ADDRESS */ if (strncmp (p, "IBUS_ADDRESS=", sizeof ("IBUS_ADDRESS=") - 1) == 0) { - address = p + sizeof ("IBUS_ADDRESS=") - 1; - for (p = (gchar *)address; *p != '\n' && *p != '\0'; p++); + gchar *head = p + sizeof ("IBUS_ADDRESS=") - 1; + for (p = head; *p != '\n' && *p != '\0'; p++); if (*p == '\n') *p = '\0'; - address = g_strdup (address); + g_free (address); + address = g_strdup (head); continue; } @@ -274,9 +240,8 @@ ibus_get_address (void) } fclose (pf); - if (pid == -1 || kill (pid, 0) != 0) { + if (pid == -1 || kill (pid, 0) != 0) return NULL; - } return address; } @@ -289,15 +254,28 @@ ibus_write_address (const gchar *address) g_return_if_fail (address != NULL); path = g_path_get_dirname (ibus_get_socket_path ()); - g_mkdir_with_parents (path, 0700); + errno = 0; + if (g_mkdir_with_parents (path, 0700)) { + g_warning ("Failed to mkdir %s: %s", path, g_strerror (errno)); + g_free (path); + return; + } g_free (path); - g_unlink (ibus_get_socket_path ()); + errno = 0; + if (g_unlink (ibus_get_socket_path ())) { + g_warning ("Failed to unlink %s: %s", + ibus_get_socket_path (), g_strerror (errno)); + } pf = fopen (ibus_get_socket_path (), "w"); g_return_if_fail (pf != NULL); fprintf (pf, - "# This file is created by ibus-daemon, please do not modify it\n" + "# This file is created by ibus-daemon, please do not modify it.\n" + "# This file allows processes on the machine to find the\n" + "# ibus session bus with the below address.\n" + "# If the IBUS_ADDRESS environment variable is set, it will\n" + "# be used rather than this file.\n" "IBUS_ADDRESS=%s\n" "IBUS_DAEMON_PID=%ld\n", address, (glong) getpid ()); @@ -322,7 +300,9 @@ ibus_free_strv (gchar **strv) void ibus_init (void) { +#if !GLIB_CHECK_VERSION(2,35,0) g_type_init (); +#endif IBUS_ERROR; IBUS_TYPE_TEXT; IBUS_TYPE_ATTRIBUTE; @@ -330,6 +310,9 @@ ibus_init (void) IBUS_TYPE_LOOKUP_TABLE; IBUS_TYPE_COMPONENT; IBUS_TYPE_ENGINE_DESC; + IBUS_TYPE_OBSERVED_PATH; + IBUS_TYPE_REGISTRY; + IBUS_TYPE_X_EVENT; } static GMainLoop *main_loop = NULL; diff --git a/src/ibusshare.h b/src/ibusshare.h index 4ff41289b..d739e2ff8 100644 --- a/src/ibusshare.h +++ b/src/ibusshare.h @@ -1,29 +1,33 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2013 Peng Huang + * Copyright (C) 2015-2022 Takao Fujiwara + * Copyright (C) 2008-2022 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif +#ifndef __IBUS_SHARE_H_ +#define __IBUS_SHARE_H_ + /** * SECTION: ibusshare * @short_description: Shared utility functions and definition. @@ -33,11 +37,14 @@ * which are shared among ibus component and services. */ -#ifndef __IBUS_SHARE_H_ -#define __IBUS_SHARE_H_ - #include +#ifdef IBUS_DISABLE_DEPRECATION_WARNINGS +#define IBUS_DEPRECATED +#else +#define IBUS_DEPRECATED G_DEPRECATED +#endif + /** * IBUS_SERVICE_IBUS: * @@ -45,6 +52,13 @@ */ #define IBUS_SERVICE_IBUS "org.freedesktop.IBus" +/** + * IBUS_SERVICE_PORTAL: + * + * Address of IBus portalservice. + */ +#define IBUS_SERVICE_PORTAL "org.freedesktop.portal.IBus" + /** * IBUS_SERVICE_PANEL: * @@ -52,6 +66,22 @@ */ #define IBUS_SERVICE_PANEL "org.freedesktop.IBus.Panel" +/** + * IBUS_SERVICE_PANEL_EXTENSION: + * + * Address of IBus panel extension service. + */ +#define IBUS_SERVICE_PANEL_EXTENSION "org.freedesktop.IBus.Panel.Extension" + +/** + * IBUS_SERVICE_PANEL_EXTENSION_EMOJI: + * + * Address of IBus panel extension service for emoji. + * This service provides emoji, Unicode code point, Unicode name features. + */ +#define IBUS_SERVICE_PANEL_EXTENSION_EMOJI \ + "org.freedesktop.IBus.Panel.Extension.Emoji" + /** * IBUS_SERVICE_CONFIG: * @@ -87,6 +117,15 @@ */ #define IBUS_PATH_PANEL "/org/freedesktop/IBus/Panel" +/** + * IBUS_PATH_PANEL_EXTENSION_EMOJI: + * + * D-Bus path for IBus extension panel for emoji. + * This service provides emoji, Unicode code point, Unicode name features. + */ +#define IBUS_PATH_PANEL_EXTENSION_EMOJI \ + "/org/freedesktop/IBus/Panel/Extension/Emoji" + /** * IBUS_PATH_CONFIG: * @@ -115,6 +154,13 @@ */ #define IBUS_INTERFACE_IBUS "org.freedesktop.IBus" +/** + * IBUS_INTERFACE_PORTAL: + * + * D-Bus interface for IBus portal. + */ +#define IBUS_INTERFACE_PORTAL "org.freedesktop.IBus.Portal" + /** * IBUS_INTERFACE_INPUT_CONTEXT: * @@ -162,9 +208,10 @@ G_BEGIN_DECLS /** * ibus_get_local_machine_id: - * @returns: A newly allocated string that shows the UUID of the machine. * * Obtains the machine UUID of the machine this process is running on. + * + * Returns: A newly allocated string that shows the UUID of the machine. */ const gchar *ibus_get_local_machine_id (void); @@ -179,7 +226,6 @@ void ibus_set_display (const gchar *display); /** * ibus_get_address: - * @returns: D-Bus address of IBus. %NULL for not found. * * Return the D-Bus address of IBus. * It will find the address from following source: @@ -188,6 +234,8 @@ void ibus_set_display (const gchar *display); * Socket file under ~/.config/ibus/bus/ * * + * Returns: D-Bus address of IBus. %NULL for not found. + * * See also: ibus_write_address(). */ const gchar *ibus_get_address (void); @@ -204,7 +252,6 @@ void ibus_write_address (const gchar *address); /** * ibus_get_user_name: - * @returns: A newly allocated string that stores current user name. * * Get the current user name. * It is determined by: @@ -217,15 +264,18 @@ void ibus_write_address (const gchar *address); * Environment variable USER * Environment variable LNAME * + * + * Returns: A newly allocated string that stores current user name. */ const gchar *ibus_get_user_name (void); /** * ibus_get_daemon_uid: - * @returns: UID of ibus-daemon; or 0 if UID is not available. * * Get UID of ibus-daemon. * + * Returns: UID of ibus-daemon; or 0 if UID is not available. + * * Deprecated: This function has been deprecated and should * not be used in newly written code. */ @@ -233,18 +283,23 @@ glong ibus_get_daemon_uid (void) G_GNUC_DEPRECATED; /** * ibus_get_socket_path: - * @returns: A newly allocated string that stores the path of socket file. * * Get the path of socket file. + * + * Returns: A newly allocated string that stores the path of socket file. */ const gchar *ibus_get_socket_path (void); /** * ibus_get_timeout: - * @returns: A GDBus timeout in milliseconds. -1 when default timeout for GDBus should be used. * - * Get the GDBus timeout in milliseconds. The timeout is for clients (e.g. im-ibus.so), not for ibus-daemon. - * Note that the timeout for ibus-daemon could be set by --timeout command line option of the daemon. + * Get the GDBus timeout in milliseconds. The timeout is for clients (e.g. + * im-ibus.so), not for ibus-daemon. + * Note that the timeout for ibus-daemon could be set by --timeout command + * line option of the daemon. + * + * Returns: A GDBus timeout in milliseconds. -1 when default timeout for + * GDBus should be used. */ gint ibus_get_timeout (void); @@ -263,25 +318,27 @@ void ibus_free_strv (gchar **strv) * ibus_key_event_to_string: * @keyval: Key symbol. * @modifiers: Modifiers such as Ctrl or Shift. - * @returns: The name of a key symbol and modifier. * * Return the name of a key symbol and modifiers. * * For example, if press ctrl, shift, and enter, then this function returns: * Shift+Control+enter. + * + * Returns: The name of a key symbol and modifier. */ -const gchar *ibus_key_event_to_string +gchar *ibus_key_event_to_string (guint keyval, guint modifiers); /** * ibus_key_event_from_string: * @string: Key event string. - * @keyval: Variable that hold key symbol result. - * @modifiers: Variable that hold modifiers result. - * @returns: TRUE for succeed; FALSE if failed. + * @keyval: (out): Variable that hold key symbol result. + * @modifiers: (out): Variable that hold modifiers result. * * Parse key event string and return key symbol and modifiers. + * + * Returns: %TRUE for succeed; %FALSE if failed. */ gboolean ibus_key_event_from_string (const gchar *string, @@ -291,9 +348,7 @@ gboolean ibus_key_event_from_string /** * ibus_init: * - * Init the ibus types. - * - * It is actually a wrapper of g_type_init(). + * Initialize the ibus types. */ void ibus_init (void); diff --git a/src/ibustext.c b/src/ibustext.c index e5218d048..ed0fe666a 100644 --- a/src/ibustext.c +++ b/src/ibustext.c @@ -2,22 +2,23 @@ /* vim:set et sts=4: */ /* IBus - The Input Bus * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2011-2021 Takao Fujiwara + * Copyright (C) 2008-2021 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include "ibustext.h" @@ -220,7 +221,7 @@ ibus_text_new_from_unichar (gunichar c) text= g_object_new (IBUS_TYPE_TEXT, NULL); text->is_static = FALSE; - text->text = (gchar *)g_malloc (12); + g_return_val_if_fail ((text->text = (gchar *)g_malloc (12)), NULL); len = g_unichar_to_utf8 (c, text->text); text->text[len] = 0; diff --git a/src/ibustext.h b/src/ibustext.h index cff913146..e5e3c4a91 100644 --- a/src/ibustext.h +++ b/src/ibustext.h @@ -1,43 +1,44 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* IBus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2013 Peng Huang + * Copyright (C) 2008-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif +#ifndef __IBUS_TEXT_H_ +#define __IBUS_TEXT_H_ + /** * SECTION: ibustext * @short_description: Text with decorating information. - * @see_also: #IBusAttribute * * An IBusText is the main text object in IBus. * The text is decorated according to associated IBusAttribute, * e.g. the foreground/background color, underline, and * applied scope. + * + * see_also: #IBusAttribute */ -#ifndef __IBUS_TEXT_H_ -#define __IBUS_TEXT_H_ - #include "ibusserializable.h" #include "ibusattrlist.h" @@ -90,34 +91,37 @@ GType ibus_text_get_type (void); /** * ibus_text_new_from_string: * @str: An text string to be set. - * @returns: A newly allocated IBusText. * - * New an IBusText from a string. + * Creates a new #IBusText from a string. + * @str will be duplicated in #IBusText, so feel free to free @str after this + * function. * - * @str will be duplicated in IBusText, so feel free to free @str after this function. + * Returns: A newly allocated #IBusText. */ IBusText *ibus_text_new_from_string (const gchar *str); /** * ibus_text_new_from_ucs4: * @str: An text string to be set. - * @returns: A newly allocated IBusText. * - * New an IBusText from an UCS-4 encoded string. + * Creates a new #IBusText from an UCS-4 encoded string. + * @str will be duplicated in IBusText, so feel free to free @str after this + * function. * - * @str will be duplicated in IBusText, so feel free to free @str after this function. + * Returns: A newly allocated #IBusText. */ IBusText *ibus_text_new_from_ucs4 (const gunichar *str); /** * ibus_text_new_from_static_string: (skip) * @str: An text string to be set. - * @returns: A newly allocated IBusText. * - * New an IBusText from a static string. + * Creates a new #IBusText from a static string. * * Since @str is a static string which won't be freed. * This function will NOT duplicate @str. + * + * Returns: A newly allocated #IBusText. */ IBusText *ibus_text_new_from_static_string (const gchar *str); @@ -125,11 +129,12 @@ IBusText *ibus_text_new_from_static_string (const gchar *str); * ibus_text_new_from_printf: * @fmt: printf format string. * @...: arguments for @fmt. - * @returns: A newly allocated IBusText. * - * New an IBusText from a printf expression. + * Creates a new #IBusText from a printf expression. * * The result of printf expression is stored in the new IBusText instance. + * + * Returns: A newly allocated #IBusText. */ IBusText *ibus_text_new_from_printf (const gchar *fmt, ...) G_GNUC_PRINTF (1, 2); @@ -137,9 +142,10 @@ IBusText *ibus_text_new_from_printf (const gchar *fmt, /** * ibus_text_new_from_unichar: * @c: A single UCS4-encoded character. - * @returns: A newly allocated IBusText. * - * New an IBusText from a single UCS4-encoded character. + * Creates a new #IBusText from a single UCS4-encoded character. + * + * Returns: A newly allocated #IBusText. */ IBusText *ibus_text_new_from_unichar (gunichar c); @@ -160,39 +166,43 @@ void ibus_text_append_attribute (IBusText *text, gint end_index); /** * ibus_text_get_length: - * @text: An IBusText. - * @returns: Number of character in @text, not counted by bytes. + * @text: An #IBusText. * - * Return number of characters in an IBusText. + * Return number of characters in an #IBusText. * This function is based on g_utf8_strlen(), so unlike strlen(), * it does not count by bytes but characters instead. + * + * Returns: Number of character in @text, not counted by bytes. */ guint ibus_text_get_length (IBusText *text); /** * ibus_text_get_is_static: (skip) - * @text: An IBusText. - * @returns: the is_static in @text. + * @text: An #IBusText. + * + * Return the is_static in an #IBusText. * - * Return the is_static in an IBusText. + * Returns: the is_static in @text. */ gboolean ibus_text_get_is_static (IBusText *text); /** * ibus_text_get_text: - * @text: An IBusText. - * @returns: the text in @text. + * @text: An #IBusText. + * + * Return the text in an #IBusText. Should not be freed. * - * Return the text in an IBusText. Should not be freed. + * Returns: the text in @text. */ const gchar * ibus_text_get_text (IBusText *text); /** * ibus_text_get_attributes: - * @text: An IBusText. - * @returns: (transfer none): the attrs in @text. + * @text: An #IBusText. + * + * Return the attributes in an #IBusText. Should not be freed. * - * Return the attributes in an IBusText. Should not be freed. + * Returns: (transfer none): the attrs in @text. */ IBusAttrList * ibus_text_get_attributes (IBusText *text); diff --git a/src/ibustypes.h b/src/ibustypes.h index d916265a9..60bcb92be 100644 --- a/src/ibustypes.h +++ b/src/ibustypes.h @@ -1,39 +1,42 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2013 Peng Huang + * Copyright (C) 2010-2022 Takao Fujiwara + * Copyright (C) 2008-2022 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif +#ifndef __IBUS_TYPES_H_ +#define __IBUS_TYPES_H_ + /** * SECTION: ibustypes * @short_description: Generic types for IBus. * @stability: Stable * - * This section consists generic types for IBus, including shift/control key modifiers, + * This section consists generic types for IBus, including shift/control key + * modifiers, * and a rectangle structure. */ -#ifndef __IBUS_TYPES_H_ -#define __IBUS_TYPES_H_ /** * IBusModifierType: @@ -105,6 +108,7 @@ typedef enum * @IBUS_CAP_PROPERTY: UI is capable to have property. * @IBUS_CAP_SURROUNDING_TEXT: Client can provide surround text, * or IME can handle surround text. + * @IBUS_CAP_OSK: UI is owned by on-screen keyboard. * * Capability flags of UI. */ @@ -115,6 +119,7 @@ typedef enum { IBUS_CAP_FOCUS = 1 << 3, IBUS_CAP_PROPERTY = 1 << 4, IBUS_CAP_SURROUNDING_TEXT = 1 << 5, + IBUS_CAP_OSK = 1 << 6, } IBusCapabilite; /** @@ -192,9 +197,15 @@ typedef enum { * IBusError: * @IBUS_ERROR_NO_ENGINE: * There is no engine associated with input context. + * @IBUS_ERROR_NO_CONFIG: + * There is no config module running. + * @IBUS_ERROR_FAILED: + * General failure. */ typedef enum { IBUS_ERROR_NO_ENGINE, + IBUS_ERROR_NO_CONFIG, + IBUS_ERROR_FAILED } IBusError; /** @@ -222,5 +233,107 @@ struct _IBusRectangle { */ typedef void (* IBusFreeFunc) (gpointer object); +/** + * IBusInputPurpose: + * @IBUS_INPUT_PURPOSE_FREE_FORM: Allow any character + * @IBUS_INPUT_PURPOSE_ALPHA: Allow only alphabetic characters + * @IBUS_INPUT_PURPOSE_DIGITS: Allow only digits + * @IBUS_INPUT_PURPOSE_NUMBER: Edited field expects numbers + * @IBUS_INPUT_PURPOSE_PHONE: Edited field expects phone number + * @IBUS_INPUT_PURPOSE_URL: Edited field expects URL + * @IBUS_INPUT_PURPOSE_EMAIL: Edited field expects email address + * @IBUS_INPUT_PURPOSE_NAME: Edited field expects the name of a person + * @IBUS_INPUT_PURPOSE_PASSWORD: Like @IBUS_INPUT_PURPOSE_FREE_FORM, + * but characters are hidden + * @IBUS_INPUT_PURPOSE_PIN: Like @IBUS_INPUT_PURPOSE_DIGITS, but + * characters are hidden + * @IBUS_INPUT_PURPOSE_TERMINAL: Allow any character, in addition to control + * codes. Since 1.5.24 + * + * Describes primary purpose of the input context. This information + * is particularly useful to implement intelligent behavior in + * engines, such as automatic input-mode switch and text prediction. + * + * Note that the purpose is not meant to impose a totally strict rule + * about allowed characters, and does not replace input validation. + * It is fine for an on-screen keyboard to let the user override the + * character set restriction that is expressed by the purpose. The + * application is expected to validate the entry contents, even if + * it specified a purpose. + * + * The difference between @IBUS_INPUT_PURPOSE_DIGITS and + * @IBUS_INPUT_PURPOSE_NUMBER is that the former accepts only digits + * while the latter also some punctuation (like commas or points, plus, + * minus) and “e” or “E” as in 3.14E+000. + * + * This enumeration may be extended in the future; engines should + * interpret unknown values as 'free form'. + * + * Since: 1.5.4 + */ +typedef enum +{ + IBUS_INPUT_PURPOSE_FREE_FORM, + IBUS_INPUT_PURPOSE_ALPHA, + IBUS_INPUT_PURPOSE_DIGITS, + IBUS_INPUT_PURPOSE_NUMBER, + IBUS_INPUT_PURPOSE_PHONE, + IBUS_INPUT_PURPOSE_URL, + IBUS_INPUT_PURPOSE_EMAIL, + IBUS_INPUT_PURPOSE_NAME, + IBUS_INPUT_PURPOSE_PASSWORD, + IBUS_INPUT_PURPOSE_PIN, + IBUS_INPUT_PURPOSE_TERMINAL +} IBusInputPurpose; + +/** + * IBusInputHints: + * @IBUS_INPUT_HINT_NONE: No special behaviour suggested + * @IBUS_INPUT_HINT_SPELLCHECK: Suggest checking for typos + * @IBUS_INPUT_HINT_NO_SPELLCHECK: Suggest not checking for typos + * @IBUS_INPUT_HINT_WORD_COMPLETION: Suggest word completion + * @IBUS_INPUT_HINT_LOWERCASE: Suggest to convert all text to lowercase + * @IBUS_INPUT_HINT_UPPERCASE_CHARS: Suggest to capitalize all text + * @IBUS_INPUT_HINT_UPPERCASE_WORDS: Suggest to capitalize the first + * character of each word + * @IBUS_INPUT_HINT_UPPERCASE_SENTENCES: Suggest to capitalize the + * first word of each sentence + * @IBUS_INPUT_HINT_INHIBIT_OSK: Suggest to not show an onscreen keyboard + * (e.g for a calculator that already has all the keys). + * @IBUS_INPUT_HINT_VERTICAL_WRITING: The text is vertical. Since 1.5.11 + * @IBUS_INPUT_HINT_EMOJI: Suggest offering Emoji support. Since 1.5.24 + * @IBUS_INPUT_HINT_NO_EMOJI: Suggest not offering Emoji support. Since 1.5.24 + * @IBUS_INPUT_HINT_PRIVATE: Request that the input method should not + * update personalized data (like typing history). Since 1.5.26 + * + * Describes hints that might be taken into account by engines. Note + * that engines may already tailor their behaviour according to the + * #IBusInputPurpose of the entry. + * + * Some common sense is expected when using these flags - mixing + * @IBUS_INPUT_HINT_LOWERCASE with any of the uppercase hints makes no sense. + * + * This enumeration may be extended in the future; engines should + * ignore unknown values. + * + * Since: 1.5.4 + */ +typedef enum +{ + IBUS_INPUT_HINT_NONE = 0, + IBUS_INPUT_HINT_SPELLCHECK = 1 << 0, + IBUS_INPUT_HINT_NO_SPELLCHECK = 1 << 1, + IBUS_INPUT_HINT_WORD_COMPLETION = 1 << 2, + IBUS_INPUT_HINT_LOWERCASE = 1 << 3, + IBUS_INPUT_HINT_UPPERCASE_CHARS = 1 << 4, + IBUS_INPUT_HINT_UPPERCASE_WORDS = 1 << 5, + IBUS_INPUT_HINT_UPPERCASE_SENTENCES = 1 << 6, + IBUS_INPUT_HINT_INHIBIT_OSK = 1 << 7, + IBUS_INPUT_HINT_VERTICAL_WRITING = 1 << 8, + IBUS_INPUT_HINT_EMOJI = 1 << 9, + IBUS_INPUT_HINT_NO_EMOJI = 1 << 10, + IBUS_INPUT_HINT_PRIVATE = 1 << 11 +} IBusInputHints; + #endif diff --git a/src/ibusunicode.c b/src/ibusunicode.c new file mode 100644 index 000000000..f7a897d1e --- /dev/null +++ b/src/ibusunicode.c @@ -0,0 +1,1075 @@ +/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ +/* vim:set et sts=4: */ +/* bus - The Input Bus + * Copyright (C) 2018-2021 Takao Fujiwara + * Copyright (C) 2018-2021 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include "ibusinternal.h" +#include "ibuserror.h" +#include "ibusunicode.h" + +#define IBUS_UNICODE_DATA_MAGIC "IBusUnicodeData" +#define IBUS_UNICODE_BLOCK_MAGIC "IBusUnicodeBlock" +#define IBUS_UNICODE_DATA_VERSION (1) +#define IBUS_UNICODE_DESERIALIZE_SIGNALL_STR \ + "deserialize-unicode" + +enum { + PROP_0 = 0, + PROP_CODE, + PROP_NAME, + PROP_ALIAS, + PROP_BLOCK_NAME, + PROP_START, + PROP_END +}; + +struct _IBusUnicodeDataPrivate { + gunichar code; + gchar *name; + gchar *alias; + gchar *block_name; +}; + +struct _IBusUnicodeBlockPrivate { + gunichar start; + gunichar end; + gchar *name; +}; + +typedef struct { + IBusUnicodeDataLoadAsyncFinish callback; + gpointer user_data; +} IBusUnicodeDataLoadData; + +#define IBUS_UNICODE_DATA_GET_PRIVATE(o) \ + ((IBusUnicodeDataPrivate *)ibus_unicode_data_get_instance_private (o)) +#define IBUS_UNICODE_BLOCK_GET_PRIVATE(o) \ + ((IBusUnicodeBlockPrivate *)ibus_unicode_block_get_instance_private (o)) + +/* functions prototype */ +static void ibus_unicode_data_set_property (IBusUnicodeData *unicode, + guint prop_id, + const GValue *value, + GParamSpec *pspec); +static void ibus_unicode_data_get_property (IBusUnicodeData *unicode, + guint prop_id, + GValue *value, + GParamSpec *pspec); +static void ibus_unicode_data_destroy (IBusUnicodeData *unicode); +static gboolean ibus_unicode_data_serialize (IBusUnicodeData *unicode, + GVariantBuilder *builder); +static gint ibus_unicode_data_deserialize (IBusUnicodeData *unicode, + GVariant *variant); +static gboolean ibus_unicode_data_copy (IBusUnicodeData *dest, + const IBusUnicodeData *src); +static void ibus_unicode_block_set_property + (IBusUnicodeBlock *block, + guint prop_id, + const GValue *value, + GParamSpec *pspec); +static void ibus_unicode_block_get_property + (IBusUnicodeBlock *block, + guint prop_id, + GValue *value, + GParamSpec *pspec); +static void ibus_unicode_block_destroy (IBusUnicodeBlock *block); +static gboolean ibus_unicode_block_serialize (IBusUnicodeBlock *block, + GVariantBuilder *builder); +static gint ibus_unicode_block_deserialize (IBusUnicodeBlock *block, + GVariant *variant); +static gboolean ibus_unicode_block_copy (IBusUnicodeBlock *dest, + const IBusUnicodeBlock *src); + +G_DEFINE_TYPE_WITH_PRIVATE (IBusUnicodeData, + ibus_unicode_data, + IBUS_TYPE_SERIALIZABLE) +G_DEFINE_TYPE_WITH_PRIVATE (IBusUnicodeBlock, + ibus_unicode_block, + IBUS_TYPE_SERIALIZABLE) + +static void +ibus_unicode_data_class_init (IBusUnicodeDataClass *class) +{ + IBusObjectClass *object_class = IBUS_OBJECT_CLASS (class); + GObjectClass *gobject_class = G_OBJECT_CLASS (class); + IBusSerializableClass *serializable_class = IBUS_SERIALIZABLE_CLASS (class); + + object_class->destroy = (IBusObjectDestroyFunc) ibus_unicode_data_destroy; + gobject_class->set_property = + (GObjectSetPropertyFunc) ibus_unicode_data_set_property; + gobject_class->get_property = + (GObjectGetPropertyFunc) ibus_unicode_data_get_property; + serializable_class->serialize = + (IBusSerializableSerializeFunc) ibus_unicode_data_serialize; + serializable_class->deserialize = + (IBusSerializableDeserializeFunc) ibus_unicode_data_deserialize; + serializable_class->copy = + (IBusSerializableCopyFunc) ibus_unicode_data_copy; + + /* install properties */ + /** + * IBusUnicodeData:code: + * + * The Uniode code point + */ + g_object_class_install_property (gobject_class, + PROP_CODE, + g_param_spec_unichar ("code", + "code point", + "The Unicode code point", + 0, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + + + /** + * IBusUnicodeData:name: + * + * The Uniode name + */ + g_object_class_install_property (gobject_class, + PROP_NAME, + g_param_spec_string ("name", + "name", + "The Unicode name", + "", + G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); + + /** + * IBusUnicodeData:alias: + * + * The Uniode alias name + */ + g_object_class_install_property (gobject_class, + PROP_ALIAS, + g_param_spec_string ("alias", + "alias name", + "The Unicode alias name", + "", + G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); + + /** + * IBusUnicodeData:block-name: + * + * The Uniode block name + */ + g_object_class_install_property (gobject_class, + PROP_BLOCK_NAME, + g_param_spec_string ("block-name", + "block name", + "The Unicode block name", + "", + G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); +} + +static void +ibus_unicode_data_init (IBusUnicodeData *unicode) +{ + unicode->priv = IBUS_UNICODE_DATA_GET_PRIVATE (unicode); +} + +static void +ibus_unicode_data_destroy (IBusUnicodeData *unicode) +{ + g_clear_pointer (&unicode->priv->name, g_free); + g_clear_pointer (&unicode->priv->alias, g_free); + g_clear_pointer (&unicode->priv->block_name, g_free); + + IBUS_OBJECT_CLASS (ibus_unicode_data_parent_class)-> + destroy (IBUS_OBJECT (unicode)); +} + +static void +ibus_unicode_data_set_property (IBusUnicodeData *unicode, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + switch (prop_id) { + case PROP_CODE: + g_assert (unicode->priv->code == 0); + unicode->priv->code = g_value_get_uint (value); + break; + case PROP_NAME: + g_assert (unicode->priv->name == NULL); + unicode->priv->name = g_value_dup_string (value); + break; + case PROP_ALIAS: + g_assert (unicode->priv->alias == NULL); + unicode->priv->alias = g_value_dup_string (value); + break; + case PROP_BLOCK_NAME: + g_free (unicode->priv->block_name); + unicode->priv->block_name = g_value_dup_string (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (unicode, prop_id, pspec); + } +} + +static void +ibus_unicode_data_get_property (IBusUnicodeData *unicode, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + switch (prop_id) { + case PROP_CODE: + g_value_set_uint (value, ibus_unicode_data_get_code (unicode)); + break; + case PROP_NAME: + g_value_set_string (value, ibus_unicode_data_get_name (unicode)); + break; + case PROP_ALIAS: + g_value_set_string (value, ibus_unicode_data_get_alias (unicode)); + break; + case PROP_BLOCK_NAME: + g_value_set_string (value, ibus_unicode_data_get_block_name (unicode)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (unicode, prop_id, pspec); + } +} + +static gboolean +ibus_unicode_data_serialize (IBusUnicodeData *unicode, + GVariantBuilder *builder) +{ + gboolean retval = IBUS_SERIALIZABLE_CLASS (ibus_unicode_data_parent_class)-> + serialize ((IBusSerializable *)unicode, builder); + g_return_val_if_fail (retval, FALSE); + +#define NOTNULL(s) ((s) != NULL ? (s) : "") + /* If you will add a new property, you can append it at the end and + * you should not change the serialized order of name, longname, + * description, ... because the order is also used in other applications + * likes ibus-qt. */ + g_variant_builder_add (builder, "u", unicode->priv->code); + g_variant_builder_add (builder, "s", NOTNULL (unicode->priv->name)); + g_variant_builder_add (builder, "s", NOTNULL (unicode->priv->alias)); + /* Use IBusUnicodeBlock for memory usage. + g_variant_builder_add (builder, "s", NOTNULL (unicode->priv->block_name)); + */ +#undef NOTNULL + return TRUE; +} + +static gint +ibus_unicode_data_deserialize (IBusUnicodeData *unicode, + GVariant *variant) +{ + gint retval = IBUS_SERIALIZABLE_CLASS (ibus_unicode_data_parent_class)-> + deserialize ((IBusSerializable *)unicode, variant); + g_return_val_if_fail (retval, 0); + + /* If you will add a new property, you can append it at the end and + * you should not change the serialized order of name, longname, + * description, ... because the order is also used in other applications + * likes ibus-qt. */ + g_variant_get_child (variant, retval++, "u", &unicode->priv->code); + ibus_g_variant_get_child_string (variant, retval++, + &unicode->priv->name); + ibus_g_variant_get_child_string (variant, retval++, + &unicode->priv->alias); + /* Use IBusUnicodeBlock for memory usage. + ibus_g_variant_get_child_string (variant, retval++, + &unicode->priv->block_name); + */ + return retval; +} + +static gboolean +ibus_unicode_data_copy (IBusUnicodeData *dest, + const IBusUnicodeData *src) +{ + gboolean retval = IBUS_SERIALIZABLE_CLASS (ibus_unicode_data_parent_class)-> + copy ((IBusSerializable *)dest, + (IBusSerializable *)src); + g_return_val_if_fail (retval, FALSE); + + dest->priv->code = src->priv->code; + dest->priv->name = g_strdup (src->priv->name); + dest->priv->alias = g_strdup (src->priv->alias); + dest->priv->block_name = g_strdup (src->priv->block_name); + return TRUE; +} + +IBusUnicodeData * +ibus_unicode_data_new (const gchar *first_property_name, ...) +{ + va_list var_args; + IBusUnicodeData *unicode; + + g_assert (first_property_name != NULL); + va_start (var_args, first_property_name); + unicode = (IBusUnicodeData *) g_object_new_valist (IBUS_TYPE_UNICODE_DATA, + first_property_name, + var_args); + va_end (var_args); + /* code is required. Other properties are set in class_init by default. */ + g_assert (unicode->priv->name != NULL); + g_assert (unicode->priv->alias != NULL); + g_assert (unicode->priv->block_name != NULL); + return unicode; +} + +gunichar +ibus_unicode_data_get_code (IBusUnicodeData *unicode) +{ + g_return_val_if_fail (IBUS_IS_UNICODE_DATA (unicode), G_MAXUINT32); + + return unicode->priv->code; +} + +const gchar * +ibus_unicode_data_get_name (IBusUnicodeData *unicode) +{ + g_return_val_if_fail (IBUS_IS_UNICODE_DATA (unicode), ""); + + return unicode->priv->name; +} + +const gchar * +ibus_unicode_data_get_alias (IBusUnicodeData *unicode) +{ + g_return_val_if_fail (IBUS_IS_UNICODE_DATA (unicode), ""); + + return unicode->priv->alias; +} + +const gchar * +ibus_unicode_data_get_block_name (IBusUnicodeData *unicode) +{ + g_return_val_if_fail (IBUS_IS_UNICODE_DATA (unicode), ""); + + return unicode->priv->block_name; +} + +void +ibus_unicode_data_set_block_name (IBusUnicodeData *unicode, + const gchar *block_name) +{ + g_return_if_fail (IBUS_IS_UNICODE_DATA (unicode)); + + g_free (unicode->priv->block_name); + unicode->priv->block_name = g_strdup (block_name); +} + +static void +variant_foreach_add_unicode (IBusUnicodeData *unicode, + GVariantBuilder *builder) +{ + g_variant_builder_add ( + builder, "v", + ibus_serializable_serialize (IBUS_SERIALIZABLE (unicode))); +} + +static GVariant * +ibus_unicode_data_list_serialize (GSList *list) +{ + GVariantBuilder builder; + + g_variant_builder_init (&builder, G_VARIANT_TYPE ("av")); + g_slist_foreach (list, (GFunc) variant_foreach_add_unicode, &builder); + return g_variant_builder_end (&builder); +} + +static GSList * +ibus_unicode_data_list_deserialize (GVariant *variant, + GObject *source_object) +{ + GSList *list = NULL; + GVariantIter iter; + GVariant *unicode_variant = NULL; + gsize i, size; + gboolean has_signal = FALSE; + + if (G_IS_OBJECT (source_object)) { + has_signal = g_signal_lookup ( + IBUS_UNICODE_DESERIALIZE_SIGNALL_STR, + G_OBJECT_TYPE (source_object)); + if (!has_signal) { + const gchar *type_name = + g_type_name (G_OBJECT_TYPE (source_object)); + g_warning ("GObject %s does not have the signal \"%s\"", + type_name ? type_name : "(null)", + IBUS_UNICODE_DESERIALIZE_SIGNALL_STR); + } + } + g_variant_iter_init (&iter, variant); + size = g_variant_iter_n_children (&iter); + i = 0; + while (g_variant_iter_loop (&iter, "v", &unicode_variant)) { + IBusUnicodeData *data = + IBUS_UNICODE_DATA (ibus_serializable_deserialize ( + unicode_variant)); + list = g_slist_append (list, data); + g_clear_pointer (&unicode_variant, g_variant_unref); + if (has_signal && (i == 0 || ((i + 1) % 100) == 0)) { + g_signal_emit_by_name (source_object, + IBUS_UNICODE_DESERIALIZE_SIGNALL_STR, + i + 1, size); + } + i++; + } + if (has_signal && (i != 1 && (i % 100) != 0)) { + g_signal_emit_by_name (source_object, + IBUS_UNICODE_DESERIALIZE_SIGNALL_STR, + i, size); + } + + return list; +} + +void +ibus_unicode_data_save (const gchar *path, + GSList *list) +{ + GVariant *variant; + const gchar *header = IBUS_UNICODE_DATA_MAGIC; + const guint16 version = IBUS_UNICODE_DATA_VERSION; + const gchar *contents; + gsize length; + gchar *dir; + GStatBuf buf = { 0, }; + GError *error = NULL; + + g_return_if_fail (path != NULL); + g_return_if_fail (list != NULL); + if (list->data == NULL) { + g_warning ("Failed to save IBus Unicode data: Need a list data."); + return; + } + + variant = g_variant_new ("(sqv)", + header, + version, + ibus_unicode_data_list_serialize (list)); + + contents = g_variant_get_data (variant); + length = g_variant_get_size (variant); + + dir = g_path_get_dirname (path); + if (g_strcmp0 (dir, ".") != 0 && g_stat (dir, &buf) != 0) { + errno = 0; + if (g_mkdir_with_parents (dir, 0777)) { + g_warning ("Failed to mkdir %s: %s", dir, g_strerror (errno)); + return; + } + + } + g_free (dir); + if (!g_file_set_contents (path, contents, length, &error)) { + g_warning ("Failed to save Unicode dict %s: %s", path, error->message); + g_error_free (error); + } + + g_variant_unref (variant); +} + +static GSList * +ibus_unicode_data_load_with_error (const gchar *path, + GObject *source_object, + GError **error) +{ + gchar *contents = NULL; + gsize length = 0; + GVariant *variant_table = NULL; + GVariant *variant = NULL; + const gchar *header = NULL; + guint16 version = 0; + GSList *retval = NULL; + + if (!g_file_test (path, G_FILE_TEST_EXISTS)) { + g_set_error (error, + IBUS_ERROR, + IBUS_ERROR_FAILED, + "Unicode dict does not exist: %s", path); + goto out_load_cache; + } + + if (!g_file_get_contents (path, &contents, &length, error)) { + goto out_load_cache; + } + + variant_table = g_variant_new_from_data (G_VARIANT_TYPE ("(sq)"), + contents, + length, + FALSE, + NULL, + NULL); + + if (variant_table == NULL) { + g_set_error (error, + IBUS_ERROR, + IBUS_ERROR_FAILED, + "cache table is broken."); + goto out_load_cache; + } + + g_variant_get (variant_table, "(&sq)", &header, &version); + + if (g_strcmp0 (header, IBUS_UNICODE_DATA_MAGIC) != 0) { + g_set_error (error, + IBUS_ERROR, + IBUS_ERROR_FAILED, + "cache is not IBusUnicodeData."); + goto out_load_cache; + } + + if (version > IBUS_UNICODE_DATA_VERSION) { + g_set_error (error, + IBUS_ERROR, + IBUS_ERROR_FAILED, + "cache version is different: %u != %u", + version, IBUS_UNICODE_DATA_VERSION); + goto out_load_cache; + } + + version = 0; + header = NULL; + g_variant_unref (variant_table); + + variant_table = g_variant_new_from_data (G_VARIANT_TYPE ("(sqv)"), + contents, + length, + FALSE, + NULL, + NULL); + + if (variant_table == NULL) { + g_set_error (error, + IBUS_ERROR, + IBUS_ERROR_FAILED, + "cache table is broken."); + goto out_load_cache; + } + + g_variant_get (variant_table, "(&sqv)", + NULL, + NULL, + &variant); + + if (variant == NULL) { + g_set_error (error, + IBUS_ERROR, + IBUS_ERROR_FAILED, + "cache dict is broken."); + goto out_load_cache; + } + + retval = ibus_unicode_data_list_deserialize (variant, source_object); + +out_load_cache: + if (variant) + g_variant_unref (variant); + if (variant_table) + g_variant_unref (variant_table); + g_free (contents); + + return retval; +} + +GSList * +ibus_unicode_data_load (const gchar *path, + GObject *source_object) +{ + GError *error = NULL; + GSList *retval = ibus_unicode_data_load_with_error (path, + source_object, + &error); + + if (retval == NULL) { + g_warning ("%s", error->message); + g_error_free (error); + } + + return retval; +} + +static void +ibus_unicode_data_load_async_thread (GTask *task, + gpointer source_object, + gpointer task_data, + GCancellable *cancellable) +{ + GSList *retval; + gchar *path = (gchar *)task_data; + GError *error = NULL; + + g_assert (path != NULL); + + retval = ibus_unicode_data_load_with_error (path, source_object, &error); + g_free (path); + if (retval == NULL) + g_task_return_error (task, error); + else + g_task_return_pointer (task, retval, NULL); + g_object_unref (task); +} + +static void +ibus_unicode_data_load_async_done (GObject *source_object, + GAsyncResult *res, + gpointer user_data) +{ + IBusUnicodeDataLoadData *data = (IBusUnicodeDataLoadData*)user_data; + GSList *list; + GError *error = NULL; + g_assert (data != NULL); + list = g_task_propagate_pointer (G_TASK (res), &error); + if (error) { + g_warning ("%s", error->message); + g_error_free (error); + data->callback (NULL, data->user_data); + } else { + data->callback (list, data->user_data); + } + g_slice_free (IBusUnicodeDataLoadData, data); +} + +void +ibus_unicode_data_load_async (const gchar *path, + GObject *source_object, + GCancellable *cancellable, + IBusUnicodeDataLoadAsyncFinish + callback, + gpointer user_data) +{ + GTask *task; + IBusUnicodeDataLoadData *data; + + g_return_if_fail (path != NULL); + + data = g_slice_new0 (IBusUnicodeDataLoadData); + data->callback = callback; + data->user_data = user_data; + task = g_task_new (source_object, + cancellable, + ibus_unicode_data_load_async_done, + data); + g_task_set_source_tag (task, ibus_unicode_data_load_async); + g_task_set_task_data (task, g_strdup (path), NULL); + g_task_run_in_thread (task, ibus_unicode_data_load_async_thread); +} + +static void +ibus_unicode_block_class_init (IBusUnicodeBlockClass *class) +{ + IBusObjectClass *object_class = IBUS_OBJECT_CLASS (class); + GObjectClass *gobject_class = G_OBJECT_CLASS (class); + IBusSerializableClass *serializable_class = IBUS_SERIALIZABLE_CLASS (class); + + object_class->destroy = (IBusObjectDestroyFunc) ibus_unicode_block_destroy; + gobject_class->set_property = + (GObjectSetPropertyFunc) ibus_unicode_block_set_property; + gobject_class->get_property = + (GObjectGetPropertyFunc) ibus_unicode_block_get_property; + serializable_class->serialize = + (IBusSerializableSerializeFunc) ibus_unicode_block_serialize; + serializable_class->deserialize = + (IBusSerializableDeserializeFunc) ibus_unicode_block_deserialize; + serializable_class->copy = + (IBusSerializableCopyFunc) ibus_unicode_block_copy; + + /* install properties */ + /** + * IBusUnicodeBlock:start: + * + * The Uniode start code point + */ + g_object_class_install_property (gobject_class, + PROP_START, + /* Cannot use g_param_spec_unichar() for the Unicode + * boundary values because the function checks + * if the value is a valid Unicode besides MAXUINT. + */ + g_param_spec_uint ("start", + "start code point", + "The Unicode start code point", + 0, + G_MAXUINT, + 0, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + + + /** + * IBusUnicodeBlock:end: + * + * The Uniode end code point + */ + g_object_class_install_property (gobject_class, + PROP_END, + /* Cannot use g_param_spec_unichar() for the Unicode + * boundary values because the function checks + * if the value is a valid Unicode besides MAXUINT. + */ + g_param_spec_uint ("end", + "end code point", + "The Unicode end code point", + 0, + G_MAXUINT, + 0, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + + + /** + * IBusUnicodeBlock:name: + * + * The Uniode block name + */ + g_object_class_install_property (gobject_class, + PROP_NAME, + g_param_spec_string ("name", + "name", + "The Unicode name", + "", + G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); +} + +static void +ibus_unicode_block_init (IBusUnicodeBlock *block) +{ + block->priv = IBUS_UNICODE_BLOCK_GET_PRIVATE (block); +} + +static void +ibus_unicode_block_destroy (IBusUnicodeBlock *block) +{ + g_clear_pointer (&block->priv->name, g_free); + + IBUS_OBJECT_CLASS (ibus_unicode_data_parent_class)-> + destroy (IBUS_OBJECT (block)); +} + +static void +ibus_unicode_block_set_property (IBusUnicodeBlock *block, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + switch (prop_id) { + case PROP_START: + g_assert (block->priv->start == 0); + block->priv->start = g_value_get_uint (value); + break; + case PROP_END: + g_assert (block->priv->end == 0); + block->priv->end = g_value_get_uint (value); + break; + case PROP_NAME: + g_assert (block->priv->name == NULL); + block->priv->name = g_value_dup_string (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (block, prop_id, pspec); + } +} + +static void +ibus_unicode_block_get_property (IBusUnicodeBlock *block, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + switch (prop_id) { + case PROP_START: + g_value_set_uint (value, ibus_unicode_block_get_start (block)); + break; + case PROP_END: + g_value_set_uint (value, ibus_unicode_block_get_end (block)); + break; + case PROP_NAME: + g_value_set_string (value, ibus_unicode_block_get_name (block)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (block, prop_id, pspec); + } +} + +static gboolean +ibus_unicode_block_serialize (IBusUnicodeBlock *block, + GVariantBuilder *builder) +{ + gboolean retval = IBUS_SERIALIZABLE_CLASS (ibus_unicode_block_parent_class)-> + serialize ((IBusSerializable *)block, builder); + g_return_val_if_fail (retval, FALSE); + +#define NOTNULL(s) ((s) != NULL ? (s) : "") + /* If you will add a new property, you can append it at the end and + * you should not change the serialized order of name, longname, + * description, ... because the order is also used in other applications + * likes ibus-qt. */ + g_variant_builder_add (builder, "u", block->priv->start); + g_variant_builder_add (builder, "u", block->priv->end); + g_variant_builder_add (builder, "s", NOTNULL (block->priv->name)); +#undef NOTNULL + return TRUE; +} + +static gint +ibus_unicode_block_deserialize (IBusUnicodeBlock *block, + GVariant *variant) +{ + gint retval = IBUS_SERIALIZABLE_CLASS (ibus_unicode_block_parent_class)-> + deserialize ((IBusSerializable *)block, variant); + g_return_val_if_fail (retval, 0); + + /* If you will add a new property, you can append it at the end and + * you should not change the serialized order of name, longname, + * description, ... because the order is also used in other applications + * likes ibus-qt. */ + g_variant_get_child (variant, retval++, "u", &block->priv->start); + g_variant_get_child (variant, retval++, "u", &block->priv->end); + ibus_g_variant_get_child_string (variant, retval++, + &block->priv->name); + return retval; +} + +static gboolean +ibus_unicode_block_copy (IBusUnicodeBlock *dest, + const IBusUnicodeBlock *src) +{ + gboolean retval = IBUS_SERIALIZABLE_CLASS (ibus_unicode_block_parent_class)-> + copy ((IBusSerializable *)dest, + (IBusSerializable *)src); + g_return_val_if_fail (retval, FALSE); + + dest->priv->start = src->priv->start; + dest->priv->end = src->priv->end; + dest->priv->name = g_strdup (src->priv->name); + return TRUE; +} + +IBusUnicodeBlock * +ibus_unicode_block_new (const gchar *first_property_name, ...) +{ + va_list var_args; + IBusUnicodeBlock *block; + + g_assert (first_property_name != NULL); + va_start (var_args, first_property_name); + block = (IBusUnicodeBlock *) g_object_new_valist (IBUS_TYPE_UNICODE_BLOCK, + first_property_name, + var_args); + va_end (var_args); + /* end is required. Other properties are set in class_init by default. */ + g_assert (block->priv->start != block->priv->end); + g_assert (block->priv->name != NULL); + return block; +} + +gunichar +ibus_unicode_block_get_start (IBusUnicodeBlock *block) +{ + g_return_val_if_fail (IBUS_IS_UNICODE_BLOCK (block), G_MAXUINT32); + + return block->priv->start; +} + +gunichar +ibus_unicode_block_get_end (IBusUnicodeBlock *block) +{ + g_return_val_if_fail (IBUS_IS_UNICODE_BLOCK (block), G_MAXUINT32); + + return block->priv->end; +} + +const gchar * +ibus_unicode_block_get_name (IBusUnicodeBlock *block) +{ + g_return_val_if_fail (IBUS_IS_UNICODE_BLOCK (block), ""); + + return block->priv->name; +} + +static void +variant_foreach_add_block (IBusUnicodeBlock *block, + GVariantBuilder *builder) +{ + g_variant_builder_add ( + builder, "v", + ibus_serializable_serialize (IBUS_SERIALIZABLE (block))); +} + +static GVariant * +ibus_unicode_block_list_serialize (GSList *list) +{ + GVariantBuilder builder; + + g_variant_builder_init (&builder, G_VARIANT_TYPE ("av")); + g_slist_foreach (list, (GFunc) variant_foreach_add_block, &builder); + return g_variant_builder_end (&builder); +} + +static GSList * +ibus_unicode_block_list_deserialize (GVariant *variant) +{ + GSList *list = NULL; + GVariantIter iter; + GVariant *unicode_variant = NULL; + + g_variant_iter_init (&iter, variant); + while (g_variant_iter_loop (&iter, "v", &unicode_variant)) { + IBusUnicodeBlock *data = + IBUS_UNICODE_BLOCK (ibus_serializable_deserialize ( + unicode_variant)); + list = g_slist_append (list, data); + g_clear_pointer (&unicode_variant, g_variant_unref); + } + + return list; +} + +void +ibus_unicode_block_save (const gchar *path, + GSList *list) +{ + GVariant *variant; + const gchar *header = IBUS_UNICODE_BLOCK_MAGIC; + const guint16 version = IBUS_UNICODE_DATA_VERSION; + const gchar *contents; + gsize length; + gchar *dir; + GStatBuf buf = { 0, }; + GError *error = NULL; + + g_return_if_fail (path != NULL); + g_return_if_fail (list != NULL); + if (list->data == NULL) { + g_warning ("Failed to save IBus Unicode block: Need a list data."); + return; + } + + variant = g_variant_new ("(sqv)", + header, + version, + ibus_unicode_block_list_serialize (list)); + + contents = g_variant_get_data (variant); + length = g_variant_get_size (variant); + + dir = g_path_get_dirname (path); + if (g_strcmp0 (dir, ".") != 0 && g_stat (dir, &buf) != 0) { + errno = 0; + if (g_mkdir_with_parents (dir, 0777)) { + g_warning ("Failed to mkdir %s: %s", dir, g_strerror (errno)); + return; + } + } + g_free (dir); + if (!g_file_set_contents (path, contents, length, &error)) { + g_warning ("Failed to save Unicode dict %s: %s", path, error->message); + g_error_free (error); + } + + g_variant_unref (variant); +} + +GSList * +ibus_unicode_block_load (const gchar *path) +{ + gchar *contents = NULL; + gsize length = 0; + GError *error = NULL; + GVariant *variant_table = NULL; + GVariant *variant = NULL; + const gchar *header = NULL; + guint16 version = 0; + GSList *retval = NULL; + + if (!g_file_test (path, G_FILE_TEST_EXISTS)) { + g_warning ("Unicode dict does not exist: %s", path); + goto out_load_cache; + } + + if (!g_file_get_contents (path, &contents, &length, &error)) { + g_warning ("Failed to get dict content %s: %s", path, error->message); + g_error_free (error); + goto out_load_cache; + } + + variant_table = g_variant_new_from_data (G_VARIANT_TYPE ("(sq)"), + contents, + length, + FALSE, + NULL, + NULL); + + if (variant_table == NULL) { + g_warning ("cache table is broken."); + goto out_load_cache; + } + + g_variant_get (variant_table, "(&sq)", &header, &version); + + if (g_strcmp0 (header, IBUS_UNICODE_BLOCK_MAGIC) != 0) { + g_warning ("cache is not IBusUnicodeBlock."); + goto out_load_cache; + } + + if (version > IBUS_UNICODE_DATA_VERSION) { + g_warning ("cache version is different: %u != %u", + version, IBUS_UNICODE_DATA_VERSION); + goto out_load_cache; + } + + version = 0; + header = NULL; + g_variant_unref (variant_table); + + variant_table = g_variant_new_from_data (G_VARIANT_TYPE ("(sqv)"), + contents, + length, + FALSE, + NULL, + NULL); + + if (variant_table == NULL) { + g_warning ("cache table is broken."); + goto out_load_cache; + } + + g_variant_get (variant_table, "(&sqv)", + NULL, + NULL, + &variant); + + if (variant == NULL) { + g_warning ("cache dict is broken."); + goto out_load_cache; + } + + retval = ibus_unicode_block_list_deserialize (variant); + +out_load_cache: + if (variant) + g_variant_unref (variant); + if (variant_table) + g_variant_unref (variant_table); + g_free (contents); + + return retval; +} + diff --git a/src/ibusunicode.h b/src/ibusunicode.h new file mode 100644 index 000000000..473bdb197 --- /dev/null +++ b/src/ibusunicode.h @@ -0,0 +1,299 @@ +/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ +/* vim:set et sts=4: */ +/* bus - The Input Bus + * Copyright (C) 2018-2019 Takao Fujiwara + * Copyright (C) 2018-2019 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) +#error "Only can be included directly" +#endif + +#ifndef __IBUS_UNICODE_H_ +#define __IBUS_UNICODE_H_ + +/** + * SECTION: ibusunicode + * @short_description: unicode utility. + * @stability: Unstable + * + * miscellaneous unicode APIs. + */ + +#include +#include "ibusserializable.h" + +/* + * Type macros. + */ +/* define GOBJECT macros */ +#define IBUS_TYPE_UNICODE_DATA (ibus_unicode_data_get_type ()) +#define IBUS_UNICODE_DATA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + IBUS_TYPE_UNICODE_DATA, IBusUnicodeData)) +#define IBUS_UNICODE_DATA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), \ + IBUS_TYPE_UNICODE_DATA, \ + IBusUnicodeDataClass)) +#define IBUS_IS_UNICODE_DATA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + IBUS_TYPE_UNICODE_DATA)) +#define IBUS_TYPE_UNICODE_BLOCK (ibus_unicode_block_get_type ()) +#define IBUS_UNICODE_BLOCK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + IBUS_TYPE_UNICODE_BLOCK, \ + IBusUnicodeBlock)) +#define IBUS_UNICODE_BLOCK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), \ + IBUS_TYPE_UNICODE_BLOCK, \ + IBusUnicodeBlockClass)) +#define IBUS_IS_UNICODE_BLOCK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + IBUS_TYPE_UNICODE_BLOCK)) + + +G_BEGIN_DECLS + +typedef struct _IBusUnicodeData IBusUnicodeData; +typedef struct _IBusUnicodeDataPrivate IBusUnicodeDataPrivate; +typedef struct _IBusUnicodeDataClass IBusUnicodeDataClass; +typedef struct _IBusUnicodeBlock IBusUnicodeBlock; +typedef struct _IBusUnicodeBlockPrivate IBusUnicodeBlockPrivate; +typedef struct _IBusUnicodeBlockClass IBusUnicodeBlockClass; + +/** + * IBusUnicodeDataLoadAsyncFinish: + * @data_list: (transfer full) (element-type IBusUnicodeData): + * + * This callback can receive the list of #IBusUnicodeData. + */ +typedef void (*IBusUnicodeDataLoadAsyncFinish) (GSList *data_list, + gpointer user_data); + +/** + * IBusUnicodeData: + * + * Unicode data likes code, name, alias, block-name. + * You can get extended values with g_object_get_properties. + */ +struct _IBusUnicodeData { + IBusSerializable parent; + /* instance members */ + + /*< public >*/ + /*< private >*/ + IBusUnicodeDataPrivate *priv; +}; + +struct _IBusUnicodeDataClass { + IBusSerializableClass parent; + /* class members */ +}; + +struct _IBusUnicodeBlock { + IBusSerializable parent; + /* instance members */ + + /*< public >*/ + /*< private >*/ + IBusUnicodeBlockPrivate *priv; +}; + +struct _IBusUnicodeBlockClass { + IBusSerializableClass parent; + /* class members */ +}; + +GType ibus_unicode_data_get_type (void); +GType ibus_unicode_block_get_type (void); + +/** + * ibus_unicode_data_new: + * @first_property_name: Name of the first property. + * @...: the NULL-terminated arguments of the properties and values. + * + * Creates a new #IBusUnicodeData. + * code property is required. e.g. + * ibus_unicode_data_new ("code", 0x3042, NULL) + * + * Returns: A newly allocated #IBusUnicodeData. + */ +IBusUnicodeData * ibus_unicode_data_new (const gchar *first_property_name, + ...); + +/** + * ibus_unicode_data_get_code: + * @unicode: An #IBusUnicodeData + * + * Gets the code point in #IBusUnicodeData. + * + * Returns: code property in #IBusUnicodeData + */ +gunichar ibus_unicode_data_get_code (IBusUnicodeData *unicode); + +/** + * ibus_unicode_data_get_name: + * @unicode: An #IBusUnicodeData + * + * Gets the name in #IBusUnicodeData. It should not be freed. + * + * Returns: name property in #IBusUnicodeData + */ +const gchar * ibus_unicode_data_get_name (IBusUnicodeData *unicode); + +/** + * ibus_unicode_data_get_alias: + * @unicode: An #IBusUnicodeData + * + * Gets the alias in #IBusUnicodeData. It should not be freed. + * + * Returns: alias property in #IBusUnicodeData + */ +const gchar * ibus_unicode_data_get_alias (IBusUnicodeData *unicode); + +/** + * ibus_unicode_data_get_block_name: + * @unicode: An #IBusUnicodeData + * + * Gets the block name in #IBusUnicodeData. It should not be freed. + * + * Returns: block-name property in #IBusUnicodeData + */ +const gchar * ibus_unicode_data_get_block_name + (IBusUnicodeData *unicode); + +/** + * ibus_unicode_data_set_block_name: + * @unicode: An #IBusUnicodeData + * @block_name: A block name + * + * Sets the block name in #IBusUnicodeData. + */ +void ibus_unicode_data_set_block_name + (IBusUnicodeData *unicode, + const gchar *block_name); + +/** + * ibus_unicode_data_save: + * @path: A path of the saved Unicode data. + * @list: (element-type IBusUnicodeData) (transfer none): A list of unicode + * data. + * + * Save the list of #IBusUnicodeData to the cache file. + */ +void ibus_unicode_data_save (const gchar *path, + GSList *list); + +/** + * ibus_unicode_data_load: + * @path: A path of the saved dictionary file. + * @object: (nullable): If the #GObject has "unicode-deserialize-progress" + * signal, this function will emit (the number of desrialized + * #IBusUnicodeData, * the total number of #IBusUnicodeData) of uint values + * with that signal by 100 times. Otherwise %NULL. + * + * Returns: (element-type IBusUnicodeData) (transfer full): + * An #IBusUnicodeData list loaded from the saved cache file. + */ +GSList * ibus_unicode_data_load (const gchar *path, + GObject *object); + +/** + * ibus_unicode_data_load_async: + * @path: A path of the saved dictionary file. + * @object: (nullable): If the #GObject has "unicode-deserialize-progress" + * signal, this function will emit (the number of desrialized + * #IBusUnicodeData, * the total number of #IBusUnicodeData) of uint values + * with that signal by 100 times. Otherwise %NULL. + * @cancellable: cancellable. + * @callback: (scope notified): IBusUnicodeDataLoadAsyncFinish. + * @user_data: User data. + * + * IBusUnicodeDataLoadAsyncFinish can receive the list of #IBusUnicodeData. + */ +void ibus_unicode_data_load_async + (const gchar *path, + GObject *object, + GCancellable *cancellable, + IBusUnicodeDataLoadAsyncFinish + callback, + gpointer user_data); + +/** + * ibus_unicode_block_new: + * @first_property_name: Name of the first property. + * @...: the NULL-terminated arguments of the properties and values. + * + * Creates a new #IBusUnicodeBlock. + * block property is required. e.g. + * ibus_unicode_block_new ("start", 0x0000, "end", "0x007f", "name", "basic", + * NULL) + * + * Returns: A newly allocated #IBusUnicodeBlock. + */ +IBusUnicodeBlock *ibus_unicode_block_new (const gchar *first_property_name, + ...); + +/** + * ibus_unicode_block_get_start: + * @block: An #IBusUnicodeData + * + * Gets the start code point in #IBusUnicodeBlock. + * + * Returns: start property in #IBusUnicodeBlock + */ +gunichar ibus_unicode_block_get_start + (IBusUnicodeBlock *block); + +/** + * ibus_unicode_block_get_end: + * @block: An #IBusUnicodeData + * + * Gets the end code point in #IBusUnicodeBlock. + * + * Returns: end property in #IBusUnicodeBlock + */ +gunichar ibus_unicode_block_get_end + (IBusUnicodeBlock *block); + +/** + * ibus_unicode_block_get_name: + * @block: An #IBusUnicodeBlock + * + * Gets the name in #IBusUnicodeBlock. It should not be freed. + * + * Returns: name property in #IBusUnicodeBlock + */ +const gchar * ibus_unicode_block_get_name (IBusUnicodeBlock *block); + +/** + * ibus_unicode_block_save: + * @path: A path of the saved Unicode block. + * @list: (element-type IBusUnicodeBlock) (transfer none): A list of unicode + * block. + * + * Save the list of #IBusUnicodeBlock to the cache file. + */ +void ibus_unicode_block_save (const gchar *path, + GSList *list); + +/** + * ibus_unicode_block_load: + * @path: A path of the saved dictionary file. + * + * Returns: (element-type IBusUnicodeBlock) (transfer full): + * An #IBusUnicodeBlock list loaded from the saved cache file. + */ +GSList * ibus_unicode_block_load (const gchar *path); + +G_END_DECLS +#endif diff --git a/src/ibusunicodegen.h b/src/ibusunicodegen.h new file mode 100644 index 000000000..be2462551 --- /dev/null +++ b/src/ibusunicodegen.h @@ -0,0 +1,1311 @@ +/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ +/* vim:set et sts=4: */ +/* ibus - The Input Bus + * Copyright (C) 2018-2021 Takao Fujiwara + * Copyright (C) 2018-2021 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + + +/* This file is generated by unicode-parser.c. */ +include + +#ifndef __IBUS_UNICODE_GEN_H_ +#define __IBUS_UNICODE_GEN_H_ +const static char *unicode_blocks[] = { + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Basic Latin"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Latin-1 Supplement"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Latin Extended-A"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Latin Extended-B"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("IPA Extensions"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Spacing Modifier Letters"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Combining Diacritical Marks"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Greek and Coptic"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Cyrillic"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Cyrillic Supplement"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Armenian"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Hebrew"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Arabic"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Syriac"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Arabic Supplement"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Thaana"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("NKo"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Samaritan"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Mandaic"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Syriac Supplement"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Arabic Extended-B"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Arabic Extended-A"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Devanagari"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Bengali"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Gurmukhi"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Gujarati"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Oriya"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Tamil"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Telugu"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Kannada"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Malayalam"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Sinhala"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Thai"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Lao"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Tibetan"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Myanmar"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Georgian"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Hangul Jamo"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Ethiopic"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Ethiopic Supplement"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Cherokee"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Unified Canadian Aboriginal Syllabics"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Ogham"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Runic"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Tagalog"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Hanunoo"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Buhid"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Tagbanwa"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Khmer"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Mongolian"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Unified Canadian Aboriginal Syllabics Extended"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Limbu"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Tai Le"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("New Tai Lue"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Khmer Symbols"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Buginese"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Tai Tham"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Combining Diacritical Marks Extended"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Balinese"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Sundanese"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Batak"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Lepcha"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Ol Chiki"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Cyrillic Extended-C"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Georgian Extended"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Sundanese Supplement"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Vedic Extensions"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Phonetic Extensions"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Phonetic Extensions Supplement"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Combining Diacritical Marks Supplement"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Latin Extended Additional"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Greek Extended"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("General Punctuation"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Superscripts and Subscripts"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Currency Symbols"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Combining Diacritical Marks for Symbols"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Letterlike Symbols"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Number Forms"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Arrows"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Mathematical Operators"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Miscellaneous Technical"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Control Pictures"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Optical Character Recognition"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Enclosed Alphanumerics"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Box Drawing"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Block Elements"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Geometric Shapes"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Miscellaneous Symbols"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Dingbats"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Miscellaneous Mathematical Symbols-A"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Supplemental Arrows-A"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Braille Patterns"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Supplemental Arrows-B"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Miscellaneous Mathematical Symbols-B"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Supplemental Mathematical Operators"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Miscellaneous Symbols and Arrows"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Glagolitic"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Latin Extended-C"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Coptic"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Georgian Supplement"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Tifinagh"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Ethiopic Extended"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Cyrillic Extended-A"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Supplemental Punctuation"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("CJK Radicals Supplement"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Kangxi Radicals"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Ideographic Description Characters"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("CJK Symbols and Punctuation"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Hiragana"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Katakana"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Bopomofo"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Hangul Compatibility Jamo"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Kanbun"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Bopomofo Extended"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("CJK Strokes"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Katakana Phonetic Extensions"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Enclosed CJK Letters and Months"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("CJK Compatibility"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("CJK Unified Ideographs Extension A"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Yijing Hexagram Symbols"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("CJK Unified Ideographs"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Yi Syllables"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Yi Radicals"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Lisu"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Vai"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Cyrillic Extended-B"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Bamum"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Modifier Tone Letters"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Latin Extended-D"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Syloti Nagri"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Common Indic Number Forms"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Phags-pa"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Saurashtra"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Devanagari Extended"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Kayah Li"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Rejang"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Hangul Jamo Extended-A"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Javanese"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Myanmar Extended-B"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Cham"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Myanmar Extended-A"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Tai Viet"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Meetei Mayek Extensions"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Ethiopic Extended-A"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Latin Extended-E"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Cherokee Supplement"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Meetei Mayek"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Hangul Syllables"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Hangul Jamo Extended-B"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("High Surrogates"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("High Private Use Surrogates"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Low Surrogates"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Private Use Area"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("CJK Compatibility Ideographs"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Alphabetic Presentation Forms"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Arabic Presentation Forms-A"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Variation Selectors"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Vertical Forms"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Combining Half Marks"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("CJK Compatibility Forms"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Small Form Variants"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Arabic Presentation Forms-B"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Halfwidth and Fullwidth Forms"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Specials"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Linear B Syllabary"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Linear B Ideograms"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Aegean Numbers"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Ancient Greek Numbers"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Ancient Symbols"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Phaistos Disc"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Lycian"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Carian"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Coptic Epact Numbers"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Old Italic"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Gothic"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Old Permic"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Ugaritic"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Old Persian"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Deseret"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Shavian"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Osmanya"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Osage"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Elbasan"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Caucasian Albanian"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Vithkuqi"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Linear A"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Latin Extended-F"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Cypriot Syllabary"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Imperial Aramaic"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Palmyrene"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Nabataean"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Hatran"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Phoenician"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Lydian"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Meroitic Hieroglyphs"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Meroitic Cursive"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Kharoshthi"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Old South Arabian"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Old North Arabian"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Manichaean"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Avestan"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Inscriptional Parthian"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Inscriptional Pahlavi"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Psalter Pahlavi"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Old Turkic"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Old Hungarian"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Hanifi Rohingya"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Rumi Numeral Symbols"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Yezidi"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Old Sogdian"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Sogdian"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Old Uyghur"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Chorasmian"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Elymaic"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Brahmi"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Kaithi"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Sora Sompeng"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Chakma"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Mahajani"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Sharada"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Sinhala Archaic Numbers"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Khojki"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Multani"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Khudawadi"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Grantha"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Newa"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Tirhuta"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Siddham"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Modi"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Mongolian Supplement"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Takri"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Ahom"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Dogra"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Warang Citi"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Dives Akuru"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Nandinagari"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Zanabazar Square"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Soyombo"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Unified Canadian Aboriginal Syllabics Extended-A"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Pau Cin Hau"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Bhaiksuki"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Marchen"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Masaram Gondi"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Gunjala Gondi"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Makasar"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Lisu Supplement"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Tamil Supplement"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Cuneiform"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Cuneiform Numbers and Punctuation"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Early Dynastic Cuneiform"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Cypro-Minoan"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Egyptian Hieroglyphs"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Egyptian Hieroglyph Format Controls"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Anatolian Hieroglyphs"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Bamum Supplement"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Mro"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Tangsa"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Bassa Vah"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Pahawh Hmong"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Medefaidrin"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Miao"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Ideographic Symbols and Punctuation"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Tangut"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Tangut Components"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Khitan Small Script"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Tangut Supplement"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Kana Extended-B"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Kana Supplement"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Kana Extended-A"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Small Kana Extension"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Nushu"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Duployan"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Shorthand Format Controls"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Znamenny Musical Notation"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Byzantine Musical Symbols"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Musical Symbols"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Ancient Greek Musical Notation"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Mayan Numerals"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Tai Xuan Jing Symbols"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Counting Rod Numerals"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Mathematical Alphanumeric Symbols"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Sutton SignWriting"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Latin Extended-G"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Glagolitic Supplement"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Nyiakeng Puachue Hmong"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Toto"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Wancho"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Ethiopic Extended-B"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Mende Kikakui"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Adlam"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Indic Siyaq Numbers"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Ottoman Siyaq Numbers"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Arabic Mathematical Alphabetic Symbols"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Mahjong Tiles"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Domino Tiles"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Playing Cards"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Enclosed Alphanumeric Supplement"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Enclosed Ideographic Supplement"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Miscellaneous Symbols and Pictographs"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Emoticons"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Ornamental Dingbats"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Transport and Map Symbols"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Alchemical Symbols"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Geometric Shapes Extended"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Supplemental Arrows-C"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Supplemental Symbols and Pictographs"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Chess Symbols"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Symbols and Pictographs Extended-A"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Symbols for Legacy Computing"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("CJK Unified Ideographs Extension B"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("CJK Unified Ideographs Extension C"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("CJK Unified Ideographs Extension D"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("CJK Unified Ideographs Extension E"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("CJK Unified Ideographs Extension F"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("CJK Compatibility Ideographs Supplement"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("CJK Unified Ideographs Extension G"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Tags"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Variation Selectors Supplement"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Supplementary Private Use Area-A"), + /* TRANSLATORS: You might refer the translations from gucharmap with + the following command: + msgmerge -C gucharmap.po ibus.po ibus.pot */ + N_("Supplementary Private Use Area-B"), +}; +#endif diff --git a/src/ibusutil.c b/src/ibusutil.c index d0bbd52aa..701984c70 100644 --- a/src/ibusutil.c +++ b/src/ibusutil.c @@ -1,24 +1,24 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* bus - The Input Bus - * Copyright (C) 2008-2011 Peng Huang - * Copyright (C) 2010-2011 Takao Fujiwara - * Copyright (C) 2008-2011 Red Hat, Inc. + * Copyright (C) 2008-2015 Peng Huang + * Copyright (C) 2010-2019 Takao Fujiwara + * Copyright (C) 2008-2016 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #ifdef HAVE_CONFIG_H #include @@ -45,7 +45,7 @@ _iso_codes_parse_xml_node (XMLNode *node) GList *p; g_assert (node); - if (G_UNLIKELY (g_strcmp0 (node->name, "iso_639_entries") != 0)) { + if (G_UNLIKELY (g_strcmp0 (node->name, "iso_639_3_entries") != 0)) { return FALSE; } @@ -53,13 +53,14 @@ _iso_codes_parse_xml_node (XMLNode *node) XMLNode *sub_node = (XMLNode *)p->data; gchar **attributes = NULL; int i, j; + gboolean has_common_name = FALSE; struct { const gchar *key; gchar *value; } entries[] = { - { "iso_639_2B_code", NULL }, - { "iso_639_2T_code", NULL }, - { "iso_639_1_code", NULL }, + { "id", NULL }, + { "part1_code", NULL }, + { "part2_code", NULL }, }; if (sub_node->attributes == NULL) { @@ -68,14 +69,24 @@ _iso_codes_parse_xml_node (XMLNode *node) attributes = sub_node->attributes; for (i = 0; attributes[i]; i += 2) { - if (g_strcmp0 (attributes[i], "name") == 0) { + if (!g_strcmp0 (attributes[i], "common_name")) { for (j = 0; j < G_N_ELEMENTS (entries); j++) { if (entries[j].value == NULL) continue; - g_hash_table_insert (__languages_dict, - (gpointer) g_strdup (entries[j].value), - (gpointer) g_strdup (attributes[i + 1])); - entries[j].value = NULL; + g_hash_table_replace (__languages_dict, + g_strdup (entries[j].value), + g_strdup (attributes[i + 1])); + } + has_common_name = TRUE; + } else if (!g_strcmp0 (attributes[i], "name")) { + if (has_common_name) + continue; + for (j = 0; j < G_N_ELEMENTS (entries); j++) { + if (entries[j].value == NULL) + continue; + g_hash_table_replace (__languages_dict, + g_strdup (entries[j].value), + g_strdup (attributes[i + 1])); } } else { for (j = 0; j < G_N_ELEMENTS (entries); j++) { @@ -98,10 +109,15 @@ _load_lang() XMLNode *node; struct stat buf; +#ifdef ENABLE_NLS + bindtextdomain ("iso_639_3", LOCALEDIR); + bind_textdomain_codeset ("iso_639_3", "UTF-8"); +#endif + __languages_dict = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); filename = g_build_filename (ISOCODES_PREFIX, - "share/xml/iso-codes/iso_639.xml", + "share/xml/iso-codes/iso_639_3.xml", NULL); if (g_stat (filename, &buf) != 0) { g_warning ("Can not get stat of file %s", filename); @@ -120,36 +136,94 @@ _load_lang() ibus_xml_free (node); } -const gchar * -ibus_get_language_name(const gchar *_locale) { +const static gchar * +ibus_get_untranslated_raw_language_name (const gchar *_locale) +{ const gchar *retval; gchar *p = NULL; gchar *lang = NULL; - if (__languages_dict == NULL ) { + if (__languages_dict == NULL ) _load_lang(); - } - if ((p = strchr (_locale, '_')) != NULL) { + if ((p = strchr (_locale, '_')) != NULL) p = g_strndup (_locale, p - _locale); - } else { + else p = g_strdup (_locale); - } lang = g_ascii_strdown (p, -1); g_free (p); retval = (const gchar *) g_hash_table_lookup (__languages_dict, lang); g_free (lang); - if (retval != NULL) { -#ifdef ENABLE_NLS - return dgettext("iso_639", retval); -#else + if (retval != NULL) return retval; -#endif - } - else { + else + return "Other"; +} + +static char * +get_first_item_in_semicolon_list (const char *list) +{ + char **items; + char *item; + + items = g_strsplit (list, "; ", 2); + + item = g_strdup (items[0]); + g_strfreev (items); + + return item; +} + +static char * +capitalize_utf8_string (const char *str) +{ + char first[8] = { 0 }; + + if (!str) + return NULL; + + g_unichar_to_utf8 (g_unichar_totitle (g_utf8_get_char (str)), first); + + return g_strconcat (first, g_utf8_offset_to_pointer (str, 1), NULL); +} + +gchar * +ibus_get_untranslated_language_name (const gchar *_locale) +{ + const gchar *raw = ibus_get_untranslated_raw_language_name (_locale); + gchar *tmp = get_first_item_in_semicolon_list (raw); + gchar *retval = capitalize_utf8_string (tmp); + g_free (tmp); + return retval; +} + +gchar * +ibus_get_language_name (const gchar *_locale) +{ + const gchar *raw = ibus_get_untranslated_raw_language_name (_locale); + const gchar *translation = NULL; + gchar *tmp; + gchar *retval; + #ifdef ENABLE_NLS - return dgettext("iso_639", N_("Other")); + if (g_strcmp0 (raw, "Other") == 0) + return g_strdup (dgettext (GETTEXT_PACKAGE, N_("Other"))); + else + translation = dgettext ("iso_639_3", raw); #else - return N_("Other"); + translation = raw; #endif - } + + tmp = get_first_item_in_semicolon_list (translation); + retval = capitalize_utf8_string (tmp); + g_free (tmp); + return retval; +} + +void +ibus_g_variant_get_child_string (GVariant *variant, gsize index, char **str) +{ + g_return_if_fail (str != NULL); + + g_free (*str); + g_variant_get_child (variant, index, "s", str); } diff --git a/src/ibusutil.h b/src/ibusutil.h index 7cf199582..795365f69 100644 --- a/src/ibusutil.h +++ b/src/ibusutil.h @@ -1,30 +1,33 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* bus - The Input Bus - * Copyright (C) 2008-2011 Peng Huang - * Copyright (C) 2010-2011 Takao Fujiwara - * Copyright (C) 2008-2011 Red Hat, Inc. + * Copyright (C) 2008-2015 Peng Huang + * Copyright (C) 2010-2018 Takao Fujiwara + * Copyright (C) 2008-2018 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif +#ifndef __IBUS_UTIL_H_ +#define __IBUS_UTIL_H_ + /** * SECTION: ibusutil * @short_description: Utilities with C-Language. @@ -33,14 +36,21 @@ * Utilized functions are available for miscellaneous purposes. */ -#ifndef __IBUS_UTIL_H_ -#define __IBUS_UTIL_H_ +/** + * ibus_get_untranslated_language_name: + * @_locale: A const locale name. + * + * Returns: untranslated language name + */ +gchar * ibus_get_untranslated_language_name + (const gchar *_locale); /** * ibus_get_language_name: * @_locale: A const locale name. - * @returns: language name + * + * Returns: translated language name */ -const gchar * ibus_get_language_name (const gchar *_locale); +gchar * ibus_get_language_name (const gchar *_locale); #endif diff --git a/src/ibusversion.h.in b/src/ibusversion.h.in index ac94143a2..243982584 100644 --- a/src/ibusversion.h.in +++ b/src/ibusversion.h.in @@ -6,18 +6,22 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ + +#ifndef __IBUS_VERSION_H_ +#define __IBUS_VERSION_H_ + /** * SECTION: ibusversion * @short_description: Current version of IBus. @@ -26,8 +30,6 @@ * IBusVersion shows the current IBus version. */ -#ifndef __IBUS_VERSION_H_ -#define __IBUS_VERSION_H_ /* compile time version */ /** diff --git a/src/ibusxevent.c b/src/ibusxevent.c new file mode 100644 index 000000000..a2ea7b57d --- /dev/null +++ b/src/ibusxevent.c @@ -0,0 +1,1343 @@ +/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ +/* vim:set et sts=4: */ +/* ibus - The Input Bus + * Copyright (C) 2018-2019 Takao Fujiwara + * Copyright (C) 2018-2019 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ +#include "ibusinternal.h" +#include "ibusxevent.h" + +#define IBUS_EXTENSION_EVENT_VERSION 1 +#define IBUS_EXTENSION_EVENT_GET_PRIVATE(o) \ + ((IBusExtensionEventPrivate *)ibus_extension_event_get_instance_private (o)) + +#define IBUS_X_EVENT_VERSION 1 +#define IBUS_X_EVENT_GET_PRIVATE(o) \ + ((IBusXEventPrivate *)ibus_x_event_get_instance_private (o)) + +enum { + PROP_0, + PROP_VERSION, + PROP_NAME, + PROP_IS_ENABLED, + PROP_IS_EXTENSION, + PROP_PARAMS, + PROP_EVENT_TYPE, + PROP_WINDOW, + PROP_SEND_EVENT, + PROP_SERIAL, + PROP_TIME, + PROP_STATE, + PROP_KEYVAL, + PROP_LENGTH, + PROP_STRING, + PROP_HARDWARE_KEYCODE, + PROP_GROUP, + PROP_IS_MODIFIER, + PROP_ROOT, + PROP_SUBWINDOW, + PROP_X, + PROP_Y, + PROP_X_ROOT, + PROP_Y_ROOT, + PROP_SAME_SCREEN, + PROP_PURPOSE +}; + + +struct _IBusExtensionEventPrivate { + guint version; + gchar *name; + gboolean is_enabled; + gboolean is_extension; + gchar *params; +}; + +struct _IBusXEventPrivate { + guint version; + guint32 time; + guint state; + guint keyval; + gint length; + gchar *string; + guint16 hardware_keycode; + guint8 group; + gboolean is_modifier; + guint root; + guint subwindow; + gint x; + gint y; + gint x_root; + gint y_root; + gboolean same_screen; + gchar *purpose; +}; + +/* functions prototype */ +static void ibus_extension_event_destroy (IBusExtensionEvent *event); +static void ibus_extension_event_set_property (IBusExtensionEvent *event, + guint prop_id, + const GValue *value, + GParamSpec *pspec); +static void ibus_extension_event_get_property (IBusExtensionEvent *event, + guint prop_id, + GValue *value, + GParamSpec *pspec); +static gboolean ibus_extension_event_serialize (IBusExtensionEvent *event, + GVariantBuilder + *builder); +static gint ibus_extension_event_deserialize (IBusExtensionEvent *event, + GVariant + *variant); +static gboolean ibus_extension_event_copy (IBusExtensionEvent + *dest, + const IBusExtensionEvent + *src); +static void ibus_x_event_destroy (IBusXEvent *event); +static void ibus_x_event_set_property (IBusXEvent *event, + guint prop_id, + const GValue *value, + GParamSpec *pspec); +static void ibus_x_event_get_property (IBusXEvent *event, + guint prop_id, + GValue *value, + GParamSpec *pspec); +static gboolean ibus_x_event_serialize (IBusXEvent *event, + GVariantBuilder + *builder); +static gint ibus_x_event_deserialize (IBusXEvent *event, + GVariant + *variant); +static gboolean ibus_x_event_copy (IBusXEvent *dest, + const IBusXEvent *src); + +G_DEFINE_TYPE_WITH_PRIVATE (IBusExtensionEvent, + ibus_extension_event, + IBUS_TYPE_SERIALIZABLE) +G_DEFINE_TYPE_WITH_PRIVATE (IBusXEvent, + ibus_x_event, + IBUS_TYPE_SERIALIZABLE) + +static void +ibus_extension_event_class_init (IBusExtensionEventClass *class) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (class); + IBusObjectClass *object_class = IBUS_OBJECT_CLASS (class); + IBusSerializableClass *serializable_class = IBUS_SERIALIZABLE_CLASS (class); + + gobject_class->set_property = + (GObjectSetPropertyFunc) ibus_extension_event_set_property; + gobject_class->get_property = + (GObjectGetPropertyFunc) ibus_extension_event_get_property; + + object_class->destroy = + (IBusObjectDestroyFunc) ibus_extension_event_destroy; + + serializable_class->serialize = + (IBusSerializableSerializeFunc) ibus_extension_event_serialize; + serializable_class->deserialize = + (IBusSerializableDeserializeFunc) ibus_extension_event_deserialize; + serializable_class->copy = + (IBusSerializableCopyFunc) ibus_extension_event_copy; + + /* install properties */ + /** + * IBusExtensionEvent:version: + * + * Version of the #IBusExtensionEvent. + */ + g_object_class_install_property (gobject_class, + PROP_VERSION, + g_param_spec_uint ("version", + "version", + "version", + 0, + G_MAXUINT32, + IBUS_EXTENSION_EVENT_VERSION, + G_PARAM_READABLE)); + + /** + * IBusExtensionEvent:name: + * + * Name of the extension in the #IBusExtensionEvent. + */ + g_object_class_install_property (gobject_class, + PROP_NAME, + g_param_spec_string ("name", + "name", + "name of the extension", + "", + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); + + /** + * IBusExtensionEvent:is-enabled: + * + * %TRUE if the extension is enabled in the #IBusExtensionEvent. + */ + g_object_class_install_property (gobject_class, + PROP_IS_ENABLED, + g_param_spec_boolean ("is-enabled", + "is enabled", + "if the extension is enabled", + FALSE, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); + + /** + * IBusExtensionEvent:is-extension: + * + * %TRUE if the #IBusExtensionEvent is called by an extension. + * %FALSE if the #IBusExtensionEvent is called by an active engine or + * panel. + * If this value is %TRUE, the event is send to ibus-daemon, an active + * engine. If it's %FALSE, the event is sned to ibus-daemon, panels. + */ + g_object_class_install_property (gobject_class, + PROP_IS_EXTENSION, + g_param_spec_boolean ("is-extension", + "is extension", + "if the event is called by an extension", + FALSE, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); + + /** + * IBusExtensionEvent:params: + * + * Parameters to enable the extension in the #IBusExtensionEvent. + */ + g_object_class_install_property (gobject_class, + PROP_PARAMS, + g_param_spec_string ("params", + "params", + "Parameters to enable the extension", + "", + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); +} + +static void +ibus_extension_event_init (IBusExtensionEvent *event) +{ + event->priv = IBUS_EXTENSION_EVENT_GET_PRIVATE (event); + event->priv->version = IBUS_EXTENSION_EVENT_VERSION; +} + +static void +ibus_extension_event_destroy (IBusExtensionEvent *event) +{ + g_clear_pointer (&event->priv->name, g_free); + + IBUS_OBJECT_CLASS(ibus_extension_event_parent_class)-> + destroy (IBUS_OBJECT (event)); +} + +static void +ibus_extension_event_set_property (IBusExtensionEvent *event, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + IBusExtensionEventPrivate *priv = event->priv; + + switch (prop_id) { + case PROP_NAME: + g_free (priv->name); + priv->name = g_value_dup_string (value); + break; + case PROP_IS_ENABLED: + priv->is_enabled = g_value_get_boolean (value); + break; + case PROP_IS_EXTENSION: + priv->is_extension = g_value_get_boolean (value); + break; + case PROP_PARAMS: + priv->params = g_value_dup_string (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (event, prop_id, pspec); + } +} + +static void +ibus_extension_event_get_property (IBusExtensionEvent *event, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + IBusExtensionEventPrivate *priv = event->priv; + switch (prop_id) { + case PROP_VERSION: + g_value_set_uint (value, priv->version); + break; + case PROP_NAME: + g_value_set_string (value, priv->name); + break; + case PROP_IS_ENABLED: + g_value_set_boolean (value, priv->is_enabled); + break; + case PROP_IS_EXTENSION: + g_value_set_boolean (value, priv->is_extension); + break; + case PROP_PARAMS: + g_value_set_string (value, priv->params); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (event, prop_id, pspec); + } +} + +static gboolean +ibus_extension_event_serialize (IBusExtensionEvent *event, + GVariantBuilder *builder) +{ + gboolean retval; + IBusExtensionEventPrivate *priv; + + retval = IBUS_SERIALIZABLE_CLASS (ibus_extension_event_parent_class)-> + serialize ((IBusSerializable *)event, builder); + g_return_val_if_fail (retval, FALSE); + /* End dict iter */ + + priv = event->priv; +#define NOTNULL(s) ((s) != NULL ? (s) : "") + /* If you will add a new property, you can append it at the end and + * you should not change the serialized order of name, longname, + * description, ... because the order is also used in other applications + * likes ibus-qt. */ + g_variant_builder_add (builder, "u", priv->version); + g_variant_builder_add (builder, "s", NOTNULL (priv->name)); + g_variant_builder_add (builder, "b", priv->is_enabled); + g_variant_builder_add (builder, "b", priv->is_extension); + g_variant_builder_add (builder, "s", NOTNULL (priv->params)); +#undef NOTNULL + + return TRUE; +} + +static gint +ibus_extension_event_deserialize (IBusExtensionEvent *event, + GVariant *variant) +{ + gint retval; + IBusExtensionEventPrivate *priv; + + retval = IBUS_SERIALIZABLE_CLASS (ibus_extension_event_parent_class)-> + deserialize ((IBusSerializable *)event, variant); + g_return_val_if_fail (retval, 0); + + priv = event->priv; + /* If you will add a new property, you can append it at the end and + * you should not change the serialized order of name, longname, + * description, ... because the order is also used in other applications + * likes ibus-qt. */ + g_variant_get_child (variant, retval++, "u", &priv->version); + ibus_g_variant_get_child_string (variant, retval++, + &priv->name); + g_variant_get_child (variant, retval++, "b", &priv->is_enabled); + g_variant_get_child (variant, retval++, "b", &priv->is_extension); + ibus_g_variant_get_child_string (variant, retval++, + &priv->params); + + return retval; +} + +static gboolean +ibus_extension_event_copy (IBusExtensionEvent *dest, + const IBusExtensionEvent *src) +{ + gboolean retval; + IBusExtensionEventPrivate *dest_priv = dest->priv; + IBusExtensionEventPrivate *src_priv = src->priv; + + retval = IBUS_SERIALIZABLE_CLASS (ibus_extension_event_parent_class)-> + copy ((IBusSerializable *)dest, (IBusSerializable *)src); + g_return_val_if_fail (retval, FALSE); + + dest_priv->version = src_priv->version; + dest_priv->name = g_strdup (src_priv->name); + dest_priv->is_enabled = src_priv->is_enabled; + dest_priv->is_extension = src_priv->is_extension; + dest_priv->params = g_strdup (src_priv->params); + return TRUE; +} + +IBusExtensionEvent * +ibus_extension_event_new (const gchar *first_property_name, + ...) +{ + va_list var_args; + IBusExtensionEvent *event; + + va_start (var_args, first_property_name); + event = (IBusExtensionEvent *) g_object_new_valist ( + IBUS_TYPE_EXTENSION_EVENT, + first_property_name, + var_args); + va_end (var_args); + g_assert (event->priv->version != 0); + return event; +} + +guint +ibus_extension_event_get_version (IBusExtensionEvent *event) +{ + g_return_val_if_fail (IBUS_IS_EXTENSION_EVENT (event), 0); + return event->priv->version; +} + +const gchar * +ibus_extension_event_get_name (IBusExtensionEvent *event) +{ + g_return_val_if_fail (IBUS_IS_EXTENSION_EVENT (event), ""); + return event->priv->name; +} + +gboolean +ibus_extension_event_is_enabled (IBusExtensionEvent *event) +{ + g_return_val_if_fail (IBUS_IS_EXTENSION_EVENT (event), FALSE); + return event->priv->is_enabled; +} + +gboolean +ibus_extension_event_is_extension (IBusExtensionEvent *event) +{ + g_return_val_if_fail (IBUS_IS_EXTENSION_EVENT (event), FALSE); + return event->priv->is_extension; +} + +const gchar * +ibus_extension_event_get_params (IBusExtensionEvent *event) +{ + g_return_val_if_fail (IBUS_IS_EXTENSION_EVENT (event), ""); + return event->priv->params; +} + + +static void +ibus_x_event_class_init (IBusXEventClass *class) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (class); + IBusObjectClass *object_class = IBUS_OBJECT_CLASS (class); + IBusSerializableClass *serializable_class = IBUS_SERIALIZABLE_CLASS (class); + + gobject_class->set_property = + (GObjectSetPropertyFunc) ibus_x_event_set_property; + gobject_class->get_property = + (GObjectGetPropertyFunc) ibus_x_event_get_property; + + object_class->destroy = (IBusObjectDestroyFunc) ibus_x_event_destroy; + + serializable_class->serialize = + (IBusSerializableSerializeFunc) ibus_x_event_serialize; + serializable_class->deserialize = + (IBusSerializableDeserializeFunc) ibus_x_event_deserialize; + serializable_class->copy = + (IBusSerializableCopyFunc) ibus_x_event_copy; + + /* install properties */ + /** + * IBusXEvent:version: + * + * Version of this IBusXEvent. + */ + g_object_class_install_property (gobject_class, + PROP_VERSION, + g_param_spec_uint ("version", + "version", + "version", + 0, + G_MAXUINT32, + IBUS_X_EVENT_VERSION, + G_PARAM_READABLE)); + + /** + * IBusXEvent:event-type: + * + * IBusXEventType of this IBusXEvent. + */ + g_object_class_install_property (gobject_class, + PROP_EVENT_TYPE, + g_param_spec_int ("event-type", + "event type", + "event type", + -1, + G_MAXINT32, + -1, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); + + /** + * IBusXEvent:window: + * + * window of this IBusXEvent. + */ + g_object_class_install_property (gobject_class, + PROP_WINDOW, + g_param_spec_uint ("window", + "window", + "window", + 0, + G_MAXUINT32, + 0, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); + + /** + * IBusXEvent:send-event: + * + * send_event of this IBusXEvent. + */ + g_object_class_install_property (gobject_class, + PROP_SEND_EVENT, + g_param_spec_int ("send-event", + "send event", + "send event", + 0, + G_MAXINT8, + 0, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); + + /** + * IBusXEvent:serial: + * + * serial of this IBusXEvent. + */ + g_object_class_install_property (gobject_class, + PROP_SERIAL, + g_param_spec_ulong ("serial", + "serial", + "serial", + 0, + G_MAXUINT64, + 0, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); + + /** + * IBusXEvent:time: + * + * time of this IBusXEvent. + */ + g_object_class_install_property (gobject_class, + PROP_TIME, + g_param_spec_uint ("time", + "time", + "time", + 0, + G_MAXUINT32, + 0, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); + + /** + * IBusXEvent:state: + * + * state of this IBusXEvent. + */ + g_object_class_install_property (gobject_class, + PROP_STATE, + g_param_spec_uint ("state", + "state", + "state", + 0, + G_MAXUINT32, + 0, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); + + /** + * IBusXEvent:keyval: + * + * keyval of this IBusXEvent. + */ + g_object_class_install_property (gobject_class, + PROP_KEYVAL, + g_param_spec_uint ("keyval", + "keyval", + "keyval", + 0, + G_MAXUINT32, + 0, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); + + /** + * IBusXEvent:length: + * + * keyval of this IBusXEvent. + */ + g_object_class_install_property (gobject_class, + PROP_LENGTH, + g_param_spec_int ("length", + "length", + "length", + -1, + G_MAXINT32, + 0, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); + + /** + * IBusXEvent:string: + * + * string of this IBusXEvent. + */ + g_object_class_install_property (gobject_class, + PROP_STRING, + g_param_spec_string ("string", + "string", + "string", + "", + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); + + /** + * IBusXEvent:hardware-keycode: + * + * hardware keycode of this IBusXEvent. + */ + g_object_class_install_property (gobject_class, + PROP_HARDWARE_KEYCODE, + g_param_spec_uint ("hardware-keycode", + "hardware keycode", + "hardware keycode", + 0, + G_MAXUINT16, + 0, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); + + /** + * IBusXEvent:group: + * + * group of this IBusXEvent. + */ + g_object_class_install_property (gobject_class, + PROP_GROUP, + g_param_spec_uint ("group", + "group", + "group", + 0, + G_MAXUINT8, + 0, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); + + /** + * IBusXEvent:is-modifier: + * + * is_modifier of this IBusXEvent. + */ + g_object_class_install_property (gobject_class, + PROP_IS_MODIFIER, + g_param_spec_boolean ("is-modifier", + "is modifier", + "is modifier", + FALSE, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); + + /** + * IBusXEvent:root: + * + * root window of this IBusXEvent. + */ + g_object_class_install_property (gobject_class, + PROP_ROOT, + g_param_spec_uint ("root", + "root", + "root", + 0, + G_MAXUINT32, + 0, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); + + /** + * IBusXEvent:subwindow: + * + * subwindow of this IBusXEvent. + */ + g_object_class_install_property (gobject_class, + PROP_SUBWINDOW, + g_param_spec_uint ("subwindow", + "subwindow", + "subwindow", + 0, + G_MAXUINT32, + 0, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); + + /** + * IBusXEvent:x: + * + * x of this IBusXEvent. + */ + g_object_class_install_property (gobject_class, + PROP_X, + g_param_spec_int ("x", + "x", + "x", + G_MININT32, + G_MAXINT32, + 0, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); + + /** + * IBusXEvent:y: + * + * x of this IBusXEvent. + */ + g_object_class_install_property (gobject_class, + PROP_Y, + g_param_spec_int ("y", + "y", + "y", + G_MININT32, + G_MAXINT32, + 0, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); + + /** + * IBusXEvent:x-root: + * + * root-x of this IBusXEvent. + */ + g_object_class_install_property (gobject_class, + PROP_X_ROOT, + g_param_spec_int ("x-root", + "x root", + "x root", + G_MININT32, + G_MAXINT32, + 0, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); + + /** + * IBusXEvent:y-root: + * + * root-y of this IBusXEvent. + */ + g_object_class_install_property (gobject_class, + PROP_Y_ROOT, + g_param_spec_int ("y-root", + "y root", + "y root", + G_MININT32, + G_MAXINT32, + 0, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); + + /** + * IBusXEvent:same-screen: + * + * same_screen of this IBusXEvent. + */ + g_object_class_install_property (gobject_class, + PROP_SAME_SCREEN, + g_param_spec_boolean ("same-screen", + "same screen", + "same screen", + TRUE, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); + + /** + * IBusXEvent:purpose: + * + * purpose of this IBusXEvent. + */ + g_object_class_install_property (gobject_class, + PROP_PURPOSE, + g_param_spec_string ("purpose", + "purpose", + "purpose", + "", + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY)); +} + +static void +ibus_x_event_init (IBusXEvent *event) +{ + event->priv = IBUS_X_EVENT_GET_PRIVATE (event); + event->priv->version = IBUS_X_EVENT_VERSION; +} + +static void +ibus_x_event_destroy (IBusXEvent *event) +{ + g_clear_pointer (&event->priv->string, g_free); + g_clear_pointer (&event->priv->purpose, g_free); + + IBUS_OBJECT_CLASS(ibus_x_event_parent_class)->destroy (IBUS_OBJECT (event)); +} + +static void +ibus_x_event_set_property (IBusXEvent *event, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + IBusXEventPrivate *priv = event->priv; + + switch (prop_id) { + case PROP_EVENT_TYPE: + event->event_type = g_value_get_int (value); + break; + case PROP_WINDOW: + event->window = g_value_get_uint (value); + break; + case PROP_SEND_EVENT: + event->send_event = g_value_get_int (value); + break; + case PROP_SERIAL: + event->serial = g_value_get_ulong (value); + break; + case PROP_TIME: + priv->time = g_value_get_uint (value); + break; + case PROP_STATE: + priv->state = g_value_get_uint (value); + break; + case PROP_KEYVAL: + priv->keyval = g_value_get_uint (value); + break; + case PROP_LENGTH: + priv->length = g_value_get_int (value); + break; + case PROP_STRING: + g_free (priv->string); + priv->string = g_value_dup_string (value); + break; + case PROP_HARDWARE_KEYCODE: + priv->hardware_keycode = g_value_get_uint (value); + break; + case PROP_GROUP: + priv->group = g_value_get_uint (value); + break; + case PROP_IS_MODIFIER: + priv->is_modifier = g_value_get_boolean (value); + break; + case PROP_ROOT: + priv->root = g_value_get_uint (value); + break; + case PROP_SUBWINDOW: + priv->subwindow = g_value_get_uint (value); + break; + case PROP_X: + priv->x = g_value_get_int (value); + break; + case PROP_Y: + priv->y = g_value_get_int (value); + break; + case PROP_X_ROOT: + priv->x_root = g_value_get_int (value); + break; + case PROP_Y_ROOT: + priv->y_root = g_value_get_int (value); + break; + case PROP_SAME_SCREEN: + priv->same_screen = g_value_get_boolean (value); + break; + case PROP_PURPOSE: + g_free (priv->purpose); + priv->purpose = g_value_dup_string (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (event, prop_id, pspec); + } +} + +static void +ibus_x_event_get_property (IBusXEvent *event, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + IBusXEventPrivate *priv = event->priv; + switch (prop_id) { + case PROP_VERSION: + g_value_set_uint (value, priv->version); + break; + case PROP_EVENT_TYPE: + g_value_set_int (value, event->event_type); + break; + case PROP_WINDOW: + g_value_set_uint (value, event->window); + break; + case PROP_SEND_EVENT: + g_value_set_int (value, event->send_event); + break; + case PROP_SERIAL: + g_value_set_ulong (value, event->serial); + break; + case PROP_TIME: + g_value_set_uint (value, priv->time); + break; + case PROP_STATE: + g_value_set_uint (value, priv->state); + break; + case PROP_KEYVAL: + g_value_set_uint (value, priv->keyval); + break; + case PROP_LENGTH: + g_value_set_int (value, priv->length); + break; + case PROP_STRING: + g_value_set_string (value, priv->string); + break; + case PROP_HARDWARE_KEYCODE: + g_value_set_uint (value, priv->hardware_keycode); + break; + case PROP_GROUP: + g_value_set_uint (value, priv->group); + break; + case PROP_IS_MODIFIER: + g_value_set_boolean (value, priv->is_modifier); + break; + case PROP_ROOT: + g_value_set_uint (value, priv->root); + break; + case PROP_SUBWINDOW: + g_value_set_uint (value, priv->subwindow); + break; + case PROP_X: + g_value_set_int (value, priv->x); + break; + case PROP_Y: + g_value_set_int (value, priv->y); + break; + case PROP_X_ROOT: + g_value_set_int (value, priv->x_root); + break; + case PROP_Y_ROOT: + g_value_set_int (value, priv->y_root); + break; + case PROP_SAME_SCREEN: + g_value_set_boolean (value, priv->same_screen); + break; + case PROP_PURPOSE: + g_value_set_string (value, priv->purpose); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (event, prop_id, pspec); + } +} + +static gboolean +ibus_x_event_serialize (IBusXEvent *event, + GVariantBuilder *builder) +{ + gboolean retval; + IBusXEventPrivate *priv; + + retval = IBUS_SERIALIZABLE_CLASS (ibus_x_event_parent_class)-> + serialize ((IBusSerializable *)event, builder); + g_return_val_if_fail (retval, FALSE); + /* End dict iter */ + + priv = event->priv; +#define NOTNULL(s) ((s) != NULL ? (s) : "") + /* If you will add a new property, you can append it at the end and + * you should not change the serialized order of name, longname, + * description, ... because the order is also used in other applications + * likes ibus-qt. */ + g_variant_builder_add (builder, "u", priv->version); + g_variant_builder_add (builder, "u", event->event_type); + g_variant_builder_add (builder, "u", event->window); + g_variant_builder_add (builder, "i", event->send_event); + g_variant_builder_add (builder, "t", event->serial); + g_variant_builder_add (builder, "u", priv->time); + g_variant_builder_add (builder, "u", priv->state); + g_variant_builder_add (builder, "u", priv->keyval); + g_variant_builder_add (builder, "i", priv->length); + g_variant_builder_add (builder, "s", NOTNULL (priv->string)); + g_variant_builder_add (builder, "u", priv->hardware_keycode); + g_variant_builder_add (builder, "u", priv->group); + g_variant_builder_add (builder, "b", priv->is_modifier); + g_variant_builder_add (builder, "u", priv->root); + g_variant_builder_add (builder, "u", priv->subwindow); + g_variant_builder_add (builder, "i", priv->x); + g_variant_builder_add (builder, "i", priv->y); + g_variant_builder_add (builder, "i", priv->x_root); + g_variant_builder_add (builder, "i", priv->y_root); + g_variant_builder_add (builder, "b", priv->same_screen); + g_variant_builder_add (builder, "s", NOTNULL (priv->purpose)); +#undef NOTNULL + + return TRUE; +} + +static gint +ibus_x_event_deserialize (IBusXEvent *event, + GVariant *variant) +{ + gint retval; + IBusXEventPrivate *priv; + + retval = IBUS_SERIALIZABLE_CLASS (ibus_x_event_parent_class)-> + deserialize ((IBusSerializable *)event, variant); + g_return_val_if_fail (retval, 0); + + priv = event->priv; + /* If you will add a new property, you can append it at the end and + * you should not change the serialized order of name, longname, + * description, ... because the order is also used in other applications + * likes ibus-qt. */ + g_variant_get_child (variant, retval++, "u", &priv->version); + g_variant_get_child (variant, retval++, "u", &event->event_type); + g_variant_get_child (variant, retval++, "u", &event->window); + g_variant_get_child (variant, retval++, "i", &event->send_event); + g_variant_get_child (variant, retval++, "t", &event->serial); + g_variant_get_child (variant, retval++, "u", &priv->time); + g_variant_get_child (variant, retval++, "u", &priv->state); + g_variant_get_child (variant, retval++, "u", &priv->keyval); + g_variant_get_child (variant, retval++, "i", &priv->length); + ibus_g_variant_get_child_string (variant, retval++, + &priv->string); + g_variant_get_child (variant, retval++, "u", &priv->hardware_keycode); + g_variant_get_child (variant, retval++, "u", &priv->group); + g_variant_get_child (variant, retval++, "b", &priv->is_modifier); + g_variant_get_child (variant, retval++, "u", &priv->root); + g_variant_get_child (variant, retval++, "u", &priv->subwindow); + g_variant_get_child (variant, retval++, "i", &priv->x); + g_variant_get_child (variant, retval++, "i", &priv->y); + g_variant_get_child (variant, retval++, "i", &priv->x_root); + g_variant_get_child (variant, retval++, "i", &priv->y_root); + g_variant_get_child (variant, retval++, "b", &priv->same_screen); + ibus_g_variant_get_child_string (variant, retval++, + &priv->purpose); + + return retval; +} + +static gboolean +ibus_x_event_copy (IBusXEvent *dest, + const IBusXEvent *src) +{ + gboolean retval; + IBusXEventPrivate *dest_priv = dest->priv; + IBusXEventPrivate *src_priv = src->priv; + + retval = IBUS_SERIALIZABLE_CLASS (ibus_x_event_parent_class)-> + copy ((IBusSerializable *)dest, (IBusSerializable *)src); + g_return_val_if_fail (retval, FALSE); + + dest_priv->version = src_priv->version; + dest->event_type = src->event_type; + dest->window = src->window; + dest->send_event = src->send_event; + dest->serial = src->serial; + dest_priv->time = src_priv->time; + dest_priv->state = src_priv->state; + dest_priv->keyval = src_priv->keyval; + dest_priv->length = src_priv->length; + dest_priv->string = g_strdup (src_priv->string); + dest_priv->hardware_keycode = src_priv->hardware_keycode; + dest_priv->group = src_priv->group; + dest_priv->is_modifier = src_priv->is_modifier; + dest_priv->root = src_priv->root; + dest_priv->subwindow = src_priv->subwindow; + dest_priv->x = src_priv->x; + dest_priv->y = src_priv->y; + dest_priv->x_root = src_priv->x_root; + dest_priv->y_root = src_priv->y_root; + dest_priv->same_screen = src_priv->same_screen; + dest_priv->purpose = g_strdup (src_priv->purpose); + + return TRUE; +} + +IBusXEvent * +ibus_x_event_new (const gchar *first_property_name, + ...) +{ + va_list var_args; + IBusXEvent *event; + + va_start (var_args, first_property_name); + event = (IBusXEvent *) g_object_new_valist (IBUS_TYPE_X_EVENT, + first_property_name, + var_args); + va_end (var_args); + g_assert (event->priv->version != 0); + g_assert (event->event_type != IBUS_X_EVENT_NOTHING); + return event; +} + +guint +ibus_x_event_get_version (IBusXEvent *event) +{ + g_return_val_if_fail (IBUS_IS_X_EVENT (event), 0); + return event->priv->version; +} + +IBusXEventType +ibus_x_event_get_event_type (IBusXEvent *event) +{ + g_return_val_if_fail (IBUS_IS_X_EVENT (event), 0); + return event->event_type; +} + +guint32 +ibus_x_event_get_window (IBusXEvent *event) +{ + g_return_val_if_fail (IBUS_IS_X_EVENT (event), 0); + return event->window; +} + +gint8 +ibus_x_event_get_send_event (IBusXEvent *event) +{ + g_return_val_if_fail (IBUS_IS_X_EVENT (event), -1); + return event->send_event; +} + +gulong +ibus_x_event_get_serial (IBusXEvent *event) +{ + g_return_val_if_fail (IBUS_IS_X_EVENT (event), 0); + return event->serial; +} + +guint32 +ibus_x_event_get_time (IBusXEvent *event) +{ + g_return_val_if_fail (IBUS_IS_X_EVENT (event), 0); + switch (event->event_type) { + case IBUS_X_EVENT_KEY_PRESS: + case IBUS_X_EVENT_KEY_RELEASE: + break; + default: + g_return_val_if_reached (0); + } + return event->priv->time; +} + +guint +ibus_x_event_get_state (IBusXEvent *event) +{ + g_return_val_if_fail (IBUS_IS_X_EVENT (event), 0); + switch (event->event_type) { + case IBUS_X_EVENT_KEY_PRESS: + case IBUS_X_EVENT_KEY_RELEASE: + break; + default: + g_return_val_if_reached (0); + } + return event->priv->state; +} + +guint +ibus_x_event_get_keyval (IBusXEvent *event) +{ + g_return_val_if_fail (IBUS_IS_X_EVENT (event), 0); + switch (event->event_type) { + case IBUS_X_EVENT_KEY_PRESS: + case IBUS_X_EVENT_KEY_RELEASE: + break; + default: + g_return_val_if_reached (0); + } + return event->priv->keyval; +} + +gint +ibus_x_event_get_length (IBusXEvent *event) +{ + g_return_val_if_fail (IBUS_IS_X_EVENT (event), -1); + switch (event->event_type) { + case IBUS_X_EVENT_KEY_PRESS: + case IBUS_X_EVENT_KEY_RELEASE: + break; + default: + g_return_val_if_reached (-1); + } + return event->priv->length; +} + +const gchar * +ibus_x_event_get_string (IBusXEvent *event) +{ + g_return_val_if_fail (IBUS_IS_X_EVENT (event), ""); + switch (event->event_type) { + case IBUS_X_EVENT_KEY_PRESS: + case IBUS_X_EVENT_KEY_RELEASE: + break; + default: + g_return_val_if_reached (""); + } + return event->priv->string; +} + +guint16 +ibus_x_event_get_hardware_keycode (IBusXEvent *event) +{ + g_return_val_if_fail (IBUS_IS_X_EVENT (event), 0); + switch (event->event_type) { + case IBUS_X_EVENT_KEY_PRESS: + case IBUS_X_EVENT_KEY_RELEASE: + break; + default: + g_return_val_if_reached (0); + } + return event->priv->hardware_keycode; +} + +guint8 +ibus_x_event_get_group (IBusXEvent *event) +{ + g_return_val_if_fail (IBUS_IS_X_EVENT (event), 0); + switch (event->event_type) { + case IBUS_X_EVENT_KEY_PRESS: + case IBUS_X_EVENT_KEY_RELEASE: + break; + default: + g_return_val_if_reached (0); + } + return event->priv->group; +} + +gboolean +ibus_x_event_get_is_modifier (IBusXEvent *event) +{ + g_return_val_if_fail (IBUS_IS_X_EVENT (event), 0); + switch (event->event_type) { + case IBUS_X_EVENT_KEY_PRESS: + case IBUS_X_EVENT_KEY_RELEASE: + break; + default: + g_return_val_if_reached (0); + } + return event->priv->is_modifier; +} + +guint32 +ibus_x_event_get_root (IBusXEvent *event) +{ + g_return_val_if_fail (IBUS_IS_X_EVENT (event), 0); + switch (event->event_type) { + case IBUS_X_EVENT_KEY_PRESS: + case IBUS_X_EVENT_KEY_RELEASE: + break; + default: + g_return_val_if_reached (0); + } + return event->priv->root; +} + +guint32 +ibus_x_event_get_subwindow (IBusXEvent *event) +{ + g_return_val_if_fail (IBUS_IS_X_EVENT (event), 0); + switch (event->event_type) { + case IBUS_X_EVENT_KEY_PRESS: + case IBUS_X_EVENT_KEY_RELEASE: + break; + default: + g_return_val_if_reached (0); + } + return event->priv->subwindow; +} + +gint +ibus_x_event_get_x (IBusXEvent *event) +{ + g_return_val_if_fail (IBUS_IS_X_EVENT (event), 0); + switch (event->event_type) { + case IBUS_X_EVENT_KEY_PRESS: + case IBUS_X_EVENT_KEY_RELEASE: + break; + default: + g_return_val_if_reached (0); + } + return event->priv->x; +} + +gint +ibus_x_event_get_y (IBusXEvent *event) +{ + g_return_val_if_fail (IBUS_IS_X_EVENT (event), 0); + switch (event->event_type) { + case IBUS_X_EVENT_KEY_PRESS: + case IBUS_X_EVENT_KEY_RELEASE: + break; + default: + g_return_val_if_reached (0); + } + return event->priv->y; +} + +gint +ibus_x_event_get_x_root (IBusXEvent *event) +{ + g_return_val_if_fail (IBUS_IS_X_EVENT (event), 0); + switch (event->event_type) { + case IBUS_X_EVENT_KEY_PRESS: + case IBUS_X_EVENT_KEY_RELEASE: + break; + default: + g_return_val_if_reached (0); + } + return event->priv->x_root; +} + +gint +ibus_x_event_get_y_root (IBusXEvent *event) +{ + g_return_val_if_fail (IBUS_IS_X_EVENT (event), 0); + switch (event->event_type) { + case IBUS_X_EVENT_KEY_PRESS: + case IBUS_X_EVENT_KEY_RELEASE: + break; + default: + g_return_val_if_reached (0); + } + return event->priv->y_root; +} + +gboolean +ibus_x_event_get_same_screen (IBusXEvent *event) +{ + g_return_val_if_fail (IBUS_IS_X_EVENT (event), TRUE); + switch (event->event_type) { + case IBUS_X_EVENT_KEY_PRESS: + case IBUS_X_EVENT_KEY_RELEASE: + break; + default: + g_return_val_if_reached (TRUE); + } + return event->priv->same_screen; +} + +const gchar * +ibus_x_event_get_purpose (IBusXEvent *event) +{ + g_return_val_if_fail (IBUS_IS_X_EVENT (event), ""); + return event->priv->purpose; +} diff --git a/src/ibusxevent.h b/src/ibusxevent.h new file mode 100644 index 000000000..d44cc8f45 --- /dev/null +++ b/src/ibusxevent.h @@ -0,0 +1,419 @@ +/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ +/* vim:set et sts=4: */ +/* ibus - The Input Bus + * Copyright (C) 2018 Takao Fujiwara + * Copyright (C) 2018 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) +#error "Only can be included directly" +#endif + +#ifndef __IBUS_X_EVENT_H_ +#define __IBUS_X_EVENT_H_ + +/** + * SECTION: ibusxevent + * @short_description: Extension Event wrapper object + * @title: IBusExtensionEvent + * @stability: Unstable + * + * An IBusXEvent provides a wrapper of XEvent. + * + * see_also: #IBusComponent, #IBusEngineDesc + */ + +#include "ibusserializable.h" + +/* + * Type macros. + */ + +/* define GOBJECT macros */ +#define IBUS_TYPE_EXTENSION_EVENT \ + (ibus_extension_event_get_type ()) +#define IBUS_EXTENSION_EVENT(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + IBUS_TYPE_EXTENSION_EVENT, \ + IBusExtensionEvent)) +#define IBUS_EXTENSION_EVENT_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), \ + IBUS_TYPE_EXTENSION_EVENT, \ + IBusExtensionEventClass)) +#define IBUS_IS_EXTENSION_EVENT(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_EXTENSION_EVENT)) +#define IBUS_IS_EXTENSION_EVENT_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_EXTENSION_EVENT)) +#define IBUS_EXTENSION_EVENT_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + IBUS_TYPE_EXTENSION_EVENT, \ + IBusExtensionEventClass)) + +#define IBUS_TYPE_X_EVENT \ + (ibus_x_event_get_type ()) +#define IBUS_X_EVENT(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_X_EVENT, IBusXEvent)) +#define IBUS_X_EVENT_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_X_EVENT, IBusXEventClass)) +#define IBUS_IS_X_EVENT(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_X_EVENT)) +#define IBUS_IS_X_EVENT_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_X_EVENT)) +#define IBUS_X_EVENT_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_X_EVENT, IBusXEventClass)) + +G_BEGIN_DECLS + +typedef struct _IBusProcessKeyEventData IBusProcessKeyEventData; +typedef struct _IBusExtensionEvent IBusExtensionEvent; +typedef struct _IBusExtensionEventClass IBusExtensionEventClass; +typedef struct _IBusExtensionEventPrivate IBusExtensionEventPrivate; +typedef struct _IBusXEvent IBusXEvent; +typedef struct _IBusXEventClass IBusXEventClass; +typedef struct _IBusXEventPrivate IBusXEventPrivate; + +/** + * IBusProcessKeyEventData: + * + * IBuProcessKeyEventData properties. + */ +struct _IBusProcessKeyEventData { + /*< public >*/ + guint keyval; + guint keycode; + guint state; +}; + +/** + * IBusExtensionEvent: + * + * IBusExtensionEvent properties. + */ +struct _IBusExtensionEvent { + /*< private >*/ + IBusSerializable parent; + IBusExtensionEventPrivate *priv; + + /* instance members */ + /*< public >*/ +}; + +struct _IBusExtensionEventClass { + /*< private >*/ + IBusSerializableClass parent; + + /* class members */ + /*< public >*/ + + /*< private >*/ + /* padding */ + gpointer pdummy[10]; +}; + + +GType ibus_extension_event_get_type (void); + +/** + * ibus_extension_event_new: + * @first_property_name: Name of the first property. + * @...: the NULL-terminated arguments of the properties and values. + * + * Create a new #IBusExtensionEvent. + * + * Returns: A newly allocated #IBusExtensionEvent. E.g. + * ibus_extension_event_new ("name", "emoji", "is-enabled", TRUE, NULL); + */ +IBusExtensionEvent *ibus_extension_event_new (const gchar + *first_property_name, + ...); + +/** + * ibus_extension_event_get_version: + * @event: An #IBusExtensionEvent. + * + * Returns: Version of #IBusExtensionEvent + */ +guint ibus_extension_event_get_version (IBusExtensionEvent *event); + +/** + * ibus_extension_event_get_purpose: + * @event: An #IBusExtensionEvent. + * + * Returns: name of the extension for #IBusXEvent + */ +const gchar * ibus_extension_event_get_name (IBusExtensionEvent *event); + +/** + * ibus_extension_event_is_enabled: + * @event: An #IBusExtensionEvent. + * + * Returns: %TRUE if the extension is enabled for #IBusExtensionEvent + */ +gboolean ibus_extension_event_is_enabled (IBusExtensionEvent *event); + +/** + * ibus_extension_event_is_extension: + * @event: An #IBusExtensionEvent. + * + * Returns: %TRUE if the #IBusExtensionEvent is called by an extension. + * %FALSE if the #IBusExtensionEvent is called by an active engine or + * panel. + * If this value is %TRUE, the event is send to ibus-daemon, an active + * engine. If it's %FALSE, the event is sned to ibus-daemon, panels. + */ +gboolean ibus_extension_event_is_extension + (IBusExtensionEvent *event); + +/** + * ibus_extension_event_get_params: + * @event: An #IBusExtensionEvent. + * + * Returns: Parameters to enable the extension for #IBusXEvent + */ +const gchar * ibus_extension_event_get_params (IBusExtensionEvent *event); + + + +typedef enum { + IBUS_X_EVENT_NOTHING = -1, + IBUS_X_EVENT_KEY_PRESS = 0, + IBUS_X_EVENT_KEY_RELEASE = 1, + IBUS_X_EVENT_OTHER = 2, + IBUS_X_EVENT_EVENT_LAST /* helper variable for decls */ +} IBusXEventType; + +/** + * IBusXEvent: + * @type: event type + * + * IBusXEvent properties. + */ +struct _IBusXEvent { + /*< private >*/ + IBusSerializable parent; + IBusXEventPrivate *priv; + + /* instance members */ + /*< public >*/ + IBusXEventType event_type; + guint window; + gint8 send_event; + gulong serial; +}; + +struct _IBusXEventClass { + /*< private >*/ + IBusSerializableClass parent; + + /* class members */ + /*< public >*/ + + /*< private >*/ + /* padding */ + gpointer pdummy[10]; +}; + +GType ibus_x_event_get_type (void); + +/** + * ibus_x_event_new: + * @first_property_name: Name of the first property. + * @...: the NULL-terminated arguments of the properties and values. + * + * Create a new #IBusXEvent. + * + * Returns: A newly allocated #IBusXEvent. E.g. + * ibus_x_event_new ("event-type", IBUS_X_EVENT_KEY_PRESS, NULL); + */ +IBusXEvent * ibus_x_event_new (const gchar + *first_property_name, + ...); + +/** + * ibus_x_event_get_version: + * @event: An #IBusXEvent. + * + * Returns: Version of #IBusXEvent + */ +guint ibus_x_event_get_version (IBusXEvent *event); + +/** + * ibus_x_event_get_event_type: + * @event: An #IBusXEvent. + * + * Returns: IBusXEventType of #IBusXEvent + */ +IBusXEventType ibus_x_event_get_event_type (IBusXEvent *event); + +/** + * ibus_x_event_get_window: + * @event: An #IBusXEvent. + * + * Returns: XID of #IBusXEvent + */ +guint32 ibus_x_event_get_window (IBusXEvent *event); + +/** + * ibus_x_event_get_send_event: + * @event: An #IBusXEvent. + * + * Returns: send_event of #IBusXEvent + */ +gint8 ibus_x_event_get_send_event (IBusXEvent *event); + +/** + * ibus_x_event_get_serial: + * @event: An #IBusXEvent. + * + * Returns: serial of #IBusXEvent + */ +gulong ibus_x_event_get_serial (IBusXEvent *event); + +/** + * ibus_x_event_get_time: + * @event: An #IBusXEvent. + * + * Returns: time of #IBusXEvent + */ +guint32 ibus_x_event_get_time (IBusXEvent *event); + +/** + * ibus_x_event_get_state: + * @event: An #IBusXEvent. + * + * Returns: state of #IBusXEvent + */ +guint ibus_x_event_get_state (IBusXEvent *event); + +/** + * ibus_x_event_get_keyval: + * @event: An #IBusXEvent. + * + * Returns: keyval of #IBusXEvent + */ +guint ibus_x_event_get_keyval (IBusXEvent *event); + +/** + * ibus_x_event_get_length: + * @event: An #IBusXEvent. + * + * Returns: length of #IBusXEvent + */ +gint ibus_x_event_get_length (IBusXEvent *event); + +/** + * ibus_x_event_get_string: + * @event: An #IBusXEvent. + * + * Returns: string of #IBusXEvent + */ +const gchar * ibus_x_event_get_string (IBusXEvent *event); + +/** + * ibus_x_event_get_hardware_keycode: + * @event: An #IBusXEvent. + * + * Returns: hardware keycode of #IBusXEvent + */ +guint16 ibus_x_event_get_hardware_keycode + (IBusXEvent *event); + +/** + * ibus_x_event_get_group: + * @event: An #IBusXEvent. + * + * Returns: group of #IBusXEvent + */ +guint8 ibus_x_event_get_group (IBusXEvent *event); + +/** + * ibus_x_event_get_is_modifier: + * @event: An #IBusXEvent. + * + * Returns: is_modifier of #IBusXEvent + */ +gboolean ibus_x_event_get_is_modifier + (IBusXEvent *event); + +/** + * ibus_x_event_get_subwindow: + * @event: An #IBusXEvent. + * + * Returns: subwindow of #IBusXEvent + */ +guint32 ibus_x_event_get_subwindow (IBusXEvent *event); + +/** + * ibus_x_event_get_root: + * @event: An #IBusXEvent. + * + * Returns: root window of #IBusXEvent + */ +guint32 ibus_x_event_get_root (IBusXEvent *event); + +/** + * ibus_x_event_get_x: + * @event: An #IBusXEvent. + * + * Returns: x of #IBusXEvent + */ +gint ibus_x_event_get_x (IBusXEvent *event); + +/** + * ibus_x_event_get_y: + * @event: An #IBusXEvent. + * + * Returns: y of #IBusXEvent + */ +gint ibus_x_event_get_y (IBusXEvent *event); + +/** + * ibus_x_event_get_x_root: + * @event: An #IBusXEvent. + * + * Returns: x-root of #IBusXEvent + */ +gint ibus_x_event_get_x_root (IBusXEvent *event); + +/** + * ibus_x_event_get_y_root: + * @event: An #IBusXEvent. + * + * Returns: y-root of #IBusXEvent + */ +gint ibus_x_event_get_y_root (IBusXEvent *event); + +/** + * ibus_x_event_get_same_screen: + * @event: An #IBusXEvent. + * + * Returns: same_screen of #IBusXEvent + */ +gboolean ibus_x_event_get_same_screen + (IBusXEvent *event); + +/** + * ibus_x_event_get_purpose: + * @event: An #IBusXEvent. + * + * Returns: purpose of #IBusXEvent + */ +const gchar * ibus_x_event_get_purpose (IBusXEvent *event); + +G_END_DECLS +#endif diff --git a/src/ibusxml.c b/src/ibusxml.c index 89d009ebe..b6d0feb8f 100644 --- a/src/ibusxml.c +++ b/src/ibusxml.c @@ -1,23 +1,24 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* bus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2015 Peng Huang + * Copyright (C) 2018 Takao Fujiwara + * Copyright (C) 2008-2018 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include #include @@ -25,6 +26,25 @@ static GMarkupParser parser; +G_DEFINE_BOXED_TYPE (IBusXML, ibus_xml, + ibus_xml_copy, + ibus_xml_free); + +XMLNode* +ibus_xml_copy (const XMLNode *node) +{ + XMLNode *ret; + + if (node == NULL) + return NULL; + + ret = g_slice_new (XMLNode); + + *ret = *node; + + return ret; +} + void ibus_xml_free (XMLNode *node) { @@ -128,7 +148,7 @@ _is_space (const gchar *text, { gsize i = 0; - for (i = 0; text[i] != '\0' && i < text_len; i++) { + for (i = 0; i < text_len && text[i] != '\0'; i++) { switch (text[i]) { case '\t': case ' ': @@ -221,8 +241,10 @@ ibus_xml_parse_file (const gchar *filename) return node; } while (0); - g_warning ("Parse %s failed: %s", filename, error->message); - g_error_free (error); + if (error) { + g_warning ("Parse %s failed: %s", filename, error->message); + g_error_free (error); + } g_markup_parse_context_free (context); return NULL; } diff --git a/src/ibusxml.h b/src/ibusxml.h index ff5e65e03..a241a6c8b 100644 --- a/src/ibusxml.h +++ b/src/ibusxml.h @@ -1,29 +1,32 @@ /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* bus - The Input Bus - * Copyright (C) 2008-2010 Peng Huang - * Copyright (C) 2008-2010 Red Hat, Inc. + * Copyright (C) 2008-2015 Peng Huang + * Copyright (C) 2008-2015 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif +#ifndef __IBUS_XML_H__ +#define __IBUS_XML_H__ + /** * SECTION: ibusxml * @short_description: XML handling functions for IBus. @@ -31,43 +34,67 @@ * * IBusXML lists data structure and handling function for XML in IBus. */ -#ifndef __IBUS_XML_H__ -#define __IBUS_XML_H__ #include +#include + +#define IBUS_TYPE_XML (ibus_xml_get_type ()) + +G_BEGIN_DECLS /** - * XMLNode: + * IBusXML: * @name: Name of XML tag. * @text: Text enclosed by XML start tag and end tag. i.e. text. * @attributes: Attributes of the XML node. * @sub_nodes: Children node of this XML node. * - * A data type representing an XML nod. + * A data type representing an XML node. */ typedef struct { gchar *name; gchar *text; gchar **attributes; GList *sub_nodes; -} XMLNode; +} IBusXML; + +#define XMLNode IBusXML + +GType ibus_xml_get_type (void) G_GNUC_CONST; + +/** + * ibus_xml_copy: + * @node: Root node of an XML tree. + * + * Creates a copy of @node, which should be freed with + * ibus_xml_free(). Primarily used by language bindings, + * not that useful otherwise (since @node can just be copied + * by assignment in C). + * + * Returns: the newly allocated #IBusXML, which should + * be freed with ibus_xml_free(), or %NULL + * if @node was %NULL. + **/ +XMLNode *ibus_xml_copy (const XMLNode *node); /** * ibus_xml_parse_file: * @name: File name to be parsed. - * @returns: Root node of parsed XML tree. * * Parse an XML file and return a corresponding XML tree. + * + * Returns: Root node of parsed XML tree. */ XMLNode *ibus_xml_parse_file (const gchar *name); /** * ibus_xml_parse_buffer: * @buffer: Buffer to be parsed. - * @returns: Root node of parsed XML tree. * * Parse a string buffer which contains an XML-formatted string, * and return a corresponding XML tree. + * + * Returns: Root node of parsed XML tree. */ XMLNode *ibus_xml_parse_buffer (const gchar *buffer); @@ -88,4 +115,5 @@ void ibus_xml_free (XMLNode *node); */ void ibus_xml_output (const XMLNode *node, GString *output); +G_END_DECLS #endif diff --git a/src/keyname-table.h b/src/keyname-table.h index 115435d31..f84ecdc3a 100644 --- a/src/keyname-table.h +++ b/src/keyname-table.h @@ -1,8 +1,8 @@ /* keyname-table.h: Generated by gen-keyname-table.pl from keynames.txt * - * Date: Thu Nov 2 17:26:30 2006 + * Date: Thu Oct 17 18:16:31 2013 * - * Do not edit. + * Do not edit. */ static const char keynames[] = "space\0" @@ -150,8 +150,8 @@ static const char keynames[] = "Iacute\0" "Icircumflex\0" "Idiaeresis\0" - "ETH\0" "Eth\0" + "ETH\0" "Ntilde\0" "Ograve\0" "Oacute\0" @@ -160,13 +160,14 @@ static const char keynames[] = "Odiaeresis\0" "multiply\0" "Ooblique\0" + "Oslash\0" "Ugrave\0" "Uacute\0" "Ucircumflex\0" "Udiaeresis\0" "Yacute\0" - "THORN\0" "Thorn\0" + "THORN\0" "ssharp\0" "agrave\0" "aacute\0" @@ -192,6 +193,7 @@ static const char keynames[] = "otilde\0" "odiaeresis\0" "division\0" + "ooblique\0" "oslash\0" "ugrave\0" "uacute\0" @@ -451,6 +453,7 @@ static const char keynames[] = "Serbian_nje\0" "Serbian_tshe\0" "Macedonia_kje\0" + "Ukrainian_ghe_with_upturn\0" "Byelorussian_shortu\0" "Cyrillic_dzhe\0" "Serbian_dze\0" @@ -473,6 +476,7 @@ static const char keynames[] = "Serbian_NJE\0" "Serbian_TSHE\0" "Macedonia_KJE\0" + "Ukrainian_GHE_WITH_UPTURN\0" "Byelorussian_SHORTU\0" "Cyrillic_DZHE\0" "Serbian_DZE\0" @@ -544,8 +548,8 @@ static const char keynames[] = "Greek_EPSILONaccent\0" "Greek_ETAaccent\0" "Greek_IOTAaccent\0" - "Greek_IOTAdieresis\0" "Greek_IOTAdiaeresis\0" + "Greek_IOTAdieresis\0" "Greek_OMICRONaccent\0" "Greek_UPSILONaccent\0" "Greek_UPSILONdieresis\0" @@ -730,6 +734,7 @@ static const char keynames[] = "leftdoublequotemark\0" "rightdoublequotemark\0" "prescription\0" + "permille\0" "minutes\0" "seconds\0" "latincross\0" @@ -1006,18 +1011,6 @@ static const char keynames[] = "OE\0" "oe\0" "Ydiaeresis\0" - "EcuSign\0" - "ColonSign\0" - "CruzeiroSign\0" - "FFrancSign\0" - "LiraSign\0" - "MillSign\0" - "NairaSign\0" - "PesetaSign\0" - "RupeeSign\0" - "WonSign\0" - "NewSheqelSign\0" - "DongSign\0" "EuroSign\0" "3270_Duplicate\0" "3270_FieldMark\0" @@ -1064,6 +1057,9 @@ static const char keynames[] = "ISO_First_Group_Lock\0" "ISO_Last_Group\0" "ISO_Last_Group_Lock\0" + "ISO_Level5_Shift\0" + "ISO_Level5_Latch\0" + "ISO_Level5_Lock\0" "ISO_Left_Tab\0" "ISO_Move_Line_Up\0" "ISO_Move_Line_Down\0" @@ -1088,6 +1084,7 @@ static const char keynames[] = "dead_grave\0" "dead_acute\0" "dead_circumflex\0" + "dead_perispomeni\0" "dead_tilde\0" "dead_macron\0" "dead_breve\0" @@ -1104,6 +1101,21 @@ static const char keynames[] = "dead_belowdot\0" "dead_hook\0" "dead_horn\0" + "dead_stroke\0" + "dead_abovecomma\0" + "dead_psili\0" + "dead_abovereversedcomma\0" + "dead_dasia\0" + "dead_doublegrave\0" + "dead_belowring\0" + "dead_belowmacron\0" + "dead_belowcircumflex\0" + "dead_belowtilde\0" + "dead_belowbreve\0" + "dead_belowdiaeresis\0" + "dead_invertedbreve\0" + "dead_belowcomma\0" + "dead_currency\0" "AccessX_Enable\0" "AccessX_Feedback_Enable\0" "RepeatKeys_Enable\0" @@ -1115,6 +1127,25 @@ static const char keynames[] = "Overlay1_Enable\0" "Overlay2_Enable\0" "AudibleBell_Enable\0" + "dead_a\0" + "dead_A\0" + "dead_e\0" + "dead_E\0" + "dead_i\0" + "dead_I\0" + "dead_o\0" + "dead_O\0" + "dead_u\0" + "dead_U\0" + "dead_small_schwa\0" + "dead_capital_schwa\0" + "dead_greek\0" + "ch\0" + "Ch\0" + "CH\0" + "c_h\0" + "C_h\0" + "C_H\0" "First_Virtual_Screen\0" "Prev_Virtual_Screen\0" "Next_Virtual_Screen\0" @@ -1184,12 +1215,19 @@ static const char keynames[] = "Hangul_Jamo\0" "Hangul_Romaja\0" "Codeinput\0" + "Hangul_Codeinput\0" + "Kanji_Bangou\0" "Hangul_Jeonja\0" "Hangul_Banja\0" "Hangul_PreHanja\0" "Hangul_PostHanja\0" + "Hangul_SingleCandidate\0" "SingleCandidate\0" + "Hangul_MultipleCandidate\0" "MultipleCandidate\0" + "Zen_Koho\0" + "Hangul_PreviousCandidate\0" + "Mae_Koho\0" "PreviousCandidate\0" "Hangul_Special\0" "Home\0" @@ -1219,8 +1257,8 @@ static const char keynames[] = "Hangul_switch\0" "Hebrew_switch\0" "ISO_Group_Shift\0" - "Mode_switch\0" "kana_switch\0" + "Mode_switch\0" "script_switch\0" "Num_Lock\0" "KP_Space\0" @@ -1237,8 +1275,8 @@ static const char keynames[] = "KP_Down\0" "KP_Page_Up\0" "KP_Prior\0" - "KP_Page_Down\0" "KP_Next\0" + "KP_Page_Down\0" "KP_End\0" "KP_Begin\0" "KP_Insert\0" @@ -1271,30 +1309,55 @@ static const char keynames[] = "F9\0" "F10\0" "F11\0" + "L1\0" "F12\0" + "L2\0" "F13\0" + "L3\0" "F14\0" + "L4\0" "F15\0" + "L5\0" "F16\0" + "L6\0" "F17\0" + "L7\0" "F18\0" + "L8\0" "F19\0" + "L9\0" "F20\0" + "L10\0" "F21\0" + "R1\0" "F22\0" + "R2\0" "F23\0" + "R3\0" "F24\0" + "R4\0" "F25\0" + "R5\0" "F26\0" + "R6\0" "F27\0" + "R7\0" "F28\0" + "R8\0" "F29\0" + "R9\0" "F30\0" + "R10\0" "F31\0" + "R11\0" "F32\0" + "R12\0" "F33\0" + "R13\0" "F34\0" + "R14\0" "F35\0" + "R15\0" "Shift_L\0" "Shift_R\0" "Control_L\0" @@ -1309,7 +1372,908 @@ static const char keynames[] = "Super_R\0" "Hyper_L\0" "Hyper_R\0" + "braille_dot_1\0" + "braille_dot_2\0" + "braille_dot_3\0" + "braille_dot_4\0" + "braille_dot_5\0" + "braille_dot_6\0" + "braille_dot_7\0" + "braille_dot_8\0" + "braille_dot_9\0" + "braille_dot_10\0" "Delete\0" + "Ibreve\0" + "ibreve\0" + "Wcircumflex\0" + "wcircumflex\0" + "Ycircumflex\0" + "ycircumflex\0" + "SCHWA\0" + "Obarred\0" + "Ohorn\0" + "ohorn\0" + "Uhorn\0" + "uhorn\0" + "Zstroke\0" + "zstroke\0" + "EZH\0" + "Ocaron\0" + "ocaron\0" + "Gcaron\0" + "gcaron\0" + "schwa\0" + "obarred\0" + "ezh\0" + "Cyrillic_GHE_bar\0" + "Cyrillic_ghe_bar\0" + "Cyrillic_ZHE_descender\0" + "Cyrillic_zhe_descender\0" + "Cyrillic_KA_descender\0" + "Cyrillic_ka_descender\0" + "Cyrillic_KA_vertstroke\0" + "Cyrillic_ka_vertstroke\0" + "Cyrillic_EN_descender\0" + "Cyrillic_en_descender\0" + "Cyrillic_U_straight\0" + "Cyrillic_u_straight\0" + "Cyrillic_U_straight_bar\0" + "Cyrillic_u_straight_bar\0" + "Cyrillic_HA_descender\0" + "Cyrillic_ha_descender\0" + "Cyrillic_CHE_descender\0" + "Cyrillic_che_descender\0" + "Cyrillic_CHE_vertstroke\0" + "Cyrillic_che_vertstroke\0" + "Cyrillic_SHHA\0" + "Cyrillic_shha\0" + "Cyrillic_SCHWA\0" + "Cyrillic_schwa\0" + "Cyrillic_I_macron\0" + "Cyrillic_i_macron\0" + "Cyrillic_O_bar\0" + "Cyrillic_o_bar\0" + "Cyrillic_U_macron\0" + "Cyrillic_u_macron\0" + "Armenian_AYB\0" + "Armenian_BEN\0" + "Armenian_GIM\0" + "Armenian_DA\0" + "Armenian_YECH\0" + "Armenian_ZA\0" + "Armenian_E\0" + "Armenian_AT\0" + "Armenian_TO\0" + "Armenian_ZHE\0" + "Armenian_INI\0" + "Armenian_LYUN\0" + "Armenian_KHE\0" + "Armenian_TSA\0" + "Armenian_KEN\0" + "Armenian_HO\0" + "Armenian_DZA\0" + "Armenian_GHAT\0" + "Armenian_TCHE\0" + "Armenian_MEN\0" + "Armenian_HI\0" + "Armenian_NU\0" + "Armenian_SHA\0" + "Armenian_VO\0" + "Armenian_CHA\0" + "Armenian_PE\0" + "Armenian_JE\0" + "Armenian_RA\0" + "Armenian_SE\0" + "Armenian_VEV\0" + "Armenian_TYUN\0" + "Armenian_RE\0" + "Armenian_TSO\0" + "Armenian_VYUN\0" + "Armenian_PYUR\0" + "Armenian_KE\0" + "Armenian_O\0" + "Armenian_FE\0" + "Armenian_apostrophe\0" + "Armenian_accent\0" + "Armenian_shesht\0" + "Armenian_amanak\0" + "Armenian_exclam\0" + "Armenian_but\0" + "Armenian_separation_mark\0" + "Armenian_paruyk\0" + "Armenian_question\0" + "Armenian_ayb\0" + "Armenian_ben\0" + "Armenian_gim\0" + "Armenian_da\0" + "Armenian_yech\0" + "Armenian_za\0" + "Armenian_e\0" + "Armenian_at\0" + "Armenian_to\0" + "Armenian_zhe\0" + "Armenian_ini\0" + "Armenian_lyun\0" + "Armenian_khe\0" + "Armenian_tsa\0" + "Armenian_ken\0" + "Armenian_ho\0" + "Armenian_dza\0" + "Armenian_ghat\0" + "Armenian_tche\0" + "Armenian_men\0" + "Armenian_hi\0" + "Armenian_nu\0" + "Armenian_sha\0" + "Armenian_vo\0" + "Armenian_cha\0" + "Armenian_pe\0" + "Armenian_je\0" + "Armenian_ra\0" + "Armenian_se\0" + "Armenian_vev\0" + "Armenian_tyun\0" + "Armenian_re\0" + "Armenian_tso\0" + "Armenian_vyun\0" + "Armenian_pyur\0" + "Armenian_ke\0" + "Armenian_o\0" + "Armenian_fe\0" + "Armenian_ligature_ew\0" + "Armenian_full_stop\0" + "Armenian_verjaket\0" + "Armenian_hyphen\0" + "Armenian_yentamna\0" + "Arabic_madda_above\0" + "Arabic_hamza_above\0" + "Arabic_hamza_below\0" + "Arabic_0\0" + "Arabic_1\0" + "Arabic_2\0" + "Arabic_3\0" + "Arabic_4\0" + "Arabic_5\0" + "Arabic_6\0" + "Arabic_7\0" + "Arabic_8\0" + "Arabic_9\0" + "Arabic_percent\0" + "Arabic_superscript_alef\0" + "Arabic_tteh\0" + "Arabic_peh\0" + "Arabic_tcheh\0" + "Arabic_ddal\0" + "Arabic_rreh\0" + "Arabic_jeh\0" + "Arabic_veh\0" + "Arabic_keheh\0" + "Arabic_gaf\0" + "Arabic_noon_ghunna\0" + "Arabic_heh_doachashmee\0" + "Arabic_heh_goal\0" + "Arabic_farsi_yeh\0" + "Farsi_yeh\0" + "Arabic_yeh_baree\0" + "Arabic_fullstop\0" + "Farsi_0\0" + "Farsi_1\0" + "Farsi_2\0" + "Farsi_3\0" + "Farsi_4\0" + "Farsi_5\0" + "Farsi_6\0" + "Farsi_7\0" + "Farsi_8\0" + "Farsi_9\0" + "Sinh_ng\0" + "Sinh_h2\0" + "Sinh_a\0" + "Sinh_aa\0" + "Sinh_ae\0" + "Sinh_aee\0" + "Sinh_i\0" + "Sinh_ii\0" + "Sinh_u\0" + "Sinh_uu\0" + "Sinh_ri\0" + "Sinh_rii\0" + "Sinh_lu\0" + "Sinh_luu\0" + "Sinh_e\0" + "Sinh_ee\0" + "Sinh_ai\0" + "Sinh_o\0" + "Sinh_oo\0" + "Sinh_au\0" + "Sinh_ka\0" + "Sinh_kha\0" + "Sinh_ga\0" + "Sinh_gha\0" + "Sinh_ng2\0" + "Sinh_nga\0" + "Sinh_ca\0" + "Sinh_cha\0" + "Sinh_ja\0" + "Sinh_jha\0" + "Sinh_nya\0" + "Sinh_jnya\0" + "Sinh_nja\0" + "Sinh_tta\0" + "Sinh_ttha\0" + "Sinh_dda\0" + "Sinh_ddha\0" + "Sinh_nna\0" + "Sinh_ndda\0" + "Sinh_tha\0" + "Sinh_thha\0" + "Sinh_dha\0" + "Sinh_dhha\0" + "Sinh_na\0" + "Sinh_ndha\0" + "Sinh_pa\0" + "Sinh_pha\0" + "Sinh_ba\0" + "Sinh_bha\0" + "Sinh_ma\0" + "Sinh_mba\0" + "Sinh_ya\0" + "Sinh_ra\0" + "Sinh_la\0" + "Sinh_va\0" + "Sinh_sha\0" + "Sinh_ssha\0" + "Sinh_sa\0" + "Sinh_ha\0" + "Sinh_lla\0" + "Sinh_fa\0" + "Sinh_al\0" + "Sinh_aa2\0" + "Sinh_ae2\0" + "Sinh_aee2\0" + "Sinh_i2\0" + "Sinh_ii2\0" + "Sinh_u2\0" + "Sinh_uu2\0" + "Sinh_ru2\0" + "Sinh_e2\0" + "Sinh_ee2\0" + "Sinh_ai2\0" + "Sinh_o2\0" + "Sinh_oo2\0" + "Sinh_au2\0" + "Sinh_lu2\0" + "Sinh_ruu2\0" + "Sinh_luu2\0" + "Sinh_kunddaliya\0" + "Georgian_an\0" + "Georgian_ban\0" + "Georgian_gan\0" + "Georgian_don\0" + "Georgian_en\0" + "Georgian_vin\0" + "Georgian_zen\0" + "Georgian_tan\0" + "Georgian_in\0" + "Georgian_kan\0" + "Georgian_las\0" + "Georgian_man\0" + "Georgian_nar\0" + "Georgian_on\0" + "Georgian_par\0" + "Georgian_zhar\0" + "Georgian_rae\0" + "Georgian_san\0" + "Georgian_tar\0" + "Georgian_un\0" + "Georgian_phar\0" + "Georgian_khar\0" + "Georgian_ghan\0" + "Georgian_qar\0" + "Georgian_shin\0" + "Georgian_chin\0" + "Georgian_can\0" + "Georgian_jil\0" + "Georgian_cil\0" + "Georgian_char\0" + "Georgian_xan\0" + "Georgian_jhan\0" + "Georgian_hae\0" + "Georgian_he\0" + "Georgian_hie\0" + "Georgian_we\0" + "Georgian_har\0" + "Georgian_hoe\0" + "Georgian_fi\0" + "Babovedot\0" + "babovedot\0" + "Dabovedot\0" + "dabovedot\0" + "Fabovedot\0" + "fabovedot\0" + "Lbelowdot\0" + "lbelowdot\0" + "Mabovedot\0" + "mabovedot\0" + "Pabovedot\0" + "pabovedot\0" + "Sabovedot\0" + "sabovedot\0" + "Tabovedot\0" + "tabovedot\0" + "Wgrave\0" + "wgrave\0" + "Wacute\0" + "wacute\0" + "Wdiaeresis\0" + "wdiaeresis\0" + "Xabovedot\0" + "xabovedot\0" + "Abelowdot\0" + "abelowdot\0" + "Ahook\0" + "ahook\0" + "Acircumflexacute\0" + "acircumflexacute\0" + "Acircumflexgrave\0" + "acircumflexgrave\0" + "Acircumflexhook\0" + "acircumflexhook\0" + "Acircumflextilde\0" + "acircumflextilde\0" + "Acircumflexbelowdot\0" + "acircumflexbelowdot\0" + "Abreveacute\0" + "abreveacute\0" + "Abrevegrave\0" + "abrevegrave\0" + "Abrevehook\0" + "abrevehook\0" + "Abrevetilde\0" + "abrevetilde\0" + "Abrevebelowdot\0" + "abrevebelowdot\0" + "Ebelowdot\0" + "ebelowdot\0" + "Ehook\0" + "ehook\0" + "Etilde\0" + "etilde\0" + "Ecircumflexacute\0" + "ecircumflexacute\0" + "Ecircumflexgrave\0" + "ecircumflexgrave\0" + "Ecircumflexhook\0" + "ecircumflexhook\0" + "Ecircumflextilde\0" + "ecircumflextilde\0" + "Ecircumflexbelowdot\0" + "ecircumflexbelowdot\0" + "Ihook\0" + "ihook\0" + "Ibelowdot\0" + "ibelowdot\0" + "Obelowdot\0" + "obelowdot\0" + "Ohook\0" + "ohook\0" + "Ocircumflexacute\0" + "ocircumflexacute\0" + "Ocircumflexgrave\0" + "ocircumflexgrave\0" + "Ocircumflexhook\0" + "ocircumflexhook\0" + "Ocircumflextilde\0" + "ocircumflextilde\0" + "Ocircumflexbelowdot\0" + "ocircumflexbelowdot\0" + "Ohornacute\0" + "ohornacute\0" + "Ohorngrave\0" + "ohorngrave\0" + "Ohornhook\0" + "ohornhook\0" + "Ohorntilde\0" + "ohorntilde\0" + "Ohornbelowdot\0" + "ohornbelowdot\0" + "Ubelowdot\0" + "ubelowdot\0" + "Uhook\0" + "uhook\0" + "Uhornacute\0" + "uhornacute\0" + "Uhorngrave\0" + "uhorngrave\0" + "Uhornhook\0" + "uhornhook\0" + "Uhorntilde\0" + "uhorntilde\0" + "Uhornbelowdot\0" + "uhornbelowdot\0" + "Ygrave\0" + "ygrave\0" + "Ybelowdot\0" + "ybelowdot\0" + "Yhook\0" + "yhook\0" + "Ytilde\0" + "ytilde\0" + "zerosuperior\0" + "foursuperior\0" + "fivesuperior\0" + "sixsuperior\0" + "sevensuperior\0" + "eightsuperior\0" + "ninesuperior\0" + "zerosubscript\0" + "onesubscript\0" + "twosubscript\0" + "threesubscript\0" + "foursubscript\0" + "fivesubscript\0" + "sixsubscript\0" + "sevensubscript\0" + "eightsubscript\0" + "ninesubscript\0" + "EcuSign\0" + "ColonSign\0" + "CruzeiroSign\0" + "FFrancSign\0" + "LiraSign\0" + "MillSign\0" + "NairaSign\0" + "PesetaSign\0" + "RupeeSign\0" + "WonSign\0" + "NewSheqelSign\0" + "DongSign\0" + "partdifferential\0" + "emptyset\0" + "elementof\0" + "notelementof\0" + "containsas\0" + "squareroot\0" + "cuberoot\0" + "fourthroot\0" + "dintegral\0" + "tintegral\0" + "because\0" + "notapproxeq\0" + "approxeq\0" + "notidentical\0" + "stricteq\0" + "braille_blank\0" + "braille_dots_1\0" + "braille_dots_2\0" + "braille_dots_12\0" + "braille_dots_3\0" + "braille_dots_13\0" + "braille_dots_23\0" + "braille_dots_123\0" + "braille_dots_4\0" + "braille_dots_14\0" + "braille_dots_24\0" + "braille_dots_124\0" + "braille_dots_34\0" + "braille_dots_134\0" + "braille_dots_234\0" + "braille_dots_1234\0" + "braille_dots_5\0" + "braille_dots_15\0" + "braille_dots_25\0" + "braille_dots_125\0" + "braille_dots_35\0" + "braille_dots_135\0" + "braille_dots_235\0" + "braille_dots_1235\0" + "braille_dots_45\0" + "braille_dots_145\0" + "braille_dots_245\0" + "braille_dots_1245\0" + "braille_dots_345\0" + "braille_dots_1345\0" + "braille_dots_2345\0" + "braille_dots_12345\0" + "braille_dots_6\0" + "braille_dots_16\0" + "braille_dots_26\0" + "braille_dots_126\0" + "braille_dots_36\0" + "braille_dots_136\0" + "braille_dots_236\0" + "braille_dots_1236\0" + "braille_dots_46\0" + "braille_dots_146\0" + "braille_dots_246\0" + "braille_dots_1246\0" + "braille_dots_346\0" + "braille_dots_1346\0" + "braille_dots_2346\0" + "braille_dots_12346\0" + "braille_dots_56\0" + "braille_dots_156\0" + "braille_dots_256\0" + "braille_dots_1256\0" + "braille_dots_356\0" + "braille_dots_1356\0" + "braille_dots_2356\0" + "braille_dots_12356\0" + "braille_dots_456\0" + "braille_dots_1456\0" + "braille_dots_2456\0" + "braille_dots_12456\0" + "braille_dots_3456\0" + "braille_dots_13456\0" + "braille_dots_23456\0" + "braille_dots_123456\0" + "braille_dots_7\0" + "braille_dots_17\0" + "braille_dots_27\0" + "braille_dots_127\0" + "braille_dots_37\0" + "braille_dots_137\0" + "braille_dots_237\0" + "braille_dots_1237\0" + "braille_dots_47\0" + "braille_dots_147\0" + "braille_dots_247\0" + "braille_dots_1247\0" + "braille_dots_347\0" + "braille_dots_1347\0" + "braille_dots_2347\0" + "braille_dots_12347\0" + "braille_dots_57\0" + "braille_dots_157\0" + "braille_dots_257\0" + "braille_dots_1257\0" + "braille_dots_357\0" + "braille_dots_1357\0" + "braille_dots_2357\0" + "braille_dots_12357\0" + "braille_dots_457\0" + "braille_dots_1457\0" + "braille_dots_2457\0" + "braille_dots_12457\0" + "braille_dots_3457\0" + "braille_dots_13457\0" + "braille_dots_23457\0" + "braille_dots_123457\0" + "braille_dots_67\0" + "braille_dots_167\0" + "braille_dots_267\0" + "braille_dots_1267\0" + "braille_dots_367\0" + "braille_dots_1367\0" + "braille_dots_2367\0" + "braille_dots_12367\0" + "braille_dots_467\0" + "braille_dots_1467\0" + "braille_dots_2467\0" + "braille_dots_12467\0" + "braille_dots_3467\0" + "braille_dots_13467\0" + "braille_dots_23467\0" + "braille_dots_123467\0" + "braille_dots_567\0" + "braille_dots_1567\0" + "braille_dots_2567\0" + "braille_dots_12567\0" + "braille_dots_3567\0" + "braille_dots_13567\0" + "braille_dots_23567\0" + "braille_dots_123567\0" + "braille_dots_4567\0" + "braille_dots_14567\0" + "braille_dots_24567\0" + "braille_dots_124567\0" + "braille_dots_34567\0" + "braille_dots_134567\0" + "braille_dots_234567\0" + "braille_dots_1234567\0" + "braille_dots_8\0" + "braille_dots_18\0" + "braille_dots_28\0" + "braille_dots_128\0" + "braille_dots_38\0" + "braille_dots_138\0" + "braille_dots_238\0" + "braille_dots_1238\0" + "braille_dots_48\0" + "braille_dots_148\0" + "braille_dots_248\0" + "braille_dots_1248\0" + "braille_dots_348\0" + "braille_dots_1348\0" + "braille_dots_2348\0" + "braille_dots_12348\0" + "braille_dots_58\0" + "braille_dots_158\0" + "braille_dots_258\0" + "braille_dots_1258\0" + "braille_dots_358\0" + "braille_dots_1358\0" + "braille_dots_2358\0" + "braille_dots_12358\0" + "braille_dots_458\0" + "braille_dots_1458\0" + "braille_dots_2458\0" + "braille_dots_12458\0" + "braille_dots_3458\0" + "braille_dots_13458\0" + "braille_dots_23458\0" + "braille_dots_123458\0" + "braille_dots_68\0" + "braille_dots_168\0" + "braille_dots_268\0" + "braille_dots_1268\0" + "braille_dots_368\0" + "braille_dots_1368\0" + "braille_dots_2368\0" + "braille_dots_12368\0" + "braille_dots_468\0" + "braille_dots_1468\0" + "braille_dots_2468\0" + "braille_dots_12468\0" + "braille_dots_3468\0" + "braille_dots_13468\0" + "braille_dots_23468\0" + "braille_dots_123468\0" + "braille_dots_568\0" + "braille_dots_1568\0" + "braille_dots_2568\0" + "braille_dots_12568\0" + "braille_dots_3568\0" + "braille_dots_13568\0" + "braille_dots_23568\0" + "braille_dots_123568\0" + "braille_dots_4568\0" + "braille_dots_14568\0" + "braille_dots_24568\0" + "braille_dots_124568\0" + "braille_dots_34568\0" + "braille_dots_134568\0" + "braille_dots_234568\0" + "braille_dots_1234568\0" + "braille_dots_78\0" + "braille_dots_178\0" + "braille_dots_278\0" + "braille_dots_1278\0" + "braille_dots_378\0" + "braille_dots_1378\0" + "braille_dots_2378\0" + "braille_dots_12378\0" + "braille_dots_478\0" + "braille_dots_1478\0" + "braille_dots_2478\0" + "braille_dots_12478\0" + "braille_dots_3478\0" + "braille_dots_13478\0" + "braille_dots_23478\0" + "braille_dots_123478\0" + "braille_dots_578\0" + "braille_dots_1578\0" + "braille_dots_2578\0" + "braille_dots_12578\0" + "braille_dots_3578\0" + "braille_dots_13578\0" + "braille_dots_23578\0" + "braille_dots_123578\0" + "braille_dots_4578\0" + "braille_dots_14578\0" + "braille_dots_24578\0" + "braille_dots_124578\0" + "braille_dots_34578\0" + "braille_dots_134578\0" + "braille_dots_234578\0" + "braille_dots_1234578\0" + "braille_dots_678\0" + "braille_dots_1678\0" + "braille_dots_2678\0" + "braille_dots_12678\0" + "braille_dots_3678\0" + "braille_dots_13678\0" + "braille_dots_23678\0" + "braille_dots_123678\0" + "braille_dots_4678\0" + "braille_dots_14678\0" + "braille_dots_24678\0" + "braille_dots_124678\0" + "braille_dots_34678\0" + "braille_dots_134678\0" + "braille_dots_234678\0" + "braille_dots_1234678\0" + "braille_dots_5678\0" + "braille_dots_15678\0" + "braille_dots_25678\0" + "braille_dots_125678\0" + "braille_dots_35678\0" + "braille_dots_135678\0" + "braille_dots_235678\0" + "braille_dots_1235678\0" + "braille_dots_45678\0" + "braille_dots_145678\0" + "braille_dots_245678\0" + "braille_dots_1245678\0" + "braille_dots_345678\0" + "braille_dots_1345678\0" + "braille_dots_2345678\0" + "braille_dots_12345678\0" + "Switch_VT_1\0" + "Switch_VT_2\0" + "Switch_VT_3\0" + "Switch_VT_4\0" + "Switch_VT_5\0" + "Switch_VT_6\0" + "Switch_VT_7\0" + "Switch_VT_8\0" + "Switch_VT_9\0" + "Switch_VT_10\0" + "Switch_VT_11\0" + "Switch_VT_12\0" + "Ungrab\0" + "ClearGrab\0" + "Next_VMode\0" + "Prev_VMode\0" + "LogWindowTree\0" + "LogGrabInfo\0" + "ModeLock\0" + "MonBrightnessUp\0" + "MonBrightnessDown\0" + "KbdLightOnOff\0" + "KbdBrightnessUp\0" + "KbdBrightnessDown\0" + "Standby\0" + "AudioLowerVolume\0" + "AudioMute\0" + "AudioRaiseVolume\0" + "AudioPlay\0" + "AudioStop\0" + "AudioPrev\0" + "AudioNext\0" + "HomePage\0" + "Mail\0" + "Start\0" + "Search\0" + "AudioRecord\0" + "Calculator\0" + "Memo\0" + "ToDoList\0" + "Calendar\0" + "PowerDown\0" + "ContrastAdjust\0" + "RockerUp\0" + "RockerDown\0" + "RockerEnter\0" + "Back\0" + "Forward\0" + "Stop\0" + "Refresh\0" + "PowerOff\0" + "WakeUp\0" + "Eject\0" + "ScreenSaver\0" + "WWW\0" + "Sleep\0" + "Favorites\0" + "AudioPause\0" + "AudioMedia\0" + "MyComputer\0" + "VendorHome\0" + "LightBulb\0" + "Shop\0" + "History\0" + "OpenURL\0" + "AddFavorite\0" + "HotLinks\0" + "BrightnessAdjust\0" + "Finance\0" + "Community\0" + "AudioRewind\0" + "BackForward\0" + "Launch0\0" + "Launch1\0" + "Launch2\0" + "Launch3\0" + "Launch4\0" + "Launch5\0" + "Launch6\0" + "Launch7\0" + "Launch8\0" + "Launch9\0" + "LaunchA\0" + "LaunchB\0" + "LaunchC\0" + "LaunchD\0" + "LaunchE\0" + "LaunchF\0" + "ApplicationLeft\0" + "ApplicationRight\0" + "Book\0" + "CD\0" + "WindowClear\0" + "Close\0" + "Copy\0" + "Cut\0" + "Display\0" + "DOS\0" + "Documents\0" + "Excel\0" + "Explorer\0" + "Game\0" + "Go\0" + "iTouch\0" + "LogOff\0" + "Market\0" + "Meeting\0" + "MenuKB\0" + "MenuPB\0" + "MySites\0" + "New\0" + "News\0" + "OfficeHome\0" + "Open\0" + "Option\0" + "Paste\0" + "Phone\0" + "Reply\0" + "Reload\0" + "RotateWindows\0" + "RotationPB\0" + "RotationKB\0" + "Save\0" + "ScrollUp\0" + "ScrollDown\0" + "ScrollClick\0" + "Send\0" + "Spell\0" + "SplitScreen\0" + "Support\0" + "TaskPane\0" + "Terminal\0" + "Tools\0" + "Travel\0" + "UserPB\0" + "User1KB\0" + "User2KB\0" + "Video\0" + "WheelButton\0" + "Word\0" + "Xfer\0" + "ZoomIn\0" + "ZoomOut\0" + "Away\0" + "Messenger\0" + "WebCam\0" + "MailForward\0" + "Pictures\0" + "Music\0" + "Battery\0" + "Bluetooth\0" + "WLAN\0" + "UWB\0" + "AudioForward\0" + "AudioRepeat\0" + "AudioRandomPlay\0" + "Subtitle\0" + "AudioCycleTrack\0" + "CycleAngle\0" + "FrameBack\0" + "FrameForward\0" + "Time\0" + "SelectButton\0" + "View\0" + "TopMenu\0" + "Red\0" + "Green\0" + "Yellow\0" + "Blue\0" + "Suspend\0" + "Hibernate\0" + "TouchpadToggle\0" + "TouchpadOn\0" + "TouchpadOff\0" + "AudioMicMute\0" "VoidSymbol\0"; typedef struct { @@ -1473,1157 +2437,2121 @@ static const gdk_key gdk_keys_by_keyval[] = { { 0x0000d6, 921 }, { 0x0000d7, 932 }, { 0x0000d8, 941 }, - { 0x0000d9, 950 }, - { 0x0000da, 957 }, - { 0x0000db, 964 }, - { 0x0000dc, 976 }, - { 0x0000dd, 987 }, - { 0x0000de, 994 }, - { 0x0000de, 1000 }, - { 0x0000df, 1006 }, - { 0x0000e0, 1013 }, - { 0x0000e1, 1020 }, - { 0x0000e2, 1027 }, - { 0x0000e3, 1039 }, - { 0x0000e4, 1046 }, - { 0x0000e5, 1057 }, - { 0x0000e6, 1063 }, - { 0x0000e7, 1066 }, - { 0x0000e8, 1075 }, - { 0x0000e9, 1082 }, - { 0x0000ea, 1089 }, - { 0x0000eb, 1101 }, - { 0x0000ec, 1112 }, - { 0x0000ed, 1119 }, - { 0x0000ee, 1126 }, - { 0x0000ef, 1138 }, - { 0x0000f0, 1149 }, - { 0x0000f1, 1153 }, - { 0x0000f2, 1160 }, - { 0x0000f3, 1167 }, - { 0x0000f4, 1174 }, - { 0x0000f5, 1186 }, - { 0x0000f6, 1193 }, - { 0x0000f7, 1204 }, - { 0x0000f8, 1213 }, - { 0x0000f9, 1220 }, - { 0x0000fa, 1227 }, - { 0x0000fb, 1234 }, - { 0x0000fc, 1246 }, - { 0x0000fd, 1257 }, - { 0x0000fe, 1264 }, - { 0x0000ff, 1270 }, - { 0x0001a1, 1281 }, - { 0x0001a2, 1289 }, - { 0x0001a3, 1295 }, - { 0x0001a5, 1303 }, - { 0x0001a6, 1310 }, - { 0x0001a9, 1317 }, - { 0x0001aa, 1324 }, - { 0x0001ab, 1333 }, - { 0x0001ac, 1340 }, - { 0x0001ae, 1347 }, - { 0x0001af, 1354 }, - { 0x0001b1, 1364 }, - { 0x0001b2, 1372 }, - { 0x0001b3, 1379 }, - { 0x0001b5, 1387 }, - { 0x0001b6, 1394 }, - { 0x0001b7, 1401 }, - { 0x0001b9, 1407 }, - { 0x0001ba, 1414 }, - { 0x0001bb, 1423 }, - { 0x0001bc, 1430 }, - { 0x0001bd, 1437 }, - { 0x0001be, 1449 }, - { 0x0001bf, 1456 }, - { 0x0001c0, 1466 }, - { 0x0001c3, 1473 }, - { 0x0001c5, 1480 }, - { 0x0001c6, 1487 }, - { 0x0001c8, 1494 }, - { 0x0001ca, 1501 }, - { 0x0001cc, 1509 }, - { 0x0001cf, 1516 }, - { 0x0001d0, 1523 }, - { 0x0001d1, 1531 }, - { 0x0001d2, 1538 }, - { 0x0001d5, 1545 }, - { 0x0001d8, 1558 }, - { 0x0001d9, 1565 }, - { 0x0001db, 1571 }, - { 0x0001de, 1584 }, - { 0x0001e0, 1593 }, - { 0x0001e3, 1600 }, - { 0x0001e5, 1607 }, - { 0x0001e6, 1614 }, - { 0x0001e8, 1621 }, - { 0x0001ea, 1628 }, - { 0x0001ec, 1636 }, - { 0x0001ef, 1643 }, - { 0x0001f0, 1650 }, - { 0x0001f1, 1658 }, - { 0x0001f2, 1665 }, - { 0x0001f5, 1672 }, - { 0x0001f8, 1685 }, - { 0x0001f9, 1692 }, - { 0x0001fb, 1698 }, - { 0x0001fe, 1711 }, - { 0x0001ff, 1720 }, - { 0x0002a1, 1729 }, - { 0x0002a6, 1737 }, - { 0x0002a9, 1749 }, - { 0x0002ab, 1759 }, - { 0x0002ac, 1766 }, - { 0x0002b1, 1778 }, - { 0x0002b6, 1786 }, - { 0x0002b9, 1798 }, - { 0x0002bb, 1807 }, - { 0x0002bc, 1814 }, - { 0x0002c5, 1826 }, - { 0x0002c6, 1836 }, - { 0x0002d5, 1848 }, - { 0x0002d8, 1858 }, - { 0x0002dd, 1870 }, - { 0x0002de, 1877 }, - { 0x0002e5, 1889 }, - { 0x0002e6, 1899 }, - { 0x0002f5, 1911 }, - { 0x0002f8, 1921 }, - { 0x0002fd, 1933 }, - { 0x0002fe, 1940 }, - { 0x0003a2, 1952 }, - { 0x0003a2, 1958 }, - { 0x0003a3, 1962 }, - { 0x0003a5, 1971 }, - { 0x0003a6, 1978 }, - { 0x0003aa, 1987 }, - { 0x0003ab, 1995 }, - { 0x0003ac, 2004 }, - { 0x0003b3, 2011 }, - { 0x0003b5, 2020 }, - { 0x0003b6, 2027 }, - { 0x0003ba, 2036 }, - { 0x0003bb, 2044 }, - { 0x0003bc, 2053 }, - { 0x0003bd, 2060 }, - { 0x0003bf, 2064 }, - { 0x0003c0, 2068 }, - { 0x0003c7, 2076 }, - { 0x0003cc, 2084 }, - { 0x0003cf, 2094 }, - { 0x0003d1, 2102 }, - { 0x0003d2, 2111 }, - { 0x0003d3, 2119 }, - { 0x0003d9, 2128 }, - { 0x0003dd, 2136 }, - { 0x0003de, 2143 }, - { 0x0003e0, 2151 }, - { 0x0003e7, 2159 }, - { 0x0003ec, 2167 }, - { 0x0003ef, 2177 }, - { 0x0003f1, 2185 }, - { 0x0003f2, 2194 }, - { 0x0003f3, 2202 }, - { 0x0003f9, 2211 }, - { 0x0003fd, 2219 }, - { 0x0003fe, 2226 }, - { 0x00047e, 2234 }, - { 0x0004a1, 2243 }, - { 0x0004a2, 2257 }, - { 0x0004a3, 2277 }, - { 0x0004a4, 2297 }, - { 0x0004a5, 2308 }, - { 0x0004a5, 2325 }, - { 0x0004a6, 2340 }, - { 0x0004a7, 2348 }, - { 0x0004a8, 2355 }, - { 0x0004a9, 2362 }, - { 0x0004aa, 2369 }, - { 0x0004ab, 2376 }, - { 0x0004ac, 2383 }, - { 0x0004ad, 2391 }, - { 0x0004ae, 2399 }, - { 0x0004af, 2407 }, - { 0x0004af, 2416 }, - { 0x0004b0, 2424 }, - { 0x0004b1, 2439 }, - { 0x0004b2, 2446 }, - { 0x0004b3, 2453 }, - { 0x0004b4, 2460 }, - { 0x0004b5, 2467 }, - { 0x0004b6, 2474 }, - { 0x0004b7, 2482 }, - { 0x0004b8, 2490 }, - { 0x0004b9, 2498 }, - { 0x0004ba, 2506 }, - { 0x0004bb, 2514 }, - { 0x0004bc, 2522 }, - { 0x0004bd, 2531 }, - { 0x0004be, 2539 }, - { 0x0004bf, 2547 }, - { 0x0004c0, 2555 }, - { 0x0004c1, 2563 }, - { 0x0004c1, 2572 }, - { 0x0004c2, 2580 }, - { 0x0004c2, 2589 }, - { 0x0004c3, 2597 }, - { 0x0004c4, 2605 }, - { 0x0004c5, 2613 }, - { 0x0004c6, 2621 }, - { 0x0004c7, 2629 }, - { 0x0004c8, 2637 }, - { 0x0004c9, 2645 }, - { 0x0004ca, 2653 }, - { 0x0004cb, 2661 }, - { 0x0004cc, 2669 }, - { 0x0004cc, 2677 }, - { 0x0004cd, 2685 }, - { 0x0004ce, 2693 }, - { 0x0004cf, 2701 }, - { 0x0004d0, 2709 }, - { 0x0004d1, 2717 }, - { 0x0004d2, 2725 }, - { 0x0004d3, 2733 }, - { 0x0004d4, 2741 }, - { 0x0004d5, 2749 }, - { 0x0004d6, 2757 }, - { 0x0004d7, 2765 }, - { 0x0004d8, 2773 }, - { 0x0004d9, 2781 }, - { 0x0004da, 2789 }, - { 0x0004db, 2797 }, - { 0x0004dc, 2805 }, - { 0x0004dd, 2813 }, - { 0x0004de, 2820 }, - { 0x0004df, 2832 }, - { 0x0005ac, 2848 }, - { 0x0005bb, 2861 }, - { 0x0005bf, 2878 }, - { 0x0005c1, 2899 }, - { 0x0005c2, 2912 }, - { 0x0005c3, 2931 }, - { 0x0005c4, 2950 }, - { 0x0005c5, 2968 }, - { 0x0005c6, 2990 }, - { 0x0005c7, 3008 }, - { 0x0005c8, 3020 }, - { 0x0005c9, 3031 }, - { 0x0005ca, 3049 }, - { 0x0005cb, 3060 }, - { 0x0005cc, 3072 }, - { 0x0005cd, 3084 }, - { 0x0005ce, 3095 }, - { 0x0005cf, 3107 }, - { 0x0005d0, 3118 }, - { 0x0005d1, 3130 }, - { 0x0005d2, 3140 }, - { 0x0005d3, 3152 }, - { 0x0005d4, 3164 }, - { 0x0005d5, 3177 }, - { 0x0005d6, 3188 }, - { 0x0005d7, 3199 }, - { 0x0005d8, 3210 }, - { 0x0005d9, 3221 }, - { 0x0005da, 3232 }, - { 0x0005e0, 3245 }, - { 0x0005e1, 3260 }, - { 0x0005e2, 3271 }, - { 0x0005e3, 3282 }, - { 0x0005e4, 3293 }, - { 0x0005e5, 3304 }, - { 0x0005e6, 3316 }, - { 0x0005e7, 3328 }, - { 0x0005e7, 3338 }, - { 0x0005e8, 3349 }, - { 0x0005e9, 3360 }, - { 0x0005ea, 3379 }, - { 0x0005eb, 3390 }, - { 0x0005ec, 3406 }, - { 0x0005ed, 3422 }, - { 0x0005ee, 3438 }, - { 0x0005ef, 3451 }, - { 0x0005f0, 3464 }, - { 0x0005f1, 3477 }, - { 0x0005f2, 3491 }, - { 0x0006a1, 3504 }, - { 0x0006a2, 3516 }, - { 0x0006a3, 3530 }, - { 0x0006a4, 3542 }, - { 0x0006a4, 3555 }, - { 0x0006a5, 3567 }, - { 0x0006a6, 3581 }, - { 0x0006a6, 3593 }, - { 0x0006a7, 3604 }, - { 0x0006a7, 3617 }, - { 0x0006a8, 3629 }, - { 0x0006a8, 3641 }, - { 0x0006a9, 3652 }, - { 0x0006a9, 3665 }, - { 0x0006aa, 3677 }, - { 0x0006aa, 3690 }, - { 0x0006ab, 3702 }, - { 0x0006ac, 3715 }, - { 0x0006ae, 3729 }, - { 0x0006af, 3749 }, - { 0x0006af, 3763 }, - { 0x0006b0, 3775 }, - { 0x0006b1, 3786 }, - { 0x0006b2, 3798 }, - { 0x0006b3, 3812 }, - { 0x0006b4, 3824 }, - { 0x0006b4, 3837 }, - { 0x0006b5, 3849 }, - { 0x0006b6, 3863 }, - { 0x0006b6, 3875 }, - { 0x0006b7, 3886 }, - { 0x0006b7, 3899 }, - { 0x0006b8, 3911 }, - { 0x0006b8, 3923 }, - { 0x0006b9, 3934 }, - { 0x0006b9, 3947 }, - { 0x0006ba, 3959 }, - { 0x0006ba, 3972 }, - { 0x0006bb, 3984 }, - { 0x0006bc, 3997 }, - { 0x0006be, 4011 }, - { 0x0006bf, 4031 }, - { 0x0006bf, 4045 }, - { 0x0006c0, 4057 }, - { 0x0006c1, 4069 }, - { 0x0006c2, 4080 }, - { 0x0006c3, 4092 }, - { 0x0006c4, 4105 }, - { 0x0006c5, 4117 }, - { 0x0006c6, 4129 }, - { 0x0006c7, 4141 }, - { 0x0006c8, 4154 }, - { 0x0006c9, 4166 }, - { 0x0006ca, 4177 }, - { 0x0006cb, 4193 }, - { 0x0006cc, 4205 }, - { 0x0006cd, 4217 }, - { 0x0006ce, 4229 }, - { 0x0006cf, 4241 }, - { 0x0006d0, 4252 }, - { 0x0006d1, 4264 }, - { 0x0006d2, 4276 }, - { 0x0006d3, 4288 }, - { 0x0006d4, 4300 }, - { 0x0006d5, 4312 }, - { 0x0006d6, 4323 }, - { 0x0006d7, 4336 }, - { 0x0006d8, 4348 }, - { 0x0006d9, 4366 }, - { 0x0006da, 4380 }, - { 0x0006db, 4392 }, - { 0x0006dc, 4405 }, - { 0x0006dd, 4416 }, - { 0x0006de, 4431 }, - { 0x0006df, 4444 }, - { 0x0006e0, 4462 }, - { 0x0006e1, 4474 }, - { 0x0006e2, 4485 }, - { 0x0006e3, 4497 }, - { 0x0006e4, 4510 }, - { 0x0006e5, 4522 }, - { 0x0006e6, 4534 }, - { 0x0006e7, 4546 }, - { 0x0006e8, 4559 }, - { 0x0006e9, 4571 }, - { 0x0006ea, 4582 }, - { 0x0006eb, 4598 }, - { 0x0006ec, 4610 }, - { 0x0006ed, 4622 }, - { 0x0006ee, 4634 }, - { 0x0006ef, 4646 }, - { 0x0006f0, 4657 }, - { 0x0006f1, 4669 }, - { 0x0006f2, 4681 }, - { 0x0006f3, 4693 }, - { 0x0006f4, 4705 }, - { 0x0006f5, 4717 }, - { 0x0006f6, 4728 }, - { 0x0006f7, 4741 }, - { 0x0006f8, 4753 }, - { 0x0006f9, 4771 }, - { 0x0006fa, 4785 }, - { 0x0006fb, 4797 }, - { 0x0006fc, 4810 }, - { 0x0006fd, 4821 }, - { 0x0006fe, 4836 }, - { 0x0006ff, 4849 }, - { 0x0007a1, 4867 }, - { 0x0007a2, 4885 }, - { 0x0007a3, 4905 }, - { 0x0007a4, 4921 }, - { 0x0007a5, 4938 }, - { 0x0007a5, 4957 }, - { 0x0007a7, 4977 }, - { 0x0007a8, 4997 }, - { 0x0007a9, 5017 }, - { 0x0007ab, 5039 }, - { 0x0007ae, 5057 }, - { 0x0007af, 5078 }, - { 0x0007b1, 5093 }, - { 0x0007b2, 5111 }, - { 0x0007b3, 5131 }, - { 0x0007b4, 5147 }, - { 0x0007b5, 5164 }, - { 0x0007b6, 5183 }, - { 0x0007b7, 5208 }, - { 0x0007b8, 5228 }, - { 0x0007b9, 5248 }, - { 0x0007ba, 5270 }, - { 0x0007bb, 5298 }, - { 0x0007c1, 5316 }, - { 0x0007c2, 5328 }, - { 0x0007c3, 5339 }, - { 0x0007c4, 5351 }, - { 0x0007c5, 5363 }, - { 0x0007c6, 5377 }, - { 0x0007c7, 5388 }, - { 0x0007c8, 5398 }, - { 0x0007c9, 5410 }, - { 0x0007ca, 5421 }, - { 0x0007cb, 5433 }, - { 0x0007cb, 5446 }, - { 0x0007cc, 5458 }, - { 0x0007cd, 5467 }, - { 0x0007ce, 5476 }, - { 0x0007cf, 5485 }, - { 0x0007d0, 5499 }, - { 0x0007d1, 5508 }, - { 0x0007d2, 5518 }, - { 0x0007d4, 5530 }, - { 0x0007d5, 5540 }, - { 0x0007d6, 5554 }, - { 0x0007d7, 5564 }, - { 0x0007d8, 5574 }, - { 0x0007d9, 5584 }, - { 0x0007e1, 5596 }, - { 0x0007e2, 5608 }, - { 0x0007e3, 5619 }, - { 0x0007e4, 5631 }, - { 0x0007e5, 5643 }, - { 0x0007e6, 5657 }, - { 0x0007e7, 5668 }, - { 0x0007e8, 5678 }, - { 0x0007e9, 5690 }, - { 0x0007ea, 5701 }, - { 0x0007eb, 5713 }, - { 0x0007eb, 5726 }, - { 0x0007ec, 5738 }, - { 0x0007ed, 5747 }, - { 0x0007ee, 5756 }, - { 0x0007ef, 5765 }, - { 0x0007f0, 5779 }, - { 0x0007f1, 5788 }, - { 0x0007f2, 5798 }, - { 0x0007f3, 5810 }, - { 0x0007f4, 5832 }, - { 0x0007f5, 5842 }, - { 0x0007f6, 5856 }, - { 0x0007f7, 5866 }, - { 0x0007f8, 5876 }, - { 0x0007f9, 5886 }, - { 0x0008a1, 5898 }, - { 0x0008a2, 5910 }, - { 0x0008a3, 5925 }, - { 0x0008a4, 5940 }, - { 0x0008a5, 5952 }, - { 0x0008a6, 5964 }, - { 0x0008a7, 5978 }, - { 0x0008a8, 5995 }, - { 0x0008a9, 6012 }, - { 0x0008aa, 6030 }, - { 0x0008ab, 6048 }, - { 0x0008ac, 6062 }, - { 0x0008ad, 6076 }, - { 0x0008ae, 6091 }, - { 0x0008af, 6106 }, - { 0x0008b0, 6127 }, - { 0x0008b1, 6149 }, - { 0x0008b2, 6166 }, - { 0x0008b3, 6183 }, - { 0x0008b4, 6209 }, - { 0x0008b5, 6235 }, - { 0x0008b6, 6253 }, - { 0x0008b7, 6271 }, - { 0x0008bc, 6292 }, - { 0x0008bd, 6306 }, - { 0x0008be, 6315 }, - { 0x0008bf, 6332 }, - { 0x0008c0, 6341 }, - { 0x0008c1, 6351 }, - { 0x0008c2, 6361 }, - { 0x0008c5, 6370 }, - { 0x0008c8, 6376 }, - { 0x0008c9, 6388 }, - { 0x0008cd, 6401 }, - { 0x0008ce, 6410 }, - { 0x0008cf, 6418 }, - { 0x0008d6, 6428 }, - { 0x0008da, 6436 }, - { 0x0008db, 6447 }, - { 0x0008dc, 6456 }, - { 0x0008dd, 6469 }, - { 0x0008de, 6475 }, - { 0x0008df, 6486 }, - { 0x0008ef, 6496 }, - { 0x0008f6, 6514 }, - { 0x0008fb, 6523 }, - { 0x0008fc, 6533 }, - { 0x0008fd, 6541 }, - { 0x0008fe, 6552 }, - { 0x0009df, 6562 }, - { 0x0009e0, 6568 }, - { 0x0009e1, 6581 }, - { 0x0009e2, 6594 }, - { 0x0009e3, 6597 }, - { 0x0009e4, 6600 }, - { 0x0009e5, 6603 }, - { 0x0009e8, 6606 }, - { 0x0009e9, 6609 }, - { 0x0009ea, 6612 }, - { 0x0009eb, 6627 }, - { 0x0009ec, 6641 }, - { 0x0009ed, 6654 }, - { 0x0009ee, 6668 }, - { 0x0009ef, 6682 }, - { 0x0009f0, 6697 }, - { 0x0009f1, 6712 }, - { 0x0009f2, 6727 }, - { 0x0009f3, 6742 }, - { 0x0009f4, 6757 }, - { 0x0009f5, 6763 }, - { 0x0009f6, 6770 }, - { 0x0009f7, 6775 }, - { 0x0009f8, 6780 }, - { 0x000aa1, 6788 }, - { 0x000aa2, 6796 }, - { 0x000aa3, 6804 }, - { 0x000aa4, 6813 }, - { 0x000aa5, 6822 }, - { 0x000aa6, 6833 }, - { 0x000aa7, 6844 }, - { 0x000aa8, 6854 }, - { 0x000aa9, 6864 }, - { 0x000aaa, 6871 }, - { 0x000aac, 6878 }, - { 0x000aae, 6890 }, - { 0x000aaf, 6899 }, - { 0x000ab0, 6915 }, - { 0x000ab1, 6924 }, - { 0x000ab2, 6934 }, - { 0x000ab3, 6943 }, - { 0x000ab4, 6953 }, - { 0x000ab5, 6965 }, - { 0x000ab6, 6976 }, - { 0x000ab7, 6985 }, - { 0x000ab8, 6996 }, - { 0x000abb, 7003 }, - { 0x000abc, 7011 }, - { 0x000abd, 7028 }, - { 0x000abe, 7041 }, - { 0x000abf, 7059 }, - { 0x000ac3, 7066 }, - { 0x000ac4, 7076 }, - { 0x000ac5, 7089 }, - { 0x000ac6, 7101 }, - { 0x000ac9, 7114 }, - { 0x000aca, 7124 }, - { 0x000acb, 7138 }, - { 0x000acc, 7156 }, - { 0x000acd, 7173 }, - { 0x000ace, 7191 }, - { 0x000acf, 7204 }, - { 0x000ad0, 7220 }, - { 0x000ad1, 7240 }, - { 0x000ad2, 7261 }, - { 0x000ad3, 7281 }, - { 0x000ad4, 7302 }, - { 0x000ad6, 7315 }, - { 0x000ad7, 7323 }, - { 0x000ad9, 7331 }, - { 0x000ada, 7342 }, - { 0x000adb, 7351 }, - { 0x000adc, 7368 }, - { 0x000add, 7388 }, - { 0x000ade, 7409 }, - { 0x000adf, 7424 }, - { 0x000ae0, 7437 }, - { 0x000ae1, 7454 }, - { 0x000ae2, 7473 }, - { 0x000ae3, 7488 }, - { 0x000ae4, 7504 }, - { 0x000ae5, 7522 }, - { 0x000ae6, 7531 }, - { 0x000ae7, 7550 }, - { 0x000ae8, 7567 }, - { 0x000ae9, 7585 }, - { 0x000aea, 7605 }, - { 0x000aeb, 7617 }, - { 0x000aec, 7630 }, - { 0x000aed, 7635 }, - { 0x000aee, 7643 }, - { 0x000af0, 7649 }, - { 0x000af1, 7662 }, - { 0x000af2, 7669 }, - { 0x000af3, 7682 }, - { 0x000af4, 7692 }, - { 0x000af5, 7704 }, - { 0x000af6, 7717 }, - { 0x000af7, 7729 }, - { 0x000af8, 7740 }, - { 0x000af9, 7753 }, - { 0x000afa, 7763 }, - { 0x000afb, 7781 }, - { 0x000afc, 7801 }, - { 0x000afd, 7807 }, - { 0x000afe, 7826 }, - { 0x000aff, 7845 }, - { 0x000ba3, 7852 }, - { 0x000ba6, 7862 }, - { 0x000ba8, 7873 }, - { 0x000ba9, 7883 }, - { 0x000bc0, 7891 }, - { 0x000bc2, 7899 }, - { 0x000bc3, 7908 }, - { 0x000bc4, 7915 }, - { 0x000bc6, 7925 }, - { 0x000bca, 7934 }, - { 0x000bcc, 7938 }, - { 0x000bce, 7943 }, - { 0x000bcf, 7950 }, - { 0x000bd3, 7957 }, - { 0x000bd6, 7965 }, - { 0x000bd8, 7974 }, - { 0x000bda, 7984 }, - { 0x000bdc, 7993 }, - { 0x000bfc, 8002 }, - { 0x000cdf, 8012 }, - { 0x000ce0, 8033 }, - { 0x000ce1, 8046 }, - { 0x000ce1, 8057 }, - { 0x000ce2, 8069 }, - { 0x000ce2, 8082 }, - { 0x000ce3, 8096 }, - { 0x000ce3, 8109 }, - { 0x000ce4, 8123 }, - { 0x000ce5, 8133 }, - { 0x000ce6, 8144 }, - { 0x000ce6, 8156 }, - { 0x000ce7, 8169 }, - { 0x000ce7, 8181 }, - { 0x000ce8, 8192 }, - { 0x000ce8, 8203 }, - { 0x000ce9, 8215 }, - { 0x000cea, 8226 }, - { 0x000ceb, 8243 }, - { 0x000cec, 8255 }, - { 0x000ced, 8268 }, - { 0x000cee, 8284 }, - { 0x000cef, 8295 }, - { 0x000cf0, 8311 }, - { 0x000cf1, 8322 }, - { 0x000cf1, 8336 }, - { 0x000cf2, 8350 }, - { 0x000cf3, 8362 }, - { 0x000cf4, 8377 }, - { 0x000cf5, 8387 }, - { 0x000cf5, 8404 }, - { 0x000cf6, 8421 }, - { 0x000cf6, 8433 }, - { 0x000cf7, 8445 }, - { 0x000cf7, 8456 }, - { 0x000cf8, 8468 }, - { 0x000cf9, 8480 }, - { 0x000cfa, 8492 }, - { 0x000cfa, 8503 }, - { 0x000da1, 8514 }, - { 0x000da2, 8525 }, - { 0x000da3, 8538 }, - { 0x000da4, 8552 }, - { 0x000da5, 8566 }, - { 0x000da6, 8579 }, - { 0x000da7, 8595 }, - { 0x000da8, 8607 }, - { 0x000da9, 8620 }, - { 0x000daa, 8634 }, - { 0x000dab, 8648 }, - { 0x000dac, 8658 }, - { 0x000dad, 8671 }, - { 0x000dae, 8683 }, - { 0x000daf, 8696 }, - { 0x000db0, 8709 }, - { 0x000db1, 8722 }, - { 0x000db2, 8741 }, - { 0x000db3, 8757 }, - { 0x000db4, 8768 }, - { 0x000db5, 8779 }, - { 0x000db6, 8790 }, - { 0x000db7, 8804 }, - { 0x000db8, 8819 }, - { 0x000db9, 8833 }, - { 0x000dba, 8843 }, - { 0x000dbb, 8857 }, - { 0x000dbc, 8868 }, - { 0x000dbd, 8882 }, - { 0x000dbe, 8892 }, - { 0x000dbf, 8905 }, - { 0x000dc0, 8916 }, - { 0x000dc1, 8932 }, - { 0x000dc2, 8942 }, - { 0x000dc3, 8953 }, - { 0x000dc4, 8964 }, - { 0x000dc5, 8972 }, - { 0x000dc6, 8984 }, - { 0x000dc7, 8992 }, - { 0x000dc8, 9004 }, - { 0x000dc9, 9016 }, - { 0x000dca, 9028 }, - { 0x000dcb, 9039 }, - { 0x000dcc, 9050 }, - { 0x000dcd, 9063 }, - { 0x000dce, 9073 }, - { 0x000dcf, 9087 }, - { 0x000dd0, 9102 }, - { 0x000dd1, 9113 }, - { 0x000dd2, 9129 }, - { 0x000dd3, 9141 }, - { 0x000dd4, 9153 }, - { 0x000dd5, 9164 }, - { 0x000dd6, 9176 }, - { 0x000dd7, 9188 }, - { 0x000dd8, 9201 }, - { 0x000dd9, 9212 }, - { 0x000dda, 9224 }, - { 0x000dde, 9237 }, - { 0x000ddf, 9260 }, - { 0x000de0, 9270 }, - { 0x000de1, 9281 }, - { 0x000de2, 9293 }, - { 0x000de3, 9304 }, - { 0x000de4, 9323 }, - { 0x000de5, 9343 }, - { 0x000de6, 9360 }, - { 0x000de7, 9374 }, - { 0x000de8, 9389 }, - { 0x000de9, 9400 }, - { 0x000dea, 9412 }, - { 0x000deb, 9424 }, - { 0x000dec, 9441 }, - { 0x000ded, 9458 }, - { 0x000df0, 9472 }, - { 0x000df1, 9484 }, - { 0x000df2, 9497 }, - { 0x000df3, 9510 }, - { 0x000df4, 9522 }, - { 0x000df5, 9533 }, - { 0x000df6, 9544 }, - { 0x000df7, 9556 }, - { 0x000df8, 9569 }, - { 0x000df9, 9582 }, - { 0x000ea1, 9594 }, - { 0x000ea2, 9608 }, - { 0x000ea3, 9627 }, - { 0x000ea4, 9645 }, - { 0x000ea5, 9658 }, - { 0x000ea6, 9676 }, - { 0x000ea7, 9694 }, - { 0x000ea8, 9708 }, - { 0x000ea9, 9727 }, - { 0x000eaa, 9740 }, - { 0x000eab, 9759 }, - { 0x000eac, 9777 }, - { 0x000ead, 9795 }, - { 0x000eae, 9812 }, - { 0x000eaf, 9830 }, - { 0x000eb0, 9849 }, - { 0x000eb1, 9867 }, - { 0x000eb2, 9880 }, - { 0x000eb3, 9893 }, - { 0x000eb4, 9911 }, - { 0x000eb5, 9928 }, - { 0x000eb6, 9940 }, - { 0x000eb7, 9957 }, - { 0x000eb8, 9970 }, - { 0x000eb9, 9983 }, - { 0x000eba, 10001 }, - { 0x000ebb, 10014 }, - { 0x000ebc, 10028 }, - { 0x000ebd, 10041 }, - { 0x000ebe, 10055 }, - { 0x000ebf, 10068 }, - { 0x000ec0, 10077 }, - { 0x000ec1, 10087 }, - { 0x000ec2, 10097 }, - { 0x000ec3, 10108 }, - { 0x000ec4, 10118 }, - { 0x000ec5, 10127 }, - { 0x000ec6, 10138 }, - { 0x000ec7, 10148 }, - { 0x000ec8, 10157 }, - { 0x000ec9, 10167 }, - { 0x000eca, 10178 }, - { 0x000ecb, 10188 }, - { 0x000ecc, 10198 }, - { 0x000ecd, 10207 }, - { 0x000ece, 10218 }, - { 0x000ecf, 10228 }, - { 0x000ed0, 10238 }, - { 0x000ed1, 10248 }, - { 0x000ed2, 10258 }, - { 0x000ed3, 10268 }, - { 0x000ed4, 10277 }, - { 0x000ed5, 10293 }, - { 0x000ed6, 10314 }, - { 0x000ed7, 10334 }, - { 0x000ed8, 10349 }, - { 0x000ed9, 10369 }, - { 0x000eda, 10389 }, - { 0x000edb, 10405 }, - { 0x000edc, 10420 }, - { 0x000edd, 10441 }, - { 0x000ede, 10461 }, - { 0x000edf, 10481 }, - { 0x000ee0, 10500 }, - { 0x000ee1, 10520 }, - { 0x000ee2, 10541 }, - { 0x000ee3, 10561 }, - { 0x000ee4, 10576 }, - { 0x000ee5, 10591 }, - { 0x000ee6, 10610 }, - { 0x000ee7, 10624 }, - { 0x000ee8, 10643 }, - { 0x000ee9, 10658 }, - { 0x000eea, 10673 }, - { 0x000eeb, 10688 }, - { 0x000eec, 10704 }, - { 0x000eed, 10719 }, - { 0x000eee, 10735 }, - { 0x000eef, 10750 }, - { 0x000ef0, 10774 }, - { 0x000ef1, 10799 }, - { 0x000ef2, 10824 }, - { 0x000ef3, 10839 }, - { 0x000ef4, 10864 }, - { 0x000ef5, 10890 }, - { 0x000ef6, 10909 }, - { 0x000ef7, 10922 }, - { 0x000ef8, 10936 }, - { 0x000ef9, 10953 }, - { 0x000efa, 10980 }, - { 0x000eff, 11001 }, - { 0x0013bc, 11012 }, - { 0x0013bd, 11015 }, - { 0x0013be, 11018 }, - { 0x0020a0, 11029 }, - { 0x0020a1, 11037 }, - { 0x0020a2, 11047 }, - { 0x0020a3, 11060 }, - { 0x0020a4, 11071 }, - { 0x0020a5, 11080 }, - { 0x0020a6, 11089 }, - { 0x0020a7, 11099 }, - { 0x0020a8, 11110 }, - { 0x0020a9, 11120 }, - { 0x0020aa, 11128 }, - { 0x0020ab, 11142 }, - { 0x0020ac, 11151 }, - { 0x00fd01, 11160 }, - { 0x00fd02, 11175 }, - { 0x00fd03, 11190 }, - { 0x00fd04, 11202 }, - { 0x00fd05, 11213 }, - { 0x00fd06, 11226 }, - { 0x00fd07, 11240 }, - { 0x00fd08, 11256 }, - { 0x00fd09, 11267 }, - { 0x00fd0a, 11277 }, - { 0x00fd0b, 11286 }, - { 0x00fd0c, 11295 }, - { 0x00fd0d, 11304 }, - { 0x00fd0e, 11314 }, - { 0x00fd0f, 11324 }, - { 0x00fd10, 11341 }, - { 0x00fd11, 11356 }, - { 0x00fd12, 11370 }, - { 0x00fd13, 11380 }, - { 0x00fd14, 11391 }, - { 0x00fd15, 11401 }, - { 0x00fd16, 11411 }, - { 0x00fd17, 11421 }, - { 0x00fd18, 11432 }, - { 0x00fd19, 11444 }, - { 0x00fd1a, 11462 }, - { 0x00fd1b, 11478 }, - { 0x00fd1c, 11492 }, - { 0x00fd1d, 11510 }, - { 0x00fd1e, 11527 }, - { 0x00fe01, 11538 }, - { 0x00fe02, 11547 }, - { 0x00fe03, 11564 }, - { 0x00fe04, 11581 }, - { 0x00fe05, 11598 }, - { 0x00fe06, 11614 }, - { 0x00fe07, 11630 }, - { 0x00fe08, 11645 }, - { 0x00fe09, 11660 }, - { 0x00fe0a, 11680 }, - { 0x00fe0b, 11695 }, - { 0x00fe0c, 11715 }, - { 0x00fe0d, 11731 }, - { 0x00fe0e, 11752 }, - { 0x00fe0f, 11767 }, - { 0x00fe20, 11787 }, - { 0x00fe21, 11800 }, - { 0x00fe22, 11817 }, - { 0x00fe23, 11836 }, - { 0x00fe24, 11856 }, - { 0x00fe25, 11878 }, - { 0x00fe26, 11901 }, - { 0x00fe27, 11925 }, - { 0x00fe28, 11945 }, - { 0x00fe29, 11966 }, - { 0x00fe2a, 11990 }, - { 0x00fe2b, 12015 }, - { 0x00fe2c, 12040 }, - { 0x00fe2d, 12061 }, - { 0x00fe2e, 12083 }, - { 0x00fe2f, 12102 }, - { 0x00fe30, 12123 }, - { 0x00fe31, 12148 }, - { 0x00fe32, 12176 }, - { 0x00fe33, 12190 }, - { 0x00fe34, 12208 }, - { 0x00fe50, 12218 }, - { 0x00fe51, 12229 }, - { 0x00fe52, 12240 }, - { 0x00fe53, 12256 }, - { 0x00fe54, 12267 }, - { 0x00fe55, 12279 }, - { 0x00fe56, 12290 }, - { 0x00fe57, 12304 }, - { 0x00fe58, 12319 }, - { 0x00fe59, 12334 }, - { 0x00fe5a, 12351 }, - { 0x00fe5b, 12362 }, - { 0x00fe5c, 12375 }, - { 0x00fe5d, 12387 }, - { 0x00fe5e, 12397 }, - { 0x00fe5f, 12415 }, - { 0x00fe60, 12437 }, - { 0x00fe61, 12451 }, - { 0x00fe62, 12461 }, - { 0x00fe70, 12471 }, - { 0x00fe71, 12486 }, - { 0x00fe72, 12510 }, - { 0x00fe73, 12528 }, - { 0x00fe74, 12544 }, - { 0x00fe75, 12562 }, - { 0x00fe76, 12580 }, - { 0x00fe77, 12597 }, - { 0x00fe78, 12620 }, - { 0x00fe79, 12636 }, - { 0x00fe7a, 12652 }, - { 0x00fed0, 12671 }, - { 0x00fed1, 12692 }, - { 0x00fed2, 12712 }, - { 0x00fed4, 12732 }, - { 0x00fed5, 12752 }, - { 0x00fee0, 12769 }, - { 0x00fee1, 12782 }, - { 0x00fee2, 12796 }, - { 0x00fee3, 12807 }, - { 0x00fee4, 12820 }, - { 0x00fee5, 12835 }, - { 0x00fee6, 12851 }, - { 0x00fee7, 12868 }, - { 0x00fee8, 12886 }, - { 0x00fee9, 12906 }, - { 0x00feea, 12922 }, - { 0x00feeb, 12938 }, - { 0x00feec, 12954 }, - { 0x00feed, 12970 }, - { 0x00feee, 12986 }, - { 0x00feef, 13008 }, - { 0x00fef0, 13026 }, - { 0x00fef1, 13044 }, - { 0x00fef2, 13062 }, - { 0x00fef3, 13080 }, - { 0x00fef4, 13098 }, - { 0x00fef5, 13116 }, - { 0x00fef6, 13130 }, - { 0x00fef7, 13144 }, - { 0x00fef8, 13158 }, - { 0x00fef9, 13172 }, - { 0x00fefa, 13191 }, - { 0x00fefb, 13210 }, - { 0x00fefc, 13230 }, - { 0x00fefd, 13250 }, - { 0x00ff08, 13264 }, - { 0x00ff09, 13274 }, - { 0x00ff0a, 13278 }, - { 0x00ff0b, 13287 }, - { 0x00ff0d, 13293 }, - { 0x00ff13, 13300 }, - { 0x00ff14, 13306 }, - { 0x00ff15, 13318 }, - { 0x00ff1b, 13326 }, - { 0x00ff20, 13333 }, - { 0x00ff21, 13343 }, - { 0x00ff22, 13349 }, - { 0x00ff23, 13358 }, - { 0x00ff23, 13365 }, - { 0x00ff24, 13377 }, - { 0x00ff25, 13384 }, - { 0x00ff26, 13393 }, - { 0x00ff27, 13402 }, - { 0x00ff28, 13420 }, - { 0x00ff29, 13428 }, - { 0x00ff2a, 13436 }, - { 0x00ff2b, 13452 }, - { 0x00ff2c, 13460 }, - { 0x00ff2d, 13467 }, - { 0x00ff2e, 13477 }, - { 0x00ff2f, 13488 }, - { 0x00ff30, 13499 }, - { 0x00ff31, 13511 }, - { 0x00ff32, 13518 }, - { 0x00ff33, 13531 }, - { 0x00ff34, 13542 }, - { 0x00ff35, 13555 }, - { 0x00ff36, 13567 }, - { 0x00ff37, 13581 }, - { 0x00ff38, 13591 }, - { 0x00ff39, 13605 }, - { 0x00ff3a, 13618 }, - { 0x00ff3b, 13634 }, - { 0x00ff3c, 13651 }, - { 0x00ff3d, 13667 }, - { 0x00ff3e, 13685 }, - { 0x00ff3f, 13703 }, - { 0x00ff50, 13718 }, - { 0x00ff51, 13723 }, - { 0x00ff52, 13728 }, - { 0x00ff53, 13731 }, - { 0x00ff54, 13737 }, - { 0x00ff55, 13742 }, - { 0x00ff55, 13750 }, - { 0x00ff56, 13756 }, - { 0x00ff56, 13766 }, - { 0x00ff57, 13771 }, - { 0x00ff58, 13775 }, - { 0x00ff60, 13781 }, - { 0x00ff61, 13788 }, - { 0x00ff62, 13794 }, - { 0x00ff63, 13802 }, - { 0x00ff65, 13809 }, - { 0x00ff66, 13814 }, - { 0x00ff67, 13819 }, - { 0x00ff68, 13824 }, - { 0x00ff69, 13829 }, - { 0x00ff6a, 13836 }, - { 0x00ff6b, 13841 }, - { 0x00ff7e, 13847 }, - { 0x00ff7e, 13861 }, - { 0x00ff7e, 13874 }, - { 0x00ff7e, 13888 }, - { 0x00ff7e, 13902 }, - { 0x00ff7e, 13918 }, - { 0x00ff7e, 13930 }, - { 0x00ff7e, 13942 }, - { 0x00ff7f, 13956 }, - { 0x00ff80, 13965 }, - { 0x00ff89, 13974 }, - { 0x00ff8d, 13981 }, - { 0x00ff91, 13990 }, - { 0x00ff92, 13996 }, - { 0x00ff93, 14002 }, - { 0x00ff94, 14008 }, - { 0x00ff95, 14014 }, - { 0x00ff96, 14022 }, - { 0x00ff97, 14030 }, - { 0x00ff98, 14036 }, - { 0x00ff99, 14045 }, - { 0x00ff9a, 14053 }, - { 0x00ff9a, 14064 }, - { 0x00ff9b, 14073 }, - { 0x00ff9b, 14086 }, - { 0x00ff9c, 14094 }, - { 0x00ff9d, 14101 }, - { 0x00ff9e, 14110 }, - { 0x00ff9f, 14120 }, - { 0x00ffaa, 14130 }, - { 0x00ffab, 14142 }, - { 0x00ffac, 14149 }, - { 0x00ffad, 14162 }, - { 0x00ffae, 14174 }, - { 0x00ffaf, 14185 }, - { 0x00ffb0, 14195 }, - { 0x00ffb1, 14200 }, - { 0x00ffb2, 14205 }, - { 0x00ffb3, 14210 }, - { 0x00ffb4, 14215 }, - { 0x00ffb5, 14220 }, - { 0x00ffb6, 14225 }, - { 0x00ffb7, 14230 }, - { 0x00ffb8, 14235 }, - { 0x00ffb9, 14240 }, - { 0x00ffbd, 14245 }, - { 0x00ffbe, 14254 }, - { 0x00ffbf, 14257 }, - { 0x00ffc0, 14260 }, - { 0x00ffc1, 14263 }, - { 0x00ffc2, 14266 }, - { 0x00ffc3, 14269 }, - { 0x00ffc4, 14272 }, - { 0x00ffc5, 14275 }, - { 0x00ffc6, 14278 }, - { 0x00ffc7, 14281 }, - { 0x00ffc8, 14285 }, - { 0x00ffc9, 14289 }, - { 0x00ffca, 14293 }, - { 0x00ffcb, 14297 }, - { 0x00ffcc, 14301 }, - { 0x00ffcd, 14305 }, - { 0x00ffce, 14309 }, - { 0x00ffcf, 14313 }, - { 0x00ffd0, 14317 }, - { 0x00ffd1, 14321 }, - { 0x00ffd2, 14325 }, - { 0x00ffd3, 14329 }, - { 0x00ffd4, 14333 }, - { 0x00ffd5, 14337 }, - { 0x00ffd6, 14341 }, - { 0x00ffd7, 14345 }, - { 0x00ffd8, 14349 }, - { 0x00ffd9, 14353 }, - { 0x00ffda, 14357 }, - { 0x00ffdb, 14361 }, - { 0x00ffdc, 14365 }, - { 0x00ffdd, 14369 }, - { 0x00ffde, 14373 }, - { 0x00ffdf, 14377 }, - { 0x00ffe0, 14381 }, - { 0x00ffe1, 14385 }, - { 0x00ffe2, 14393 }, - { 0x00ffe3, 14401 }, - { 0x00ffe4, 14411 }, - { 0x00ffe5, 14421 }, - { 0x00ffe6, 14431 }, - { 0x00ffe7, 14442 }, - { 0x00ffe8, 14449 }, - { 0x00ffe9, 14456 }, - { 0x00ffea, 14462 }, - { 0x00ffeb, 14468 }, - { 0x00ffec, 14476 }, - { 0x00ffed, 14484 }, - { 0x00ffee, 14492 }, - { 0x00ffff, 14500 }, - { 0xffffff, 14507 } + { 0x0000d8, 950 }, + { 0x0000d9, 957 }, + { 0x0000da, 964 }, + { 0x0000db, 971 }, + { 0x0000dc, 983 }, + { 0x0000dd, 994 }, + { 0x0000de, 1001 }, + { 0x0000de, 1007 }, + { 0x0000df, 1013 }, + { 0x0000e0, 1020 }, + { 0x0000e1, 1027 }, + { 0x0000e2, 1034 }, + { 0x0000e3, 1046 }, + { 0x0000e4, 1053 }, + { 0x0000e5, 1064 }, + { 0x0000e6, 1070 }, + { 0x0000e7, 1073 }, + { 0x0000e8, 1082 }, + { 0x0000e9, 1089 }, + { 0x0000ea, 1096 }, + { 0x0000eb, 1108 }, + { 0x0000ec, 1119 }, + { 0x0000ed, 1126 }, + { 0x0000ee, 1133 }, + { 0x0000ef, 1145 }, + { 0x0000f0, 1156 }, + { 0x0000f1, 1160 }, + { 0x0000f2, 1167 }, + { 0x0000f3, 1174 }, + { 0x0000f4, 1181 }, + { 0x0000f5, 1193 }, + { 0x0000f6, 1200 }, + { 0x0000f7, 1211 }, + { 0x0000f8, 1220 }, + { 0x0000f8, 1229 }, + { 0x0000f9, 1236 }, + { 0x0000fa, 1243 }, + { 0x0000fb, 1250 }, + { 0x0000fc, 1262 }, + { 0x0000fd, 1273 }, + { 0x0000fe, 1280 }, + { 0x0000ff, 1286 }, + { 0x0001a1, 1297 }, + { 0x0001a2, 1305 }, + { 0x0001a3, 1311 }, + { 0x0001a5, 1319 }, + { 0x0001a6, 1326 }, + { 0x0001a9, 1333 }, + { 0x0001aa, 1340 }, + { 0x0001ab, 1349 }, + { 0x0001ac, 1356 }, + { 0x0001ae, 1363 }, + { 0x0001af, 1370 }, + { 0x0001b1, 1380 }, + { 0x0001b2, 1388 }, + { 0x0001b3, 1395 }, + { 0x0001b5, 1403 }, + { 0x0001b6, 1410 }, + { 0x0001b7, 1417 }, + { 0x0001b9, 1423 }, + { 0x0001ba, 1430 }, + { 0x0001bb, 1439 }, + { 0x0001bc, 1446 }, + { 0x0001bd, 1453 }, + { 0x0001be, 1465 }, + { 0x0001bf, 1472 }, + { 0x0001c0, 1482 }, + { 0x0001c3, 1489 }, + { 0x0001c5, 1496 }, + { 0x0001c6, 1503 }, + { 0x0001c8, 1510 }, + { 0x0001ca, 1517 }, + { 0x0001cc, 1525 }, + { 0x0001cf, 1532 }, + { 0x0001d0, 1539 }, + { 0x0001d1, 1547 }, + { 0x0001d2, 1554 }, + { 0x0001d5, 1561 }, + { 0x0001d8, 1574 }, + { 0x0001d9, 1581 }, + { 0x0001db, 1587 }, + { 0x0001de, 1600 }, + { 0x0001e0, 1609 }, + { 0x0001e3, 1616 }, + { 0x0001e5, 1623 }, + { 0x0001e6, 1630 }, + { 0x0001e8, 1637 }, + { 0x0001ea, 1644 }, + { 0x0001ec, 1652 }, + { 0x0001ef, 1659 }, + { 0x0001f0, 1666 }, + { 0x0001f1, 1674 }, + { 0x0001f2, 1681 }, + { 0x0001f5, 1688 }, + { 0x0001f8, 1701 }, + { 0x0001f9, 1708 }, + { 0x0001fb, 1714 }, + { 0x0001fe, 1727 }, + { 0x0001ff, 1736 }, + { 0x0002a1, 1745 }, + { 0x0002a6, 1753 }, + { 0x0002a9, 1765 }, + { 0x0002ab, 1775 }, + { 0x0002ac, 1782 }, + { 0x0002b1, 1794 }, + { 0x0002b6, 1802 }, + { 0x0002b9, 1814 }, + { 0x0002bb, 1823 }, + { 0x0002bc, 1830 }, + { 0x0002c5, 1842 }, + { 0x0002c6, 1852 }, + { 0x0002d5, 1864 }, + { 0x0002d8, 1874 }, + { 0x0002dd, 1886 }, + { 0x0002de, 1893 }, + { 0x0002e5, 1905 }, + { 0x0002e6, 1915 }, + { 0x0002f5, 1927 }, + { 0x0002f8, 1937 }, + { 0x0002fd, 1949 }, + { 0x0002fe, 1956 }, + { 0x0003a2, 1968 }, + { 0x0003a2, 1974 }, + { 0x0003a3, 1978 }, + { 0x0003a5, 1987 }, + { 0x0003a6, 1994 }, + { 0x0003aa, 2003 }, + { 0x0003ab, 2011 }, + { 0x0003ac, 2020 }, + { 0x0003b3, 2027 }, + { 0x0003b5, 2036 }, + { 0x0003b6, 2043 }, + { 0x0003ba, 2052 }, + { 0x0003bb, 2060 }, + { 0x0003bc, 2069 }, + { 0x0003bd, 2076 }, + { 0x0003bf, 2080 }, + { 0x0003c0, 2084 }, + { 0x0003c7, 2092 }, + { 0x0003cc, 2100 }, + { 0x0003cf, 2110 }, + { 0x0003d1, 2118 }, + { 0x0003d2, 2127 }, + { 0x0003d3, 2135 }, + { 0x0003d9, 2144 }, + { 0x0003dd, 2152 }, + { 0x0003de, 2159 }, + { 0x0003e0, 2167 }, + { 0x0003e7, 2175 }, + { 0x0003ec, 2183 }, + { 0x0003ef, 2193 }, + { 0x0003f1, 2201 }, + { 0x0003f2, 2210 }, + { 0x0003f3, 2218 }, + { 0x0003f9, 2227 }, + { 0x0003fd, 2235 }, + { 0x0003fe, 2242 }, + { 0x00047e, 2250 }, + { 0x0004a1, 2259 }, + { 0x0004a2, 2273 }, + { 0x0004a3, 2293 }, + { 0x0004a4, 2313 }, + { 0x0004a5, 2324 }, + { 0x0004a5, 2341 }, + { 0x0004a6, 2356 }, + { 0x0004a7, 2364 }, + { 0x0004a8, 2371 }, + { 0x0004a9, 2378 }, + { 0x0004aa, 2385 }, + { 0x0004ab, 2392 }, + { 0x0004ac, 2399 }, + { 0x0004ad, 2407 }, + { 0x0004ae, 2415 }, + { 0x0004af, 2423 }, + { 0x0004af, 2432 }, + { 0x0004b0, 2440 }, + { 0x0004b1, 2455 }, + { 0x0004b2, 2462 }, + { 0x0004b3, 2469 }, + { 0x0004b4, 2476 }, + { 0x0004b5, 2483 }, + { 0x0004b6, 2490 }, + { 0x0004b7, 2498 }, + { 0x0004b8, 2506 }, + { 0x0004b9, 2514 }, + { 0x0004ba, 2522 }, + { 0x0004bb, 2530 }, + { 0x0004bc, 2538 }, + { 0x0004bd, 2547 }, + { 0x0004be, 2555 }, + { 0x0004bf, 2563 }, + { 0x0004c0, 2571 }, + { 0x0004c1, 2579 }, + { 0x0004c1, 2588 }, + { 0x0004c2, 2596 }, + { 0x0004c2, 2605 }, + { 0x0004c3, 2613 }, + { 0x0004c4, 2621 }, + { 0x0004c5, 2629 }, + { 0x0004c6, 2637 }, + { 0x0004c7, 2645 }, + { 0x0004c8, 2653 }, + { 0x0004c9, 2661 }, + { 0x0004ca, 2669 }, + { 0x0004cb, 2677 }, + { 0x0004cc, 2685 }, + { 0x0004cc, 2693 }, + { 0x0004cd, 2701 }, + { 0x0004ce, 2709 }, + { 0x0004cf, 2717 }, + { 0x0004d0, 2725 }, + { 0x0004d1, 2733 }, + { 0x0004d2, 2741 }, + { 0x0004d3, 2749 }, + { 0x0004d4, 2757 }, + { 0x0004d5, 2765 }, + { 0x0004d6, 2773 }, + { 0x0004d7, 2781 }, + { 0x0004d8, 2789 }, + { 0x0004d9, 2797 }, + { 0x0004da, 2805 }, + { 0x0004db, 2813 }, + { 0x0004dc, 2821 }, + { 0x0004dd, 2829 }, + { 0x0004de, 2836 }, + { 0x0004df, 2848 }, + { 0x0005ac, 2864 }, + { 0x0005bb, 2877 }, + { 0x0005bf, 2894 }, + { 0x0005c1, 2915 }, + { 0x0005c2, 2928 }, + { 0x0005c3, 2947 }, + { 0x0005c4, 2966 }, + { 0x0005c5, 2984 }, + { 0x0005c6, 3006 }, + { 0x0005c7, 3024 }, + { 0x0005c8, 3036 }, + { 0x0005c9, 3047 }, + { 0x0005ca, 3065 }, + { 0x0005cb, 3076 }, + { 0x0005cc, 3088 }, + { 0x0005cd, 3100 }, + { 0x0005ce, 3111 }, + { 0x0005cf, 3123 }, + { 0x0005d0, 3134 }, + { 0x0005d1, 3146 }, + { 0x0005d2, 3156 }, + { 0x0005d3, 3168 }, + { 0x0005d4, 3180 }, + { 0x0005d5, 3193 }, + { 0x0005d6, 3204 }, + { 0x0005d7, 3215 }, + { 0x0005d8, 3226 }, + { 0x0005d9, 3237 }, + { 0x0005da, 3248 }, + { 0x0005e0, 3261 }, + { 0x0005e1, 3276 }, + { 0x0005e2, 3287 }, + { 0x0005e3, 3298 }, + { 0x0005e4, 3309 }, + { 0x0005e5, 3320 }, + { 0x0005e6, 3332 }, + { 0x0005e7, 3344 }, + { 0x0005e7, 3354 }, + { 0x0005e8, 3365 }, + { 0x0005e9, 3376 }, + { 0x0005ea, 3395 }, + { 0x0005eb, 3406 }, + { 0x0005ec, 3422 }, + { 0x0005ed, 3438 }, + { 0x0005ee, 3454 }, + { 0x0005ef, 3467 }, + { 0x0005f0, 3480 }, + { 0x0005f1, 3493 }, + { 0x0005f2, 3507 }, + { 0x0006a1, 3520 }, + { 0x0006a2, 3532 }, + { 0x0006a3, 3546 }, + { 0x0006a4, 3558 }, + { 0x0006a4, 3571 }, + { 0x0006a5, 3583 }, + { 0x0006a6, 3597 }, + { 0x0006a6, 3609 }, + { 0x0006a7, 3620 }, + { 0x0006a7, 3633 }, + { 0x0006a8, 3645 }, + { 0x0006a8, 3657 }, + { 0x0006a9, 3668 }, + { 0x0006a9, 3681 }, + { 0x0006aa, 3693 }, + { 0x0006aa, 3706 }, + { 0x0006ab, 3718 }, + { 0x0006ac, 3731 }, + { 0x0006ad, 3745 }, + { 0x0006ae, 3771 }, + { 0x0006af, 3791 }, + { 0x0006af, 3805 }, + { 0x0006b0, 3817 }, + { 0x0006b1, 3828 }, + { 0x0006b2, 3840 }, + { 0x0006b3, 3854 }, + { 0x0006b4, 3866 }, + { 0x0006b4, 3879 }, + { 0x0006b5, 3891 }, + { 0x0006b6, 3905 }, + { 0x0006b6, 3917 }, + { 0x0006b7, 3928 }, + { 0x0006b7, 3941 }, + { 0x0006b8, 3953 }, + { 0x0006b8, 3965 }, + { 0x0006b9, 3976 }, + { 0x0006b9, 3989 }, + { 0x0006ba, 4001 }, + { 0x0006ba, 4014 }, + { 0x0006bb, 4026 }, + { 0x0006bc, 4039 }, + { 0x0006bd, 4053 }, + { 0x0006be, 4079 }, + { 0x0006bf, 4099 }, + { 0x0006bf, 4113 }, + { 0x0006c0, 4125 }, + { 0x0006c1, 4137 }, + { 0x0006c2, 4148 }, + { 0x0006c3, 4160 }, + { 0x0006c4, 4173 }, + { 0x0006c5, 4185 }, + { 0x0006c6, 4197 }, + { 0x0006c7, 4209 }, + { 0x0006c8, 4222 }, + { 0x0006c9, 4234 }, + { 0x0006ca, 4245 }, + { 0x0006cb, 4261 }, + { 0x0006cc, 4273 }, + { 0x0006cd, 4285 }, + { 0x0006ce, 4297 }, + { 0x0006cf, 4309 }, + { 0x0006d0, 4320 }, + { 0x0006d1, 4332 }, + { 0x0006d2, 4344 }, + { 0x0006d3, 4356 }, + { 0x0006d4, 4368 }, + { 0x0006d5, 4380 }, + { 0x0006d6, 4391 }, + { 0x0006d7, 4404 }, + { 0x0006d8, 4416 }, + { 0x0006d9, 4434 }, + { 0x0006da, 4448 }, + { 0x0006db, 4460 }, + { 0x0006dc, 4473 }, + { 0x0006dd, 4484 }, + { 0x0006de, 4499 }, + { 0x0006df, 4512 }, + { 0x0006e0, 4530 }, + { 0x0006e1, 4542 }, + { 0x0006e2, 4553 }, + { 0x0006e3, 4565 }, + { 0x0006e4, 4578 }, + { 0x0006e5, 4590 }, + { 0x0006e6, 4602 }, + { 0x0006e7, 4614 }, + { 0x0006e8, 4627 }, + { 0x0006e9, 4639 }, + { 0x0006ea, 4650 }, + { 0x0006eb, 4666 }, + { 0x0006ec, 4678 }, + { 0x0006ed, 4690 }, + { 0x0006ee, 4702 }, + { 0x0006ef, 4714 }, + { 0x0006f0, 4725 }, + { 0x0006f1, 4737 }, + { 0x0006f2, 4749 }, + { 0x0006f3, 4761 }, + { 0x0006f4, 4773 }, + { 0x0006f5, 4785 }, + { 0x0006f6, 4796 }, + { 0x0006f7, 4809 }, + { 0x0006f8, 4821 }, + { 0x0006f9, 4839 }, + { 0x0006fa, 4853 }, + { 0x0006fb, 4865 }, + { 0x0006fc, 4878 }, + { 0x0006fd, 4889 }, + { 0x0006fe, 4904 }, + { 0x0006ff, 4917 }, + { 0x0007a1, 4935 }, + { 0x0007a2, 4953 }, + { 0x0007a3, 4973 }, + { 0x0007a4, 4989 }, + { 0x0007a5, 5006 }, + { 0x0007a5, 5026 }, + { 0x0007a7, 5045 }, + { 0x0007a8, 5065 }, + { 0x0007a9, 5085 }, + { 0x0007ab, 5107 }, + { 0x0007ae, 5125 }, + { 0x0007af, 5146 }, + { 0x0007b1, 5161 }, + { 0x0007b2, 5179 }, + { 0x0007b3, 5199 }, + { 0x0007b4, 5215 }, + { 0x0007b5, 5232 }, + { 0x0007b6, 5251 }, + { 0x0007b7, 5276 }, + { 0x0007b8, 5296 }, + { 0x0007b9, 5316 }, + { 0x0007ba, 5338 }, + { 0x0007bb, 5366 }, + { 0x0007c1, 5384 }, + { 0x0007c2, 5396 }, + { 0x0007c3, 5407 }, + { 0x0007c4, 5419 }, + { 0x0007c5, 5431 }, + { 0x0007c6, 5445 }, + { 0x0007c7, 5456 }, + { 0x0007c8, 5466 }, + { 0x0007c9, 5478 }, + { 0x0007ca, 5489 }, + { 0x0007cb, 5501 }, + { 0x0007cb, 5514 }, + { 0x0007cc, 5526 }, + { 0x0007cd, 5535 }, + { 0x0007ce, 5544 }, + { 0x0007cf, 5553 }, + { 0x0007d0, 5567 }, + { 0x0007d1, 5576 }, + { 0x0007d2, 5586 }, + { 0x0007d4, 5598 }, + { 0x0007d5, 5608 }, + { 0x0007d6, 5622 }, + { 0x0007d7, 5632 }, + { 0x0007d8, 5642 }, + { 0x0007d9, 5652 }, + { 0x0007e1, 5664 }, + { 0x0007e2, 5676 }, + { 0x0007e3, 5687 }, + { 0x0007e4, 5699 }, + { 0x0007e5, 5711 }, + { 0x0007e6, 5725 }, + { 0x0007e7, 5736 }, + { 0x0007e8, 5746 }, + { 0x0007e9, 5758 }, + { 0x0007ea, 5769 }, + { 0x0007eb, 5781 }, + { 0x0007eb, 5794 }, + { 0x0007ec, 5806 }, + { 0x0007ed, 5815 }, + { 0x0007ee, 5824 }, + { 0x0007ef, 5833 }, + { 0x0007f0, 5847 }, + { 0x0007f1, 5856 }, + { 0x0007f2, 5866 }, + { 0x0007f3, 5878 }, + { 0x0007f4, 5900 }, + { 0x0007f5, 5910 }, + { 0x0007f6, 5924 }, + { 0x0007f7, 5934 }, + { 0x0007f8, 5944 }, + { 0x0007f9, 5954 }, + { 0x0008a1, 5966 }, + { 0x0008a2, 5978 }, + { 0x0008a3, 5993 }, + { 0x0008a4, 6008 }, + { 0x0008a5, 6020 }, + { 0x0008a6, 6032 }, + { 0x0008a7, 6046 }, + { 0x0008a8, 6063 }, + { 0x0008a9, 6080 }, + { 0x0008aa, 6098 }, + { 0x0008ab, 6116 }, + { 0x0008ac, 6130 }, + { 0x0008ad, 6144 }, + { 0x0008ae, 6159 }, + { 0x0008af, 6174 }, + { 0x0008b0, 6195 }, + { 0x0008b1, 6217 }, + { 0x0008b2, 6234 }, + { 0x0008b3, 6251 }, + { 0x0008b4, 6277 }, + { 0x0008b5, 6303 }, + { 0x0008b6, 6321 }, + { 0x0008b7, 6339 }, + { 0x0008bc, 6360 }, + { 0x0008bd, 6374 }, + { 0x0008be, 6383 }, + { 0x0008bf, 6400 }, + { 0x0008c0, 6409 }, + { 0x0008c1, 6419 }, + { 0x0008c2, 6429 }, + { 0x0008c5, 6438 }, + { 0x0008c8, 6444 }, + { 0x0008c9, 6456 }, + { 0x0008cd, 6469 }, + { 0x0008ce, 6478 }, + { 0x0008cf, 6486 }, + { 0x0008d6, 6496 }, + { 0x0008da, 6504 }, + { 0x0008db, 6515 }, + { 0x0008dc, 6524 }, + { 0x0008dd, 6537 }, + { 0x0008de, 6543 }, + { 0x0008df, 6554 }, + { 0x0008ef, 6564 }, + { 0x0008f6, 6582 }, + { 0x0008fb, 6591 }, + { 0x0008fc, 6601 }, + { 0x0008fd, 6609 }, + { 0x0008fe, 6620 }, + { 0x0009df, 6630 }, + { 0x0009e0, 6636 }, + { 0x0009e1, 6649 }, + { 0x0009e2, 6662 }, + { 0x0009e3, 6665 }, + { 0x0009e4, 6668 }, + { 0x0009e5, 6671 }, + { 0x0009e8, 6674 }, + { 0x0009e9, 6677 }, + { 0x0009ea, 6680 }, + { 0x0009eb, 6695 }, + { 0x0009ec, 6709 }, + { 0x0009ed, 6722 }, + { 0x0009ee, 6736 }, + { 0x0009ef, 6750 }, + { 0x0009f0, 6765 }, + { 0x0009f1, 6780 }, + { 0x0009f2, 6795 }, + { 0x0009f3, 6810 }, + { 0x0009f4, 6825 }, + { 0x0009f5, 6831 }, + { 0x0009f6, 6838 }, + { 0x0009f7, 6843 }, + { 0x0009f8, 6848 }, + { 0x000aa1, 6856 }, + { 0x000aa2, 6864 }, + { 0x000aa3, 6872 }, + { 0x000aa4, 6881 }, + { 0x000aa5, 6890 }, + { 0x000aa6, 6901 }, + { 0x000aa7, 6912 }, + { 0x000aa8, 6922 }, + { 0x000aa9, 6932 }, + { 0x000aaa, 6939 }, + { 0x000aac, 6946 }, + { 0x000aae, 6958 }, + { 0x000aaf, 6967 }, + { 0x000ab0, 6983 }, + { 0x000ab1, 6992 }, + { 0x000ab2, 7002 }, + { 0x000ab3, 7011 }, + { 0x000ab4, 7021 }, + { 0x000ab5, 7033 }, + { 0x000ab6, 7044 }, + { 0x000ab7, 7053 }, + { 0x000ab8, 7064 }, + { 0x000abb, 7071 }, + { 0x000abc, 7079 }, + { 0x000abd, 7096 }, + { 0x000abe, 7109 }, + { 0x000abf, 7127 }, + { 0x000ac3, 7134 }, + { 0x000ac4, 7144 }, + { 0x000ac5, 7157 }, + { 0x000ac6, 7169 }, + { 0x000ac9, 7182 }, + { 0x000aca, 7192 }, + { 0x000acb, 7206 }, + { 0x000acc, 7224 }, + { 0x000acd, 7241 }, + { 0x000ace, 7259 }, + { 0x000acf, 7272 }, + { 0x000ad0, 7288 }, + { 0x000ad1, 7308 }, + { 0x000ad2, 7329 }, + { 0x000ad3, 7349 }, + { 0x000ad4, 7370 }, + { 0x000ad5, 7383 }, + { 0x000ad6, 7392 }, + { 0x000ad7, 7400 }, + { 0x000ad9, 7408 }, + { 0x000ada, 7419 }, + { 0x000adb, 7428 }, + { 0x000adc, 7445 }, + { 0x000add, 7465 }, + { 0x000ade, 7486 }, + { 0x000adf, 7501 }, + { 0x000ae0, 7514 }, + { 0x000ae1, 7531 }, + { 0x000ae2, 7550 }, + { 0x000ae3, 7565 }, + { 0x000ae4, 7581 }, + { 0x000ae5, 7599 }, + { 0x000ae6, 7608 }, + { 0x000ae7, 7627 }, + { 0x000ae8, 7644 }, + { 0x000ae9, 7662 }, + { 0x000aea, 7682 }, + { 0x000aeb, 7694 }, + { 0x000aec, 7707 }, + { 0x000aed, 7712 }, + { 0x000aee, 7720 }, + { 0x000af0, 7726 }, + { 0x000af1, 7739 }, + { 0x000af2, 7746 }, + { 0x000af3, 7759 }, + { 0x000af4, 7769 }, + { 0x000af5, 7781 }, + { 0x000af6, 7794 }, + { 0x000af7, 7806 }, + { 0x000af8, 7817 }, + { 0x000af9, 7830 }, + { 0x000afa, 7840 }, + { 0x000afb, 7858 }, + { 0x000afc, 7878 }, + { 0x000afd, 7884 }, + { 0x000afe, 7903 }, + { 0x000aff, 7922 }, + { 0x000ba3, 7929 }, + { 0x000ba6, 7939 }, + { 0x000ba8, 7950 }, + { 0x000ba9, 7960 }, + { 0x000bc0, 7968 }, + { 0x000bc2, 7976 }, + { 0x000bc3, 7985 }, + { 0x000bc4, 7992 }, + { 0x000bc6, 8002 }, + { 0x000bca, 8011 }, + { 0x000bcc, 8015 }, + { 0x000bce, 8020 }, + { 0x000bcf, 8027 }, + { 0x000bd3, 8034 }, + { 0x000bd6, 8042 }, + { 0x000bd8, 8051 }, + { 0x000bda, 8061 }, + { 0x000bdc, 8070 }, + { 0x000bfc, 8079 }, + { 0x000cdf, 8089 }, + { 0x000ce0, 8110 }, + { 0x000ce1, 8123 }, + { 0x000ce1, 8134 }, + { 0x000ce2, 8146 }, + { 0x000ce2, 8159 }, + { 0x000ce3, 8173 }, + { 0x000ce3, 8186 }, + { 0x000ce4, 8200 }, + { 0x000ce5, 8210 }, + { 0x000ce6, 8221 }, + { 0x000ce6, 8233 }, + { 0x000ce7, 8246 }, + { 0x000ce7, 8258 }, + { 0x000ce8, 8269 }, + { 0x000ce8, 8280 }, + { 0x000ce9, 8292 }, + { 0x000cea, 8303 }, + { 0x000ceb, 8320 }, + { 0x000cec, 8332 }, + { 0x000ced, 8345 }, + { 0x000cee, 8361 }, + { 0x000cef, 8372 }, + { 0x000cf0, 8388 }, + { 0x000cf1, 8399 }, + { 0x000cf1, 8413 }, + { 0x000cf2, 8427 }, + { 0x000cf3, 8439 }, + { 0x000cf4, 8454 }, + { 0x000cf5, 8464 }, + { 0x000cf5, 8481 }, + { 0x000cf6, 8498 }, + { 0x000cf6, 8510 }, + { 0x000cf7, 8522 }, + { 0x000cf7, 8533 }, + { 0x000cf8, 8545 }, + { 0x000cf9, 8557 }, + { 0x000cfa, 8569 }, + { 0x000cfa, 8580 }, + { 0x000da1, 8591 }, + { 0x000da2, 8602 }, + { 0x000da3, 8615 }, + { 0x000da4, 8629 }, + { 0x000da5, 8643 }, + { 0x000da6, 8656 }, + { 0x000da7, 8672 }, + { 0x000da8, 8684 }, + { 0x000da9, 8697 }, + { 0x000daa, 8711 }, + { 0x000dab, 8725 }, + { 0x000dac, 8735 }, + { 0x000dad, 8748 }, + { 0x000dae, 8760 }, + { 0x000daf, 8773 }, + { 0x000db0, 8786 }, + { 0x000db1, 8799 }, + { 0x000db2, 8818 }, + { 0x000db3, 8834 }, + { 0x000db4, 8845 }, + { 0x000db5, 8856 }, + { 0x000db6, 8867 }, + { 0x000db7, 8881 }, + { 0x000db8, 8896 }, + { 0x000db9, 8910 }, + { 0x000dba, 8920 }, + { 0x000dbb, 8934 }, + { 0x000dbc, 8945 }, + { 0x000dbd, 8959 }, + { 0x000dbe, 8969 }, + { 0x000dbf, 8982 }, + { 0x000dc0, 8993 }, + { 0x000dc1, 9009 }, + { 0x000dc2, 9019 }, + { 0x000dc3, 9030 }, + { 0x000dc4, 9041 }, + { 0x000dc5, 9049 }, + { 0x000dc6, 9061 }, + { 0x000dc7, 9069 }, + { 0x000dc8, 9081 }, + { 0x000dc9, 9093 }, + { 0x000dca, 9105 }, + { 0x000dcb, 9116 }, + { 0x000dcc, 9127 }, + { 0x000dcd, 9140 }, + { 0x000dce, 9150 }, + { 0x000dcf, 9164 }, + { 0x000dd0, 9179 }, + { 0x000dd1, 9190 }, + { 0x000dd2, 9206 }, + { 0x000dd3, 9218 }, + { 0x000dd4, 9230 }, + { 0x000dd5, 9241 }, + { 0x000dd6, 9253 }, + { 0x000dd7, 9265 }, + { 0x000dd8, 9278 }, + { 0x000dd9, 9289 }, + { 0x000dda, 9301 }, + { 0x000dde, 9314 }, + { 0x000ddf, 9337 }, + { 0x000de0, 9347 }, + { 0x000de1, 9358 }, + { 0x000de2, 9370 }, + { 0x000de3, 9381 }, + { 0x000de4, 9400 }, + { 0x000de5, 9420 }, + { 0x000de6, 9437 }, + { 0x000de7, 9451 }, + { 0x000de8, 9466 }, + { 0x000de9, 9477 }, + { 0x000dea, 9489 }, + { 0x000deb, 9501 }, + { 0x000dec, 9518 }, + { 0x000ded, 9535 }, + { 0x000df0, 9549 }, + { 0x000df1, 9561 }, + { 0x000df2, 9574 }, + { 0x000df3, 9587 }, + { 0x000df4, 9599 }, + { 0x000df5, 9610 }, + { 0x000df6, 9621 }, + { 0x000df7, 9633 }, + { 0x000df8, 9646 }, + { 0x000df9, 9659 }, + { 0x000ea1, 9671 }, + { 0x000ea2, 9685 }, + { 0x000ea3, 9704 }, + { 0x000ea4, 9722 }, + { 0x000ea5, 9735 }, + { 0x000ea6, 9753 }, + { 0x000ea7, 9771 }, + { 0x000ea8, 9785 }, + { 0x000ea9, 9804 }, + { 0x000eaa, 9817 }, + { 0x000eab, 9836 }, + { 0x000eac, 9854 }, + { 0x000ead, 9872 }, + { 0x000eae, 9889 }, + { 0x000eaf, 9907 }, + { 0x000eb0, 9926 }, + { 0x000eb1, 9944 }, + { 0x000eb2, 9957 }, + { 0x000eb3, 9970 }, + { 0x000eb4, 9988 }, + { 0x000eb5, 10005 }, + { 0x000eb6, 10017 }, + { 0x000eb7, 10034 }, + { 0x000eb8, 10047 }, + { 0x000eb9, 10060 }, + { 0x000eba, 10078 }, + { 0x000ebb, 10091 }, + { 0x000ebc, 10105 }, + { 0x000ebd, 10118 }, + { 0x000ebe, 10132 }, + { 0x000ebf, 10145 }, + { 0x000ec0, 10154 }, + { 0x000ec1, 10164 }, + { 0x000ec2, 10174 }, + { 0x000ec3, 10185 }, + { 0x000ec4, 10195 }, + { 0x000ec5, 10204 }, + { 0x000ec6, 10215 }, + { 0x000ec7, 10225 }, + { 0x000ec8, 10234 }, + { 0x000ec9, 10244 }, + { 0x000eca, 10255 }, + { 0x000ecb, 10265 }, + { 0x000ecc, 10275 }, + { 0x000ecd, 10284 }, + { 0x000ece, 10295 }, + { 0x000ecf, 10305 }, + { 0x000ed0, 10315 }, + { 0x000ed1, 10325 }, + { 0x000ed2, 10335 }, + { 0x000ed3, 10345 }, + { 0x000ed4, 10354 }, + { 0x000ed5, 10370 }, + { 0x000ed6, 10391 }, + { 0x000ed7, 10411 }, + { 0x000ed8, 10426 }, + { 0x000ed9, 10446 }, + { 0x000eda, 10466 }, + { 0x000edb, 10482 }, + { 0x000edc, 10497 }, + { 0x000edd, 10518 }, + { 0x000ede, 10538 }, + { 0x000edf, 10558 }, + { 0x000ee0, 10577 }, + { 0x000ee1, 10597 }, + { 0x000ee2, 10618 }, + { 0x000ee3, 10638 }, + { 0x000ee4, 10653 }, + { 0x000ee5, 10668 }, + { 0x000ee6, 10687 }, + { 0x000ee7, 10701 }, + { 0x000ee8, 10720 }, + { 0x000ee9, 10735 }, + { 0x000eea, 10750 }, + { 0x000eeb, 10765 }, + { 0x000eec, 10781 }, + { 0x000eed, 10796 }, + { 0x000eee, 10812 }, + { 0x000eef, 10827 }, + { 0x000ef0, 10851 }, + { 0x000ef1, 10876 }, + { 0x000ef2, 10901 }, + { 0x000ef3, 10916 }, + { 0x000ef4, 10941 }, + { 0x000ef5, 10967 }, + { 0x000ef6, 10986 }, + { 0x000ef7, 10999 }, + { 0x000ef8, 11013 }, + { 0x000ef9, 11030 }, + { 0x000efa, 11057 }, + { 0x000eff, 11078 }, + { 0x0013bc, 11089 }, + { 0x0013bd, 11092 }, + { 0x0013be, 11095 }, + { 0x0020ac, 11106 }, + { 0x00fd01, 11115 }, + { 0x00fd02, 11130 }, + { 0x00fd03, 11145 }, + { 0x00fd04, 11157 }, + { 0x00fd05, 11168 }, + { 0x00fd06, 11181 }, + { 0x00fd07, 11195 }, + { 0x00fd08, 11211 }, + { 0x00fd09, 11222 }, + { 0x00fd0a, 11232 }, + { 0x00fd0b, 11241 }, + { 0x00fd0c, 11250 }, + { 0x00fd0d, 11259 }, + { 0x00fd0e, 11269 }, + { 0x00fd0f, 11279 }, + { 0x00fd10, 11296 }, + { 0x00fd11, 11311 }, + { 0x00fd12, 11325 }, + { 0x00fd13, 11335 }, + { 0x00fd14, 11346 }, + { 0x00fd15, 11356 }, + { 0x00fd16, 11366 }, + { 0x00fd17, 11376 }, + { 0x00fd18, 11387 }, + { 0x00fd19, 11399 }, + { 0x00fd1a, 11417 }, + { 0x00fd1b, 11433 }, + { 0x00fd1c, 11447 }, + { 0x00fd1d, 11465 }, + { 0x00fd1e, 11482 }, + { 0x00fe01, 11493 }, + { 0x00fe02, 11502 }, + { 0x00fe03, 11519 }, + { 0x00fe04, 11536 }, + { 0x00fe05, 11553 }, + { 0x00fe06, 11569 }, + { 0x00fe07, 11585 }, + { 0x00fe08, 11600 }, + { 0x00fe09, 11615 }, + { 0x00fe0a, 11635 }, + { 0x00fe0b, 11650 }, + { 0x00fe0c, 11670 }, + { 0x00fe0d, 11686 }, + { 0x00fe0e, 11707 }, + { 0x00fe0f, 11722 }, + { 0x00fe11, 11742 }, + { 0x00fe12, 11759 }, + { 0x00fe13, 11776 }, + { 0x00fe20, 11792 }, + { 0x00fe21, 11805 }, + { 0x00fe22, 11822 }, + { 0x00fe23, 11841 }, + { 0x00fe24, 11861 }, + { 0x00fe25, 11883 }, + { 0x00fe26, 11906 }, + { 0x00fe27, 11930 }, + { 0x00fe28, 11950 }, + { 0x00fe29, 11971 }, + { 0x00fe2a, 11995 }, + { 0x00fe2b, 12020 }, + { 0x00fe2c, 12045 }, + { 0x00fe2d, 12066 }, + { 0x00fe2e, 12088 }, + { 0x00fe2f, 12107 }, + { 0x00fe30, 12128 }, + { 0x00fe31, 12153 }, + { 0x00fe32, 12181 }, + { 0x00fe33, 12195 }, + { 0x00fe34, 12213 }, + { 0x00fe50, 12223 }, + { 0x00fe51, 12234 }, + { 0x00fe52, 12245 }, + { 0x00fe53, 12261 }, + { 0x00fe53, 12278 }, + { 0x00fe54, 12289 }, + { 0x00fe55, 12301 }, + { 0x00fe56, 12312 }, + { 0x00fe57, 12326 }, + { 0x00fe58, 12341 }, + { 0x00fe59, 12356 }, + { 0x00fe5a, 12373 }, + { 0x00fe5b, 12384 }, + { 0x00fe5c, 12397 }, + { 0x00fe5d, 12409 }, + { 0x00fe5e, 12419 }, + { 0x00fe5f, 12437 }, + { 0x00fe60, 12459 }, + { 0x00fe61, 12473 }, + { 0x00fe62, 12483 }, + { 0x00fe63, 12493 }, + { 0x00fe64, 12505 }, + { 0x00fe64, 12521 }, + { 0x00fe65, 12532 }, + { 0x00fe65, 12556 }, + { 0x00fe66, 12567 }, + { 0x00fe67, 12584 }, + { 0x00fe68, 12599 }, + { 0x00fe69, 12616 }, + { 0x00fe6a, 12637 }, + { 0x00fe6b, 12653 }, + { 0x00fe6c, 12669 }, + { 0x00fe6d, 12689 }, + { 0x00fe6e, 12708 }, + { 0x00fe6f, 12724 }, + { 0x00fe70, 12738 }, + { 0x00fe71, 12753 }, + { 0x00fe72, 12777 }, + { 0x00fe73, 12795 }, + { 0x00fe74, 12811 }, + { 0x00fe75, 12829 }, + { 0x00fe76, 12847 }, + { 0x00fe77, 12864 }, + { 0x00fe78, 12887 }, + { 0x00fe79, 12903 }, + { 0x00fe7a, 12919 }, + { 0x00fe80, 12938 }, + { 0x00fe81, 12945 }, + { 0x00fe82, 12952 }, + { 0x00fe83, 12959 }, + { 0x00fe84, 12966 }, + { 0x00fe85, 12973 }, + { 0x00fe86, 12980 }, + { 0x00fe87, 12987 }, + { 0x00fe88, 12994 }, + { 0x00fe89, 13001 }, + { 0x00fe8a, 13008 }, + { 0x00fe8b, 13025 }, + { 0x00fe8c, 13044 }, + { 0x00fea0, 13055 }, + { 0x00fea1, 13058 }, + { 0x00fea2, 13061 }, + { 0x00fea3, 13064 }, + { 0x00fea4, 13068 }, + { 0x00fea5, 13072 }, + { 0x00fed0, 13076 }, + { 0x00fed1, 13097 }, + { 0x00fed2, 13117 }, + { 0x00fed4, 13137 }, + { 0x00fed5, 13157 }, + { 0x00fee0, 13174 }, + { 0x00fee1, 13187 }, + { 0x00fee2, 13201 }, + { 0x00fee3, 13212 }, + { 0x00fee4, 13225 }, + { 0x00fee5, 13240 }, + { 0x00fee6, 13256 }, + { 0x00fee7, 13273 }, + { 0x00fee8, 13291 }, + { 0x00fee9, 13311 }, + { 0x00feea, 13327 }, + { 0x00feeb, 13343 }, + { 0x00feec, 13359 }, + { 0x00feed, 13375 }, + { 0x00feee, 13391 }, + { 0x00feef, 13413 }, + { 0x00fef0, 13431 }, + { 0x00fef1, 13449 }, + { 0x00fef2, 13467 }, + { 0x00fef3, 13485 }, + { 0x00fef4, 13503 }, + { 0x00fef5, 13521 }, + { 0x00fef6, 13535 }, + { 0x00fef7, 13549 }, + { 0x00fef8, 13563 }, + { 0x00fef9, 13577 }, + { 0x00fefa, 13596 }, + { 0x00fefb, 13615 }, + { 0x00fefc, 13635 }, + { 0x00fefd, 13655 }, + { 0x00ff08, 13669 }, + { 0x00ff09, 13679 }, + { 0x00ff0a, 13683 }, + { 0x00ff0b, 13692 }, + { 0x00ff0d, 13698 }, + { 0x00ff13, 13705 }, + { 0x00ff14, 13711 }, + { 0x00ff15, 13723 }, + { 0x00ff1b, 13731 }, + { 0x00ff20, 13738 }, + { 0x00ff21, 13748 }, + { 0x00ff22, 13754 }, + { 0x00ff23, 13763 }, + { 0x00ff23, 13770 }, + { 0x00ff24, 13782 }, + { 0x00ff25, 13789 }, + { 0x00ff26, 13798 }, + { 0x00ff27, 13807 }, + { 0x00ff28, 13825 }, + { 0x00ff29, 13833 }, + { 0x00ff2a, 13841 }, + { 0x00ff2b, 13857 }, + { 0x00ff2c, 13865 }, + { 0x00ff2d, 13872 }, + { 0x00ff2e, 13882 }, + { 0x00ff2f, 13893 }, + { 0x00ff30, 13904 }, + { 0x00ff31, 13916 }, + { 0x00ff32, 13923 }, + { 0x00ff33, 13936 }, + { 0x00ff34, 13947 }, + { 0x00ff35, 13960 }, + { 0x00ff36, 13972 }, + { 0x00ff37, 13986 }, + { 0x00ff37, 13996 }, + { 0x00ff37, 14013 }, + { 0x00ff38, 14026 }, + { 0x00ff39, 14040 }, + { 0x00ff3a, 14053 }, + { 0x00ff3b, 14069 }, + { 0x00ff3c, 14086 }, + { 0x00ff3c, 14109 }, + { 0x00ff3d, 14125 }, + { 0x00ff3d, 14150 }, + { 0x00ff3d, 14168 }, + { 0x00ff3e, 14177 }, + { 0x00ff3e, 14202 }, + { 0x00ff3e, 14211 }, + { 0x00ff3f, 14229 }, + { 0x00ff50, 14244 }, + { 0x00ff51, 14249 }, + { 0x00ff52, 14254 }, + { 0x00ff53, 14257 }, + { 0x00ff54, 14263 }, + { 0x00ff55, 14268 }, + { 0x00ff55, 14276 }, + { 0x00ff56, 14282 }, + { 0x00ff56, 14292 }, + { 0x00ff57, 14297 }, + { 0x00ff58, 14301 }, + { 0x00ff60, 14307 }, + { 0x00ff61, 14314 }, + { 0x00ff62, 14320 }, + { 0x00ff63, 14328 }, + { 0x00ff65, 14335 }, + { 0x00ff66, 14340 }, + { 0x00ff67, 14345 }, + { 0x00ff68, 14350 }, + { 0x00ff69, 14355 }, + { 0x00ff6a, 14362 }, + { 0x00ff6b, 14367 }, + { 0x00ff7e, 14373 }, + { 0x00ff7e, 14387 }, + { 0x00ff7e, 14400 }, + { 0x00ff7e, 14414 }, + { 0x00ff7e, 14428 }, + { 0x00ff7e, 14444 }, + { 0x00ff7e, 14456 }, + { 0x00ff7e, 14468 }, + { 0x00ff7f, 14482 }, + { 0x00ff80, 14491 }, + { 0x00ff89, 14500 }, + { 0x00ff8d, 14507 }, + { 0x00ff91, 14516 }, + { 0x00ff92, 14522 }, + { 0x00ff93, 14528 }, + { 0x00ff94, 14534 }, + { 0x00ff95, 14540 }, + { 0x00ff96, 14548 }, + { 0x00ff97, 14556 }, + { 0x00ff98, 14562 }, + { 0x00ff99, 14571 }, + { 0x00ff9a, 14579 }, + { 0x00ff9a, 14590 }, + { 0x00ff9b, 14599 }, + { 0x00ff9b, 14607 }, + { 0x00ff9c, 14620 }, + { 0x00ff9d, 14627 }, + { 0x00ff9e, 14636 }, + { 0x00ff9f, 14646 }, + { 0x00ffaa, 14656 }, + { 0x00ffab, 14668 }, + { 0x00ffac, 14675 }, + { 0x00ffad, 14688 }, + { 0x00ffae, 14700 }, + { 0x00ffaf, 14711 }, + { 0x00ffb0, 14721 }, + { 0x00ffb1, 14726 }, + { 0x00ffb2, 14731 }, + { 0x00ffb3, 14736 }, + { 0x00ffb4, 14741 }, + { 0x00ffb5, 14746 }, + { 0x00ffb6, 14751 }, + { 0x00ffb7, 14756 }, + { 0x00ffb8, 14761 }, + { 0x00ffb9, 14766 }, + { 0x00ffbd, 14771 }, + { 0x00ffbe, 14780 }, + { 0x00ffbf, 14783 }, + { 0x00ffc0, 14786 }, + { 0x00ffc1, 14789 }, + { 0x00ffc2, 14792 }, + { 0x00ffc3, 14795 }, + { 0x00ffc4, 14798 }, + { 0x00ffc5, 14801 }, + { 0x00ffc6, 14804 }, + { 0x00ffc7, 14807 }, + { 0x00ffc8, 14811 }, + { 0x00ffc8, 14815 }, + { 0x00ffc9, 14818 }, + { 0x00ffc9, 14822 }, + { 0x00ffca, 14825 }, + { 0x00ffca, 14829 }, + { 0x00ffcb, 14832 }, + { 0x00ffcb, 14836 }, + { 0x00ffcc, 14839 }, + { 0x00ffcc, 14843 }, + { 0x00ffcd, 14846 }, + { 0x00ffcd, 14850 }, + { 0x00ffce, 14853 }, + { 0x00ffce, 14857 }, + { 0x00ffcf, 14860 }, + { 0x00ffcf, 14864 }, + { 0x00ffd0, 14867 }, + { 0x00ffd0, 14871 }, + { 0x00ffd1, 14874 }, + { 0x00ffd1, 14878 }, + { 0x00ffd2, 14882 }, + { 0x00ffd2, 14886 }, + { 0x00ffd3, 14889 }, + { 0x00ffd3, 14893 }, + { 0x00ffd4, 14896 }, + { 0x00ffd4, 14900 }, + { 0x00ffd5, 14903 }, + { 0x00ffd5, 14907 }, + { 0x00ffd6, 14910 }, + { 0x00ffd6, 14914 }, + { 0x00ffd7, 14917 }, + { 0x00ffd7, 14921 }, + { 0x00ffd8, 14924 }, + { 0x00ffd8, 14928 }, + { 0x00ffd9, 14931 }, + { 0x00ffd9, 14935 }, + { 0x00ffda, 14938 }, + { 0x00ffda, 14942 }, + { 0x00ffdb, 14945 }, + { 0x00ffdb, 14949 }, + { 0x00ffdc, 14953 }, + { 0x00ffdc, 14957 }, + { 0x00ffdd, 14961 }, + { 0x00ffdd, 14965 }, + { 0x00ffde, 14969 }, + { 0x00ffde, 14973 }, + { 0x00ffdf, 14977 }, + { 0x00ffdf, 14981 }, + { 0x00ffe0, 14985 }, + { 0x00ffe0, 14989 }, + { 0x00ffe1, 14993 }, + { 0x00ffe2, 15001 }, + { 0x00ffe3, 15009 }, + { 0x00ffe4, 15019 }, + { 0x00ffe5, 15029 }, + { 0x00ffe6, 15039 }, + { 0x00ffe7, 15050 }, + { 0x00ffe8, 15057 }, + { 0x00ffe9, 15064 }, + { 0x00ffea, 15070 }, + { 0x00ffeb, 15076 }, + { 0x00ffec, 15084 }, + { 0x00ffed, 15092 }, + { 0x00ffee, 15100 }, + { 0x00fff1, 15108 }, + { 0x00fff2, 15122 }, + { 0x00fff3, 15136 }, + { 0x00fff4, 15150 }, + { 0x00fff5, 15164 }, + { 0x00fff6, 15178 }, + { 0x00fff7, 15192 }, + { 0x00fff8, 15206 }, + { 0x00fff9, 15220 }, + { 0x00fffa, 15234 }, + { 0x00ffff, 15249 }, + { 0x100012c, 15256 }, + { 0x100012d, 15263 }, + { 0x1000174, 15270 }, + { 0x1000175, 15282 }, + { 0x1000176, 15294 }, + { 0x1000177, 15306 }, + { 0x100018f, 15318 }, + { 0x100019f, 15324 }, + { 0x10001a0, 15332 }, + { 0x10001a1, 15338 }, + { 0x10001af, 15344 }, + { 0x10001b0, 15350 }, + { 0x10001b5, 15356 }, + { 0x10001b6, 15364 }, + { 0x10001b7, 15372 }, + { 0x10001d1, 15376 }, + { 0x10001d2, 15383 }, + { 0x10001e6, 15390 }, + { 0x10001e7, 15397 }, + { 0x1000259, 15404 }, + { 0x1000275, 15410 }, + { 0x1000292, 15418 }, + { 0x1000492, 15422 }, + { 0x1000493, 15439 }, + { 0x1000496, 15456 }, + { 0x1000497, 15479 }, + { 0x100049a, 15502 }, + { 0x100049b, 15524 }, + { 0x100049c, 15546 }, + { 0x100049d, 15569 }, + { 0x10004a2, 15592 }, + { 0x10004a3, 15614 }, + { 0x10004ae, 15636 }, + { 0x10004af, 15656 }, + { 0x10004b0, 15676 }, + { 0x10004b1, 15700 }, + { 0x10004b2, 15724 }, + { 0x10004b3, 15746 }, + { 0x10004b6, 15768 }, + { 0x10004b7, 15791 }, + { 0x10004b8, 15814 }, + { 0x10004b9, 15838 }, + { 0x10004ba, 15862 }, + { 0x10004bb, 15876 }, + { 0x10004d8, 15890 }, + { 0x10004d9, 15905 }, + { 0x10004e2, 15920 }, + { 0x10004e3, 15938 }, + { 0x10004e8, 15956 }, + { 0x10004e9, 15971 }, + { 0x10004ee, 15986 }, + { 0x10004ef, 16004 }, + { 0x1000531, 16022 }, + { 0x1000532, 16035 }, + { 0x1000533, 16048 }, + { 0x1000534, 16061 }, + { 0x1000535, 16073 }, + { 0x1000536, 16087 }, + { 0x1000537, 16099 }, + { 0x1000538, 16110 }, + { 0x1000539, 16122 }, + { 0x100053a, 16134 }, + { 0x100053b, 16147 }, + { 0x100053c, 16160 }, + { 0x100053d, 16174 }, + { 0x100053e, 16187 }, + { 0x100053f, 16200 }, + { 0x1000540, 16213 }, + { 0x1000541, 16225 }, + { 0x1000542, 16238 }, + { 0x1000543, 16252 }, + { 0x1000544, 16266 }, + { 0x1000545, 16279 }, + { 0x1000546, 16291 }, + { 0x1000547, 16303 }, + { 0x1000548, 16316 }, + { 0x1000549, 16328 }, + { 0x100054a, 16341 }, + { 0x100054b, 16353 }, + { 0x100054c, 16365 }, + { 0x100054d, 16377 }, + { 0x100054e, 16389 }, + { 0x100054f, 16402 }, + { 0x1000550, 16416 }, + { 0x1000551, 16428 }, + { 0x1000552, 16441 }, + { 0x1000553, 16455 }, + { 0x1000554, 16469 }, + { 0x1000555, 16481 }, + { 0x1000556, 16492 }, + { 0x100055a, 16504 }, + { 0x100055b, 16524 }, + { 0x100055b, 16540 }, + { 0x100055c, 16556 }, + { 0x100055c, 16572 }, + { 0x100055d, 16588 }, + { 0x100055d, 16601 }, + { 0x100055e, 16626 }, + { 0x100055e, 16642 }, + { 0x1000561, 16660 }, + { 0x1000562, 16673 }, + { 0x1000563, 16686 }, + { 0x1000564, 16699 }, + { 0x1000565, 16711 }, + { 0x1000566, 16725 }, + { 0x1000567, 16737 }, + { 0x1000568, 16748 }, + { 0x1000569, 16760 }, + { 0x100056a, 16772 }, + { 0x100056b, 16785 }, + { 0x100056c, 16798 }, + { 0x100056d, 16812 }, + { 0x100056e, 16825 }, + { 0x100056f, 16838 }, + { 0x1000570, 16851 }, + { 0x1000571, 16863 }, + { 0x1000572, 16876 }, + { 0x1000573, 16890 }, + { 0x1000574, 16904 }, + { 0x1000575, 16917 }, + { 0x1000576, 16929 }, + { 0x1000577, 16941 }, + { 0x1000578, 16954 }, + { 0x1000579, 16966 }, + { 0x100057a, 16979 }, + { 0x100057b, 16991 }, + { 0x100057c, 17003 }, + { 0x100057d, 17015 }, + { 0x100057e, 17027 }, + { 0x100057f, 17040 }, + { 0x1000580, 17054 }, + { 0x1000581, 17066 }, + { 0x1000582, 17079 }, + { 0x1000583, 17093 }, + { 0x1000584, 17107 }, + { 0x1000585, 17119 }, + { 0x1000586, 17130 }, + { 0x1000587, 17142 }, + { 0x1000589, 17163 }, + { 0x1000589, 17182 }, + { 0x100058a, 17200 }, + { 0x100058a, 17216 }, + { 0x1000653, 17234 }, + { 0x1000654, 17253 }, + { 0x1000655, 17272 }, + { 0x1000660, 17291 }, + { 0x1000661, 17300 }, + { 0x1000662, 17309 }, + { 0x1000663, 17318 }, + { 0x1000664, 17327 }, + { 0x1000665, 17336 }, + { 0x1000666, 17345 }, + { 0x1000667, 17354 }, + { 0x1000668, 17363 }, + { 0x1000669, 17372 }, + { 0x100066a, 17381 }, + { 0x1000670, 17396 }, + { 0x1000679, 17420 }, + { 0x100067e, 17432 }, + { 0x1000686, 17443 }, + { 0x1000688, 17456 }, + { 0x1000691, 17468 }, + { 0x1000698, 17480 }, + { 0x10006a4, 17491 }, + { 0x10006a9, 17502 }, + { 0x10006af, 17515 }, + { 0x10006ba, 17526 }, + { 0x10006be, 17545 }, + { 0x10006c1, 17568 }, + { 0x10006cc, 17584 }, + { 0x10006cc, 17601 }, + { 0x10006d2, 17611 }, + { 0x10006d4, 17628 }, + { 0x10006f0, 17644 }, + { 0x10006f1, 17652 }, + { 0x10006f2, 17660 }, + { 0x10006f3, 17668 }, + { 0x10006f4, 17676 }, + { 0x10006f5, 17684 }, + { 0x10006f6, 17692 }, + { 0x10006f7, 17700 }, + { 0x10006f8, 17708 }, + { 0x10006f9, 17716 }, + { 0x1000d82, 17724 }, + { 0x1000d83, 17732 }, + { 0x1000d85, 17740 }, + { 0x1000d86, 17747 }, + { 0x1000d87, 17755 }, + { 0x1000d88, 17763 }, + { 0x1000d89, 17772 }, + { 0x1000d8a, 17779 }, + { 0x1000d8b, 17787 }, + { 0x1000d8c, 17794 }, + { 0x1000d8d, 17802 }, + { 0x1000d8e, 17810 }, + { 0x1000d8f, 17819 }, + { 0x1000d90, 17827 }, + { 0x1000d91, 17836 }, + { 0x1000d92, 17843 }, + { 0x1000d93, 17851 }, + { 0x1000d94, 17859 }, + { 0x1000d95, 17866 }, + { 0x1000d96, 17874 }, + { 0x1000d9a, 17882 }, + { 0x1000d9b, 17890 }, + { 0x1000d9c, 17899 }, + { 0x1000d9d, 17907 }, + { 0x1000d9e, 17916 }, + { 0x1000d9f, 17925 }, + { 0x1000da0, 17934 }, + { 0x1000da1, 17942 }, + { 0x1000da2, 17951 }, + { 0x1000da3, 17959 }, + { 0x1000da4, 17968 }, + { 0x1000da5, 17977 }, + { 0x1000da6, 17987 }, + { 0x1000da7, 17996 }, + { 0x1000da8, 18005 }, + { 0x1000da9, 18015 }, + { 0x1000daa, 18024 }, + { 0x1000dab, 18034 }, + { 0x1000dac, 18043 }, + { 0x1000dad, 18053 }, + { 0x1000dae, 18062 }, + { 0x1000daf, 18072 }, + { 0x1000db0, 18081 }, + { 0x1000db1, 18091 }, + { 0x1000db3, 18099 }, + { 0x1000db4, 18109 }, + { 0x1000db5, 18117 }, + { 0x1000db6, 18126 }, + { 0x1000db7, 18134 }, + { 0x1000db8, 18143 }, + { 0x1000db9, 18151 }, + { 0x1000dba, 18160 }, + { 0x1000dbb, 18168 }, + { 0x1000dbd, 18176 }, + { 0x1000dc0, 18184 }, + { 0x1000dc1, 18192 }, + { 0x1000dc2, 18201 }, + { 0x1000dc3, 18211 }, + { 0x1000dc4, 18219 }, + { 0x1000dc5, 18227 }, + { 0x1000dc6, 18236 }, + { 0x1000dca, 18244 }, + { 0x1000dcf, 18252 }, + { 0x1000dd0, 18261 }, + { 0x1000dd1, 18270 }, + { 0x1000dd2, 18280 }, + { 0x1000dd3, 18288 }, + { 0x1000dd4, 18297 }, + { 0x1000dd6, 18305 }, + { 0x1000dd8, 18314 }, + { 0x1000dd9, 18323 }, + { 0x1000dda, 18331 }, + { 0x1000ddb, 18340 }, + { 0x1000ddc, 18349 }, + { 0x1000ddd, 18357 }, + { 0x1000dde, 18366 }, + { 0x1000ddf, 18375 }, + { 0x1000df2, 18384 }, + { 0x1000df3, 18394 }, + { 0x1000df4, 18404 }, + { 0x10010d0, 18420 }, + { 0x10010d1, 18432 }, + { 0x10010d2, 18445 }, + { 0x10010d3, 18458 }, + { 0x10010d4, 18471 }, + { 0x10010d5, 18483 }, + { 0x10010d6, 18496 }, + { 0x10010d7, 18509 }, + { 0x10010d8, 18522 }, + { 0x10010d9, 18534 }, + { 0x10010da, 18547 }, + { 0x10010db, 18560 }, + { 0x10010dc, 18573 }, + { 0x10010dd, 18586 }, + { 0x10010de, 18598 }, + { 0x10010df, 18611 }, + { 0x10010e0, 18625 }, + { 0x10010e1, 18638 }, + { 0x10010e2, 18651 }, + { 0x10010e3, 18664 }, + { 0x10010e4, 18676 }, + { 0x10010e5, 18690 }, + { 0x10010e6, 18704 }, + { 0x10010e7, 18718 }, + { 0x10010e8, 18731 }, + { 0x10010e9, 18745 }, + { 0x10010ea, 18759 }, + { 0x10010eb, 18772 }, + { 0x10010ec, 18785 }, + { 0x10010ed, 18798 }, + { 0x10010ee, 18812 }, + { 0x10010ef, 18825 }, + { 0x10010f0, 18839 }, + { 0x10010f1, 18852 }, + { 0x10010f2, 18864 }, + { 0x10010f3, 18877 }, + { 0x10010f4, 18889 }, + { 0x10010f5, 18902 }, + { 0x10010f6, 18915 }, + { 0x1001e02, 18927 }, + { 0x1001e03, 18937 }, + { 0x1001e0a, 18947 }, + { 0x1001e0b, 18957 }, + { 0x1001e1e, 18967 }, + { 0x1001e1f, 18977 }, + { 0x1001e36, 18987 }, + { 0x1001e37, 18997 }, + { 0x1001e40, 19007 }, + { 0x1001e41, 19017 }, + { 0x1001e56, 19027 }, + { 0x1001e57, 19037 }, + { 0x1001e60, 19047 }, + { 0x1001e61, 19057 }, + { 0x1001e6a, 19067 }, + { 0x1001e6b, 19077 }, + { 0x1001e80, 19087 }, + { 0x1001e81, 19094 }, + { 0x1001e82, 19101 }, + { 0x1001e83, 19108 }, + { 0x1001e84, 19115 }, + { 0x1001e85, 19126 }, + { 0x1001e8a, 19137 }, + { 0x1001e8b, 19147 }, + { 0x1001ea0, 19157 }, + { 0x1001ea1, 19167 }, + { 0x1001ea2, 19177 }, + { 0x1001ea3, 19183 }, + { 0x1001ea4, 19189 }, + { 0x1001ea5, 19206 }, + { 0x1001ea6, 19223 }, + { 0x1001ea7, 19240 }, + { 0x1001ea8, 19257 }, + { 0x1001ea9, 19273 }, + { 0x1001eaa, 19289 }, + { 0x1001eab, 19306 }, + { 0x1001eac, 19323 }, + { 0x1001ead, 19343 }, + { 0x1001eae, 19363 }, + { 0x1001eaf, 19375 }, + { 0x1001eb0, 19387 }, + { 0x1001eb1, 19399 }, + { 0x1001eb2, 19411 }, + { 0x1001eb3, 19422 }, + { 0x1001eb4, 19433 }, + { 0x1001eb5, 19445 }, + { 0x1001eb6, 19457 }, + { 0x1001eb7, 19472 }, + { 0x1001eb8, 19487 }, + { 0x1001eb9, 19497 }, + { 0x1001eba, 19507 }, + { 0x1001ebb, 19513 }, + { 0x1001ebc, 19519 }, + { 0x1001ebd, 19526 }, + { 0x1001ebe, 19533 }, + { 0x1001ebf, 19550 }, + { 0x1001ec0, 19567 }, + { 0x1001ec1, 19584 }, + { 0x1001ec2, 19601 }, + { 0x1001ec3, 19617 }, + { 0x1001ec4, 19633 }, + { 0x1001ec5, 19650 }, + { 0x1001ec6, 19667 }, + { 0x1001ec7, 19687 }, + { 0x1001ec8, 19707 }, + { 0x1001ec9, 19713 }, + { 0x1001eca, 19719 }, + { 0x1001ecb, 19729 }, + { 0x1001ecc, 19739 }, + { 0x1001ecd, 19749 }, + { 0x1001ece, 19759 }, + { 0x1001ecf, 19765 }, + { 0x1001ed0, 19771 }, + { 0x1001ed1, 19788 }, + { 0x1001ed2, 19805 }, + { 0x1001ed3, 19822 }, + { 0x1001ed4, 19839 }, + { 0x1001ed5, 19855 }, + { 0x1001ed6, 19871 }, + { 0x1001ed7, 19888 }, + { 0x1001ed8, 19905 }, + { 0x1001ed9, 19925 }, + { 0x1001eda, 19945 }, + { 0x1001edb, 19956 }, + { 0x1001edc, 19967 }, + { 0x1001edd, 19978 }, + { 0x1001ede, 19989 }, + { 0x1001edf, 19999 }, + { 0x1001ee0, 20009 }, + { 0x1001ee1, 20020 }, + { 0x1001ee2, 20031 }, + { 0x1001ee3, 20045 }, + { 0x1001ee4, 20059 }, + { 0x1001ee5, 20069 }, + { 0x1001ee6, 20079 }, + { 0x1001ee7, 20085 }, + { 0x1001ee8, 20091 }, + { 0x1001ee9, 20102 }, + { 0x1001eea, 20113 }, + { 0x1001eeb, 20124 }, + { 0x1001eec, 20135 }, + { 0x1001eed, 20145 }, + { 0x1001eee, 20155 }, + { 0x1001eef, 20166 }, + { 0x1001ef0, 20177 }, + { 0x1001ef1, 20191 }, + { 0x1001ef2, 20205 }, + { 0x1001ef3, 20212 }, + { 0x1001ef4, 20219 }, + { 0x1001ef5, 20229 }, + { 0x1001ef6, 20239 }, + { 0x1001ef7, 20245 }, + { 0x1001ef8, 20251 }, + { 0x1001ef9, 20258 }, + { 0x1002070, 20265 }, + { 0x1002074, 20278 }, + { 0x1002075, 20291 }, + { 0x1002076, 20304 }, + { 0x1002077, 20316 }, + { 0x1002078, 20330 }, + { 0x1002079, 20344 }, + { 0x1002080, 20357 }, + { 0x1002081, 20371 }, + { 0x1002082, 20384 }, + { 0x1002083, 20397 }, + { 0x1002084, 20412 }, + { 0x1002085, 20426 }, + { 0x1002086, 20440 }, + { 0x1002087, 20453 }, + { 0x1002088, 20468 }, + { 0x1002089, 20483 }, + { 0x10020a0, 20497 }, + { 0x10020a1, 20505 }, + { 0x10020a2, 20515 }, + { 0x10020a3, 20528 }, + { 0x10020a4, 20539 }, + { 0x10020a5, 20548 }, + { 0x10020a6, 20557 }, + { 0x10020a7, 20567 }, + { 0x10020a8, 20578 }, + { 0x10020a9, 20588 }, + { 0x10020aa, 20596 }, + { 0x10020ab, 20610 }, + { 0x1002202, 20619 }, + { 0x1002205, 20636 }, + { 0x1002208, 20645 }, + { 0x1002209, 20655 }, + { 0x100220b, 20668 }, + { 0x100221a, 20679 }, + { 0x100221b, 20690 }, + { 0x100221c, 20699 }, + { 0x100222c, 20710 }, + { 0x100222d, 20720 }, + { 0x1002235, 20730 }, + { 0x1002247, 20738 }, + { 0x1002248, 20750 }, + { 0x1002262, 20759 }, + { 0x1002263, 20772 }, + { 0x1002800, 20781 }, + { 0x1002801, 20795 }, + { 0x1002802, 20810 }, + { 0x1002803, 20825 }, + { 0x1002804, 20841 }, + { 0x1002805, 20856 }, + { 0x1002806, 20872 }, + { 0x1002807, 20888 }, + { 0x1002808, 20905 }, + { 0x1002809, 20920 }, + { 0x100280a, 20936 }, + { 0x100280b, 20952 }, + { 0x100280c, 20969 }, + { 0x100280d, 20985 }, + { 0x100280e, 21002 }, + { 0x100280f, 21019 }, + { 0x1002810, 21037 }, + { 0x1002811, 21052 }, + { 0x1002812, 21068 }, + { 0x1002813, 21084 }, + { 0x1002814, 21101 }, + { 0x1002815, 21117 }, + { 0x1002816, 21134 }, + { 0x1002817, 21151 }, + { 0x1002818, 21169 }, + { 0x1002819, 21185 }, + { 0x100281a, 21202 }, + { 0x100281b, 21219 }, + { 0x100281c, 21237 }, + { 0x100281d, 21254 }, + { 0x100281e, 21272 }, + { 0x100281f, 21290 }, + { 0x1002820, 21309 }, + { 0x1002821, 21324 }, + { 0x1002822, 21340 }, + { 0x1002823, 21356 }, + { 0x1002824, 21373 }, + { 0x1002825, 21389 }, + { 0x1002826, 21406 }, + { 0x1002827, 21423 }, + { 0x1002828, 21441 }, + { 0x1002829, 21457 }, + { 0x100282a, 21474 }, + { 0x100282b, 21491 }, + { 0x100282c, 21509 }, + { 0x100282d, 21526 }, + { 0x100282e, 21544 }, + { 0x100282f, 21562 }, + { 0x1002830, 21581 }, + { 0x1002831, 21597 }, + { 0x1002832, 21614 }, + { 0x1002833, 21631 }, + { 0x1002834, 21649 }, + { 0x1002835, 21666 }, + { 0x1002836, 21684 }, + { 0x1002837, 21702 }, + { 0x1002838, 21721 }, + { 0x1002839, 21738 }, + { 0x100283a, 21756 }, + { 0x100283b, 21774 }, + { 0x100283c, 21793 }, + { 0x100283d, 21811 }, + { 0x100283e, 21830 }, + { 0x100283f, 21849 }, + { 0x1002840, 21869 }, + { 0x1002841, 21884 }, + { 0x1002842, 21900 }, + { 0x1002843, 21916 }, + { 0x1002844, 21933 }, + { 0x1002845, 21949 }, + { 0x1002846, 21966 }, + { 0x1002847, 21983 }, + { 0x1002848, 22001 }, + { 0x1002849, 22017 }, + { 0x100284a, 22034 }, + { 0x100284b, 22051 }, + { 0x100284c, 22069 }, + { 0x100284d, 22086 }, + { 0x100284e, 22104 }, + { 0x100284f, 22122 }, + { 0x1002850, 22141 }, + { 0x1002851, 22157 }, + { 0x1002852, 22174 }, + { 0x1002853, 22191 }, + { 0x1002854, 22209 }, + { 0x1002855, 22226 }, + { 0x1002856, 22244 }, + { 0x1002857, 22262 }, + { 0x1002858, 22281 }, + { 0x1002859, 22298 }, + { 0x100285a, 22316 }, + { 0x100285b, 22334 }, + { 0x100285c, 22353 }, + { 0x100285d, 22371 }, + { 0x100285e, 22390 }, + { 0x100285f, 22409 }, + { 0x1002860, 22429 }, + { 0x1002861, 22445 }, + { 0x1002862, 22462 }, + { 0x1002863, 22479 }, + { 0x1002864, 22497 }, + { 0x1002865, 22514 }, + { 0x1002866, 22532 }, + { 0x1002867, 22550 }, + { 0x1002868, 22569 }, + { 0x1002869, 22586 }, + { 0x100286a, 22604 }, + { 0x100286b, 22622 }, + { 0x100286c, 22641 }, + { 0x100286d, 22659 }, + { 0x100286e, 22678 }, + { 0x100286f, 22697 }, + { 0x1002870, 22717 }, + { 0x1002871, 22734 }, + { 0x1002872, 22752 }, + { 0x1002873, 22770 }, + { 0x1002874, 22789 }, + { 0x1002875, 22807 }, + { 0x1002876, 22826 }, + { 0x1002877, 22845 }, + { 0x1002878, 22865 }, + { 0x1002879, 22883 }, + { 0x100287a, 22902 }, + { 0x100287b, 22921 }, + { 0x100287c, 22941 }, + { 0x100287d, 22960 }, + { 0x100287e, 22980 }, + { 0x100287f, 23000 }, + { 0x1002880, 23021 }, + { 0x1002881, 23036 }, + { 0x1002882, 23052 }, + { 0x1002883, 23068 }, + { 0x1002884, 23085 }, + { 0x1002885, 23101 }, + { 0x1002886, 23118 }, + { 0x1002887, 23135 }, + { 0x1002888, 23153 }, + { 0x1002889, 23169 }, + { 0x100288a, 23186 }, + { 0x100288b, 23203 }, + { 0x100288c, 23221 }, + { 0x100288d, 23238 }, + { 0x100288e, 23256 }, + { 0x100288f, 23274 }, + { 0x1002890, 23293 }, + { 0x1002891, 23309 }, + { 0x1002892, 23326 }, + { 0x1002893, 23343 }, + { 0x1002894, 23361 }, + { 0x1002895, 23378 }, + { 0x1002896, 23396 }, + { 0x1002897, 23414 }, + { 0x1002898, 23433 }, + { 0x1002899, 23450 }, + { 0x100289a, 23468 }, + { 0x100289b, 23486 }, + { 0x100289c, 23505 }, + { 0x100289d, 23523 }, + { 0x100289e, 23542 }, + { 0x100289f, 23561 }, + { 0x10028a0, 23581 }, + { 0x10028a1, 23597 }, + { 0x10028a2, 23614 }, + { 0x10028a3, 23631 }, + { 0x10028a4, 23649 }, + { 0x10028a5, 23666 }, + { 0x10028a6, 23684 }, + { 0x10028a7, 23702 }, + { 0x10028a8, 23721 }, + { 0x10028a9, 23738 }, + { 0x10028aa, 23756 }, + { 0x10028ab, 23774 }, + { 0x10028ac, 23793 }, + { 0x10028ad, 23811 }, + { 0x10028ae, 23830 }, + { 0x10028af, 23849 }, + { 0x10028b0, 23869 }, + { 0x10028b1, 23886 }, + { 0x10028b2, 23904 }, + { 0x10028b3, 23922 }, + { 0x10028b4, 23941 }, + { 0x10028b5, 23959 }, + { 0x10028b6, 23978 }, + { 0x10028b7, 23997 }, + { 0x10028b8, 24017 }, + { 0x10028b9, 24035 }, + { 0x10028ba, 24054 }, + { 0x10028bb, 24073 }, + { 0x10028bc, 24093 }, + { 0x10028bd, 24112 }, + { 0x10028be, 24132 }, + { 0x10028bf, 24152 }, + { 0x10028c0, 24173 }, + { 0x10028c1, 24189 }, + { 0x10028c2, 24206 }, + { 0x10028c3, 24223 }, + { 0x10028c4, 24241 }, + { 0x10028c5, 24258 }, + { 0x10028c6, 24276 }, + { 0x10028c7, 24294 }, + { 0x10028c8, 24313 }, + { 0x10028c9, 24330 }, + { 0x10028ca, 24348 }, + { 0x10028cb, 24366 }, + { 0x10028cc, 24385 }, + { 0x10028cd, 24403 }, + { 0x10028ce, 24422 }, + { 0x10028cf, 24441 }, + { 0x10028d0, 24461 }, + { 0x10028d1, 24478 }, + { 0x10028d2, 24496 }, + { 0x10028d3, 24514 }, + { 0x10028d4, 24533 }, + { 0x10028d5, 24551 }, + { 0x10028d6, 24570 }, + { 0x10028d7, 24589 }, + { 0x10028d8, 24609 }, + { 0x10028d9, 24627 }, + { 0x10028da, 24646 }, + { 0x10028db, 24665 }, + { 0x10028dc, 24685 }, + { 0x10028dd, 24704 }, + { 0x10028de, 24724 }, + { 0x10028df, 24744 }, + { 0x10028e0, 24765 }, + { 0x10028e1, 24782 }, + { 0x10028e2, 24800 }, + { 0x10028e3, 24818 }, + { 0x10028e4, 24837 }, + { 0x10028e5, 24855 }, + { 0x10028e6, 24874 }, + { 0x10028e7, 24893 }, + { 0x10028e8, 24913 }, + { 0x10028e9, 24931 }, + { 0x10028ea, 24950 }, + { 0x10028eb, 24969 }, + { 0x10028ec, 24989 }, + { 0x10028ed, 25008 }, + { 0x10028ee, 25028 }, + { 0x10028ef, 25048 }, + { 0x10028f0, 25069 }, + { 0x10028f1, 25087 }, + { 0x10028f2, 25106 }, + { 0x10028f3, 25125 }, + { 0x10028f4, 25145 }, + { 0x10028f5, 25164 }, + { 0x10028f6, 25184 }, + { 0x10028f7, 25204 }, + { 0x10028f8, 25225 }, + { 0x10028f9, 25244 }, + { 0x10028fa, 25264 }, + { 0x10028fb, 25284 }, + { 0x10028fc, 25305 }, + { 0x10028fd, 25325 }, + { 0x10028fe, 25346 }, + { 0x10028ff, 25367 }, + { 0x1008fe01, 25389 }, + { 0x1008fe02, 25401 }, + { 0x1008fe03, 25413 }, + { 0x1008fe04, 25425 }, + { 0x1008fe05, 25437 }, + { 0x1008fe06, 25449 }, + { 0x1008fe07, 25461 }, + { 0x1008fe08, 25473 }, + { 0x1008fe09, 25485 }, + { 0x1008fe0a, 25497 }, + { 0x1008fe0b, 25510 }, + { 0x1008fe0c, 25523 }, + { 0x1008fe20, 25536 }, + { 0x1008fe21, 25543 }, + { 0x1008fe22, 25553 }, + { 0x1008fe23, 25564 }, + { 0x1008fe24, 25575 }, + { 0x1008fe25, 25589 }, + { 0x1008ff01, 25601 }, + { 0x1008ff02, 25610 }, + { 0x1008ff03, 25626 }, + { 0x1008ff04, 25644 }, + { 0x1008ff05, 25658 }, + { 0x1008ff06, 25674 }, + { 0x1008ff10, 25692 }, + { 0x1008ff11, 25700 }, + { 0x1008ff12, 25717 }, + { 0x1008ff13, 25727 }, + { 0x1008ff14, 25744 }, + { 0x1008ff15, 25754 }, + { 0x1008ff16, 25764 }, + { 0x1008ff17, 25774 }, + { 0x1008ff18, 25784 }, + { 0x1008ff19, 25793 }, + { 0x1008ff1a, 25798 }, + { 0x1008ff1b, 25804 }, + { 0x1008ff1c, 25811 }, + { 0x1008ff1d, 25823 }, + { 0x1008ff1e, 25834 }, + { 0x1008ff1f, 25839 }, + { 0x1008ff20, 25848 }, + { 0x1008ff21, 25857 }, + { 0x1008ff22, 25867 }, + { 0x1008ff23, 25882 }, + { 0x1008ff24, 25891 }, + { 0x1008ff25, 25902 }, + { 0x1008ff26, 25914 }, + { 0x1008ff27, 25919 }, + { 0x1008ff28, 25927 }, + { 0x1008ff29, 25932 }, + { 0x1008ff2a, 25940 }, + { 0x1008ff2b, 25949 }, + { 0x1008ff2c, 25956 }, + { 0x1008ff2d, 25962 }, + { 0x1008ff2e, 25974 }, + { 0x1008ff2f, 25978 }, + { 0x1008ff30, 25984 }, + { 0x1008ff31, 25994 }, + { 0x1008ff32, 26005 }, + { 0x1008ff33, 26016 }, + { 0x1008ff34, 26027 }, + { 0x1008ff35, 26038 }, + { 0x1008ff36, 26048 }, + { 0x1008ff37, 26053 }, + { 0x1008ff38, 26061 }, + { 0x1008ff39, 26069 }, + { 0x1008ff3a, 26081 }, + { 0x1008ff3b, 26090 }, + { 0x1008ff3c, 26107 }, + { 0x1008ff3d, 26115 }, + { 0x1008ff3e, 26125 }, + { 0x1008ff3f, 26137 }, + { 0x1008ff40, 26149 }, + { 0x1008ff41, 26157 }, + { 0x1008ff42, 26165 }, + { 0x1008ff43, 26173 }, + { 0x1008ff44, 26181 }, + { 0x1008ff45, 26189 }, + { 0x1008ff46, 26197 }, + { 0x1008ff47, 26205 }, + { 0x1008ff48, 26213 }, + { 0x1008ff49, 26221 }, + { 0x1008ff4a, 26229 }, + { 0x1008ff4b, 26237 }, + { 0x1008ff4c, 26245 }, + { 0x1008ff4d, 26253 }, + { 0x1008ff4e, 26261 }, + { 0x1008ff4f, 26269 }, + { 0x1008ff50, 26277 }, + { 0x1008ff51, 26293 }, + { 0x1008ff52, 26310 }, + { 0x1008ff53, 26315 }, + { 0x1008ff55, 26318 }, + { 0x1008ff56, 26330 }, + { 0x1008ff57, 26336 }, + { 0x1008ff58, 26341 }, + { 0x1008ff59, 26345 }, + { 0x1008ff5a, 26353 }, + { 0x1008ff5b, 26357 }, + { 0x1008ff5c, 26367 }, + { 0x1008ff5d, 26373 }, + { 0x1008ff5e, 26382 }, + { 0x1008ff5f, 26387 }, + { 0x1008ff60, 26390 }, + { 0x1008ff61, 26397 }, + { 0x1008ff62, 26404 }, + { 0x1008ff63, 26411 }, + { 0x1008ff65, 26419 }, + { 0x1008ff66, 26426 }, + { 0x1008ff67, 26433 }, + { 0x1008ff68, 26441 }, + { 0x1008ff69, 26445 }, + { 0x1008ff6a, 26450 }, + { 0x1008ff6b, 26461 }, + { 0x1008ff6c, 26466 }, + { 0x1008ff6d, 26473 }, + { 0x1008ff6e, 26479 }, + { 0x1008ff72, 26485 }, + { 0x1008ff73, 26491 }, + { 0x1008ff74, 26498 }, + { 0x1008ff75, 26512 }, + { 0x1008ff76, 26523 }, + { 0x1008ff77, 26534 }, + { 0x1008ff78, 26539 }, + { 0x1008ff79, 26548 }, + { 0x1008ff7a, 26559 }, + { 0x1008ff7b, 26571 }, + { 0x1008ff7c, 26576 }, + { 0x1008ff7d, 26582 }, + { 0x1008ff7e, 26594 }, + { 0x1008ff7f, 26602 }, + { 0x1008ff80, 26611 }, + { 0x1008ff81, 26620 }, + { 0x1008ff82, 26626 }, + { 0x1008ff84, 26633 }, + { 0x1008ff85, 26640 }, + { 0x1008ff86, 26648 }, + { 0x1008ff87, 26656 }, + { 0x1008ff88, 26662 }, + { 0x1008ff89, 26674 }, + { 0x1008ff8a, 26679 }, + { 0x1008ff8b, 26684 }, + { 0x1008ff8c, 26691 }, + { 0x1008ff8d, 26699 }, + { 0x1008ff8e, 26704 }, + { 0x1008ff8f, 26714 }, + { 0x1008ff90, 26721 }, + { 0x1008ff91, 26733 }, + { 0x1008ff92, 26742 }, + { 0x1008ff93, 26748 }, + { 0x1008ff94, 26756 }, + { 0x1008ff95, 26766 }, + { 0x1008ff96, 26771 }, + { 0x1008ff97, 26775 }, + { 0x1008ff98, 26788 }, + { 0x1008ff99, 26800 }, + { 0x1008ff9a, 26816 }, + { 0x1008ff9b, 26825 }, + { 0x1008ff9c, 26841 }, + { 0x1008ff9d, 26852 }, + { 0x1008ff9e, 26862 }, + { 0x1008ff9f, 26875 }, + { 0x1008ffa0, 26880 }, + { 0x1008ffa1, 26893 }, + { 0x1008ffa2, 26898 }, + { 0x1008ffa3, 26906 }, + { 0x1008ffa4, 26910 }, + { 0x1008ffa5, 26916 }, + { 0x1008ffa6, 26923 }, + { 0x1008ffa7, 26928 }, + { 0x1008ffa8, 26936 }, + { 0x1008ffa9, 26946 }, + { 0x1008ffb0, 26961 }, + { 0x1008ffb1, 26972 }, + { 0x1008ffb2, 26984 }, + { 0xffffff, 26997 } }; static const gdk_key gdk_keys_by_name[] = { @@ -2631,36 +4559,36 @@ static const gdk_key gdk_keys_by_name[] = { { 0x000031, 142 }, { 0x000032, 144 }, { 0x000033, 146 }, - { 0x00fd10, 11341 }, - { 0x00fd0e, 11314 }, - { 0x00fd05, 11213 }, - { 0x00fd19, 11444 }, - { 0x00fd15, 11401 }, - { 0x00fd0f, 11324 }, - { 0x00fd1c, 11492 }, - { 0x00fd1a, 11462 }, - { 0x00fd01, 11160 }, - { 0x00fd1e, 11527 }, - { 0x00fd06, 11226 }, - { 0x00fd07, 11240 }, - { 0x00fd1b, 11478 }, - { 0x00fd02, 11175 }, - { 0x00fd13, 11380 }, - { 0x00fd12, 11370 }, - { 0x00fd11, 11356 }, - { 0x00fd04, 11202 }, - { 0x00fd0a, 11277 }, - { 0x00fd0b, 11286 }, - { 0x00fd0c, 11295 }, - { 0x00fd16, 11411 }, - { 0x00fd1d, 11510 }, - { 0x00fd09, 11267 }, - { 0x00fd18, 11432 }, - { 0x00fd08, 11256 }, - { 0x00fd03, 11190 }, - { 0x00fd14, 11391 }, - { 0x00fd17, 11421 }, - { 0x00fd0d, 11304 }, + { 0x00fd10, 11296 }, + { 0x00fd0e, 11269 }, + { 0x00fd05, 11168 }, + { 0x00fd19, 11399 }, + { 0x00fd15, 11356 }, + { 0x00fd0f, 11279 }, + { 0x00fd1c, 11447 }, + { 0x00fd1a, 11417 }, + { 0x00fd01, 11115 }, + { 0x00fd1e, 11482 }, + { 0x00fd06, 11181 }, + { 0x00fd07, 11195 }, + { 0x00fd1b, 11433 }, + { 0x00fd02, 11130 }, + { 0x00fd13, 11335 }, + { 0x00fd12, 11325 }, + { 0x00fd11, 11311 }, + { 0x00fd04, 11157 }, + { 0x00fd0a, 11232 }, + { 0x00fd0b, 11241 }, + { 0x00fd0c, 11250 }, + { 0x00fd16, 11366 }, + { 0x00fd1d, 11465 }, + { 0x00fd09, 11222 }, + { 0x00fd18, 11387 }, + { 0x00fd08, 11211 }, + { 0x00fd03, 11145 }, + { 0x00fd14, 11346 }, + { 0x00fd17, 11376 }, + { 0x00fd0d, 11259 }, { 0x000034, 148 }, { 0x000035, 150 }, { 0x000036, 152 }, @@ -2670,1268 +4598,2250 @@ static const gdk_key gdk_keys_by_name[] = { { 0x000041, 207 }, { 0x0000c6, 787 }, { 0x0000c1, 744 }, - { 0x0001c3, 1473 }, - { 0x00fe70, 12471 }, - { 0x00fe71, 12486 }, + { 0x1001ea0, 19157 }, + { 0x0001c3, 1489 }, + { 0x1001eae, 19363 }, + { 0x1001eb6, 19457 }, + { 0x1001eb0, 19387 }, + { 0x1001eb2, 19411 }, + { 0x1001eb4, 19433 }, + { 0x00fe70, 12738 }, + { 0x00fe71, 12753 }, { 0x0000c2, 751 }, + { 0x1001ea4, 19189 }, + { 0x1001eac, 19323 }, + { 0x1001ea6, 19223 }, + { 0x1001ea8, 19257 }, + { 0x1001eaa, 19289 }, + { 0x1008ff39, 26069 }, { 0x0000c4, 770 }, { 0x0000c0, 737 }, - { 0x00ffe9, 14456 }, - { 0x00ffea, 14462 }, - { 0x0003c0, 2068 }, - { 0x0001a1, 1281 }, - { 0x0005d9, 3221 }, - { 0x0005c7, 3008 }, - { 0x0005e9, 3360 }, - { 0x0005c8, 3020 }, - { 0x0005ac, 2848 }, - { 0x0005d6, 3188 }, - { 0x0005cf, 3107 }, - { 0x0005ef, 3451 }, - { 0x0005ec, 3406 }, - { 0x0005ee, 3438 }, - { 0x0005eb, 3390 }, - { 0x0005e1, 3260 }, - { 0x0005da, 3232 }, - { 0x0005e7, 3328 }, - { 0x0005cd, 3084 }, - { 0x0005c1, 2899 }, - { 0x0005c3, 2931 }, - { 0x0005c4, 2950 }, - { 0x0005c6, 2990 }, - { 0x0005c5, 2968 }, - { 0x0005e7, 3338 }, - { 0x0005cc, 3072 }, - { 0x0005e3, 3282 }, - { 0x0005f0, 3464 }, - { 0x0005ed, 3422 }, - { 0x0005ce, 3095 }, - { 0x0005e4, 3293 }, - { 0x0005c2, 2912 }, - { 0x0005e5, 3304 }, - { 0x0005e6, 3316 }, - { 0x0005e2, 3271 }, - { 0x0005bf, 2878 }, - { 0x0005d1, 3130 }, - { 0x0005d5, 3177 }, - { 0x0005d3, 3152 }, - { 0x0005bb, 2861 }, - { 0x0005f1, 3477 }, - { 0x0005d4, 3164 }, - { 0x0005f2, 3491 }, - { 0x00ff7e, 13847 }, - { 0x0005d7, 3199 }, - { 0x0005e0, 3245 }, - { 0x0005ca, 3049 }, - { 0x0005c9, 3031 }, - { 0x0005d0, 3118 }, - { 0x0005cb, 3060 }, - { 0x0005e8, 3349 }, - { 0x0005ea, 3379 }, - { 0x0005d8, 3210 }, - { 0x0005d2, 3140 }, + { 0x1001ea2, 19177 }, + { 0x00ffe9, 15064 }, + { 0x00ffea, 15070 }, + { 0x0003c0, 2084 }, + { 0x0001a1, 1297 }, + { 0x1008ff50, 26277 }, + { 0x1008ff51, 26293 }, + { 0x1000660, 17291 }, + { 0x1000661, 17300 }, + { 0x1000662, 17309 }, + { 0x1000663, 17318 }, + { 0x1000664, 17327 }, + { 0x1000665, 17336 }, + { 0x1000666, 17345 }, + { 0x1000667, 17354 }, + { 0x1000668, 17363 }, + { 0x1000669, 17372 }, + { 0x0005d9, 3237 }, + { 0x0005c7, 3024 }, + { 0x0005e9, 3376 }, + { 0x0005c8, 3036 }, + { 0x0005ac, 2864 }, + { 0x0005d6, 3204 }, + { 0x0005cf, 3123 }, + { 0x0005ef, 3467 }, + { 0x0005ec, 3422 }, + { 0x1000688, 17456 }, + { 0x10006cc, 17584 }, + { 0x0005ee, 3454 }, + { 0x0005eb, 3406 }, + { 0x0005e1, 3276 }, + { 0x10006d4, 17628 }, + { 0x10006af, 17515 }, + { 0x0005da, 3248 }, + { 0x0005e7, 3344 }, + { 0x0005cd, 3100 }, + { 0x0005c1, 2915 }, + { 0x1000654, 17253 }, + { 0x1000655, 17272 }, + { 0x0005c3, 2947 }, + { 0x0005c4, 2966 }, + { 0x0005c6, 3006 }, + { 0x0005c5, 2984 }, + { 0x0005e7, 3354 }, + { 0x10006be, 17545 }, + { 0x10006c1, 17568 }, + { 0x0005cc, 3088 }, + { 0x1000698, 17480 }, + { 0x0005e3, 3298 }, + { 0x0005f0, 3480 }, + { 0x0005ed, 3438 }, + { 0x10006a9, 17502 }, + { 0x0005ce, 3111 }, + { 0x0005e4, 3309 }, + { 0x1000653, 17234 }, + { 0x0005c2, 2928 }, + { 0x0005e5, 3320 }, + { 0x0005e6, 3332 }, + { 0x10006ba, 17526 }, + { 0x100067e, 17432 }, + { 0x100066a, 17381 }, + { 0x0005e2, 3287 }, + { 0x0005bf, 2894 }, + { 0x0005d1, 3146 }, + { 0x1000691, 17468 }, + { 0x0005d5, 3193 }, + { 0x0005d3, 3168 }, + { 0x0005bb, 2877 }, + { 0x0005f1, 3493 }, + { 0x0005d4, 3180 }, + { 0x0005f2, 3507 }, + { 0x1000670, 17396 }, + { 0x00ff7e, 14373 }, + { 0x0005d7, 3215 }, + { 0x0005e0, 3261 }, + { 0x1000686, 17443 }, + { 0x0005ca, 3065 }, + { 0x0005c9, 3047 }, + { 0x0005d0, 3134 }, + { 0x0005cb, 3076 }, + { 0x1000679, 17420 }, + { 0x10006a4, 17491 }, + { 0x0005e8, 3365 }, + { 0x0005ea, 3395 }, + { 0x10006d2, 17611 }, + { 0x0005d8, 3226 }, + { 0x0005d2, 3156 }, { 0x0000c5, 781 }, + { 0x1000538, 16110 }, + { 0x1000531, 16022 }, + { 0x1000532, 16035 }, + { 0x1000549, 16328 }, + { 0x1000534, 16061 }, + { 0x1000541, 16225 }, + { 0x1000537, 16099 }, + { 0x1000556, 16492 }, + { 0x1000542, 16238 }, + { 0x1000533, 16048 }, + { 0x1000545, 16279 }, + { 0x1000540, 16213 }, + { 0x100053b, 16147 }, + { 0x100054b, 16353 }, + { 0x1000554, 16469 }, + { 0x100053f, 16200 }, + { 0x100053d, 16174 }, + { 0x100053c, 16160 }, + { 0x1000544, 16266 }, + { 0x1000546, 16291 }, + { 0x1000555, 16481 }, + { 0x100054a, 16341 }, + { 0x1000553, 16455 }, + { 0x100054c, 16365 }, + { 0x1000550, 16416 }, + { 0x100054d, 16377 }, + { 0x1000547, 16303 }, + { 0x1000543, 16252 }, + { 0x1000539, 16122 }, + { 0x100053e, 16187 }, + { 0x1000551, 16428 }, + { 0x100054f, 16402 }, + { 0x100054e, 16389 }, + { 0x1000548, 16316 }, + { 0x1000552, 16441 }, + { 0x1000535, 16073 }, + { 0x1000536, 16087 }, + { 0x100053a, 16134 }, + { 0x100055b, 16524 }, + { 0x100055c, 16556 }, + { 0x100055a, 16504 }, + { 0x1000568, 16748 }, + { 0x1000561, 16660 }, + { 0x1000562, 16673 }, + { 0x100055d, 16588 }, + { 0x1000579, 16966 }, + { 0x1000564, 16699 }, + { 0x1000571, 16863 }, + { 0x1000567, 16737 }, + { 0x100055c, 16572 }, + { 0x1000586, 17130 }, + { 0x1000589, 17163 }, + { 0x1000572, 16876 }, + { 0x1000563, 16686 }, + { 0x1000575, 16917 }, + { 0x1000570, 16851 }, + { 0x100058a, 17200 }, + { 0x100056b, 16785 }, + { 0x100057b, 16991 }, + { 0x1000584, 17107 }, + { 0x100056f, 16838 }, + { 0x100056d, 16812 }, + { 0x1000587, 17142 }, + { 0x100056c, 16798 }, + { 0x1000574, 16904 }, + { 0x1000576, 16929 }, + { 0x1000585, 17119 }, + { 0x100055e, 16626 }, + { 0x100057a, 16979 }, + { 0x1000583, 17093 }, + { 0x100055e, 16642 }, + { 0x100057c, 17003 }, + { 0x1000580, 17054 }, + { 0x100057d, 17015 }, + { 0x100055d, 16601 }, + { 0x1000577, 16941 }, + { 0x100055b, 16540 }, + { 0x1000573, 16890 }, + { 0x1000569, 16760 }, + { 0x100056e, 16825 }, + { 0x1000581, 17066 }, + { 0x100057f, 17040 }, + { 0x1000589, 17182 }, + { 0x100057e, 17027 }, + { 0x1000578, 16954 }, + { 0x1000582, 17079 }, + { 0x1000565, 16711 }, + { 0x100058a, 17216 }, + { 0x1000566, 16725 }, + { 0x100056a, 16772 }, { 0x0000c3, 763 }, - { 0x00fe7a, 12652 }, + { 0x00fe7a, 12919 }, + { 0x1008ff9b, 26825 }, + { 0x1008ff97, 26775 }, + { 0x1008ff11, 25700 }, + { 0x1008ff32, 26005 }, + { 0x1008ffb2, 26984 }, + { 0x1008ff12, 25717 }, + { 0x1008ff17, 25774 }, + { 0x1008ff31, 25994 }, + { 0x1008ff14, 25744 }, + { 0x1008ff16, 25764 }, + { 0x1008ff13, 25727 }, + { 0x1008ff99, 26800 }, + { 0x1008ff1c, 25811 }, + { 0x1008ff98, 26788 }, + { 0x1008ff3e, 26125 }, + { 0x1008ff15, 25754 }, + { 0x1008ff8d, 26699 }, { 0x000042, 209 }, - { 0x00ff08, 13264 }, - { 0x00ff58, 13775 }, - { 0x00fe74, 12544 }, - { 0x00ff6b, 13841 }, - { 0x0006be, 4011 }, - { 0x0006ae, 3729 }, + { 0x1001e02, 18927 }, + { 0x1008ff26, 25914 }, + { 0x1008ff3f, 26137 }, + { 0x00ff08, 13669 }, + { 0x1008ff93, 26748 }, + { 0x00ff58, 14301 }, + { 0x1008ffa6, 26923 }, + { 0x1008ff94, 26756 }, + { 0x1008ff52, 26310 }, + { 0x00fe74, 12811 }, + { 0x00ff6b, 14367 }, + { 0x1008ff3b, 26090 }, + { 0x0006be, 4079 }, + { 0x0006ae, 3771 }, { 0x000043, 211 }, - { 0x0002c5, 1826 }, - { 0x0001c6, 1487 }, - { 0x00ff69, 13829 }, - { 0x00ffe5, 14421 }, - { 0x0001c8, 1494 }, + { 0x1008ff53, 26315 }, + { 0x00fea2, 13061 }, + { 0x00fea5, 13072 }, + { 0x00fea4, 13068 }, + { 0x0002c5, 1842 }, + { 0x0001c6, 1503 }, + { 0x1008ff1d, 25823 }, + { 0x1008ff20, 25848 }, + { 0x00ff69, 14355 }, + { 0x00ffe5, 15029 }, + { 0x0001c8, 1510 }, { 0x0000c7, 790 }, - { 0x0002c6, 1836 }, - { 0x00ff0b, 13287 }, - { 0x00ff37, 13581 }, - { 0x0020a1, 11037 }, - { 0x00ffe3, 14401 }, - { 0x00ffe4, 14411 }, - { 0x0020a2, 11047 }, - { 0x0006e1, 4474 }, - { 0x0006e2, 4485 }, - { 0x0006fe, 4836 }, - { 0x0006e4, 4510 }, - { 0x0006bf, 4031 }, - { 0x0006fc, 4810 }, - { 0x0006e6, 4534 }, - { 0x0006ec, 4610 }, - { 0x0006ed, 4622 }, - { 0x0006ee, 4634 }, - { 0x0006f2, 4681 }, - { 0x0006f3, 4693 }, - { 0x0006e7, 4546 }, - { 0x0006e8, 4559 }, - { 0x0006ff, 4849 }, - { 0x0006e9, 4571 }, - { 0x0006e5, 4522 }, - { 0x0006b3, 3812 }, - { 0x0006b8, 3911 }, - { 0x0006eb, 4598 }, - { 0x0006b9, 3934 }, - { 0x0006ba, 3959 }, - { 0x0006ef, 4646 }, - { 0x0006f0, 4657 }, - { 0x0006fb, 4797 }, - { 0x0006fd, 4821 }, - { 0x0006ea, 4582 }, - { 0x0006f8, 4753 }, - { 0x0006f4, 4705 }, - { 0x0006e3, 4497 }, - { 0x0006f5, 4717 }, - { 0x0006f7, 4741 }, - { 0x0006f1, 4669 }, - { 0x0006f9, 4771 }, - { 0x0006e0, 4462 }, - { 0x0006fa, 4785 }, - { 0x0006f6, 4728 }, - { 0x0006c1, 4069 }, - { 0x0006c2, 4080 }, - { 0x0006de, 4431 }, - { 0x0006c4, 4105 }, - { 0x0006af, 3749 }, - { 0x0006dc, 4405 }, - { 0x0006c6, 4129 }, - { 0x0006cc, 4205 }, - { 0x0006cd, 4217 }, - { 0x0006ce, 4229 }, - { 0x0006d2, 4276 }, - { 0x0006d3, 4288 }, - { 0x0006c7, 4141 }, - { 0x0006c8, 4154 }, - { 0x0006df, 4444 }, - { 0x0006c9, 4166 }, - { 0x0006c5, 4117 }, - { 0x0006a3, 3530 }, - { 0x0006a8, 3629 }, - { 0x0006cb, 4193 }, - { 0x0006a9, 3652 }, - { 0x0006aa, 3677 }, - { 0x0006cf, 4241 }, - { 0x0006d0, 4252 }, - { 0x0006db, 4392 }, - { 0x0006dd, 4416 }, - { 0x0006ca, 4177 }, - { 0x0006d8, 4348 }, - { 0x0006d4, 4300 }, - { 0x0006c3, 4092 }, - { 0x0006d5, 4312 }, - { 0x0006d7, 4336 }, - { 0x0006d1, 4264 }, - { 0x0006d9, 4366 }, - { 0x0006c0, 4057 }, - { 0x0006da, 4380 }, - { 0x0006d6, 4323 }, + { 0x0002c6, 1852 }, + { 0x00fea1, 13058 }, + { 0x00ff0b, 13692 }, + { 0x1008fe21, 25543 }, + { 0x1008ff56, 26330 }, + { 0x00ff37, 13986 }, + { 0x10020a1, 20505 }, + { 0x1008ff3d, 26115 }, + { 0x1008ff22, 25867 }, + { 0x00ffe3, 15009 }, + { 0x00ffe4, 15019 }, + { 0x1008ff57, 26336 }, + { 0x10020a2, 20515 }, + { 0x1008ff58, 26341 }, + { 0x1008ff9c, 26841 }, + { 0x0006e1, 4542 }, + { 0x0006e2, 4553 }, + { 0x0006fe, 4904 }, + { 0x10004b6, 15768 }, + { 0x10004b8, 15814 }, + { 0x0006e4, 4578 }, + { 0x0006bf, 4099 }, + { 0x0006fc, 4878 }, + { 0x0006e6, 4602 }, + { 0x0006ec, 4678 }, + { 0x0006ed, 4690 }, + { 0x0006ee, 4702 }, + { 0x10004a2, 15592 }, + { 0x0006f2, 4749 }, + { 0x0006f3, 4761 }, + { 0x0006e7, 4614 }, + { 0x1000492, 15422 }, + { 0x0006e8, 4627 }, + { 0x0006ff, 4917 }, + { 0x10004b2, 15724 }, + { 0x0006e9, 4639 }, + { 0x0006e5, 4590 }, + { 0x0006b3, 3854 }, + { 0x10004e2, 15920 }, + { 0x0006b8, 3953 }, + { 0x0006eb, 4666 }, + { 0x100049a, 15502 }, + { 0x100049c, 15546 }, + { 0x0006b9, 3976 }, + { 0x0006ba, 4001 }, + { 0x0006ef, 4714 }, + { 0x10004e8, 15956 }, + { 0x0006f0, 4725 }, + { 0x10004d8, 15890 }, + { 0x0006fb, 4865 }, + { 0x0006fd, 4889 }, + { 0x10004ba, 15862 }, + { 0x0006ea, 4650 }, + { 0x0006f8, 4821 }, + { 0x0006f4, 4773 }, + { 0x0006e3, 4565 }, + { 0x0006f5, 4785 }, + { 0x10004ee, 15986 }, + { 0x10004ae, 15636 }, + { 0x10004b0, 15676 }, + { 0x0006f7, 4809 }, + { 0x0006f1, 4737 }, + { 0x0006f9, 4839 }, + { 0x0006e0, 4530 }, + { 0x0006fa, 4853 }, + { 0x0006f6, 4796 }, + { 0x1000496, 15456 }, + { 0x0006c1, 4137 }, + { 0x0006c2, 4148 }, + { 0x0006de, 4499 }, + { 0x10004b7, 15791 }, + { 0x10004b9, 15838 }, + { 0x0006c4, 4173 }, + { 0x0006af, 3791 }, + { 0x0006dc, 4473 }, + { 0x0006c6, 4197 }, + { 0x0006cc, 4273 }, + { 0x0006cd, 4285 }, + { 0x0006ce, 4297 }, + { 0x10004a3, 15614 }, + { 0x0006d2, 4344 }, + { 0x0006d3, 4356 }, + { 0x0006c7, 4209 }, + { 0x1000493, 15439 }, + { 0x0006c8, 4222 }, + { 0x10004b3, 15746 }, + { 0x0006df, 4512 }, + { 0x0006c9, 4234 }, + { 0x10004e3, 15938 }, + { 0x0006c5, 4185 }, + { 0x0006a3, 3546 }, + { 0x0006a8, 3645 }, + { 0x0006cb, 4261 }, + { 0x100049b, 15524 }, + { 0x100049d, 15569 }, + { 0x0006a9, 3668 }, + { 0x0006aa, 3693 }, + { 0x0006cf, 4309 }, + { 0x10004e9, 15971 }, + { 0x0006d0, 4320 }, + { 0x10004d9, 15905 }, + { 0x0006db, 4460 }, + { 0x0006dd, 4484 }, + { 0x10004bb, 15876 }, + { 0x0006ca, 4245 }, + { 0x0006d8, 4416 }, + { 0x0006d4, 4368 }, + { 0x0006c3, 4160 }, + { 0x0006d5, 4380 }, + { 0x10004ef, 16004 }, + { 0x10004af, 15656 }, + { 0x10004b1, 15700 }, + { 0x0006d7, 4404 }, + { 0x0006d1, 4332 }, + { 0x0006d9, 4434 }, + { 0x0006c0, 4125 }, + { 0x0006da, 4448 }, + { 0x0006d6, 4391 }, + { 0x1000497, 15479 }, { 0x000044, 213 }, - { 0x0001cf, 1516 }, - { 0x00ffff, 14500 }, - { 0x0020ab, 11142 }, - { 0x00ff54, 13737 }, - { 0x0001d0, 1523 }, + { 0x1008ff5a, 26353 }, + { 0x1001e0a, 18947 }, + { 0x0001cf, 1532 }, + { 0x00ffff, 15249 }, + { 0x1008ff59, 26345 }, + { 0x1008ff5b, 26357 }, + { 0x10020ab, 20610 }, + { 0x00ff54, 14263 }, + { 0x0001d0, 1539 }, { 0x000045, 215 }, - { 0x0003bd, 2060 }, - { 0x0000d0, 873 }, - { 0x0003cc, 2084 }, + { 0x0003bd, 2076 }, + { 0x0000d0, 877 }, + { 0x10001b7, 15372 }, + { 0x0003cc, 2100 }, { 0x0000c9, 806 }, - { 0x0001cc, 1509 }, + { 0x1001eb8, 19487 }, + { 0x0001cc, 1525 }, { 0x0000ca, 813 }, - { 0x0020a0, 11029 }, + { 0x1001ebe, 19533 }, + { 0x1001ec6, 19667 }, + { 0x1001ec0, 19567 }, + { 0x1001ec2, 19601 }, + { 0x1001ec4, 19633 }, + { 0x10020a0, 20497 }, { 0x0000cb, 825 }, { 0x0000c8, 799 }, - { 0x00ff2f, 13488 }, - { 0x00ff30, 13499 }, - { 0x0003aa, 1987 }, - { 0x00ff57, 13771 }, - { 0x0001ca, 1501 }, - { 0x00ff1b, 13326 }, - { 0x0000d0, 877 }, - { 0x0020ac, 11151 }, - { 0x00ff62, 13794 }, + { 0x1001eba, 19507 }, + { 0x00ff2f, 13893 }, + { 0x00ff30, 13904 }, + { 0x1008ff2c, 25956 }, + { 0x0003aa, 2003 }, + { 0x00ff57, 14297 }, + { 0x0001ca, 1517 }, + { 0x00ff1b, 13731 }, + { 0x0000d0, 873 }, + { 0x1001ebc, 19519 }, + { 0x0020ac, 11106 }, + { 0x1008ff5c, 26367 }, + { 0x00ff62, 14320 }, + { 0x1008ff5d, 26373 }, { 0x000046, 217 }, - { 0x00ffbe, 14254 }, - { 0x00ffc7, 14281 }, - { 0x00ffc8, 14285 }, - { 0x00ffc9, 14289 }, - { 0x00ffca, 14293 }, - { 0x00ffcb, 14297 }, - { 0x00ffcc, 14301 }, - { 0x00ffcd, 14305 }, - { 0x00ffce, 14309 }, - { 0x00ffcf, 14313 }, - { 0x00ffd0, 14317 }, - { 0x00ffbf, 14257 }, - { 0x00ffd1, 14321 }, - { 0x00ffd2, 14325 }, - { 0x00ffd3, 14329 }, - { 0x00ffd4, 14333 }, - { 0x00ffd5, 14337 }, - { 0x00ffd6, 14341 }, - { 0x00ffd7, 14345 }, - { 0x00ffd8, 14349 }, - { 0x00ffd9, 14353 }, - { 0x00ffda, 14357 }, - { 0x00ffc0, 14260 }, - { 0x00ffdb, 14361 }, - { 0x00ffdc, 14365 }, - { 0x00ffdd, 14369 }, - { 0x00ffde, 14373 }, - { 0x00ffdf, 14377 }, - { 0x00ffe0, 14381 }, - { 0x00ffc1, 14263 }, - { 0x00ffc2, 14266 }, - { 0x00ffc3, 14269 }, - { 0x00ffc4, 14272 }, - { 0x00ffc5, 14275 }, - { 0x00ffc6, 14278 }, - { 0x0020a3, 11060 }, - { 0x00ff68, 13824 }, - { 0x00fed0, 12671 }, + { 0x00ffbe, 14780 }, + { 0x00ffc7, 14807 }, + { 0x00ffc8, 14811 }, + { 0x00ffc9, 14818 }, + { 0x00ffca, 14825 }, + { 0x00ffcb, 14832 }, + { 0x00ffcc, 14839 }, + { 0x00ffcd, 14846 }, + { 0x00ffce, 14853 }, + { 0x00ffcf, 14860 }, + { 0x00ffd0, 14867 }, + { 0x00ffbf, 14783 }, + { 0x00ffd1, 14874 }, + { 0x00ffd2, 14882 }, + { 0x00ffd3, 14889 }, + { 0x00ffd4, 14896 }, + { 0x00ffd5, 14903 }, + { 0x00ffd6, 14910 }, + { 0x00ffd7, 14917 }, + { 0x00ffd8, 14924 }, + { 0x00ffd9, 14931 }, + { 0x00ffda, 14938 }, + { 0x00ffc0, 14786 }, + { 0x00ffdb, 14945 }, + { 0x00ffdc, 14953 }, + { 0x00ffdd, 14961 }, + { 0x00ffde, 14969 }, + { 0x00ffdf, 14977 }, + { 0x00ffe0, 14985 }, + { 0x00ffc1, 14789 }, + { 0x00ffc2, 14792 }, + { 0x00ffc3, 14795 }, + { 0x00ffc4, 14798 }, + { 0x00ffc5, 14801 }, + { 0x00ffc6, 14804 }, + { 0x10020a3, 20528 }, + { 0x1001e1e, 18967 }, + { 0x10006f0, 17644 }, + { 0x10006f1, 17652 }, + { 0x10006f2, 17660 }, + { 0x10006f3, 17668 }, + { 0x10006f4, 17676 }, + { 0x10006f5, 17684 }, + { 0x10006f6, 17692 }, + { 0x10006f7, 17700 }, + { 0x10006f8, 17708 }, + { 0x10006f9, 17716 }, + { 0x10006cc, 17601 }, + { 0x1008ff30, 25984 }, + { 0x1008ff3c, 26107 }, + { 0x00ff68, 14350 }, + { 0x00fed0, 13076 }, + { 0x1008ff27, 25919 }, + { 0x1008ff9d, 26852 }, + { 0x1008ff9e, 26862 }, { 0x000047, 219 }, - { 0x0002d5, 1848 }, - { 0x0002ab, 1759 }, - { 0x0003ab, 1995 }, - { 0x0002d8, 1858 }, - { 0x0007c1, 5316 }, - { 0x0007a1, 4867 }, - { 0x0007c2, 5328 }, - { 0x0007d7, 5564 }, - { 0x0007c4, 5351 }, - { 0x0007c5, 5363 }, - { 0x0007a2, 4885 }, - { 0x0007c7, 5388 }, - { 0x0007a3, 4905 }, - { 0x0007c3, 5339 }, - { 0x0007c9, 5410 }, - { 0x0007a4, 4921 }, - { 0x0007a5, 4957 }, - { 0x0007a5, 4938 }, - { 0x0007ca, 5421 }, - { 0x0007cb, 5433 }, - { 0x0007cb, 5446 }, - { 0x0007cc, 5458 }, - { 0x0007cd, 5467 }, - { 0x0007d9, 5584 }, - { 0x0007ab, 5039 }, - { 0x0007cf, 5485 }, - { 0x0007a7, 4977 }, - { 0x0007d6, 5554 }, - { 0x0007d0, 5499 }, - { 0x0007d8, 5574 }, - { 0x0007d1, 5508 }, - { 0x0007d2, 5518 }, - { 0x0007d4, 5530 }, - { 0x0007c8, 5398 }, - { 0x0007d5, 5540 }, - { 0x0007a8, 4997 }, - { 0x0007a9, 5017 }, - { 0x0007ce, 5476 }, - { 0x0007c6, 5377 }, - { 0x0007ae, 5057 }, - { 0x0007e1, 5596 }, - { 0x0007b1, 5093 }, - { 0x0007e2, 5608 }, - { 0x0007f7, 5866 }, - { 0x0007e4, 5631 }, - { 0x0007e5, 5643 }, - { 0x0007b2, 5111 }, - { 0x0007e7, 5668 }, - { 0x0007b3, 5131 }, - { 0x0007f3, 5810 }, - { 0x0007e3, 5619 }, - { 0x0007af, 5078 }, - { 0x0007e9, 5690 }, - { 0x0007b4, 5147 }, - { 0x0007b6, 5183 }, - { 0x0007b5, 5164 }, - { 0x0007ea, 5701 }, - { 0x0007eb, 5713 }, - { 0x0007eb, 5726 }, - { 0x0007ec, 5738 }, - { 0x0007ed, 5747 }, - { 0x0007f9, 5886 }, - { 0x0007bb, 5298 }, - { 0x0007ef, 5765 }, - { 0x0007b7, 5208 }, - { 0x0007f6, 5856 }, - { 0x0007f0, 5779 }, - { 0x0007f8, 5876 }, - { 0x0007f1, 5788 }, - { 0x0007f2, 5798 }, - { 0x00ff7e, 13861 }, - { 0x0007f4, 5832 }, - { 0x0007e8, 5678 }, - { 0x0007f5, 5842 }, - { 0x0007b8, 5228 }, - { 0x0007ba, 5270 }, - { 0x0007b9, 5248 }, - { 0x0007ee, 5756 }, - { 0x0007e6, 5657 }, + { 0x0002d5, 1864 }, + { 0x1008ff5e, 26382 }, + { 0x0002ab, 1775 }, + { 0x10001e6, 15390 }, + { 0x0003ab, 2011 }, + { 0x0002d8, 1874 }, + { 0x10010d0, 18420 }, + { 0x10010d1, 18432 }, + { 0x10010ea, 18759 }, + { 0x10010ed, 18798 }, + { 0x10010e9, 18745 }, + { 0x10010ec, 18785 }, + { 0x10010d3, 18458 }, + { 0x10010d4, 18471 }, + { 0x10010f6, 18915 }, + { 0x10010d2, 18445 }, + { 0x10010e6, 18704 }, + { 0x10010f0, 18839 }, + { 0x10010f4, 18889 }, + { 0x10010f1, 18852 }, + { 0x10010f2, 18864 }, + { 0x10010f5, 18902 }, + { 0x10010d8, 18522 }, + { 0x10010ef, 18825 }, + { 0x10010eb, 18772 }, + { 0x10010d9, 18534 }, + { 0x10010e5, 18690 }, + { 0x10010da, 18547 }, + { 0x10010db, 18560 }, + { 0x10010dc, 18573 }, + { 0x10010dd, 18586 }, + { 0x10010de, 18598 }, + { 0x10010e4, 18676 }, + { 0x10010e7, 18718 }, + { 0x10010e0, 18625 }, + { 0x10010e1, 18638 }, + { 0x10010e8, 18731 }, + { 0x10010d7, 18509 }, + { 0x10010e2, 18651 }, + { 0x10010e3, 18664 }, + { 0x10010d5, 18483 }, + { 0x10010f3, 18877 }, + { 0x10010ee, 18812 }, + { 0x10010d6, 18496 }, + { 0x10010df, 18611 }, + { 0x1008ff5f, 26387 }, + { 0x0007c1, 5384 }, + { 0x0007a1, 4935 }, + { 0x0007c2, 5396 }, + { 0x0007d7, 5632 }, + { 0x0007c4, 5419 }, + { 0x0007c5, 5431 }, + { 0x0007a2, 4953 }, + { 0x0007c7, 5456 }, + { 0x0007a3, 4973 }, + { 0x0007c3, 5407 }, + { 0x0007c9, 5478 }, + { 0x0007a4, 4989 }, + { 0x0007a5, 5006 }, + { 0x0007a5, 5026 }, + { 0x0007ca, 5489 }, + { 0x0007cb, 5501 }, + { 0x0007cb, 5514 }, + { 0x0007cc, 5526 }, + { 0x0007cd, 5535 }, + { 0x0007d9, 5652 }, + { 0x0007ab, 5107 }, + { 0x0007cf, 5553 }, + { 0x0007a7, 5045 }, + { 0x0007d6, 5622 }, + { 0x0007d0, 5567 }, + { 0x0007d8, 5642 }, + { 0x0007d1, 5576 }, + { 0x0007d2, 5586 }, + { 0x0007d4, 5598 }, + { 0x0007c8, 5466 }, + { 0x0007d5, 5608 }, + { 0x0007a8, 5065 }, + { 0x0007a9, 5085 }, + { 0x0007ce, 5544 }, + { 0x0007c6, 5445 }, + { 0x0007ae, 5125 }, + { 0x0007e1, 5664 }, + { 0x0007b1, 5161 }, + { 0x0007e2, 5676 }, + { 0x0007f7, 5934 }, + { 0x0007e4, 5699 }, + { 0x0007e5, 5711 }, + { 0x0007b2, 5179 }, + { 0x0007e7, 5736 }, + { 0x0007b3, 5199 }, + { 0x0007f3, 5878 }, + { 0x0007e3, 5687 }, + { 0x0007af, 5146 }, + { 0x0007e9, 5758 }, + { 0x0007b4, 5215 }, + { 0x0007b6, 5251 }, + { 0x0007b5, 5232 }, + { 0x0007ea, 5769 }, + { 0x0007eb, 5781 }, + { 0x0007eb, 5794 }, + { 0x0007ec, 5806 }, + { 0x0007ed, 5815 }, + { 0x0007f9, 5954 }, + { 0x0007bb, 5366 }, + { 0x0007ef, 5833 }, + { 0x0007b7, 5276 }, + { 0x0007f6, 5924 }, + { 0x0007f0, 5847 }, + { 0x0007f8, 5944 }, + { 0x0007f1, 5856 }, + { 0x0007f2, 5866 }, + { 0x00ff7e, 14387 }, + { 0x0007f4, 5900 }, + { 0x0007e8, 5746 }, + { 0x0007f5, 5910 }, + { 0x0007b8, 5296 }, + { 0x0007ba, 5338 }, + { 0x0007b9, 5316 }, + { 0x0007ee, 5824 }, + { 0x0007e6, 5725 }, + { 0x1008ffa4, 26910 }, { 0x000048, 221 }, - { 0x00ff31, 13511 }, - { 0x000ebf, 10068 }, - { 0x000ec0, 10077 }, - { 0x000ef6, 10909 }, - { 0x000ef7, 10922 }, - { 0x00ff39, 13605 }, - { 0x000eba, 10001 }, - { 0x000ea7, 9694 }, - { 0x000ec4, 10118 }, - { 0x000ec3, 10108 }, - { 0x000ed1, 10248 }, - { 0x00ff33, 13531 }, - { 0x00ff34, 13542 }, - { 0x000ebe, 10055 }, - { 0x000ed3, 10268 }, - { 0x000eb7, 9957 }, - { 0x000eea, 10673 }, - { 0x000eda, 10389 }, - { 0x000eee, 10735 }, - { 0x000ee8, 10643 }, - { 0x000ee9, 10658 }, - { 0x000eeb, 10688 }, - { 0x000ed4, 10277 }, - { 0x000ed6, 10314 }, - { 0x000ef9, 10953 }, - { 0x000ee3, 10561 }, - { 0x000ed7, 10334 }, - { 0x000ed9, 10369 }, - { 0x000ed8, 10349 }, - { 0x000ef8, 10936 }, - { 0x000eed, 10719 }, - { 0x000ee4, 10576 }, - { 0x000ee5, 10591 }, - { 0x000edb, 10405 }, - { 0x000ee2, 10541 }, - { 0x000edc, 10420 }, - { 0x000edd, 10441 }, - { 0x000ee1, 10520 }, - { 0x000ede, 10461 }, - { 0x000edf, 10481 }, - { 0x000ee0, 10500 }, - { 0x000ee6, 10610 }, - { 0x000ed5, 10293 }, - { 0x000ee7, 10624 }, - { 0x000eec, 10704 }, - { 0x000efa, 10980 }, - { 0x00ff35, 13555 }, - { 0x00ff38, 13591 }, - { 0x000eb8, 9970 }, - { 0x000ebb, 10014 }, - { 0x000ea1, 9594 }, - { 0x000ea3, 9627 }, - { 0x000ef3, 10839 }, - { 0x000eb1, 9867 }, - { 0x000ea4, 9645 }, - { 0x000ea6, 9676 }, - { 0x000ea5, 9658 }, - { 0x000ec7, 10148 }, - { 0x000eca, 10178 }, - { 0x000ef2, 10824 }, - { 0x000ebd, 10041 }, - { 0x000eb2, 9880 }, - { 0x000eb4, 9911 }, - { 0x00ff3b, 13634 }, - { 0x00ff3a, 13618 }, - { 0x000ea9, 9727 }, - { 0x000eb0, 9849 }, - { 0x000eaa, 9740 }, - { 0x000eab, 9759 }, - { 0x000eaf, 9830 }, - { 0x000eac, 9777 }, - { 0x000ead, 9795 }, - { 0x000eae, 9812 }, - { 0x000eef, 10750 }, - { 0x00ff36, 13567 }, - { 0x000eb5, 9928 }, - { 0x00ff3f, 13703 }, - { 0x000ea8, 9708 }, - { 0x000eb9, 9983 }, - { 0x000ea2, 9608 }, - { 0x000eb3, 9893 }, - { 0x000eb6, 9940 }, - { 0x00ff32, 13518 }, - { 0x000ef0, 10774 }, - { 0x000ef4, 10864 }, - { 0x000ef1, 10799 }, - { 0x000ebc, 10028 }, - { 0x000ecc, 10198 }, - { 0x000ec8, 10157 }, - { 0x000ec9, 10167 }, - { 0x000ece, 10218 }, - { 0x000ecd, 10207 }, - { 0x000ecf, 10228 }, - { 0x000ec1, 10087 }, - { 0x000ec2, 10097 }, - { 0x000ec6, 10138 }, - { 0x000ec5, 10127 }, - { 0x000ed2, 10258 }, - { 0x000ecb, 10188 }, - { 0x000ed0, 10238 }, - { 0x000ef5, 10890 }, - { 0x00ff7e, 13874 }, - { 0x00ff29, 13428 }, - { 0x0002a6, 1737 }, - { 0x00ff7e, 13888 }, - { 0x00ff6a, 13836 }, - { 0x00ff23, 13358 }, - { 0x00ff23, 13365 }, - { 0x00ff25, 13384 }, - { 0x00ff27, 13402 }, - { 0x00ff50, 13718 }, - { 0x0002a1, 1729 }, - { 0x00ffed, 14484 }, - { 0x00ffee, 14492 }, + { 0x00ff31, 13916 }, + { 0x000ebf, 10145 }, + { 0x000ec0, 10154 }, + { 0x000ef6, 10986 }, + { 0x000ef7, 10999 }, + { 0x00ff39, 14040 }, + { 0x000eba, 10078 }, + { 0x00ff37, 13996 }, + { 0x000ea7, 9771 }, + { 0x000ec4, 10195 }, + { 0x000ec3, 10185 }, + { 0x000ed1, 10325 }, + { 0x00ff33, 13936 }, + { 0x00ff34, 13947 }, + { 0x000ebe, 10132 }, + { 0x000ed3, 10345 }, + { 0x000eb7, 10034 }, + { 0x000eea, 10750 }, + { 0x000eda, 10466 }, + { 0x000eee, 10812 }, + { 0x000ee8, 10720 }, + { 0x000ee9, 10735 }, + { 0x000eeb, 10765 }, + { 0x000ed4, 10354 }, + { 0x000ed6, 10391 }, + { 0x000ef9, 11030 }, + { 0x000ee3, 10638 }, + { 0x000ed7, 10411 }, + { 0x000ed9, 10446 }, + { 0x000ed8, 10426 }, + { 0x000ef8, 11013 }, + { 0x000eed, 10796 }, + { 0x000ee4, 10653 }, + { 0x000ee5, 10668 }, + { 0x000edb, 10482 }, + { 0x000ee2, 10618 }, + { 0x000edc, 10497 }, + { 0x000edd, 10518 }, + { 0x000ee1, 10597 }, + { 0x000ede, 10538 }, + { 0x000edf, 10558 }, + { 0x000ee0, 10577 }, + { 0x000ee6, 10687 }, + { 0x000ed5, 10370 }, + { 0x000ee7, 10701 }, + { 0x000eec, 10781 }, + { 0x000efa, 11057 }, + { 0x00ff35, 13960 }, + { 0x00ff38, 14026 }, + { 0x000eb8, 10047 }, + { 0x000ebb, 10091 }, + { 0x000ea1, 9671 }, + { 0x000ea3, 9704 }, + { 0x000ef3, 10916 }, + { 0x000eb1, 9944 }, + { 0x00ff3d, 14125 }, + { 0x000ea4, 9722 }, + { 0x000ea6, 9753 }, + { 0x000ea5, 9735 }, + { 0x000ec7, 10225 }, + { 0x000eca, 10255 }, + { 0x000ef2, 10901 }, + { 0x000ebd, 10118 }, + { 0x000eb2, 9957 }, + { 0x000eb4, 9988 }, + { 0x00ff3b, 14069 }, + { 0x00ff3a, 14053 }, + { 0x00ff3e, 14177 }, + { 0x000ea9, 9804 }, + { 0x000eb0, 9926 }, + { 0x000eaa, 9817 }, + { 0x000eab, 9836 }, + { 0x000eaf, 9907 }, + { 0x000eac, 9854 }, + { 0x000ead, 9872 }, + { 0x000eae, 9889 }, + { 0x000eef, 10827 }, + { 0x00ff36, 13972 }, + { 0x00ff3c, 14086 }, + { 0x000eb5, 10005 }, + { 0x00ff3f, 14229 }, + { 0x000ea8, 9785 }, + { 0x000eb9, 10060 }, + { 0x000ea2, 9685 }, + { 0x000eb3, 9970 }, + { 0x000eb6, 10017 }, + { 0x00ff32, 13923 }, + { 0x000ef0, 10851 }, + { 0x000ef4, 10941 }, + { 0x000ef1, 10876 }, + { 0x000ebc, 10105 }, + { 0x000ecc, 10275 }, + { 0x000ec8, 10234 }, + { 0x000ec9, 10244 }, + { 0x000ece, 10295 }, + { 0x000ecd, 10284 }, + { 0x000ecf, 10305 }, + { 0x000ec1, 10164 }, + { 0x000ec2, 10174 }, + { 0x000ec6, 10215 }, + { 0x000ec5, 10204 }, + { 0x000ed2, 10335 }, + { 0x000ecb, 10265 }, + { 0x000ed0, 10315 }, + { 0x000ef5, 10967 }, + { 0x00ff7e, 14400 }, + { 0x00ff29, 13833 }, + { 0x0002a6, 1753 }, + { 0x00ff7e, 14414 }, + { 0x00ff6a, 14362 }, + { 0x00ff23, 13763 }, + { 0x00ff23, 13770 }, + { 0x1008ffa8, 26936 }, + { 0x00ff25, 13789 }, + { 0x00ff27, 13807 }, + { 0x1008ff37, 26053 }, + { 0x00ff50, 14244 }, + { 0x1008ff18, 25784 }, + { 0x1008ff3a, 26081 }, + { 0x0002a1, 1745 }, + { 0x00ffed, 15092 }, + { 0x00ffee, 15100 }, { 0x000049, 223 }, - { 0x00fe33, 12190 }, - { 0x00fe30, 12123 }, - { 0x00fe31, 12148 }, - { 0x00fe32, 12176 }, - { 0x00fe34, 12208 }, - { 0x00fe2f, 12102 }, - { 0x00fe2c, 12040 }, - { 0x00fe2d, 12061 }, - { 0x00fe2e, 12083 }, - { 0x00fe0c, 11715 }, - { 0x00fe0d, 11731 }, - { 0x00fe06, 11614 }, - { 0x00fe07, 11630 }, - { 0x00ff7e, 13902 }, - { 0x00fe0e, 11752 }, - { 0x00fe0f, 11767 }, - { 0x00fe20, 11787 }, - { 0x00fe02, 11547 }, - { 0x00fe04, 11581 }, - { 0x00fe05, 11598 }, - { 0x00fe03, 11564 }, - { 0x00fe01, 11538 }, - { 0x00fe22, 11817 }, - { 0x00fe21, 11800 }, - { 0x00fe08, 11645 }, - { 0x00fe09, 11660 }, - { 0x00fe24, 11856 }, - { 0x00fe23, 11836 }, - { 0x00fe25, 11878 }, - { 0x00fe26, 11901 }, - { 0x00fe0a, 11680 }, - { 0x00fe0b, 11695 }, - { 0x00fe2b, 12015 }, - { 0x00fe29, 11966 }, - { 0x00fe2a, 11990 }, - { 0x00fe27, 11925 }, - { 0x00fe28, 11945 }, - { 0x0002a9, 1749 }, + { 0x00fe33, 12195 }, + { 0x00fe30, 12128 }, + { 0x00fe31, 12153 }, + { 0x00fe32, 12181 }, + { 0x00fe34, 12213 }, + { 0x00fe2f, 12107 }, + { 0x00fe2c, 12045 }, + { 0x00fe2d, 12066 }, + { 0x00fe2e, 12088 }, + { 0x00fe0c, 11670 }, + { 0x00fe0d, 11686 }, + { 0x00fe06, 11569 }, + { 0x00fe07, 11585 }, + { 0x00ff7e, 14428 }, + { 0x00fe0e, 11707 }, + { 0x00fe0f, 11722 }, + { 0x00fe20, 11792 }, + { 0x00fe02, 11502 }, + { 0x00fe04, 11536 }, + { 0x00fe05, 11553 }, + { 0x00fe03, 11519 }, + { 0x00fe12, 11759 }, + { 0x00fe13, 11776 }, + { 0x00fe11, 11742 }, + { 0x00fe01, 11493 }, + { 0x00fe22, 11822 }, + { 0x00fe21, 11805 }, + { 0x00fe08, 11600 }, + { 0x00fe09, 11615 }, + { 0x00fe24, 11861 }, + { 0x00fe23, 11841 }, + { 0x00fe25, 11883 }, + { 0x00fe26, 11906 }, + { 0x00fe0a, 11635 }, + { 0x00fe0b, 11650 }, + { 0x00fe2b, 12020 }, + { 0x00fe29, 11971 }, + { 0x00fe2a, 11995 }, + { 0x00fe27, 11930 }, + { 0x00fe28, 11950 }, + { 0x0002a9, 1765 }, { 0x0000cd, 843 }, + { 0x1001eca, 19719 }, + { 0x100012c, 15256 }, { 0x0000ce, 850 }, { 0x0000cf, 862 }, { 0x0000cc, 836 }, - { 0x0003cf, 2094 }, - { 0x00ff63, 13802 }, - { 0x0003c7, 2076 }, - { 0x0003a5, 1971 }, + { 0x1001ec8, 19707 }, + { 0x0003cf, 2110 }, + { 0x00ff63, 14328 }, + { 0x0003c7, 2092 }, + { 0x0003a5, 1987 }, { 0x00004a, 225 }, - { 0x0002ac, 1766 }, + { 0x0002ac, 1782 }, { 0x00004b, 227 }, - { 0x00ffb0, 14195 }, - { 0x00ffb1, 14200 }, - { 0x00ffb2, 14205 }, - { 0x00ffb3, 14210 }, - { 0x00ffb4, 14215 }, - { 0x00ffb5, 14220 }, - { 0x00ffb6, 14225 }, - { 0x00ffb7, 14230 }, - { 0x00ffb8, 14235 }, - { 0x00ffb9, 14240 }, - { 0x00ffab, 14142 }, - { 0x00ff9d, 14101 }, - { 0x00ffae, 14174 }, - { 0x00ff9f, 14120 }, - { 0x00ffaf, 14185 }, - { 0x00ff99, 14045 }, - { 0x00ff9c, 14094 }, - { 0x00ff8d, 13981 }, - { 0x00ffbd, 14245 }, - { 0x00ff91, 13990 }, - { 0x00ff92, 13996 }, - { 0x00ff93, 14002 }, - { 0x00ff94, 14008 }, - { 0x00ff95, 14014 }, - { 0x00ff9e, 14110 }, - { 0x00ff96, 14022 }, - { 0x00ffaa, 14130 }, - { 0x00ff9b, 14086 }, - { 0x00ff9b, 14073 }, - { 0x00ff9a, 14053 }, - { 0x00ff9a, 14064 }, - { 0x00ff98, 14036 }, - { 0x00ffac, 14149 }, - { 0x00ff80, 13965 }, - { 0x00ffad, 14162 }, - { 0x00ff89, 13974 }, - { 0x00ff97, 14030 }, - { 0x00ff2d, 13467 }, - { 0x00ff2e, 13477 }, - { 0x00ff21, 13343 }, - { 0x00ff26, 13393 }, - { 0x0003d3, 2119 }, - { 0x000eff, 11001 }, + { 0x00ffb0, 14721 }, + { 0x00ffb1, 14726 }, + { 0x00ffb2, 14731 }, + { 0x00ffb3, 14736 }, + { 0x00ffb4, 14741 }, + { 0x00ffb5, 14746 }, + { 0x00ffb6, 14751 }, + { 0x00ffb7, 14756 }, + { 0x00ffb8, 14761 }, + { 0x00ffb9, 14766 }, + { 0x00ffab, 14668 }, + { 0x00ff9d, 14627 }, + { 0x00ffae, 14700 }, + { 0x00ff9f, 14646 }, + { 0x00ffaf, 14711 }, + { 0x00ff99, 14571 }, + { 0x00ff9c, 14620 }, + { 0x00ff8d, 14507 }, + { 0x00ffbd, 14771 }, + { 0x00ff91, 14516 }, + { 0x00ff92, 14522 }, + { 0x00ff93, 14528 }, + { 0x00ff94, 14534 }, + { 0x00ff95, 14540 }, + { 0x00ff9e, 14636 }, + { 0x00ff96, 14548 }, + { 0x00ffaa, 14656 }, + { 0x00ff9b, 14599 }, + { 0x00ff9b, 14607 }, + { 0x00ff9a, 14579 }, + { 0x00ff9a, 14590 }, + { 0x00ff98, 14562 }, + { 0x00ffac, 14675 }, + { 0x00ff80, 14491 }, + { 0x00ffad, 14688 }, + { 0x00ff89, 14500 }, + { 0x00ff97, 14556 }, + { 0x00ff2d, 13872 }, + { 0x00ff2e, 13882 }, + { 0x00ff21, 13748 }, + { 0x00ff37, 14013 }, + { 0x00ff26, 13798 }, + { 0x1008ff06, 25674 }, + { 0x1008ff05, 25658 }, + { 0x1008ff04, 25644 }, + { 0x0003d3, 2135 }, + { 0x000eff, 11078 }, { 0x00004c, 229 }, - { 0x0001c5, 1480 }, - { 0x00fed4, 12732 }, - { 0x0001a5, 1303 }, - { 0x0003a6, 1978 }, - { 0x00ff51, 13723 }, - { 0x00ff0a, 13278 }, - { 0x0020a4, 11071 }, - { 0x0001a3, 1295 }, + { 0x00ffc8, 14815 }, + { 0x00ffd1, 14878 }, + { 0x00ffc9, 14822 }, + { 0x00ffca, 14829 }, + { 0x00ffcb, 14836 }, + { 0x00ffcc, 14843 }, + { 0x00ffcd, 14850 }, + { 0x00ffce, 14857 }, + { 0x00ffcf, 14864 }, + { 0x00ffd0, 14871 }, + { 0x0001c5, 1496 }, + { 0x00fed4, 13137 }, + { 0x1008ff40, 26149 }, + { 0x1008ff41, 26157 }, + { 0x1008ff42, 26165 }, + { 0x1008ff43, 26173 }, + { 0x1008ff44, 26181 }, + { 0x1008ff45, 26189 }, + { 0x1008ff46, 26197 }, + { 0x1008ff47, 26205 }, + { 0x1008ff48, 26213 }, + { 0x1008ff49, 26221 }, + { 0x1008ff4a, 26229 }, + { 0x1008ff4b, 26237 }, + { 0x1008ff4c, 26245 }, + { 0x1008ff4d, 26253 }, + { 0x1008ff4e, 26261 }, + { 0x1008ff4f, 26269 }, + { 0x1001e36, 18987 }, + { 0x0001a5, 1319 }, + { 0x0003a6, 1994 }, + { 0x00ff51, 14249 }, + { 0x1008ff35, 26038 }, + { 0x00ff0a, 13683 }, + { 0x10020a4, 20539 }, + { 0x1008fe25, 25589 }, + { 0x1008ff61, 26397 }, + { 0x1008fe24, 25575 }, + { 0x0001a3, 1311 }, { 0x00004d, 231 }, - { 0x0006b5, 3849 }, - { 0x0006b2, 3798 }, - { 0x0006bc, 3997 }, - { 0x0006a5, 3567 }, - { 0x0006a2, 3516 }, - { 0x0006ac, 3715 }, - { 0x00ff2c, 13460 }, - { 0x00ff67, 13819 }, - { 0x00ffe7, 14442 }, - { 0x00ffe8, 14449 }, - { 0x0020a5, 11080 }, - { 0x00ff7e, 13918 }, - { 0x00fe77, 12597 }, - { 0x00fe76, 12580 }, - { 0x00ff22, 13349 }, - { 0x00ff20, 13333 }, - { 0x00ff3d, 13667 }, + { 0x1001e40, 19007 }, + { 0x0006b5, 3891 }, + { 0x0006b2, 3840 }, + { 0x0006bc, 4039 }, + { 0x0006a5, 3583 }, + { 0x0006a2, 3532 }, + { 0x0006ac, 3731 }, + { 0x00ff3e, 14202 }, + { 0x1008ff19, 25793 }, + { 0x1008ff90, 26721 }, + { 0x1008ff62, 26404 }, + { 0x00ff2c, 13865 }, + { 0x1008ff63, 26411 }, + { 0x1008ff1e, 25834 }, + { 0x00ff67, 14345 }, + { 0x1008ff65, 26419 }, + { 0x1008ff66, 26426 }, + { 0x1008ff8e, 26704 }, + { 0x00ffe7, 15050 }, + { 0x00ffe8, 15057 }, + { 0x10020a5, 20548 }, + { 0x1008ff01, 25601 }, + { 0x00ff7e, 14456 }, + { 0x1008ff03, 25626 }, + { 0x1008ff02, 25610 }, + { 0x00fe77, 12864 }, + { 0x00fe76, 12847 }, + { 0x00ff22, 13754 }, + { 0x00ff20, 13738 }, + { 0x00ff3d, 14150 }, + { 0x1008ff92, 26742 }, + { 0x1008ff33, 26016 }, + { 0x1008ff67, 26433 }, { 0x00004e, 233 }, - { 0x0001d1, 1531 }, - { 0x0020a6, 11089 }, - { 0x0001d2, 1538 }, - { 0x0003d1, 2102 }, - { 0x0020aa, 11128 }, - { 0x00ff56, 13766 }, - { 0x00fed2, 12712 }, + { 0x0001d1, 1547 }, + { 0x10020a6, 20557 }, + { 0x0001d2, 1554 }, + { 0x0003d1, 2118 }, + { 0x1008ff68, 26441 }, + { 0x10020aa, 20596 }, + { 0x1008ff69, 26445 }, + { 0x00ff56, 14292 }, + { 0x1008fe22, 25553 }, + { 0x00fed2, 13117 }, { 0x0000d1, 881 }, - { 0x00ff7f, 13956 }, + { 0x00ff7f, 14482 }, { 0x00004f, 235 }, - { 0x0013bc, 11012 }, + { 0x0013bc, 11089 }, { 0x0000d3, 895 }, + { 0x100019f, 15324 }, + { 0x1001ecc, 19739 }, + { 0x10001d1, 15376 }, { 0x0000d4, 902 }, + { 0x1001ed0, 19771 }, + { 0x1001ed8, 19905 }, + { 0x1001ed2, 19805 }, + { 0x1001ed4, 19839 }, + { 0x1001ed6, 19871 }, { 0x0000d6, 921 }, - { 0x0001d5, 1545 }, + { 0x0001d5, 1561 }, + { 0x1008ff6a, 26450 }, { 0x0000d2, 888 }, - { 0x0003d2, 2111 }, + { 0x1001ece, 19759 }, + { 0x10001a0, 15332 }, + { 0x1001eda, 19945 }, + { 0x1001ee2, 20031 }, + { 0x1001edc, 19967 }, + { 0x1001ede, 19989 }, + { 0x1001ee0, 20009 }, + { 0x0003d2, 2127 }, { 0x0000d8, 941 }, + { 0x1008ff6b, 26461 }, + { 0x1008ff38, 26061 }, + { 0x1008ff6c, 26466 }, + { 0x0000d8, 950 }, { 0x0000d5, 914 }, - { 0x00fe78, 12620 }, - { 0x00fe79, 12636 }, + { 0x00fe78, 12887 }, + { 0x00fe79, 12903 }, { 0x000050, 237 }, - { 0x00ff56, 13756 }, - { 0x00ff55, 13742 }, - { 0x00ff13, 13300 }, - { 0x0020a7, 11099 }, - { 0x00fefa, 13191 }, - { 0x00fee9, 12906 }, - { 0x00feea, 12922 }, - { 0x00feeb, 12938 }, - { 0x00feec, 12954 }, - { 0x00feed, 12970 }, - { 0x00fee8, 12886 }, - { 0x00feef, 13008 }, - { 0x00fef0, 13026 }, - { 0x00fef1, 13044 }, - { 0x00fef2, 13062 }, - { 0x00fef3, 13080 }, - { 0x00feee, 12986 }, - { 0x00fefb, 13210 }, - { 0x00fefc, 13230 }, - { 0x00fee3, 12807 }, - { 0x00fee6, 12851 }, - { 0x00fee7, 12868 }, - { 0x00fef5, 13116 }, - { 0x00fef6, 13130 }, - { 0x00fef7, 13144 }, - { 0x00fef8, 13158 }, - { 0x00fefd, 13250 }, - { 0x00fef4, 13098 }, - { 0x00fef9, 13172 }, - { 0x00fee0, 12769 }, - { 0x00fee1, 12782 }, - { 0x00fee2, 12796 }, - { 0x00fee4, 12820 }, - { 0x00fee5, 12835 }, - { 0x00fed1, 12692 }, - { 0x00ff3e, 13685 }, - { 0x00ff61, 13788 }, - { 0x00ff55, 13750 }, + { 0x1001e56, 19027 }, + { 0x00ff56, 14282 }, + { 0x00ff55, 14268 }, + { 0x1008ff6d, 26473 }, + { 0x00ff13, 13705 }, + { 0x10020a7, 20567 }, + { 0x1008ff6e, 26479 }, + { 0x1008ff91, 26733 }, + { 0x00fefa, 13596 }, + { 0x00fee9, 13311 }, + { 0x00feea, 13327 }, + { 0x00feeb, 13343 }, + { 0x00feec, 13359 }, + { 0x00feed, 13375 }, + { 0x00fee8, 13291 }, + { 0x00feef, 13413 }, + { 0x00fef0, 13431 }, + { 0x00fef1, 13449 }, + { 0x00fef2, 13467 }, + { 0x00fef3, 13485 }, + { 0x00feee, 13391 }, + { 0x00fefb, 13615 }, + { 0x00fefc, 13635 }, + { 0x00fee3, 13212 }, + { 0x00fee6, 13256 }, + { 0x00fee7, 13273 }, + { 0x00fef5, 13521 }, + { 0x00fef6, 13535 }, + { 0x00fef7, 13549 }, + { 0x00fef8, 13563 }, + { 0x00fefd, 13655 }, + { 0x00fef4, 13503 }, + { 0x00fef9, 13577 }, + { 0x00fee0, 13174 }, + { 0x00fee1, 13187 }, + { 0x00fee2, 13201 }, + { 0x00fee4, 13225 }, + { 0x00fee5, 13240 }, + { 0x1008ff21, 25857 }, + { 0x1008ff2a, 25940 }, + { 0x1008fe23, 25564 }, + { 0x00fed1, 13097 }, + { 0x00ff3e, 14211 }, + { 0x00ff61, 14314 }, + { 0x00ff55, 14276 }, { 0x000051, 239 }, { 0x000052, 241 }, - { 0x0001c0, 1466 }, - { 0x0001d8, 1558 }, - { 0x0003a3, 1962 }, - { 0x00ff66, 13814 }, - { 0x00fe72, 12510 }, - { 0x00ff0d, 13293 }, - { 0x00ff53, 13731 }, - { 0x00ff24, 13377 }, - { 0x0020a8, 11110 }, + { 0x00ffd2, 14886 }, + { 0x00ffdb, 14949 }, + { 0x00ffdc, 14957 }, + { 0x00ffdd, 14965 }, + { 0x00ffde, 14973 }, + { 0x00ffdf, 14981 }, + { 0x00ffe0, 14989 }, + { 0x00ffd3, 14893 }, + { 0x00ffd4, 14900 }, + { 0x00ffd5, 14907 }, + { 0x00ffd6, 14914 }, + { 0x00ffd7, 14921 }, + { 0x00ffd8, 14928 }, + { 0x00ffd9, 14935 }, + { 0x00ffda, 14942 }, + { 0x0001c0, 1482 }, + { 0x0001d8, 1574 }, + { 0x0003a3, 1978 }, + { 0x1008ffa3, 26906 }, + { 0x00ff66, 14340 }, + { 0x1008ff29, 25932 }, + { 0x1008ff73, 26491 }, + { 0x00fe72, 12777 }, + { 0x1008ff72, 26485 }, + { 0x00ff0d, 13698 }, + { 0x00ff53, 14257 }, + { 0x1008ff24, 25891 }, + { 0x1008ff25, 25902 }, + { 0x1008ff23, 25882 }, + { 0x00ff24, 13782 }, + { 0x1008ff74, 26498 }, + { 0x1008ff76, 26523 }, + { 0x1008ff75, 26512 }, + { 0x10020a8, 20578 }, { 0x000053, 243 }, - { 0x0001a6, 1310 }, - { 0x0001a9, 1317 }, - { 0x0001aa, 1324 }, - { 0x0002de, 1877 }, - { 0x00ff14, 13306 }, - { 0x00ff60, 13781 }, - { 0x0006b1, 3786 }, - { 0x0006bf, 4045 }, - { 0x0006b8, 3923 }, - { 0x0006b9, 3947 }, - { 0x0006ba, 3972 }, - { 0x0006bb, 3984 }, - { 0x0006a1, 3504 }, - { 0x0006af, 3763 }, - { 0x0006a8, 3641 }, - { 0x0006a9, 3665 }, - { 0x0006aa, 3690 }, - { 0x0006ab, 3702 }, - { 0x00ffe1, 14385 }, - { 0x00ffe6, 14431 }, - { 0x00ffe2, 14393 }, - { 0x00ff3c, 13651 }, - { 0x00fe73, 12528 }, - { 0x00fe75, 12562 }, - { 0x00ffeb, 14468 }, - { 0x00ffec, 14476 }, - { 0x00ff15, 13318 }, + { 0x100018f, 15318 }, + { 0x1001e60, 19047 }, + { 0x0001a6, 1326 }, + { 0x1008ff77, 26534 }, + { 0x0001a9, 1333 }, + { 0x0001aa, 1340 }, + { 0x0002de, 1893 }, + { 0x1008ff2d, 25962 }, + { 0x1008ff7a, 26559 }, + { 0x1008ff79, 26548 }, + { 0x1008ff78, 26539 }, + { 0x00ff14, 13711 }, + { 0x1008ff1b, 25804 }, + { 0x00ff60, 14307 }, + { 0x1008ffa0, 26880 }, + { 0x1008ff7b, 26571 }, + { 0x0006b1, 3828 }, + { 0x0006bf, 4113 }, + { 0x0006b8, 3965 }, + { 0x0006b9, 3989 }, + { 0x0006ba, 4014 }, + { 0x0006bb, 4026 }, + { 0x0006a1, 3520 }, + { 0x0006af, 3805 }, + { 0x0006a8, 3657 }, + { 0x0006a9, 3681 }, + { 0x0006aa, 3706 }, + { 0x0006ab, 3718 }, + { 0x00ffe1, 14993 }, + { 0x00ffe6, 15039 }, + { 0x00ffe2, 15001 }, + { 0x1008ff36, 26048 }, + { 0x00ff3c, 14109 }, + { 0x1000d85, 17740 }, + { 0x1000d86, 17747 }, + { 0x1000dcf, 18252 }, + { 0x1000d87, 17755 }, + { 0x1000dd0, 18261 }, + { 0x1000d88, 17763 }, + { 0x1000dd1, 18270 }, + { 0x1000d93, 17851 }, + { 0x1000ddb, 18340 }, + { 0x1000dca, 18244 }, + { 0x1000d96, 17874 }, + { 0x1000dde, 18366 }, + { 0x1000db6, 18126 }, + { 0x1000db7, 18134 }, + { 0x1000da0, 17934 }, + { 0x1000da1, 17942 }, + { 0x1000da9, 18015 }, + { 0x1000daa, 18024 }, + { 0x1000daf, 18072 }, + { 0x1000db0, 18081 }, + { 0x1000d91, 17836 }, + { 0x1000dd9, 18323 }, + { 0x1000d92, 17843 }, + { 0x1000dda, 18331 }, + { 0x1000dc6, 18236 }, + { 0x1000d9c, 17899 }, + { 0x1000d9d, 17907 }, + { 0x1000d83, 17732 }, + { 0x1000dc4, 18219 }, + { 0x1000d89, 17772 }, + { 0x1000dd2, 18280 }, + { 0x1000d8a, 17779 }, + { 0x1000dd3, 18288 }, + { 0x1000da2, 17951 }, + { 0x1000da3, 17959 }, + { 0x1000da5, 17977 }, + { 0x1000d9a, 17882 }, + { 0x1000d9b, 17890 }, + { 0x1000df4, 18404 }, + { 0x1000dbd, 18176 }, + { 0x1000dc5, 18227 }, + { 0x1000d8f, 17819 }, + { 0x1000ddf, 18375 }, + { 0x1000d90, 17827 }, + { 0x1000df3, 18394 }, + { 0x1000db8, 18143 }, + { 0x1000db9, 18151 }, + { 0x1000db1, 18091 }, + { 0x1000dac, 18043 }, + { 0x1000db3, 18099 }, + { 0x1000d82, 17724 }, + { 0x1000d9e, 17916 }, + { 0x1000d9f, 17925 }, + { 0x1000da6, 17987 }, + { 0x1000dab, 18034 }, + { 0x1000da4, 17968 }, + { 0x1000d94, 17859 }, + { 0x1000ddc, 18349 }, + { 0x1000d95, 17866 }, + { 0x1000ddd, 18357 }, + { 0x1000db4, 18109 }, + { 0x1000db5, 18117 }, + { 0x1000dbb, 18168 }, + { 0x1000d8d, 17802 }, + { 0x1000d8e, 17810 }, + { 0x1000dd8, 18314 }, + { 0x1000df2, 18384 }, + { 0x1000dc3, 18211 }, + { 0x1000dc1, 18192 }, + { 0x1000dc2, 18201 }, + { 0x1000dad, 18053 }, + { 0x1000dae, 18062 }, + { 0x1000da7, 17996 }, + { 0x1000da8, 18005 }, + { 0x1000d8b, 17787 }, + { 0x1000dd4, 18297 }, + { 0x1000d8c, 17794 }, + { 0x1000dd6, 18305 }, + { 0x1000dc0, 18184 }, + { 0x1000dba, 18160 }, + { 0x1008ff2f, 25978 }, + { 0x00fe73, 12795 }, + { 0x1008ff7c, 26576 }, + { 0x1008ff7d, 26582 }, + { 0x1008ff10, 25692 }, + { 0x1008ff1a, 25798 }, + { 0x00fe75, 12829 }, + { 0x1008ff28, 25927 }, + { 0x1008ff9a, 26816 }, + { 0x00ffeb, 15076 }, + { 0x00ffec, 15084 }, + { 0x1008ff7e, 26594 }, + { 0x1008ffa7, 26928 }, + { 0x1008fe01, 25389 }, + { 0x1008fe0a, 25497 }, + { 0x1008fe0b, 25510 }, + { 0x1008fe0c, 25523 }, + { 0x1008fe02, 25401 }, + { 0x1008fe03, 25413 }, + { 0x1008fe04, 25425 }, + { 0x1008fe05, 25437 }, + { 0x1008fe06, 25449 }, + { 0x1008fe07, 25461 }, + { 0x1008fe08, 25473 }, + { 0x1008fe09, 25485 }, + { 0x00ff15, 13723 }, { 0x000054, 245 }, - { 0x0000de, 994 }, - { 0x00ff09, 13274 }, - { 0x0001ab, 1333 }, - { 0x0001de, 1584 }, - { 0x00fed5, 12752 }, - { 0x000ddf, 9260 }, - { 0x000dba, 8843 }, - { 0x000da8, 8607 }, - { 0x000daa, 8634 }, - { 0x000da9, 8620 }, - { 0x000dac, 8658 }, - { 0x000dae, 8683 }, - { 0x000db4, 8768 }, - { 0x000dbd, 8882 }, - { 0x000dbf, 8905 }, - { 0x000dcb, 9039 }, - { 0x000dce, 9073 }, - { 0x000da2, 8525 }, - { 0x000da5, 8566 }, - { 0x000da3, 8538 }, - { 0x000da4, 8552 }, - { 0x000da6, 8579 }, - { 0x000da1, 8514 }, - { 0x000de5, 9343 }, - { 0x000df7, 9556 }, - { 0x000df5, 9533 }, - { 0x000df6, 9544 }, - { 0x000df9, 9582 }, - { 0x000df1, 9484 }, - { 0x000df8, 9569 }, - { 0x000df3, 9510 }, - { 0x000df4, 9522 }, - { 0x000df2, 9497 }, - { 0x000df0, 9472 }, - { 0x000dcc, 9050 }, - { 0x000dc5, 8972 }, - { 0x000dc6, 8984 }, - { 0x000deb, 9424 }, - { 0x000de8, 9389 }, - { 0x000dd1, 9113 }, - { 0x000dde, 9237 }, - { 0x000de7, 9374 }, - { 0x000de9, 9400 }, - { 0x000dea, 9412 }, - { 0x000de6, 9360 }, - { 0x000dc1, 8932 }, - { 0x000da7, 8595 }, - { 0x000ded, 9458 }, - { 0x000db3, 8757 }, - { 0x000db9, 8833 }, - { 0x000dcd, 9063 }, - { 0x000dcf, 9087 }, - { 0x000dda, 9224 }, - { 0x000dbe, 8892 }, - { 0x000dbc, 8868 }, - { 0x000dc0, 8916 }, - { 0x000dbb, 8857 }, - { 0x000dc3, 8953 }, - { 0x000dc4, 8964 }, - { 0x000dd0, 9102 }, - { 0x000dd2, 9129 }, - { 0x000de1, 9281 }, - { 0x000de4, 9323 }, - { 0x000de3, 9304 }, - { 0x000dd3, 9141 }, - { 0x000de0, 9270 }, - { 0x000dd4, 9153 }, - { 0x000dd5, 9164 }, - { 0x000de2, 9293 }, - { 0x000dd8, 9201 }, - { 0x000dd6, 9176 }, - { 0x000dd7, 9188 }, - { 0x000dd9, 9212 }, - { 0x000dc9, 9016 }, - { 0x000dc8, 9004 }, - { 0x000dab, 8648 }, - { 0x000dca, 9028 }, - { 0x000dec, 9441 }, - { 0x000db1, 8722 }, - { 0x000db2, 8741 }, - { 0x000db7, 8804 }, - { 0x000db0, 8709 }, - { 0x000db8, 8819 }, - { 0x000db6, 8790 }, - { 0x000daf, 8696 }, - { 0x000db5, 8779 }, - { 0x000dc7, 8992 }, - { 0x000dc2, 8942 }, - { 0x000dad, 8671 }, - { 0x0000de, 1000 }, - { 0x00ff2b, 13452 }, - { 0x0003ac, 2004 }, + { 0x0000de, 1007 }, + { 0x00ff09, 13679 }, + { 0x1001e6a, 19067 }, + { 0x1008ff7f, 26602 }, + { 0x0001ab, 1349 }, + { 0x0001de, 1600 }, + { 0x1008ff80, 26611 }, + { 0x00fed5, 13157 }, + { 0x000ddf, 9337 }, + { 0x000dba, 8920 }, + { 0x000da8, 8684 }, + { 0x000daa, 8711 }, + { 0x000da9, 8697 }, + { 0x000dac, 8735 }, + { 0x000dae, 8760 }, + { 0x000db4, 8845 }, + { 0x000dbd, 8959 }, + { 0x000dbf, 8982 }, + { 0x000dcb, 9116 }, + { 0x000dce, 9150 }, + { 0x000da2, 8602 }, + { 0x000da5, 8643 }, + { 0x000da3, 8615 }, + { 0x000da4, 8629 }, + { 0x000da6, 8656 }, + { 0x000da1, 8591 }, + { 0x000de5, 9420 }, + { 0x000df7, 9633 }, + { 0x000df5, 9610 }, + { 0x000df6, 9621 }, + { 0x000df9, 9659 }, + { 0x000df1, 9561 }, + { 0x000df8, 9646 }, + { 0x000df3, 9587 }, + { 0x000df4, 9599 }, + { 0x000df2, 9574 }, + { 0x000df0, 9549 }, + { 0x000dcc, 9127 }, + { 0x000dc5, 9049 }, + { 0x000dc6, 9061 }, + { 0x000deb, 9501 }, + { 0x000de8, 9466 }, + { 0x000dd1, 9190 }, + { 0x000dde, 9314 }, + { 0x000de7, 9451 }, + { 0x000de9, 9477 }, + { 0x000dea, 9489 }, + { 0x000de6, 9437 }, + { 0x000dc1, 9009 }, + { 0x000da7, 8672 }, + { 0x000ded, 9535 }, + { 0x000db3, 8834 }, + { 0x000db9, 8910 }, + { 0x000dcd, 9140 }, + { 0x000dcf, 9164 }, + { 0x000dda, 9301 }, + { 0x000dbe, 8969 }, + { 0x000dbc, 8945 }, + { 0x000dc0, 8993 }, + { 0x000dbb, 8934 }, + { 0x000dc3, 9030 }, + { 0x000dc4, 9041 }, + { 0x000dd0, 9179 }, + { 0x000dd2, 9206 }, + { 0x000de1, 9358 }, + { 0x000de4, 9400 }, + { 0x000de3, 9381 }, + { 0x000dd3, 9218 }, + { 0x000de0, 9347 }, + { 0x000dd4, 9230 }, + { 0x000dd5, 9241 }, + { 0x000de2, 9370 }, + { 0x000dd8, 9278 }, + { 0x000dd6, 9253 }, + { 0x000dd7, 9265 }, + { 0x000dd9, 9289 }, + { 0x000dc9, 9093 }, + { 0x000dc8, 9081 }, + { 0x000dab, 8725 }, + { 0x000dca, 9105 }, + { 0x000dec, 9518 }, + { 0x000db1, 8799 }, + { 0x000db2, 8818 }, + { 0x000db7, 8881 }, + { 0x000db0, 8786 }, + { 0x000db8, 8896 }, + { 0x000db6, 8867 }, + { 0x000daf, 8773 }, + { 0x000db5, 8856 }, + { 0x000dc7, 9069 }, + { 0x000dc2, 9019 }, + { 0x000dad, 8748 }, + { 0x0000de, 1001 }, + { 0x1008ff9f, 26875 }, + { 0x1008ff1f, 25839 }, + { 0x1008ff81, 26620 }, + { 0x1008ffa2, 26898 }, + { 0x1008ffb1, 26972 }, + { 0x1008ffb0, 26961 }, + { 0x1008ffa9, 26946 }, + { 0x00ff2b, 13857 }, + { 0x1008ff82, 26626 }, + { 0x0003ac, 2020 }, { 0x000055, 247 }, - { 0x0000da, 957 }, - { 0x0002dd, 1870 }, - { 0x0000db, 964 }, - { 0x0000dc, 976 }, - { 0x0001db, 1571 }, - { 0x0000d9, 950 }, - { 0x0006b6, 3863 }, - { 0x0006b4, 3824 }, - { 0x0006b7, 3886 }, - { 0x0006a6, 3581 }, - { 0x0006a4, 3542 }, - { 0x0006a7, 3604 }, - { 0x0006b6, 3875 }, - { 0x0006b4, 3837 }, - { 0x0006b7, 3899 }, - { 0x0006a6, 3593 }, - { 0x0006a4, 3555 }, - { 0x0006a7, 3617 }, - { 0x0003de, 2143 }, - { 0x00ff65, 13809 }, - { 0x0003d9, 2128 }, - { 0x00ff52, 13728 }, - { 0x0001d9, 1565 }, - { 0x0003dd, 2136 }, + { 0x1008ff96, 26771 }, + { 0x0000da, 964 }, + { 0x1001ee4, 20059 }, + { 0x0002dd, 1886 }, + { 0x0000db, 971 }, + { 0x0000dc, 983 }, + { 0x0001db, 1587 }, + { 0x0000d9, 957 }, + { 0x1001ee6, 20079 }, + { 0x10001af, 15344 }, + { 0x1001ee8, 20091 }, + { 0x1001ef0, 20177 }, + { 0x1001eea, 20113 }, + { 0x1001eec, 20135 }, + { 0x1001eee, 20155 }, + { 0x0006bd, 4053 }, + { 0x0006b6, 3905 }, + { 0x0006b4, 3866 }, + { 0x0006b7, 3928 }, + { 0x0006ad, 3745 }, + { 0x0006a6, 3597 }, + { 0x0006a4, 3558 }, + { 0x0006a7, 3620 }, + { 0x0006b6, 3917 }, + { 0x0006b4, 3879 }, + { 0x0006b7, 3941 }, + { 0x0006a6, 3609 }, + { 0x0006a4, 3571 }, + { 0x0006a7, 3633 }, + { 0x0003de, 2159 }, + { 0x00ff65, 14335 }, + { 0x1008fe20, 25536 }, + { 0x0003d9, 2144 }, + { 0x00ff52, 14254 }, + { 0x0001d9, 1581 }, + { 0x1008ff85, 26640 }, + { 0x1008ff86, 26648 }, + { 0x1008ff84, 26633 }, + { 0x0003dd, 2152 }, { 0x000056, 249 }, - { 0xffffff, 14507 }, + { 0x1008ff34, 26027 }, + { 0x1008ff87, 26656 }, + { 0x1008ffa1, 26893 }, + { 0xffffff, 26997 }, { 0x000057, 251 }, - { 0x0020a9, 11120 }, + { 0x1008ff95, 26766 }, + { 0x1008ff2e, 25974 }, + { 0x1001e82, 19101 }, + { 0x1008ff2b, 25949 }, + { 0x1000174, 15270 }, + { 0x1001e84, 19115 }, + { 0x1008ff8f, 26714 }, + { 0x1001e80, 19087 }, + { 0x1008ff88, 26662 }, + { 0x1008ff55, 26318 }, + { 0x10020a9, 20588 }, + { 0x1008ff89, 26674 }, { 0x000058, 253 }, + { 0x1001e8a, 19137 }, + { 0x1008ff8a, 26679 }, { 0x000059, 255 }, - { 0x0000dd, 987 }, - { 0x0013be, 11018 }, + { 0x0000dd, 994 }, + { 0x1001ef4, 20219 }, + { 0x1000176, 15294 }, + { 0x0013be, 11095 }, + { 0x1008ffa5, 26916 }, + { 0x1001ef2, 20205 }, + { 0x1001ef6, 20239 }, + { 0x1001ef8, 20251 }, { 0x00005a, 257 }, - { 0x0001af, 1354 }, - { 0x0001ac, 1340 }, - { 0x0001ae, 1347 }, - { 0x00ff28, 13420 }, - { 0x00ff2a, 13436 }, + { 0x0001af, 1370 }, + { 0x0001ac, 1356 }, + { 0x0001ae, 1363 }, + { 0x00ff3d, 14168 }, + { 0x00ff28, 13825 }, + { 0x00ff2a, 13841 }, + { 0x1008ff8b, 26684 }, + { 0x1008ff8c, 26691 }, + { 0x10001b5, 15356 }, { 0x000061, 333 }, - { 0x0000e1, 1020 }, - { 0x0001ff, 1720 }, - { 0x0001e3, 1600 }, - { 0x0000e2, 1027 }, + { 0x0000e1, 1027 }, + { 0x1001ea1, 19167 }, + { 0x0001ff, 1736 }, + { 0x0001e3, 1616 }, + { 0x1001eaf, 19375 }, + { 0x1001eb7, 19472 }, + { 0x1001eb1, 19399 }, + { 0x1001eb3, 19422 }, + { 0x1001eb5, 19445 }, + { 0x0000e2, 1034 }, + { 0x1001ea5, 19206 }, + { 0x1001ead, 19343 }, + { 0x1001ea7, 19240 }, + { 0x1001ea9, 19273 }, + { 0x1001eab, 19306 }, { 0x0000b4, 612 }, - { 0x0000e4, 1046 }, - { 0x0000e6, 1063 }, - { 0x0000e0, 1013 }, - { 0x0003e0, 2151 }, + { 0x0000e4, 1053 }, + { 0x0000e6, 1070 }, + { 0x0000e0, 1020 }, + { 0x1001ea3, 19183 }, + { 0x0003e0, 2167 }, { 0x000026, 48 }, - { 0x0001b1, 1364 }, + { 0x0001b1, 1380 }, { 0x000027, 58 }, - { 0x0008c8, 6376 }, - { 0x0000e5, 1057 }, + { 0x1002248, 20750 }, + { 0x0008c8, 6444 }, + { 0x0000e5, 1064 }, { 0x00005e, 294 }, { 0x00007e, 410 }, { 0x00002a, 101 }, { 0x000040, 204 }, - { 0x0000e3, 1039 }, + { 0x0000e3, 1046 }, { 0x000062, 335 }, + { 0x1001e03, 18937 }, { 0x00005c, 271 }, - { 0x000af4, 7692 }, + { 0x000af4, 7769 }, { 0x00007c, 395 }, - { 0x0009df, 6562 }, - { 0x0008a5, 5952 }, - { 0x0008ac, 6062 }, - { 0x0008a8, 5995 }, - { 0x0008b2, 6166 }, - { 0x0008ae, 6091 }, - { 0x0008aa, 6030 }, - { 0x0008b6, 6253 }, - { 0x0009f6, 6770 }, - { 0x0008b4, 6209 }, + { 0x1002235, 20730 }, + { 0x0009df, 6630 }, + { 0x0008a5, 6020 }, + { 0x0008ac, 6130 }, + { 0x0008a8, 6063 }, + { 0x0008b2, 6234 }, + { 0x0008ae, 6159 }, + { 0x0008aa, 6098 }, + { 0x0008b6, 6321 }, + { 0x0009f6, 6838 }, + { 0x0008b4, 6277 }, { 0x00007b, 385 }, { 0x00007d, 399 }, { 0x00005b, 259 }, { 0x00005d, 281 }, - { 0x0001a2, 1289 }, + { 0x1002800, 20781 }, + { 0x00fff1, 15108 }, + { 0x00fffa, 15234 }, + { 0x00fff2, 15122 }, + { 0x00fff3, 15136 }, + { 0x00fff4, 15150 }, + { 0x00fff5, 15164 }, + { 0x00fff6, 15178 }, + { 0x00fff7, 15192 }, + { 0x00fff8, 15206 }, + { 0x00fff9, 15220 }, + { 0x1002801, 20795 }, + { 0x1002803, 20825 }, + { 0x1002807, 20888 }, + { 0x100280f, 21019 }, + { 0x100281f, 21290 }, + { 0x100283f, 21849 }, + { 0x100287f, 23000 }, + { 0x10028ff, 25367 }, + { 0x10028bf, 24152 }, + { 0x100285f, 22409 }, + { 0x10028df, 24744 }, + { 0x100289f, 23561 }, + { 0x100282f, 21562 }, + { 0x100286f, 22697 }, + { 0x10028ef, 25048 }, + { 0x10028af, 23849 }, + { 0x100284f, 22122 }, + { 0x10028cf, 24441 }, + { 0x100288f, 23274 }, + { 0x1002817, 21151 }, + { 0x1002837, 21702 }, + { 0x1002877, 22845 }, + { 0x10028f7, 25204 }, + { 0x10028b7, 23997 }, + { 0x1002857, 22262 }, + { 0x10028d7, 24589 }, + { 0x1002897, 23414 }, + { 0x1002827, 21423 }, + { 0x1002867, 22550 }, + { 0x10028e7, 24893 }, + { 0x10028a7, 23702 }, + { 0x1002847, 21983 }, + { 0x10028c7, 24294 }, + { 0x1002887, 23135 }, + { 0x100280b, 20952 }, + { 0x100281b, 21219 }, + { 0x100283b, 21774 }, + { 0x100287b, 22921 }, + { 0x10028fb, 25284 }, + { 0x10028bb, 24073 }, + { 0x100285b, 22334 }, + { 0x10028db, 24665 }, + { 0x100289b, 23486 }, + { 0x100282b, 21491 }, + { 0x100286b, 22622 }, + { 0x10028eb, 24969 }, + { 0x10028ab, 23774 }, + { 0x100284b, 22051 }, + { 0x10028cb, 24366 }, + { 0x100288b, 23203 }, + { 0x1002813, 21084 }, + { 0x1002833, 21631 }, + { 0x1002873, 22770 }, + { 0x10028f3, 25125 }, + { 0x10028b3, 23922 }, + { 0x1002853, 22191 }, + { 0x10028d3, 24514 }, + { 0x1002893, 23343 }, + { 0x1002823, 21356 }, + { 0x1002863, 22479 }, + { 0x10028e3, 24818 }, + { 0x10028a3, 23631 }, + { 0x1002843, 21916 }, + { 0x10028c3, 24223 }, + { 0x1002883, 23068 }, + { 0x1002805, 20856 }, + { 0x100280d, 20985 }, + { 0x100281d, 21254 }, + { 0x100283d, 21811 }, + { 0x100287d, 22960 }, + { 0x10028fd, 25325 }, + { 0x10028bd, 24112 }, + { 0x100285d, 22371 }, + { 0x10028dd, 24704 }, + { 0x100289d, 23523 }, + { 0x100282d, 21526 }, + { 0x100286d, 22659 }, + { 0x10028ed, 25008 }, + { 0x10028ad, 23811 }, + { 0x100284d, 22086 }, + { 0x10028cd, 24403 }, + { 0x100288d, 23238 }, + { 0x1002815, 21117 }, + { 0x1002835, 21666 }, + { 0x1002875, 22807 }, + { 0x10028f5, 25164 }, + { 0x10028b5, 23959 }, + { 0x1002855, 22226 }, + { 0x10028d5, 24551 }, + { 0x1002895, 23378 }, + { 0x1002825, 21389 }, + { 0x1002865, 22514 }, + { 0x10028e5, 24855 }, + { 0x10028a5, 23666 }, + { 0x1002845, 21949 }, + { 0x10028c5, 24258 }, + { 0x1002885, 23101 }, + { 0x1002809, 20920 }, + { 0x1002819, 21185 }, + { 0x1002839, 21738 }, + { 0x1002879, 22883 }, + { 0x10028f9, 25244 }, + { 0x10028b9, 24035 }, + { 0x1002859, 22298 }, + { 0x10028d9, 24627 }, + { 0x1002899, 23450 }, + { 0x1002829, 21457 }, + { 0x1002869, 22586 }, + { 0x10028e9, 24931 }, + { 0x10028a9, 23738 }, + { 0x1002849, 22017 }, + { 0x10028c9, 24330 }, + { 0x1002889, 23169 }, + { 0x1002811, 21052 }, + { 0x1002831, 21597 }, + { 0x1002871, 22734 }, + { 0x10028f1, 25087 }, + { 0x10028b1, 23886 }, + { 0x1002851, 22157 }, + { 0x10028d1, 24478 }, + { 0x1002891, 23309 }, + { 0x1002821, 21324 }, + { 0x1002861, 22445 }, + { 0x10028e1, 24782 }, + { 0x10028a1, 23597 }, + { 0x1002841, 21884 }, + { 0x10028c1, 24189 }, + { 0x1002881, 23036 }, + { 0x1002802, 20810 }, + { 0x1002806, 20872 }, + { 0x100280e, 21002 }, + { 0x100281e, 21272 }, + { 0x100283e, 21830 }, + { 0x100287e, 22980 }, + { 0x10028fe, 25346 }, + { 0x10028be, 24132 }, + { 0x100285e, 22390 }, + { 0x10028de, 24724 }, + { 0x100289e, 23542 }, + { 0x100282e, 21544 }, + { 0x100286e, 22678 }, + { 0x10028ee, 25028 }, + { 0x10028ae, 23830 }, + { 0x100284e, 22104 }, + { 0x10028ce, 24422 }, + { 0x100288e, 23256 }, + { 0x1002816, 21134 }, + { 0x1002836, 21684 }, + { 0x1002876, 22826 }, + { 0x10028f6, 25184 }, + { 0x10028b6, 23978 }, + { 0x1002856, 22244 }, + { 0x10028d6, 24570 }, + { 0x1002896, 23396 }, + { 0x1002826, 21406 }, + { 0x1002866, 22532 }, + { 0x10028e6, 24874 }, + { 0x10028a6, 23684 }, + { 0x1002846, 21966 }, + { 0x10028c6, 24276 }, + { 0x1002886, 23118 }, + { 0x100280a, 20936 }, + { 0x100281a, 21202 }, + { 0x100283a, 21756 }, + { 0x100287a, 22902 }, + { 0x10028fa, 25264 }, + { 0x10028ba, 24054 }, + { 0x100285a, 22316 }, + { 0x10028da, 24646 }, + { 0x100289a, 23468 }, + { 0x100282a, 21474 }, + { 0x100286a, 22604 }, + { 0x10028ea, 24950 }, + { 0x10028aa, 23756 }, + { 0x100284a, 22034 }, + { 0x10028ca, 24348 }, + { 0x100288a, 23186 }, + { 0x1002812, 21068 }, + { 0x1002832, 21614 }, + { 0x1002872, 22752 }, + { 0x10028f2, 25106 }, + { 0x10028b2, 23904 }, + { 0x1002852, 22174 }, + { 0x10028d2, 24496 }, + { 0x1002892, 23326 }, + { 0x1002822, 21340 }, + { 0x1002862, 22462 }, + { 0x10028e2, 24800 }, + { 0x10028a2, 23614 }, + { 0x1002842, 21900 }, + { 0x10028c2, 24206 }, + { 0x1002882, 23052 }, + { 0x1002804, 20841 }, + { 0x100280c, 20969 }, + { 0x100281c, 21237 }, + { 0x100283c, 21793 }, + { 0x100287c, 22941 }, + { 0x10028fc, 25305 }, + { 0x10028bc, 24093 }, + { 0x100285c, 22353 }, + { 0x10028dc, 24685 }, + { 0x100289c, 23505 }, + { 0x100282c, 21509 }, + { 0x100286c, 22641 }, + { 0x10028ec, 24989 }, + { 0x10028ac, 23793 }, + { 0x100284c, 22069 }, + { 0x10028cc, 24385 }, + { 0x100288c, 23221 }, + { 0x1002814, 21101 }, + { 0x1002834, 21649 }, + { 0x1002874, 22789 }, + { 0x10028f4, 25145 }, + { 0x10028b4, 23941 }, + { 0x1002854, 22209 }, + { 0x10028d4, 24533 }, + { 0x1002894, 23361 }, + { 0x1002824, 21373 }, + { 0x1002864, 22497 }, + { 0x10028e4, 24837 }, + { 0x10028a4, 23649 }, + { 0x1002844, 21933 }, + { 0x10028c4, 24241 }, + { 0x1002884, 23085 }, + { 0x1002808, 20905 }, + { 0x1002818, 21169 }, + { 0x1002838, 21721 }, + { 0x1002878, 22865 }, + { 0x10028f8, 25225 }, + { 0x10028b8, 24017 }, + { 0x1002858, 22281 }, + { 0x10028d8, 24609 }, + { 0x1002898, 23433 }, + { 0x1002828, 21441 }, + { 0x1002868, 22569 }, + { 0x10028e8, 24913 }, + { 0x10028a8, 23721 }, + { 0x1002848, 22001 }, + { 0x10028c8, 24313 }, + { 0x1002888, 23153 }, + { 0x1002810, 21037 }, + { 0x1002830, 21581 }, + { 0x1002870, 22717 }, + { 0x10028f0, 25069 }, + { 0x10028b0, 23869 }, + { 0x1002850, 22141 }, + { 0x10028d0, 24461 }, + { 0x1002890, 23293 }, + { 0x1002820, 21309 }, + { 0x1002860, 22429 }, + { 0x10028e0, 24765 }, + { 0x10028a0, 23581 }, + { 0x1002840, 21869 }, + { 0x10028c0, 24173 }, + { 0x1002880, 23021 }, + { 0x0001a2, 1305 }, { 0x0000a6, 472 }, { 0x000063, 337 }, - { 0x0002e5, 1889 }, - { 0x0001e6, 1614 }, - { 0x000ab8, 6996 }, - { 0x000afc, 7801 }, - { 0x0001b7, 1401 }, - { 0x0001e8, 1621 }, - { 0x0000e7, 1066 }, - { 0x0002e6, 1899 }, + { 0x00fea3, 13064 }, + { 0x0002e5, 1905 }, + { 0x0001e6, 1630 }, + { 0x000ab8, 7064 }, + { 0x000afc, 7878 }, + { 0x0001b7, 1417 }, + { 0x0001e8, 1637 }, + { 0x0000e7, 1073 }, + { 0x0002e6, 1915 }, { 0x0000b8, 646 }, { 0x0000a2, 445 }, - { 0x0009e1, 6581 }, - { 0x000af3, 7682 }, - { 0x000bcf, 7950 }, - { 0x000aec, 7630 }, + { 0x00fea0, 13055 }, + { 0x0009e1, 6649 }, + { 0x000af3, 7759 }, + { 0x000bcf, 8027 }, + { 0x000aec, 7707 }, { 0x00003a, 160 }, { 0x00002c, 115 }, + { 0x100220b, 20668 }, { 0x0000a9, 500 }, - { 0x0009e4, 6600 }, - { 0x0009ee, 6668 }, + { 0x0009e4, 6668 }, + { 0x0009ee, 6736 }, + { 0x100221b, 20690 }, { 0x0000a4, 459 }, - { 0x000aff, 7845 }, + { 0x000aff, 7922 }, { 0x000064, 339 }, - { 0x000af1, 7662 }, - { 0x0001ef, 1643 }, - { 0x00fe56, 12290 }, - { 0x00fe58, 12319 }, - { 0x00fe51, 12229 }, - { 0x00fe60, 12437 }, - { 0x00fe55, 12279 }, - { 0x00fe5a, 12351 }, - { 0x00fe5b, 12362 }, - { 0x00fe52, 12240 }, - { 0x00fe57, 12304 }, - { 0x00fe59, 12334 }, - { 0x00fe50, 12218 }, - { 0x00fe61, 12451 }, - { 0x00fe62, 12461 }, - { 0x00fe5d, 12387 }, - { 0x00fe54, 12267 }, - { 0x00fe5c, 12375 }, - { 0x00fe5f, 12415 }, - { 0x00fe53, 12256 }, - { 0x00fe5e, 12397 }, - { 0x000abd, 7028 }, + { 0x1001e0b, 18957 }, + { 0x000af1, 7739 }, + { 0x0001ef, 1659 }, + { 0x00fe81, 12945 }, + { 0x00fe83, 12959 }, + { 0x00fe85, 12973 }, + { 0x00fe87, 12987 }, + { 0x00fe89, 13001 }, + { 0x00fe80, 12938 }, + { 0x00fe64, 12505 }, + { 0x00fe56, 12312 }, + { 0x00fe65, 12532 }, + { 0x00fe58, 12341 }, + { 0x00fe51, 12234 }, + { 0x00fe6b, 12653 }, + { 0x00fe69, 12616 }, + { 0x00fe6e, 12708 }, + { 0x00fe6c, 12669 }, + { 0x00fe60, 12459 }, + { 0x00fe68, 12599 }, + { 0x00fe67, 12584 }, + { 0x00fe6a, 12637 }, + { 0x00fe55, 12301 }, + { 0x00fe8b, 13025 }, + { 0x00fe5a, 12373 }, + { 0x00fe5b, 12384 }, + { 0x00fe52, 12245 }, + { 0x00fe6f, 12724 }, + { 0x00fe65, 12556 }, + { 0x00fe57, 12326 }, + { 0x00fe59, 12356 }, + { 0x00fe66, 12567 }, + { 0x00fe82, 12952 }, + { 0x00fe50, 12223 }, + { 0x00fe8c, 13044 }, + { 0x00fe61, 12473 }, + { 0x00fe62, 12483 }, + { 0x00fe84, 12966 }, + { 0x00fe6d, 12689 }, + { 0x00fe5d, 12409 }, + { 0x00fe54, 12289 }, + { 0x00fe86, 12980 }, + { 0x00fe5c, 12397 }, + { 0x00fe53, 12261 }, + { 0x00fe64, 12521 }, + { 0x00fe5f, 12437 }, + { 0x00fe8a, 13008 }, + { 0x00fe63, 12493 }, + { 0x00fe53, 12278 }, + { 0x00fe88, 12994 }, + { 0x00fe5e, 12419 }, + { 0x000abd, 7096 }, { 0x0000b0, 569 }, { 0x0000a8, 490 }, - { 0x000aed, 7635 }, - { 0x000aa5, 6822 }, - { 0x0000f7, 1204 }, + { 0x000aed, 7712 }, + { 0x000aa5, 6890 }, + { 0x100222c, 20710 }, + { 0x0000f7, 1211 }, { 0x000024, 33 }, - { 0x000aaf, 6899 }, - { 0x0001bd, 1437 }, - { 0x000af2, 7669 }, - { 0x000afe, 7826 }, - { 0x0008fe, 6552 }, - { 0x000ba8, 7873 }, - { 0x000bd6, 7965 }, - { 0x000bc4, 7915 }, - { 0x000bc2, 7899 }, - { 0x0001f0, 1650 }, + { 0x000aaf, 6967 }, + { 0x0001bd, 1453 }, + { 0x000af2, 7746 }, + { 0x000afe, 7903 }, + { 0x0008fe, 6620 }, + { 0x000ba8, 7950 }, + { 0x000bd6, 8042 }, + { 0x000bc4, 7992 }, + { 0x000bc2, 7976 }, + { 0x0001f0, 1666 }, { 0x000065, 341 }, - { 0x0003ec, 2167 }, - { 0x0000e9, 1082 }, - { 0x0001ec, 1636 }, - { 0x0000ea, 1089 }, - { 0x0000eb, 1101 }, - { 0x0000e8, 1075 }, - { 0x000aae, 6890 }, - { 0x000aa3, 6804 }, - { 0x000aa4, 6813 }, - { 0x0003ba, 2036 }, - { 0x000aa9, 6864 }, - { 0x000ade, 7409 }, - { 0x000adf, 7424 }, - { 0x000ace, 7191 }, - { 0x000acf, 7204 }, - { 0x000aa1, 6788 }, - { 0x000aaa, 6871 }, - { 0x000ae6, 7531 }, - { 0x000ae7, 7550 }, - { 0x0003bf, 2064 }, - { 0x000ae0, 7437 }, - { 0x000ae1, 7454 }, - { 0x000aa2, 6796 }, - { 0x0001ea, 1628 }, + { 0x0003ec, 2183 }, + { 0x0000e9, 1089 }, + { 0x1001eb9, 19497 }, + { 0x0001ec, 1652 }, + { 0x0000ea, 1096 }, + { 0x1001ebf, 19550 }, + { 0x1001ec7, 19687 }, + { 0x1001ec1, 19584 }, + { 0x1001ec3, 19617 }, + { 0x1001ec5, 19650 }, + { 0x0000eb, 1108 }, + { 0x0000e8, 1082 }, + { 0x1001ebb, 19513 }, + { 0x1002088, 20468 }, + { 0x1002078, 20330 }, + { 0x1002208, 20645 }, + { 0x000aae, 6958 }, + { 0x000aa3, 6872 }, + { 0x000aa4, 6881 }, + { 0x0003ba, 2052 }, + { 0x000aa9, 6932 }, + { 0x000ade, 7486 }, + { 0x000adf, 7501 }, + { 0x000ace, 7259 }, + { 0x000acf, 7272 }, + { 0x1002205, 20636 }, + { 0x000aa1, 6856 }, + { 0x000aaa, 6939 }, + { 0x000ae6, 7608 }, + { 0x000ae7, 7627 }, + { 0x0003bf, 2080 }, + { 0x000ae0, 7514 }, + { 0x000ae1, 7531 }, + { 0x000aa2, 6864 }, + { 0x0001ea, 1644 }, { 0x00003d, 181 }, - { 0x0000f0, 1149 }, + { 0x0000f0, 1156 }, + { 0x1001ebd, 19526 }, { 0x000021, 6 }, { 0x0000a1, 434 }, + { 0x1000292, 15418 }, { 0x000066, 343 }, - { 0x000af8, 7740 }, - { 0x0009e3, 6597 }, - { 0x000abb, 7003 }, - { 0x000adc, 7368 }, - { 0x000adb, 7351 }, - { 0x000add, 7388 }, - { 0x000ae9, 7585 }, - { 0x000ae8, 7567 }, - { 0x000ac5, 7089 }, - { 0x000ab7, 6985 }, - { 0x000ab5, 6965 }, - { 0x0008f6, 6514 }, + { 0x1001e1f, 18977 }, + { 0x000af8, 7817 }, + { 0x0009e3, 6665 }, + { 0x000abb, 7071 }, + { 0x000adc, 7445 }, + { 0x000adb, 7428 }, + { 0x000add, 7465 }, + { 0x000ae9, 7662 }, + { 0x000ae8, 7644 }, + { 0x000ac5, 7157 }, + { 0x000ab7, 7053 }, + { 0x1002085, 20426 }, + { 0x1002075, 20291 }, + { 0x000ab5, 7033 }, + { 0x1002084, 20412 }, + { 0x1002074, 20278 }, + { 0x100221c, 20699 }, + { 0x0008f6, 6582 }, { 0x000067, 345 }, - { 0x0002f5, 1911 }, - { 0x0002bb, 1807 }, - { 0x0003bb, 2044 }, - { 0x0002f8, 1921 }, + { 0x0002f5, 1927 }, + { 0x0002bb, 1823 }, + { 0x10001e7, 15397 }, + { 0x0003bb, 2060 }, + { 0x0002f8, 1937 }, { 0x000060, 317 }, { 0x00003e, 187 }, - { 0x0008be, 6315 }, + { 0x0008be, 6383 }, { 0x0000ab, 522 }, { 0x0000bb, 676 }, { 0x000068, 347 }, - { 0x000aa8, 6854 }, - { 0x0002b6, 1786 }, - { 0x000aee, 7643 }, - { 0x000ce0, 8033 }, - { 0x000cf2, 8350 }, - { 0x000ce1, 8046 }, - { 0x000ce1, 8057 }, - { 0x000ce7, 8169 }, - { 0x000ce3, 8096 }, - { 0x000ce3, 8109 }, - { 0x000cdf, 8012 }, - { 0x000cea, 8226 }, - { 0x000ced, 8268 }, - { 0x000cef, 8295 }, - { 0x000cf3, 8362 }, - { 0x000cf5, 8387 }, - { 0x000cf5, 8404 }, - { 0x000ce2, 8069 }, - { 0x000ce2, 8082 }, - { 0x000ce4, 8123 }, - { 0x000ce7, 8181 }, - { 0x000ceb, 8243 }, - { 0x000cf7, 8445 }, - { 0x000cec, 8255 }, - { 0x000cee, 8284 }, - { 0x000cf0, 8311 }, - { 0x000cf4, 8377 }, - { 0x000cf7, 8456 }, - { 0x000cf8, 8468 }, - { 0x000cf1, 8322 }, - { 0x000cf1, 8336 }, - { 0x000cf9, 8480 }, - { 0x000cfa, 8492 }, - { 0x000cfa, 8503 }, - { 0x000ce8, 8192 }, - { 0x000ce8, 8203 }, - { 0x000ce5, 8133 }, - { 0x000ce9, 8215 }, - { 0x000cf6, 8421 }, - { 0x000cf6, 8433 }, - { 0x000ce6, 8144 }, - { 0x000ce6, 8156 }, - { 0x000ada, 7342 }, - { 0x0008a3, 5925 }, - { 0x0009ef, 6682 }, - { 0x0009f0, 6697 }, - { 0x0009f1, 6712 }, - { 0x0009f2, 6727 }, - { 0x0009f3, 6742 }, - { 0x0002b1, 1778 }, - { 0x0009e2, 6594 }, + { 0x000aa8, 6922 }, + { 0x0002b6, 1802 }, + { 0x000aee, 7720 }, + { 0x000ce0, 8110 }, + { 0x000cf2, 8427 }, + { 0x000ce1, 8123 }, + { 0x000ce1, 8134 }, + { 0x000ce7, 8246 }, + { 0x000ce3, 8173 }, + { 0x000ce3, 8186 }, + { 0x000cdf, 8089 }, + { 0x000cea, 8303 }, + { 0x000ced, 8345 }, + { 0x000cef, 8372 }, + { 0x000cf3, 8439 }, + { 0x000cf5, 8464 }, + { 0x000cf5, 8481 }, + { 0x000ce2, 8146 }, + { 0x000ce2, 8159 }, + { 0x000ce4, 8200 }, + { 0x000ce7, 8258 }, + { 0x000ceb, 8320 }, + { 0x000cf7, 8522 }, + { 0x000cec, 8332 }, + { 0x000cee, 8361 }, + { 0x000cf0, 8388 }, + { 0x000cf4, 8454 }, + { 0x000cf7, 8533 }, + { 0x000cf8, 8545 }, + { 0x000cf1, 8399 }, + { 0x000cf1, 8413 }, + { 0x000cf9, 8557 }, + { 0x000cfa, 8569 }, + { 0x000cfa, 8580 }, + { 0x000ce8, 8269 }, + { 0x000ce8, 8280 }, + { 0x000ce5, 8210 }, + { 0x000ce9, 8292 }, + { 0x000cf6, 8498 }, + { 0x000cf6, 8510 }, + { 0x000ce6, 8221 }, + { 0x000ce6, 8233 }, + { 0x000ada, 7419 }, + { 0x0008a3, 5993 }, + { 0x0009ef, 6750 }, + { 0x0009f0, 6765 }, + { 0x0009f1, 6780 }, + { 0x0009f2, 6795 }, + { 0x0009f3, 6810 }, + { 0x0002b1, 1794 }, + { 0x0009e2, 6662 }, { 0x0000ad, 544 }, { 0x000069, 349 }, - { 0x0000ed, 1119 }, - { 0x0000ee, 1126 }, - { 0x0008cf, 6418 }, - { 0x0000ef, 1138 }, - { 0x0002b9, 1798 }, - { 0x0008cd, 6401 }, - { 0x0000ec, 1112 }, - { 0x0003ef, 2177 }, - { 0x0008ce, 6410 }, - { 0x0008da, 6436 }, - { 0x0008db, 6447 }, - { 0x0008c2, 6361 }, - { 0x0008bf, 6332 }, - { 0x0008dc, 6456 }, - { 0x0003e7, 2159 }, - { 0x0003b5, 2020 }, + { 0x1008ff60, 26390 }, + { 0x0000ed, 1126 }, + { 0x1001ecb, 19729 }, + { 0x100012d, 15263 }, + { 0x0000ee, 1133 }, + { 0x0008cf, 6486 }, + { 0x0000ef, 1145 }, + { 0x0002b9, 1814 }, + { 0x0008cd, 6469 }, + { 0x0000ec, 1119 }, + { 0x1001ec9, 19713 }, + { 0x0003ef, 2193 }, + { 0x0008ce, 6478 }, + { 0x0008da, 6504 }, + { 0x0008db, 6515 }, + { 0x0008c2, 6429 }, + { 0x0008bf, 6400 }, + { 0x0008dc, 6524 }, + { 0x0003e7, 2175 }, + { 0x0003b5, 2036 }, { 0x00006a, 351 }, - { 0x0002bc, 1814 }, - { 0x000bca, 7934 }, + { 0x0002bc, 1830 }, + { 0x000bca, 8011 }, { 0x00006b, 353 }, - { 0x0004b1, 2439 }, - { 0x0004c1, 2563 }, - { 0x0004b4, 2460 }, - { 0x0004cc, 2669 }, - { 0x0004ca, 2653 }, - { 0x0004cd, 2685 }, - { 0x0004cb, 2661 }, - { 0x0004ce, 2693 }, - { 0x0004cc, 2677 }, - { 0x0004b2, 2446 }, - { 0x0004b6, 2474 }, - { 0x0004b9, 2498 }, - { 0x0004b7, 2482 }, - { 0x0004ba, 2506 }, - { 0x0004b8, 2490 }, - { 0x0004cf, 2701 }, - { 0x0004d2, 2725 }, - { 0x0004d0, 2709 }, - { 0x0004d3, 2733 }, - { 0x0004d1, 2717 }, - { 0x0004dd, 2813 }, - { 0x0004c5, 2613 }, - { 0x0004c8, 2637 }, - { 0x0004c6, 2621 }, - { 0x0004c9, 2645 }, - { 0x0004c7, 2629 }, - { 0x0004b5, 2467 }, - { 0x0004d7, 2765 }, - { 0x0004da, 2789 }, - { 0x0004d8, 2773 }, - { 0x0004db, 2797 }, - { 0x0004d9, 2781 }, - { 0x0004bb, 2514 }, - { 0x0004be, 2539 }, - { 0x0004bc, 2522 }, - { 0x0004bf, 2547 }, - { 0x0004bd, 2531 }, - { 0x0004c0, 2555 }, - { 0x0004c3, 2597 }, - { 0x0004c1, 2572 }, - { 0x0004c4, 2605 }, - { 0x0004c2, 2580 }, - { 0x0004c2, 2589 }, - { 0x0004b3, 2453 }, - { 0x0004dc, 2805 }, - { 0x0004a6, 2340 }, - { 0x0004d4, 2741 }, - { 0x0004d6, 2757 }, - { 0x0004d5, 2749 }, - { 0x0004a7, 2348 }, - { 0x0004a3, 2277 }, - { 0x0004a4, 2297 }, - { 0x0004a5, 2308 }, - { 0x0004aa, 2369 }, - { 0x0004a1, 2243 }, - { 0x0004a8, 2355 }, - { 0x0004a5, 2325 }, - { 0x0004ab, 2376 }, - { 0x0004a2, 2257 }, - { 0x00ff7e, 13930 }, - { 0x0004af, 2407 }, - { 0x0004af, 2416 }, - { 0x0004a9, 2362 }, - { 0x0004ac, 2383 }, - { 0x0004ae, 2399 }, - { 0x0004ad, 2391 }, - { 0x0003a2, 1952 }, - { 0x0003f3, 2202 }, - { 0x0003a2, 1958 }, + { 0x0004b1, 2455 }, + { 0x0004c1, 2579 }, + { 0x0004b4, 2476 }, + { 0x0004cc, 2685 }, + { 0x0004ca, 2669 }, + { 0x0004cd, 2701 }, + { 0x0004cb, 2677 }, + { 0x0004ce, 2709 }, + { 0x0004cc, 2693 }, + { 0x0004b2, 2462 }, + { 0x0004b6, 2490 }, + { 0x0004b9, 2514 }, + { 0x0004b7, 2498 }, + { 0x0004ba, 2522 }, + { 0x0004b8, 2506 }, + { 0x0004cf, 2717 }, + { 0x0004d2, 2741 }, + { 0x0004d0, 2725 }, + { 0x0004d3, 2749 }, + { 0x0004d1, 2733 }, + { 0x0004dd, 2829 }, + { 0x0004c5, 2629 }, + { 0x0004c8, 2653 }, + { 0x0004c6, 2637 }, + { 0x0004c9, 2661 }, + { 0x0004c7, 2645 }, + { 0x0004b5, 2483 }, + { 0x0004d7, 2781 }, + { 0x0004da, 2805 }, + { 0x0004d8, 2789 }, + { 0x0004db, 2813 }, + { 0x0004d9, 2797 }, + { 0x0004bb, 2530 }, + { 0x0004be, 2555 }, + { 0x0004bc, 2538 }, + { 0x0004bf, 2563 }, + { 0x0004bd, 2547 }, + { 0x0004c0, 2571 }, + { 0x0004c3, 2613 }, + { 0x0004c1, 2588 }, + { 0x0004c4, 2621 }, + { 0x0004c2, 2596 }, + { 0x0004c2, 2605 }, + { 0x0004b3, 2469 }, + { 0x0004dc, 2821 }, + { 0x0004a6, 2356 }, + { 0x0004d4, 2757 }, + { 0x0004d6, 2773 }, + { 0x0004d5, 2765 }, + { 0x0004a7, 2364 }, + { 0x0004a3, 2293 }, + { 0x0004a4, 2313 }, + { 0x0004a5, 2324 }, + { 0x0004aa, 2385 }, + { 0x0004a1, 2259 }, + { 0x0004a8, 2371 }, + { 0x0004a5, 2341 }, + { 0x0004ab, 2392 }, + { 0x0004a2, 2273 }, + { 0x00ff7e, 14444 }, + { 0x0004af, 2423 }, + { 0x0004af, 2432 }, + { 0x0004a9, 2378 }, + { 0x0004ac, 2399 }, + { 0x0004ae, 2415 }, + { 0x0004ad, 2407 }, + { 0x0003a2, 1968 }, + { 0x0003f3, 2218 }, + { 0x0003a2, 1974 }, { 0x00006c, 355 }, - { 0x0001e5, 1607 }, - { 0x000ad9, 7331 }, - { 0x0001b5, 1387 }, - { 0x0003b6, 2027 }, - { 0x000abc, 7011 }, - { 0x0008fb, 6523 }, - { 0x000ba3, 7852 }, - { 0x000ad2, 7261 }, - { 0x0008af, 6106 }, - { 0x000acc, 7156 }, - { 0x000aea, 7605 }, - { 0x0008a1, 5898 }, - { 0x000bda, 7984 }, - { 0x000ad0, 7220 }, - { 0x0009f4, 6757 }, - { 0x000bdc, 7993 }, + { 0x0001e5, 1623 }, + { 0x000ad9, 7408 }, + { 0x1001e37, 18997 }, + { 0x0001b5, 1403 }, + { 0x0003b6, 2043 }, + { 0x000abc, 7079 }, + { 0x0008fb, 6591 }, + { 0x000ba3, 7929 }, + { 0x000ad2, 7329 }, + { 0x0008af, 6174 }, + { 0x000acc, 7224 }, + { 0x000aea, 7682 }, + { 0x0008a1, 5966 }, + { 0x000bda, 8061 }, + { 0x000ad0, 7288 }, + { 0x0009f4, 6825 }, + { 0x000bdc, 8070 }, { 0x00003c, 176 }, - { 0x0008bc, 6292 }, - { 0x0009e5, 6603 }, - { 0x0008de, 6475 }, - { 0x0008df, 6486 }, - { 0x0009ed, 6654 }, - { 0x0009ea, 6612 }, - { 0x0001b3, 1379 }, + { 0x0008bc, 6360 }, + { 0x0009e5, 6671 }, + { 0x0008de, 6543 }, + { 0x0008df, 6554 }, + { 0x0009ed, 6722 }, + { 0x0009ea, 6680 }, + { 0x0001b3, 1395 }, { 0x00006d, 357 }, + { 0x1001e41, 19017 }, { 0x0000af, 562 }, - { 0x000af7, 7729 }, - { 0x000af0, 7649 }, - { 0x000abf, 7059 }, + { 0x000af7, 7806 }, + { 0x000af0, 7726 }, + { 0x000abf, 7127 }, { 0x0000ba, 666 }, { 0x00002d, 121 }, - { 0x000ad6, 7315 }, + { 0x000ad6, 7392 }, { 0x0000b5, 618 }, { 0x0000d7, 932 }, - { 0x000af6, 7717 }, - { 0x000af5, 7704 }, + { 0x000af6, 7794 }, + { 0x000af5, 7781 }, { 0x00006e, 359 }, - { 0x0008c5, 6370 }, - { 0x0001f1, 1658 }, - { 0x0001f2, 1665 }, - { 0x0003f1, 2185 }, - { 0x0009e8, 6606 }, + { 0x0008c5, 6438 }, + { 0x0001f1, 1674 }, + { 0x0001f2, 1681 }, + { 0x0003f1, 2201 }, + { 0x1002089, 20483 }, + { 0x1002079, 20344 }, + { 0x0009e8, 6674 }, { 0x0000a0, 421 }, - { 0x0008bd, 6306 }, + { 0x1002247, 20738 }, + { 0x1002209, 20655 }, + { 0x0008bd, 6374 }, + { 0x1002262, 20759 }, { 0x0000ac, 536 }, - { 0x0000f1, 1153 }, + { 0x0000f1, 1160 }, { 0x000023, 22 }, - { 0x0006b0, 3775 }, + { 0x0006b0, 3817 }, { 0x00006f, 361 }, - { 0x0000f3, 1167 }, - { 0x0000f4, 1174 }, - { 0x0000f6, 1193 }, - { 0x0001f5, 1672 }, - { 0x0013bd, 11015 }, - { 0x0001b2, 1372 }, - { 0x0000f2, 1160 }, - { 0x0003f2, 2194 }, - { 0x000ac3, 7066 }, - { 0x000ab2, 6934 }, + { 0x0000f3, 1174 }, + { 0x1000275, 15410 }, + { 0x1001ecd, 19749 }, + { 0x10001d2, 15383 }, + { 0x0000f4, 1181 }, + { 0x1001ed1, 19788 }, + { 0x1001ed9, 19925 }, + { 0x1001ed3, 19822 }, + { 0x1001ed5, 19855 }, + { 0x1001ed7, 19888 }, + { 0x0000f6, 1200 }, + { 0x0001f5, 1688 }, + { 0x0013bd, 11092 }, + { 0x0001b2, 1388 }, + { 0x0000f2, 1167 }, + { 0x1001ecf, 19765 }, + { 0x10001a1, 15338 }, + { 0x1001edb, 19956 }, + { 0x1001ee3, 20045 }, + { 0x1001edd, 19978 }, + { 0x1001edf, 19999 }, + { 0x1001ee1, 20020 }, + { 0x0003f2, 2210 }, + { 0x000ac3, 7134 }, + { 0x000ab2, 7002 }, { 0x0000bd, 702 }, { 0x0000bc, 691 }, - { 0x000ab6, 6976 }, + { 0x000ab6, 7044 }, + { 0x1002081, 20371 }, { 0x0000b9, 654 }, - { 0x000ab0, 6915 }, - { 0x000ae2, 7473 }, - { 0x000ae5, 7522 }, - { 0x000ae4, 7504 }, - { 0x000ae3, 7488 }, + { 0x000ab0, 6983 }, + { 0x0000f8, 1220 }, + { 0x000ae2, 7550 }, + { 0x000ae5, 7599 }, + { 0x000ae4, 7581 }, + { 0x000ae3, 7565 }, { 0x0000aa, 510 }, - { 0x0000f8, 1213 }, - { 0x0000f5, 1186 }, - { 0x000bc0, 7891 }, - { 0x00047e, 2234 }, + { 0x0000f8, 1229 }, + { 0x0000f5, 1193 }, + { 0x000bc0, 7968 }, + { 0x00047e, 2250 }, { 0x000070, 363 }, + { 0x1001e57, 19037 }, { 0x0000b6, 621 }, { 0x000028, 80 }, { 0x000029, 90 }, - { 0x0008ef, 6496 }, + { 0x1002202, 20619 }, + { 0x0008ef, 6564 }, { 0x000025, 40 }, { 0x00002e, 127 }, { 0x0000b7, 631 }, - { 0x000afb, 7781 }, + { 0x000ad5, 7383 }, + { 0x000afb, 7858 }, { 0x00002b, 110 }, { 0x0000b1, 576 }, - { 0x000ad4, 7302 }, - { 0x0004b0, 2424 }, - { 0x000aa6, 6833 }, + { 0x000ad4, 7370 }, + { 0x0004b0, 2440 }, + { 0x000aa6, 6901 }, { 0x000071, 365 }, - { 0x000bcc, 7938 }, + { 0x000bcc, 8015 }, { 0x00003f, 195 }, { 0x0000bf, 724 }, { 0x000022, 13 }, { 0x000060, 323 }, { 0x000027, 69 }, { 0x000072, 367 }, - { 0x0001e0, 1593 }, - { 0x0008d6, 6428 }, - { 0x0001f8, 1685 }, - { 0x0003b3, 2011 }, + { 0x0001e0, 1609 }, + { 0x0008d6, 6496 }, + { 0x0001f8, 1701 }, + { 0x0003b3, 2027 }, { 0x0000ae, 551 }, - { 0x000abe, 7041 }, - { 0x0008fd, 6541 }, - { 0x000ba6, 7862 }, - { 0x000ad3, 7281 }, - { 0x0008b0, 6127 }, - { 0x0008b7, 6271 }, - { 0x000acd, 7173 }, - { 0x000aeb, 7617 }, - { 0x000bd8, 7974 }, - { 0x000ad1, 7240 }, - { 0x0009f5, 6763 }, - { 0x000bfc, 8002 }, + { 0x000abe, 7109 }, + { 0x0008fd, 6609 }, + { 0x000ba6, 7939 }, + { 0x000ad3, 7349 }, + { 0x0008b0, 6195 }, + { 0x0008b7, 6339 }, + { 0x000acd, 7241 }, + { 0x000aeb, 7694 }, + { 0x000bd8, 8051 }, + { 0x000ad1, 7308 }, + { 0x0009f5, 6831 }, + { 0x000bfc, 8079 }, { 0x000073, 369 }, - { 0x0001b6, 1394 }, - { 0x0001b9, 1407 }, - { 0x0001ba, 1414 }, - { 0x0002fe, 1940 }, - { 0x00ff7e, 13942 }, - { 0x000ad7, 7323 }, + { 0x1001e61, 19057 }, + { 0x0001b6, 1410 }, + { 0x0001b9, 1423 }, + { 0x0001ba, 1430 }, + { 0x1000259, 15404 }, + { 0x0002fe, 1956 }, + { 0x00ff7e, 14468 }, + { 0x000ad7, 7400 }, { 0x0000a7, 482 }, { 0x00003b, 166 }, - { 0x0004df, 2832 }, - { 0x000ac6, 7101 }, - { 0x000aca, 7124 }, - { 0x000aac, 6878 }, - { 0x0008c9, 6388 }, - { 0x000afd, 7807 }, + { 0x0004df, 2848 }, + { 0x000ac6, 7169 }, + { 0x1002087, 20453 }, + { 0x1002077, 20316 }, + { 0x000aca, 7192 }, + { 0x000aac, 6946 }, + { 0x0008c9, 6456 }, + { 0x000afd, 7884 }, + { 0x1002086, 20440 }, + { 0x1002076, 20304 }, { 0x00002f, 134 }, - { 0x0009e0, 6568 }, + { 0x0009e0, 6636 }, { 0x000020, 0 }, - { 0x0000df, 1006 }, + { 0x100221a, 20679 }, + { 0x0000df, 1013 }, { 0x0000a3, 450 }, + { 0x1002263, 20772 }, { 0x000074, 371 }, - { 0x0001bb, 1423 }, - { 0x0001fe, 1711 }, - { 0x000af9, 7753 }, - { 0x000afa, 7763 }, - { 0x0008c0, 6341 }, - { 0x000aa7, 6844 }, - { 0x0000fe, 1264 }, - { 0x000ac4, 7076 }, - { 0x000ab4, 6953 }, + { 0x1001e6b, 19077 }, + { 0x0001bb, 1439 }, + { 0x0001fe, 1727 }, + { 0x000af9, 7830 }, + { 0x000afa, 7840 }, + { 0x0008c0, 6409 }, + { 0x000aa7, 6912 }, + { 0x0000fe, 1280 }, + { 0x000ac4, 7144 }, + { 0x000ab4, 7021 }, { 0x0000be, 710 }, + { 0x1002083, 20397 }, { 0x0000b3, 598 }, - { 0x0008a4, 5940 }, - { 0x0008ab, 6048 }, - { 0x0008a2, 5910 }, - { 0x0008a7, 5978 }, - { 0x0008b1, 6149 }, - { 0x0008ad, 6076 }, - { 0x0008a9, 6012 }, - { 0x0008b5, 6235 }, - { 0x0009f7, 6775 }, - { 0x0008b3, 6183 }, - { 0x000ac9, 7114 }, - { 0x000acb, 7138 }, - { 0x0003bc, 2053 }, - { 0x000ab3, 6943 }, + { 0x100222d, 20720 }, + { 0x0008a4, 6008 }, + { 0x0008ab, 6116 }, + { 0x0008a2, 5978 }, + { 0x0008a7, 6046 }, + { 0x0008b1, 6217 }, + { 0x0008ad, 6144 }, + { 0x0008a9, 6080 }, + { 0x0008b5, 6303 }, + { 0x0009f7, 6843 }, + { 0x0008b3, 6251 }, + { 0x000ac9, 7182 }, + { 0x000acb, 7206 }, + { 0x0003bc, 2069 }, + { 0x000ab3, 7011 }, + { 0x1002082, 20384 }, { 0x0000b2, 586 }, - { 0x000ab1, 6924 }, + { 0x000ab1, 6992 }, { 0x000075, 373 }, - { 0x0000fa, 1227 }, - { 0x0002fd, 1933 }, - { 0x0000fb, 1234 }, - { 0x0000fc, 1246 }, - { 0x0001fb, 1698 }, - { 0x0000f9, 1220 }, - { 0x0003fe, 2226 }, - { 0x000bc6, 7925 }, + { 0x0000fa, 1243 }, + { 0x1001ee5, 20069 }, + { 0x0002fd, 1949 }, + { 0x0000fb, 1250 }, + { 0x0000fc, 1262 }, + { 0x0001fb, 1714 }, + { 0x0000f9, 1236 }, + { 0x1001ee7, 20085 }, + { 0x10001b0, 15350 }, + { 0x1001ee9, 20102 }, + { 0x1001ef1, 20191 }, + { 0x1001eeb, 20124 }, + { 0x1001eed, 20145 }, + { 0x1001eef, 20166 }, + { 0x0003fe, 2242 }, + { 0x000bc6, 8002 }, { 0x00005f, 306 }, - { 0x0008dd, 6469 }, - { 0x0003f9, 2211 }, - { 0x0008fc, 6533 }, - { 0x000ba9, 7883 }, - { 0x0009ec, 6641 }, - { 0x0009eb, 6627 }, - { 0x000bc3, 7908 }, - { 0x000bd3, 7957 }, - { 0x000bce, 7943 }, - { 0x0001f9, 1692 }, - { 0x0003fd, 2219 }, + { 0x0008dd, 6537 }, + { 0x0003f9, 2227 }, + { 0x0008fc, 6601 }, + { 0x000ba9, 7960 }, + { 0x0009ec, 6709 }, + { 0x0009eb, 6695 }, + { 0x000bc3, 7985 }, + { 0x000bd3, 8034 }, + { 0x000bce, 8020 }, + { 0x0001f9, 1708 }, + { 0x0003fd, 2235 }, { 0x000076, 375 }, - { 0x0008c1, 6351 }, - { 0x0009f8, 6780 }, - { 0x0008a6, 5964 }, - { 0x0004de, 2820 }, - { 0x0009e9, 6609 }, + { 0x0008c1, 6419 }, + { 0x0009f8, 6848 }, + { 0x0008a6, 6032 }, + { 0x0004de, 2836 }, + { 0x0009e9, 6677 }, { 0x000077, 377 }, + { 0x1001e83, 19108 }, + { 0x1000175, 15282 }, + { 0x1001e85, 19126 }, + { 0x1001e81, 19094 }, { 0x000078, 379 }, + { 0x1001e8b, 19147 }, { 0x000079, 381 }, - { 0x0000fd, 1257 }, - { 0x0000ff, 1270 }, + { 0x0000fd, 1273 }, + { 0x1001ef5, 20229 }, + { 0x1000177, 15306 }, + { 0x0000ff, 1286 }, { 0x0000a5, 468 }, + { 0x1001ef3, 20212 }, + { 0x1001ef7, 20245 }, + { 0x1001ef9, 20258 }, { 0x00007a, 383 }, - { 0x0001bf, 1456 }, - { 0x0001bc, 1430 }, - { 0x0001be, 1449 }}; + { 0x0001bf, 1472 }, + { 0x0001bc, 1446 }, + { 0x0001be, 1465 }, + { 0x1002080, 20357 }, + { 0x1002070, 20265 }, + { 0x10001b6, 15364 }}; + + +#if 0 +/* + * xgettext extracts strings in '#if 0' against intltool and I deleted + * all the translatable strings here. + * + * Translators, the strings in the “keyboard label” context are + * display names for keyboard keys. Some of them have prefixes like + * XF86 or ISO_ - these should be removed in the translation. Similarly, + * underscores should be replaced by spaces. The prefix “KP_” stands + * for “key pad” and you may want to include that in your translation. + * Here are some examples of English translations: + * XF86AudioMute - Audio mute + * Scroll_lock - Scroll lock + * KP_Space - Space (keypad) + */ +#endif diff --git a/src/tests/Makefile.am b/src/tests/Makefile.am index 1c34da706..ca5285bd4 100644 --- a/src/tests/Makefile.am +++ b/src/tests/Makefile.am @@ -2,64 +2,179 @@ # # ibus - The Input Bus # -# Copyright (c) 2007-2010 Peng Huang -# Copyright (c) 2007-2010 Red Hat, Inc. +# Copyright (c) 2007-2015 Peng Huang +# Copyright (c) 2015-2022 Takao Fujiwara +# Copyright (c) 2007-2018 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA NULL = DEPS = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la -INCLUDES = \ - -g \ - @GLIB2_CFLAGS@ \ - @GIO2_CFLAGS@ \ - -I$(top_srcdir)/src \ +AM_CPPFLAGS = \ + -g \ + @GLIB2_CFLAGS@ \ + @GIO2_CFLAGS@ \ + -DIBUS_DISABLE_DEPRECATION_WARNINGS \ + -DX11_DATA_PREFIX=\"$(X11_PREFIX)\" \ + -I$(top_srcdir)/src \ + -I$(top_builddir)/src \ + $(NULL) + +prog_ldadd =\ + @GLIB2_LIBS@ \ + @GIO2_LIBS@ \ + $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la \ + $(NULL) + +noinst_PROGRAMS = $(TESTS_C) +noinst_SCRIPTS = $(TESTS_SCRIPT) +TESTS_C = \ + ibus-bus \ + ibus-config \ + ibus-configservice \ + ibus-factory \ + ibus-inputcontext \ + ibus-inputcontext-create \ + ibus-keynames \ + ibus-registry \ + ibus-serializable \ + ibus-share \ + ibus-util \ + $(NULL) + +TESTS_SCRIPT = \ + xkb-latin-layouts \ + $(NULL) + +TESTS = \ + $(TESTS_C) \ + $(TESTS_SCRIPT) \ + $(NULL) + +CLEANFILES = + +if ENABLE_ENGINE +TESTS_C += ibus-engine-switch +endif + +if ENABLE_GTK3 +TESTS_C += ibus-compose +if ENABLE_XTEST +TESTS_C += ibus-keypress +endif +endif + +TESTS_ENVIRONMENT = \ + top_builddir=$(top_builddir) \ + top_srcdir=$(top_srcdir) \ + builddir=$(builddir) \ + srcdir=$(srcdir) \ + LD_LIBRARY_PATH="$(top_builddir)/src/.libs:$(top_builddir)/src" \ + DISABLE_GUI_TESTS="$(DISABLE_GUI_TESTS)" \ + DISABLE_DAEMONIZE_IN_TESTS="$(DISABLE_DAEMONIZE_IN_TESTS)" \ + $(NULL) + +LOG_COMPILER = $(srcdir)/runtest +test_metas_in = meta.test.in + +if ENABLE_INSTALL_TESTS +bin_SCRIPTS = ibus-desktop-testing-runner +test_execs = $(TESTS:ibus-compose=ibus-compose-locales) +test_metas = $(addsuffix .test, $(test_execs)) +test_sources_DATA = \ + $(test_metas) \ + ibus-compose.emoji \ + ibus-compose.env \ + $(NULL) +test_sourcesdir = $(datadir)/installed-tests/ibus + +CLEANFILES += \ + $(test_metas) \ + ibus-desktop-testing-runner \ + org.freedesktop.IBus.Desktop.Testing.desktop \ + $(NULL) + +test_execs_PROGRAMS = $(TESTS_C) +test_execs_SCRIPTS = $(TESTS_SCRIPT) +if ENABLE_GTK3 +test_execs_SCRIPTS += ibus-compose-locales +CLEANFILES += \ + ibus-compose-locales \ + $(NULL) +endif +test_execsdir = $(libexecdir)/installed-tests/ibus +libexec_SCRIPTS = ibus-desktop-testing-autostart + +test_frame_DATA = org.freedesktop.IBus.Desktop.Testing.desktop +test_framedir = $(pkgdatadir)/tests +org.freedesktop.IBus.Desktop.Testing.desktop: ibus-desktop-testing.desktop.in + $(AM_V_GEN) sed -e "s|\@libexecdir\@|$(libexecdir)|g" \ + $< > $@.tmp && \ + mv $@.tmp $@ +endif + +$(test_metas): $(test_metas_in) + f=`echo $@ | sed -e 's/\.test//'`; \ + TEST_EXEC=$(test_execsdir)/$$f; \ + sed -e "s|@TEST_EXEC[@]|$$TEST_EXEC|g" $(srcdir)/$(test_metas_in) \ + > $@.tmp && mv $@.tmp $@; \ $(NULL) -prog_ldadd = \ - @GLIB2_LIBS@ \ - @GIO2_LIBS@ \ - $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la \ +ibus-compose-locales: ibus-compose-locales.in + SRCDIR=$(test_sourcesdir); \ + sed -e "s|@SRCDIR[@]|$$SRCDIR|g" $< > $@.tmp; \ + mv $@.tmp $@; \ $(NULL) -noinst_PROGRAMS = $(TESTS) -TESTS = \ - ibus-bus \ - ibus-config \ - ibus-configservice\ - ibus-factory \ - ibus-inputcontext \ - ibus-inputcontext-create \ - ibus-keynames \ - ibus-serializable \ - ibus-share \ - ibus-util \ +ibus-desktop-testing-runner: ibus-desktop-testing-runner.in + INSTALLEDDIR=$(datadir)/installed-tests; \ + sed -e "s|@INSTALLEDDIR[@]|$$INSTALLEDDIR|g" $< > $@.tmp; \ + mv $@.tmp $@; \ $(NULL) +EXTRA_DIST = \ + $(test_metas_in) \ + $(TESTS_SCRIPT) \ + runtest \ + ibus-compose.emoji \ + ibus-compose.env \ + ibus-compose-locales.in \ + ibus-desktop-testing.desktop.in \ + ibus-desktop-testing-autostart \ + ibus-desktop-testing-runner.in \ + $(NULL) + ibus_bus_SOURCES = ibus-bus.c ibus_bus_LDADD = $(prog_ldadd) +ibus_compose_SOURCES = ibus-compose.c +ibus_compose_CFLAGS = @GTK3_CFLAGS@ +ibus_compose_LDADD = $(prog_ldadd) @GTK3_LIBS@ + ibus_config_SOURCES = ibus-config.c ibus_config_LDADD = $(prog_ldadd) ibus_configservice_SOURCES = ibus-configservice.c ibus_configservice_LDADD = $(prog_ldadd) +ibus_engine_switch_SOURCES = ibus-engine-switch.c +ibus_engine_switch_LDADD = $(prog_ldadd) + ibus_factory_SOURCES = ibus-factory.c ibus_factory_LDADD = $(prog_ldadd) @@ -72,6 +187,13 @@ ibus_inputcontext_create_LDADD = $(prog_ldadd) ibus_keynames_SOURCES = ibus-keynames.c ibus_keynames_LDADD = $(prog_ldadd) +ibus_keypress_SOURCES = ibus-keypress.c +ibus_keypress_CFLAGS = @GTK3_CFLAGS@ @XTEST_CFLAGS@ +ibus_keypress_LDADD = $(prog_ldadd) @GTK3_LIBS@ @XTEST_LIBS@ + +ibus_registry_SOURCES = ibus-registry.c +ibus_registry_LDADD = $(prog_ldadd) + ibus_serializable_SOURCES = ibus-serializable.c ibus_serializable_LDADD = $(prog_ldadd) diff --git a/src/tests/ibus-bus.c b/src/tests/ibus-bus.c index 644f35dd7..a2af0bb21 100644 --- a/src/tests/ibus-bus.c +++ b/src/tests/ibus-bus.c @@ -20,6 +20,7 @@ print_engines (const GList *engines) } } +#ifndef IBUS_DISABLE_DEPRECATED static void test_list_active_engines (void) { @@ -32,6 +33,7 @@ test_list_active_engines (void) g_list_foreach (engines, (GFunc) g_object_unref, NULL); g_list_free (engines); } +#endif /* IBUS_DISABLE_DEPRECATED */ static void test_list_engines (void) @@ -46,6 +48,16 @@ test_list_engines (void) g_list_free (engines); } +static void +name_owner_changed_cb (IBusBus *bus, + gchar *name, + gchar *old, + gchar *new, + gpointer data) +{ + g_debug ("%s: bus=%s, old=%s, new=%s", G_STRFUNC, name, old, new); +} + static void call_next_async_function (void); static void @@ -54,10 +66,34 @@ finish_request_name_async (GObject *source_object, gpointer user_data) { GError *error = NULL; - guint id = ibus_bus_request_name_async_finish (bus, - res, - &error); + guint id = ibus_bus_request_name_async_finish (bus, res, &error); + g_assert (id != 0); + + g_debug ("request name returned %d: ", id); + + switch (id) { + case IBUS_BUS_REQUEST_NAME_REPLY_PRIMARY_OWNER: + g_debug ("got ownership"); + break; + case IBUS_BUS_REQUEST_NAME_REPLY_IN_QUEUE: + g_debug ("got queued"); + break; + case IBUS_BUS_REQUEST_NAME_REPLY_EXISTS: + g_debug ("request already in queue"); + break; + case IBUS_BUS_REQUEST_NAME_REPLY_ALREADY_OWNER: + g_debug ("already owner"); + break; + default: + g_assert_not_reached (); + } + + if (error) { + g_warning ("Error %s: %s", G_STRFUNC, error->message); + g_error_free (error); + } + g_debug ("ibus_bus_request_name_async_finish: OK"); call_next_async_function (); } @@ -65,9 +101,15 @@ finish_request_name_async (GObject *source_object, static void start_request_name_async (void) { + ibus_bus_set_watch_dbus_signal (bus, TRUE); + ibus_bus_set_watch_ibus_signal (bus, TRUE); + + g_signal_connect (bus, "name-owner-changed", + (GCallback) name_owner_changed_cb, NULL); + ibus_bus_request_name_async (bus, "org.freedesktop.IBus.IBusBusTest", - 0, + IBUS_BUS_NAME_FLAG_REPLACE_EXISTING, -1, /* timeout */ NULL, /* cancellable */ finish_request_name_async, @@ -203,7 +245,7 @@ start_remove_match_async (void) static int create_input_context_count = 0; static void -finish_create_input_context_async_sucess (GObject *source_object, +finish_create_input_context_async_success (GObject *source_object, GAsyncResult *res, gpointer user_data) { @@ -248,7 +290,7 @@ test_create_input_context_async (void) "test-async", -1, /* timeout */ NULL, /* cancellable */ - finish_create_input_context_async_sucess, + finish_create_input_context_async_success, loop); /* user_data */ g_main_loop_run (loop); g_main_loop_unref (loop); @@ -268,7 +310,7 @@ test_create_input_context_async (void) g_main_loop_run (loop); g_main_loop_unref (loop); - /* ceate four IC, and cancel two */ + /* create four IC, and cancel two */ create_input_context_count = 4; loop = g_main_loop_new (NULL, TRUE); cancellable = g_cancellable_new (); @@ -282,13 +324,13 @@ test_create_input_context_async (void) "test-async", -1, /* timeout */ NULL, /* cancellable */ - finish_create_input_context_async_sucess, + finish_create_input_context_async_success, loop); /* user_data */ ibus_bus_create_input_context_async (bus, "test-async", -1, /* timeout */ NULL, /* cancellable */ - finish_create_input_context_async_sucess, + finish_create_input_context_async_success, loop); /* user_data */ ibus_bus_create_input_context_async (bus, "test-async", @@ -353,6 +395,7 @@ start_list_engines_async (void) NULL); /* user_data */ } +#ifndef IBUS_DISABLE_DEPRECATED static void finish_list_active_engines_async (GObject *source_object, GAsyncResult *res, @@ -447,6 +490,7 @@ start_is_global_engine_enabled_async (void) finish_is_global_engine_enabled_async, NULL); /* user_data */ } +#endif /* IBUS_DISABLE_DEPRECATED */ static void finish_get_global_engine_async (GObject *source_object, @@ -497,6 +541,267 @@ start_set_global_engine_async (void) NULL); /* user_data */ } +static void +finish_preload_engines_async (GObject *source_object, + GAsyncResult *res, + gpointer user_data) +{ + GError *error = NULL; + ibus_bus_preload_engines_async_finish (bus, res, &error); + g_debug ("ibus_bus_preload_engines_async_finish: OK"); + call_next_async_function (); +} + +static void +start_preload_engines_async (void) +{ + const gchar *preload_engines[] = { "xkb:us::eng", NULL }; + + ibus_bus_preload_engines_async ( + bus, + preload_engines, + -1, /* timeout */ + NULL, /* cancellable */ + finish_preload_engines_async, + NULL); /* user_data */ +} + +static void +test_get_address (void) +{ + GVariant *result; + + result = ibus_bus_get_ibus_property (bus, "Address"); + g_variant_get_string (result, NULL); + g_variant_unref (result); +} + +static void +test_get_current_input_context (void) +{ + GVariant *result; + + result = ibus_bus_get_ibus_property (bus, "CurrentInputContext"); + g_variant_get_string (result, NULL); + g_variant_unref (result); +} + +static void +test_get_engines (void) +{ + GVariant *result, *var; + GVariantIter *iter; + GList *engines = NULL; + + result = ibus_bus_get_ibus_property (bus, "Engines"); + iter = g_variant_iter_new (result); + while (g_variant_iter_loop (iter, "v", &var)) { + IBusSerializable *serializable = ibus_serializable_deserialize (var); + g_object_ref_sink (serializable); + engines = g_list_append (engines, serializable); + } + g_variant_iter_free (iter); + g_variant_unref (result); + + print_engines (engines); + + g_list_foreach (engines, (GFunc) g_object_unref, NULL); + g_list_free (engines); +} + +static void +test_get_global_engine (void) +{ + GVariant *result, *obj; + IBusEngineDesc *desc = NULL; + + if (!ibus_bus_set_global_engine (bus, "xkb:us::eng")) + return; + + result = ibus_bus_get_ibus_property (bus, "GlobalEngine"); + g_assert (result); + + obj = g_variant_get_variant (result); + g_assert (obj); + + desc = IBUS_ENGINE_DESC (ibus_serializable_deserialize (obj)); + g_assert (desc); + g_assert_cmpstr (ibus_engine_desc_get_name (desc), ==, "xkb:us::eng"); + + g_variant_unref (obj); + g_variant_unref (result); + + g_object_unref (desc); +} + +static void +test_set_preload_engines (void) +{ + const gchar *preload_engines[] = { "xkb:us::eng", "xkb:jp::jpn", NULL }; + GVariant *variant; + + variant = g_variant_new_strv (preload_engines, -1); + ibus_bus_set_ibus_property (bus, "PreloadEngines", variant); +} + +static void +finish_get_address_async (GObject *source_object, + GAsyncResult *res, + gpointer user_data) +{ + GError *error = NULL; + GVariant *result; + + result = ibus_bus_get_ibus_property_async_finish (bus, res, &error); + g_variant_get_string (result, NULL); + g_variant_unref (result); + g_debug ("finish_get_address_async: OK"); + call_next_async_function (); +} + +static void +start_get_address_async (void) +{ + ibus_bus_get_ibus_property_async ( + bus, + "Address", + -1, /* timeout */ + NULL, /* cancellable */ + finish_get_address_async, + NULL); /* user_data */ +} + +static void +finish_get_current_input_context_async (GObject *source_object, + GAsyncResult *res, + gpointer user_data) +{ + GError *error = NULL; + GVariant *result; + + result = ibus_bus_get_ibus_property_async_finish (bus, res, &error); + g_variant_get_string (result, NULL); + g_variant_unref (result); + g_debug ("finish_get_current_input_context_async: OK"); + call_next_async_function (); +} + +static void +start_get_current_input_context_async (void) +{ + ibus_bus_get_ibus_property_async ( + bus, + "CurrentInputContext", + -1, /* timeout */ + NULL, /* cancellable */ + finish_get_current_input_context_async, + NULL); /* user_data */ +} + +static void +finish_get_engines_async (GObject *source_object, + GAsyncResult *res, + gpointer user_data) +{ + GError *error = NULL; + GVariant *result, *var; + GVariantIter *iter; + GList *engines = NULL; + + result = ibus_bus_get_ibus_property_async_finish (bus, res, &error); + iter = g_variant_iter_new (result); + while (g_variant_iter_loop (iter, "v", &var)) { + IBusSerializable *serializable = ibus_serializable_deserialize (var); + g_object_ref_sink (serializable); + engines = g_list_append (engines, serializable); + } + g_variant_iter_free (iter); + g_variant_unref (result); + + print_engines (engines); + + g_list_foreach (engines, (GFunc) g_object_unref, NULL); + g_list_free (engines); + + g_debug ("finish_get_engines_async: OK"); + call_next_async_function (); +} + +static void +start_get_engines_async (void) +{ + ibus_bus_get_ibus_property_async ( + bus, + "Engines", + -1, /* timeout */ + NULL, /* cancellable */ + finish_get_engines_async, + NULL); /* user_data */ +} + +static void +finish_get_prop_global_engine_async (GObject *source_object, + GAsyncResult *res, + gpointer user_data) +{ + GError *error = NULL; + GVariant *result, *obj; + IBusEngineDesc *desc = NULL; + + result = ibus_bus_get_ibus_property_async_finish (bus, res, &error); + obj = g_variant_get_variant (result); + desc = IBUS_ENGINE_DESC (ibus_serializable_deserialize (obj)); + g_variant_unref (obj); + g_variant_unref (result); + + if (desc) + g_object_unref (desc); + + g_debug ("finish_get_prop_global_engine_async: OK"); + call_next_async_function (); +} + +static void +start_get_prop_global_engine_async (void) +{ + ibus_bus_get_ibus_property_async ( + bus, + "GlobalEngine", + -1, /* timeout */ + NULL, /* cancellable */ + finish_get_prop_global_engine_async, + NULL); /* user_data */ +} + +static void +finish_set_preload_engines_async (GObject *source_object, + GAsyncResult *res, + gpointer user_data) +{ + GError *error = NULL; + + ibus_bus_set_ibus_property_async_finish (bus, res, &error); + g_debug ("finish_set_preload_engines_async: OK"); + call_next_async_function (); +} + +static void +start_set_preload_engines_async (void) +{ + const gchar *preload_engines[] = { "xkb:us::eng", "xkb:jp::jpn", NULL }; + GVariant *variant; + + variant = g_variant_new_strv (preload_engines, -1); + ibus_bus_set_ibus_property_async ( + bus, + "PreloadEngines", + variant, + -1, /* timeout */ + NULL, /* cancellable */ + finish_set_preload_engines_async, + NULL); /* user_data */ +} + static void finish_exit_async (GObject *source_object, GAsyncResult *res, @@ -515,6 +820,14 @@ finish_exit_async (GObject *source_object, static void start_exit_async (void) { + /* When `./runtest ibus-bus` runs, ibus-daemon sometimes failed to + * restart because closing a file descriptor was failed in + * bus/server.c:_restart_server() with a following error: + * "inotify read(): Bad file descriptor" + * Now g_usleep() is added here to write down the buffer and not to + * fail to restart ibus-daemon. + */ + g_usleep (G_USEC_PER_SEC); ibus_bus_exit_async (bus, TRUE, /* restart */ -1, /* timeout */ @@ -526,6 +839,9 @@ start_exit_async (void) static gboolean test_async_apis_finish (gpointer user_data) { + /* INFO: g_warning() causes SEGV with runtest script */ + if (ibus_get_address () == NULL) + g_warning ("ibus-daemon does not restart yet from start_exit_async()."); ibus_quit (); return FALSE; } @@ -539,6 +855,7 @@ test_get_engines_by_names (void) "xkb:ca:eng:eng", "xkb:fr::fra", "xkb:jp::jpn", + "invalid_engine_name", NULL, }; @@ -553,10 +870,13 @@ test_get_engines_by_names (void) g_assert_cmpstr (names[i], ==, ibus_engine_desc_get_name (*p)); i++; g_object_unref (*p); - // The ref should be zero, *p is released. - g_assert (!IBUS_IS_ENGINE_DESC (*p)); } + + // The last engine does not exist. + g_assert_cmpint (i, ==, G_N_ELEMENTS(names) - 2); + g_free (engines); + engines = NULL; } @@ -587,35 +907,78 @@ call_next_async_function (void) start_is_global_engine_enabled_async, start_set_global_engine_async, start_get_global_engine_async, + start_preload_engines_async, + start_get_address_async, + start_get_current_input_context_async, + start_get_engines_async, + start_get_prop_global_engine_async, + start_set_preload_engines_async, start_exit_async, }; static guint index = 0; - // Use g_timeout_add to make sure test_async_apis finishes even if async_functions is empty. + /* Use g_timeout_add to make sure test_async_apis finishes even if + * async_functions is empty. + */ if (index >= G_N_ELEMENTS (async_functions)) g_timeout_add (1, test_async_apis_finish, NULL); else (*async_functions[index++])(); } +static void +_bus_connected_cb (IBusBus *bus, + gpointer user_data) +{ + g_assert (ibus_bus_is_connected (bus)); + ibus_quit (); +} + +static void +test_bus_new_async (void) +{ + g_object_unref (bus); + bus = ibus_bus_new_async (); + g_signal_connect (bus, "connected", G_CALLBACK (_bus_connected_cb), NULL); + ibus_main (); +} + gint main (gint argc, gchar **argv) { gint result; - g_type_init (); - g_test_init (&argc, &argv, NULL); ibus_init (); + g_test_init (&argc, &argv, NULL); bus = ibus_bus_new (); g_object_unref (bus); bus = ibus_bus_new (); // crosbug.com/17293 + if (!ibus_bus_is_connected (bus)) { + g_warning ("Not connected to ibus-daemon"); + g_object_unref (bus); + return -1; + } + g_test_add_func ("/ibus/list-engines", test_list_engines); g_test_add_func ("/ibus/list-active-engines", test_list_active_engines); g_test_add_func ("/ibus/create-input-context-async", test_create_input_context_async); g_test_add_func ("/ibus/get-engines-by-names", test_get_engines_by_names); + g_test_add_func ("/ibus/get-address", test_get_address); + g_test_add_func ("/ibus/get-current-input-context", + test_get_current_input_context); + g_test_add_func ("/ibus/get-engines", test_get_engines); + g_test_add_func ("/ibus/get-global-engine", test_get_global_engine); + g_test_add_func ("/ibus/set-preload-engines", test_set_preload_engines); g_test_add_func ("/ibus/async-apis", test_async_apis); + g_test_add_func ("/ibus/bus-new-async", test_bus_new_async); + g_test_add_func ("/ibus/bus-new-async/list-engines", test_list_engines); + g_test_add_func ("/ibus/bus-new-async/list-active-engines", test_list_active_engines); + g_test_add_func ("/ibus/bus-new-async/create-input-context-async", + test_create_input_context_async); + g_test_add_func ("/ibus/bus-new-async/get-engines-by-names", test_get_engines_by_names); + g_test_add_func ("/ibus/bus-new-async/async-apis", test_async_apis); result = g_test_run (); g_object_unref (bus); diff --git a/src/tests/ibus-compose-locales.in b/src/tests/ibus-compose-locales.in new file mode 100755 index 000000000..b36165fea --- /dev/null +++ b/src/tests/ibus-compose-locales.in @@ -0,0 +1,32 @@ +#!/bin/sh + +SRCDIR=@SRCDIR@ +BUILDDIR=`dirname $0` + + +export IBUS_COMPOSE_CACHE_DIR=$PWD + +retval=0 +# Deleted for var in `cat *.env` because IFS=$'\n' is not supported in POSIX sh +while read var +do + IS_COMMENT=`echo "$var" | grep "^#"` + if [ "x$IS_COMMENT" != x ] ; then + continue + fi + # Use $* instead of $@ not to mix strings and integers + echo "# Starting $var $BUILDDIR/ibus-compose $SRCDIR $*" + # Need to enclose $@ with double quotes not to split the array. + env $var $BUILDDIR/ibus-compose $SRCDIR "$@" + retval=`expr $retval + $?` + echo "# Finished $var $BUILDDIR/ibus-compose $SRCDIR $* with $retval" + + CACHE_FILES=`ls *.cache` + if [ x"$CACHE_FILES" != x ] ; then + echo "Clean $CACHE_FILES" + rm $CACHE_FILES + fi +done << EOF_ENVS +`cat $SRCDIR/ibus-compose.env` +EOF_ENVS +exit $retval diff --git a/src/tests/ibus-compose.c b/src/tests/ibus-compose.c new file mode 100644 index 000000000..0be01d27a --- /dev/null +++ b/src/tests/ibus-compose.c @@ -0,0 +1,382 @@ +#include +#include "ibus.h" +#include "ibuscomposetable.h" +#include "ibusenginesimpleprivate.h" + +#define GREEN "\033[0;32m" +#define RED "\033[0;31m" +#define NC "\033[0m" +#define X11_DATADIR X11_DATA_PREFIX "/share/X11/locale" + +IBusBus *m_bus; +gchar *m_compose_file; +IBusComposeTableEx *m_compose_table; +IBusEngine *m_engine; +gchar *m_srcdir; + +static gboolean window_focus_in_event_cb (GtkWidget *entry, + GdkEventFocus *event, + gpointer data); + + +static gchar * +get_compose_path () +{ + const gchar * const *langs; + const gchar * const *l; + gchar *compose_path = NULL; + +#if GLIB_CHECK_VERSION (2, 58, 0) + langs = g_get_language_names_with_category ("LC_CTYPE"); +#else + langs = g_get_language_names (); +#endif + for (l = langs; *l; l++) { + if (g_str_has_prefix (*l, "en_US")) + break; + if (g_strcmp0 (*l, "C") == 0) + break; + compose_path = g_build_filename (X11_DATADIR, + *l, + "Compose", + NULL); + if (g_file_test (compose_path, G_FILE_TEST_EXISTS)) + break; + g_free (compose_path); + compose_path = NULL; + } + + return compose_path; +} + + +static IBusEngine * +create_engine_cb (IBusFactory *factory, + const gchar *name, + gpointer data) +{ + static int i = 1; + gchar *engine_path = + g_strdup_printf ("/org/freedesktop/IBus/engine/simpletest/%d", + i++); + gchar *compose_path; + + m_engine = ibus_engine_new_with_type (IBUS_TYPE_ENGINE_SIMPLE, + name, + engine_path, + ibus_bus_get_connection (m_bus)); + g_free (engine_path); + if (m_compose_file) + compose_path = g_build_filename (m_srcdir, m_compose_file, NULL); + else + compose_path = get_compose_path (); + if (compose_path != NULL) { + ibus_engine_simple_add_compose_file (IBUS_ENGINE_SIMPLE (m_engine), + compose_path); + m_compose_table = ibus_compose_table_load_cache (compose_path); + if (m_compose_table == NULL) + g_warning ("Your locale uses en_US compose table."); + } + g_free (compose_path); + return m_engine; +} + +static gboolean +register_ibus_engine () +{ + IBusFactory *factory; + IBusComponent *component; + IBusEngineDesc *desc; + + m_bus = ibus_bus_new (); + if (!ibus_bus_is_connected (m_bus)) { + g_critical ("ibus-daemon is not running."); + return FALSE; + } + factory = ibus_factory_new (ibus_bus_get_connection (m_bus)); + g_signal_connect (factory, "create-engine", + G_CALLBACK (create_engine_cb), NULL); + + component = ibus_component_new ( + "org.freedesktop.IBus.SimpleTest", + "Simple Engine Test", + "0.0.1", + "GPL", + "Takao Fujiwara ", + "https://github.com/ibus/ibus/wiki", + "", + "ibus"); + desc = ibus_engine_desc_new ( + "xkbtest:us::eng", + "XKB Test", + "XKB Test", + "en", + "GPL", + "Takao Fujiwara ", + "ibus-engine", + "us"); + ibus_component_add_engine (component, desc); + ibus_bus_register_component (m_bus, component); + + return TRUE; +} + +static gboolean +finit (gpointer data) +{ + g_test_incomplete ("time out"); + gtk_main_quit (); + return FALSE; +} + +static void +set_engine_cb (GObject *object, GAsyncResult *res, gpointer data) +{ + IBusBus *bus = IBUS_BUS (object); + GtkWidget *entry = GTK_WIDGET (data); + GError *error = NULL; + int i, j; + int index_stride; + IBusComposeTablePrivate *priv; + + if (!ibus_bus_set_global_engine_async_finish (bus, res, &error)) { + gchar *msg = g_strdup_printf ("set engine failed: %s", error->message); + g_test_incomplete (msg); + g_free (msg); + g_error_free (error); + return; + } + + if (m_compose_table == NULL) { + gtk_main_quit (); + return; + } + + index_stride = m_compose_table->max_seq_len + 2; + for (i = 0; + i < (m_compose_table->n_seqs * index_stride); + i += index_stride) { + for (j = i; j < i + (index_stride - 2); j++) { + guint keyval = m_compose_table->data[j]; + guint keycode = 0; + guint modifiers = 0; + gboolean retval; + + if (keyval == 0) + break; + g_signal_emit_by_name (m_engine, "process-key-event", + keyval, keycode, modifiers, &retval); + modifiers |= IBUS_RELEASE_MASK; + g_signal_emit_by_name (m_engine, "process-key-event", + keyval, keycode, modifiers, &retval); + } + } + priv = m_compose_table->priv; + if (priv) { + for (i = 0; + i < (priv->first_n_seqs * index_stride); + i += index_stride) { + for (j = i; j < i + (index_stride - 2); j++) { + guint keyval = priv->data_first[j]; + guint keycode = 0; + guint modifiers = 0; + gboolean retval; + + if (keyval == 0) + break; + g_signal_emit_by_name (m_engine, "process-key-event", + keyval, keycode, modifiers, &retval); + modifiers |= IBUS_RELEASE_MASK; + g_signal_emit_by_name (m_engine, "process-key-event", + keyval, keycode, modifiers, &retval); + } + } + } + + g_signal_handlers_disconnect_by_func (entry, + G_CALLBACK (window_focus_in_event_cb), + NULL); + g_timeout_add_seconds (10, finit, NULL); +} + +static gboolean +window_focus_in_event_cb (GtkWidget *entry, GdkEventFocus *event, gpointer data) +{ + g_assert (m_bus != NULL); + ibus_bus_set_global_engine_async (m_bus, + "xkbtest:us::eng", + -1, + NULL, + set_engine_cb, + entry); + return FALSE; +} + +static void +window_inserted_text_cb (GtkEntryBuffer *buffer, + guint position, + const gchar *chars, + guint nchars, + gpointer data) +{ +/* https://gitlab.gnome.org/GNOME/gtk/commit/9981f46e0b + * The latest GTK does not emit "inserted-text" when the text is "". + */ +#if !GTK_CHECK_VERSION (3, 22, 16) + static int n_loop = 0; +#endif + static guint stride = 0; + static gboolean enable_32bit = FALSE; + guint i; + int seq; + gunichar code = g_utf8_get_char (chars); + const gchar *test; + GtkEntry *entry = GTK_ENTRY (data); + IBusComposeTablePrivate *priv; + + g_assert (m_compose_table != NULL); + + priv = m_compose_table->priv; + +#if !GTK_CHECK_VERSION (3, 22, 16) + if (n_loop % 2 == 1) { + n_loop = 0; + return; + } +#endif + i = stride + (m_compose_table->max_seq_len + 2) - 2; + seq = (i + 2) / (m_compose_table->max_seq_len + 2); + if (!enable_32bit) { + if (m_compose_table->data[i] == code) { + test = GREEN "PASS" NC; + } else { + test = RED "FAIL" NC; + g_test_fail (); + } + g_print ("%05d/%05d %s expected: %04X typed: %04X\n", + seq, + m_compose_table->n_seqs, + test, + m_compose_table->data[i], + code); + } else { + const gchar *p = chars; + guint num = priv->data_first[i]; + guint index = priv->data_first[i + 1]; + guint j = 0; + gboolean valid_output = TRUE; + for (j = 0; j < num; j++) { + if (priv->data_second[index + j] != code) { + valid_output = FALSE; + break; + } + p = g_utf8_next_char (p); + code = g_utf8_get_char (p); + } + if (valid_output) { + test = GREEN "PASS" NC; + } else { + test = RED "FAIL" NC; + g_test_fail (); + } + g_print ("%05d/%05ld %s expected: %04X[%d] typed: %04X\n", + seq, + priv->first_n_seqs, + test, + valid_output ? priv->data_second[index] + : priv->data_second[index + j], + valid_output ? index + num : index + j, + valid_output ? g_utf8_get_char (chars) : code); + } + + stride += m_compose_table->max_seq_len + 2; + + if (!enable_32bit && seq == m_compose_table->n_seqs) { + if (priv) { + enable_32bit = TRUE; + stride = 0; + } else { + gtk_main_quit (); + return; + } + } + if (enable_32bit && seq == priv->first_n_seqs) { + gtk_main_quit (); + return; + } + +#if !GTK_CHECK_VERSION (3, 22, 16) + n_loop++; +#endif + gtk_entry_set_text (entry, ""); +} + +static void +create_window () +{ + GtkWidget *window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + GtkWidget *entry = gtk_entry_new (); + GtkEntryBuffer *buffer; + + g_signal_connect (window, "destroy", + G_CALLBACK (gtk_main_quit), NULL); + g_signal_connect (entry, "focus-in-event", + G_CALLBACK (window_focus_in_event_cb), NULL); + buffer = gtk_entry_get_buffer (GTK_ENTRY (entry)); + g_signal_connect (buffer, "inserted-text", + G_CALLBACK (window_inserted_text_cb), entry); + gtk_container_add (GTK_CONTAINER (window), entry); + gtk_widget_show_all (window); +} + +static void +test_compose (void) +{ + GLogLevelFlags flags; + if (!register_ibus_engine ()) { + g_test_fail (); + return; + } + + create_window (); + /* FIXME: + * IBusIMContext opens GtkIMContextSimple as the slave and + * GtkIMContextSimple opens the compose table on el_GR.UTF-8, and the + * multiple outputs in el_GR's compose causes a warning in gtkcomposetable + * and the warning always causes a fatal in GTest: + " "GTK+ supports to output one char only: " + */ + flags = g_log_set_always_fatal (G_LOG_LEVEL_CRITICAL); + gtk_main (); + g_log_set_always_fatal (flags); +} + +int +main (int argc, char *argv[]) +{ + const gchar *test_name; + gchar *test_path; + + ibus_init (); + /* Avoid a warning of "AT-SPI: Could not obtain desktop path or name" + * with gtk_main(). + */ + if (!g_setenv ("NO_AT_BRIDGE", "1", TRUE)) + g_message ("Failed setenv NO_AT_BRIDGE\n"); + g_test_init (&argc, &argv, NULL); + gtk_init (&argc, &argv); + + m_srcdir = (argc > 1 && strlen (argv[1]) < FILENAME_MAX) + ? g_strdup (argv[1]) : g_strdup ("."); + m_compose_file = g_strdup (g_getenv ("COMPOSE_FILE")); +#if GLIB_CHECK_VERSION (2, 58, 0) + test_name = g_get_language_names_with_category ("LC_CTYPE")[0]; +#else + test_name = g_getenv ("LANG"); +#endif + test_path = g_build_filename ("/ibus-compose", test_name, NULL); + g_test_add_func (test_path, test_compose); + g_free (test_path); + + return g_test_run (); +} diff --git a/src/tests/ibus-compose.emoji b/src/tests/ibus-compose.emoji new file mode 100644 index 000000000..7fbf82cfb --- /dev/null +++ b/src/tests/ibus-compose.emoji @@ -0,0 +1,11 @@ + : "♌" U264C # LEO + : "♍" U264D # VIRGO + : "∫" + : "∬" + : "🗼" +

: "(゜∀゜)" + : "*・゜゜・*:.。..。.:*・゜(n‘Д‘)η゜・*:.。. .。.:*・ ゜゜・* !!!!!" + : "∭" + : "∮" + : "∯" + : "∰" diff --git a/src/tests/ibus-compose.env b/src/tests/ibus-compose.env new file mode 100644 index 000000000..a9e289e4f --- /dev/null +++ b/src/tests/ibus-compose.env @@ -0,0 +1,4 @@ +LANG=el_GR.UTF-8 +LANG=fi_FI.UTF-8 +LANG=pt_BR.UTF-8 +LANG=en_US.UTF-8 COMPOSE_FILE=ibus-compose.emoji diff --git a/src/tests/ibus-config.c b/src/tests/ibus-config.c index 8967adba2..0d9812a31 100644 --- a/src/tests/ibus-config.c +++ b/src/tests/ibus-config.c @@ -7,16 +7,24 @@ static IBusBus *bus = NULL; static int create_config_count = 0; static void -finish_create_config_async_sucess (GObject *source_object, - GAsyncResult *res, - gpointer user_data) +finish_create_config_async_success (GObject *source_object, + GAsyncResult *res, + gpointer user_data) { GMainLoop *loop = (GMainLoop *)user_data; GError *error = NULL; IBusConfig *config = ibus_config_new_async_finish (res, &error); + if (error) { + g_message ("Failed to generate IBusConfig: %s", error->message); + g_error_free (error); + } g_assert (IBUS_IS_CONFIG (config)); + + /* Since we reuse single D-Bus connection, we need to remove the + default match rule for the next ibus_config_new() call. */ + ibus_config_unwatch (config, NULL, NULL); g_object_unref (config); if (--create_config_count == 0) g_main_loop_quit (loop); @@ -50,7 +58,7 @@ test_create_config_async (void) loop = g_main_loop_new (NULL, TRUE); ibus_config_new_async (ibus_bus_get_connection (bus), NULL, - finish_create_config_async_sucess, + finish_create_config_async_success, loop); g_main_loop_run (loop); g_main_loop_unref (loop); @@ -110,7 +118,7 @@ test_config_set_get (void) value_bits |= (1 << 1); } else { - g_warning ("unknow value name=%s", name); + g_warning ("Unknown value name=%s", name); } ibus_config_unset (config, "test", name); g_variant_unref (value); @@ -123,6 +131,9 @@ test_config_set_get (void) g_assert_cmpint (g_variant_n_children (var), ==, 0); g_variant_unref (var); + /* Since we reuse single D-Bus connection, we need to remove the + default match rule for the next ibus_config_new() call. */ + ibus_config_unwatch (config, NULL, NULL); g_object_unref (config); } @@ -131,9 +142,8 @@ main (gint argc, gchar **argv) { gint result; - g_type_init (); - g_test_init (&argc, &argv, NULL); ibus_init (); + g_test_init (&argc, &argv, NULL); bus = ibus_bus_new (); g_test_add_func ("/ibus/create-config-async", test_create_config_async); diff --git a/src/tests/ibus-configservice.c b/src/tests/ibus-configservice.c index 38d500fde..718e13a7e 100644 --- a/src/tests/ibus-configservice.c +++ b/src/tests/ibus-configservice.c @@ -33,8 +33,8 @@ gint main (gint argc, gchar **argv) { - g_mem_set_vtable (glib_mem_profiler_table); - g_type_init (); + ibus_init (); + g_test_init (&argc, &argv, NULL); g_test_add_func ("/ibus/configservice", test_configservice); diff --git a/src/tests/ibus-desktop-testing-autostart b/src/tests/ibus-desktop-testing-autostart new file mode 100755 index 000000000..1e1eb1803 --- /dev/null +++ b/src/tests/ibus-desktop-testing-autostart @@ -0,0 +1,57 @@ +#!/bin/sh +# -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- +# vim:set noet ts=4: +# +# ibus - The Input Bus +# +# Copyright (c) 2021 Takao Fujiwara +# Copyright (c) 2021 Red Hat, Inc. +# +# 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 2 of the License, or +# (at your option) any later version. +# +# 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, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +TEST_LOG= +COMMANDS=' +id +echo $DISPLAY +pwd +pstree -asp $$ +gsettings list-recursively org.gnome.shell +rpm -q gnome-shell-extension-no-overview gnome-shell gnome-session +ps -ef | grep ibus | grep -v grep +ibus address +' + +if [ $# -gt 0 ] ; then + TEST_LOG=$1 +fi + +run_test() +{ +while read cmd ; do + if [ x"$cmd" = x ] ; then + continue + fi + echo "# $cmd" + eval "$cmd" +done << EOF_COMMANDS +`echo "$COMMANDS"` +EOF_COMMANDS +} + +if [ x"$TEST_LOG" = x ] ; then + run_test +else + run_test 2>>$TEST_LOG 1>>$TEST_LOG +fi diff --git a/src/tests/ibus-desktop-testing-runner.in b/src/tests/ibus-desktop-testing-runner.in new file mode 100755 index 000000000..6b2083459 --- /dev/null +++ b/src/tests/ibus-desktop-testing-runner.in @@ -0,0 +1,504 @@ +#!/bin/sh +# -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- +# vim:set noet ts=4: +# +# ibus - The Input Bus +# +# Copyright (c) 2018-2021 Takao Fujiwara +# Copyright (c) 2018 Red Hat, Inc. +# +# 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 2 of the License, or +# (at your option) any later version. +# +# 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, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +# This test runs /usr/bin/ibus-daemon after install ibus +# +# # init 3 +# Login as root +# # /root/ibus/tests/test-console.sh --tests ibus-compose \ +# --builddir /root/ibus/src/tests --srcdir /root/ibus/src/tests + +# POSIX sh has no 'echo -e' +: ${ECHO:='/usr/bin/echo'} +# POSIX sh has $UID +# DASH saves the graves in '``' as characters not to be extracted +: ${UID:=`id -u`} + + +PROGNAME=`basename $0` +VERSION=0.3 +DISPLAY=:99.0 +BUILDDIR="." +SRCDIR="." +TEST_LOG="test-suite.log" +TEST_LOG_STDOUT=0 +RESULT_LOG="" +SCREEN_LOG="" +HAVE_GRAPHICS=1 +DESKTOP_COMMAND="dbus-launch --exit-with-session gnome-session" +PID_XORG=0 +PID_GNOME_SESSION=0 +TESTING_RUNNER="default" +TESTS="" +TIMEOUT=300 +GREEN='\033[0;32m' +RED='\033[0;31m' +NC='\033[0m' + + +print_log() +{ + if [ x"$RESULT_LOG" != x ] ; then + # avoid 'echo -e' before call 'sed'. + if [ x"$1" = x'-e' ] ; then + shift + fi + NO_ESCAPE=`echo "$@" | sed -e 's/\\\033\\[0;3.m//g' -e 's/\\\033\\[0m//g'` + $ECHO $NO_ESCAPE >> $RESULT_LOG + else + $ECHO "$@" + fi +} + + +usage() +{ + $ECHO -e \ +"This test runs /usr/bin/ibus-daemon after install ibus\n" \ +"$PROGNAME [OPTIONS…]\n" \ +"\n" \ +"OPTIONS:\n" \ +"-h, --help This help\n" \ +"-v, --version Show version\n" \ +"-b, --builddir=BUILDDIR Set the BUILDDIR\n" \ +"-s, --srcdir=SOURCEDIR Set the SOURCEDIR\n" \ +"-c, --no-graphics Use Xvfb instead of Xorg\n" \ +"-d, --desktop=DESKTOP Run DESTKTOP. The default is gnome-session.\n" \ +" Suffix '-with-dbus' can run DESKTOP with dbus session." \ +" E.g. --desktop=mutter-with-dbus" \ +"-t, --tests=\"TESTS...\" Run TESTS programs which is separated by space\n" \ +"-r, --runner=RUNNER Run TESTS programs with a test RUNNER.\n" \ +" RUNNDER = gnome or default.\n" \ +" default is an embedded runner.\n" \ +"-T, --timeout=TIMEOUT Set timeout (default TIMEOUT is 300 sec).\n" \ +"-o, --output=OUTPUT_FILE OUtput the log to OUTPUT_FILE\n" \ +"-O, --result=RESULT_FILE OUtput the result to RESULT_FILE\n" \ +"-S, --screendump=DUMP_FILE OUtput the screen to DUMP_FILE ('STDOUT' can be stdout)\n" \ +"" +} + + +parse_args() +{ + # This is GNU getopt. "sudo port getopt" in BSD? + ARGS=`getopt -o hvb:s:cd:t:r:T:o:O:S: --long \ + help,version,builddir:,srcdir:,no-graphics,desktop:,tests:,runner:,timeout:,output:,result:,screendump:\ + -- "$@"`; + eval set -- "$ARGS" + while [ 1 ] ; do + case "$1" in + -h | --help ) usage; exit 0;; + -v | --version ) $ECHO -e "$VERSION"; exit 0;; + -b | --builddir ) BUILDDIR="$2"; shift 2;; + -s | --srcdir ) SRCDIR="$2"; shift 2;; + -c | --no-graphics ) HAVE_GRAPHICS=0; shift;; + -d | --desktop ) DESKTOP_COMMAND="$2"; shift 2;; + -t | --tests ) TESTS="$2"; shift 2;; + -r | --runner ) TESTING_RUNNER="$2"; shift 2;; + -T | --timeout ) TIMEOUT="$2"; shift 2;; + -o | --output ) TEST_LOG="$2"; shift 2;; + -O | --result ) RESULT_LOG="$2"; shift 2;; + -S | --screendump ) SCREEN_LOG="$2"; shift 2;; + -- ) shift; break;; + * ) usage; exit 1;; + esac + done + DL='$' + echo "$DESKTOP_COMMAND" | grep "\-with\-dbus$DL" > /dev/null + HAS_DBUS_SUFFIX=$? + if [ $HAS_DBUS_SUFFIX -eq 0 ] ; then + DESKTOP_COMMAND=`echo "$DESKTOP_COMMAND" | sed -e 's/-with-dbus$//'` + DESKTOP_COMMAND="dbus-launch --exit-with-session $DESKTOP_COMMAND" + fi +} + + +init_desktop() +{ + if [ "$RESULT_LOG" != "" ] ; then + if [ -f $RESULT_LOG ] ; then + rm $RESULT_LOG + fi + fi + echo "$TEST_LOG" | grep ':stdout' > /dev/null + HAS_STDOUT=$? + if [ $HAS_STDOUT -eq 0 ] ; then + TEST_LOG=`echo "$TEST_LOG" | sed -e 's|:stdout||'` + TEST_LOG_STDOUT=1 + fi + if [ "$TEST_LOG" = "" ] ; then + print_log -e "${RED}FAIL${NC}: ${RED}ERROR${NC}: a log file is required to get return value with 'read' command" + exit 255 + elif [ -f $TEST_LOG ] ; then + rm $TEST_LOG + fi + if [ x$FORCE_TEST != x ] ; then + RUN_ARGS="$RUN_ARGS --force" + fi + + if [ ! -f $HOME/.config/gnome-initial-setup-done ] ; then + IS_SYSTEM_ACCOUNT=false + if [ "$USER" = "root" ] ; then + IS_SYSTEM_ACCOUNT=true + fi + if test ! -f /var/lib/AccountsService/users/$USER ; then + mkdir -p /var/lib/AccountsService/users + cat >> /var/lib/AccountsService/users/$USER << _EOF +[User] +Language=ja_JP.UTF-8 +XSession=gnome +SystemAccount=$IS_SYSTEM_ACCOUNT +_EOF + fi + mkdir -p $HOME/.config + touch $HOME/.config/gnome-initial-setup-done + fi + + # Prevent from launching a XDG dialog + XDG_LOCALE_FILE="$HOME/.config/user-dirs.locale" + if [ -f $XDG_LOCALE_FILE ] ; then + XDG_LANG_ORIG=`cat $XDG_LOCALE_FILE` + XDG_LANG_NEW=`echo $LANG | sed -e 's/\(.*\)\..*/\1/'` + if [ "$XDG_LANG_ORIG" != "$XDG_LANG_NEW" ] ; then + echo "# Overriding XDG locale $XDG_LANG_ORIG with $XDG_LANG_NEW" + echo "$XDG_LANG_NEW" > $XDG_LOCALE_FILE + fi + fi + # `su` command does not run loginctl + export XDG_SESSION_TYPE='x11' + export XDG_SESSION_CLASS=user + # `su` command does not get focus in events without this variable. + # Need to restart sshd after set "PermitRootLogin yes" in sshd_config + if [ "x$XDG_RUNTIME_DIR" = x ] ; then + export XDG_RUNTIME_DIR="/run/user/$UID" + is_root_login=`grep "^PermitRootLogin" /etc/ssh/sshd_config | grep yes` + if [ "x$ANSIBLE" != x ] && [ "x$is_root_login" = x ] ; then + print_log -e "${RED}FAIL${NC}: No permission to get focus-in events in GtkWindow with ansible" + echo "su command does not configure necessary login info " \ + "with systemd and GtkWindow cannot receive focus-events " \ + "when ibus-desktop-testing-runner is executed by " \ + "ansible-playbook." >> $TEST_LOG + echo "Enabling root login via sshd, restarting sshd, set " \ + "XDG_RUNTIME_DIR can resolve the problem under " \ + "ansible-playbook." >> $TEST_LOG + exit 255 + fi + fi + # Do we need XDG_SESSION_ID and XDG_SEAT? + #export XDG_CONFIG_DIRS=/etc/xdg + #export XDG_SESSION_ID=10 + #export XDG_SESSION_DESKTOP=gnome + #export XDG_SEAT=seat0 +} + + +run_dbus_daemon() +{ + # Use dbus-launch --exit-with-session later instead of --sh-syntax + # GNOME uses a unix:abstract address and it effects gsettings set values + # in each test case. + # TODO: Should we comment out this line? + export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$UID/bus" +} + + +init_gnome() +{ + # gsettings set command needs dconf-service with the same $DISPLAY + pkill dconf-service + # G_MESSAGES_DEBUG=all or G_MESSAGES_DEBUG=GLib-GIO-DEBUG would append + # debug messages to gsettings output and could not get the result correctly. + backup_G_MESSAGES_DEBUG="$G_MESSAGES_DEBUG" + unset G_MESSAGES_DEBUG + # Disable Tour dialog to get focus + V=`gsettings get org.gnome.shell welcome-dialog-last-shown-version` + if [ x"$V" = x"''" ] ; then + gsettings set org.gnome.shell welcome-dialog-last-shown-version '100' + fi + # gnome-shell now starts overview mode by login. + # https://extensions.gnome.org/extension/4099/no-overview/ + NO_SYS_DIR=/usr/share/gnome-shell/extensions/no-overview@fthx + NO_USER_DIR=$HOME/.local/share/gnome-shell/extensions/no-overview@fthx + if [ ! -d $NO_SYS_DIR ] && [ ! -d $NO_USER_DIR ] ; then + mkdir -p "`dirname $NO_USER_DIR`" + cp -R "no-overview@fthx" "`dirname $NO_USER_DIR`" + fi + V=`gsettings get org.gnome.shell disable-user-extensions` + if [ x"$V" = x"true" ] ; then + gsettings set org.gnome.shell disable-user-extensions false + fi + V=`gsettings get org.gnome.shell enabled-extensions` + echo "$V" | grep "no-overview" > /dev/null + V2=$? + if [ $V2 -ne 0 ] ; then + V3=`echo "$V" | sed -e 's/@as //' -e 's/\[//' -e 's/\]//'` + if [ x"$V3" = x"''" ] || [ x"$V3" = x"" ]; then + V4="['no-overview@fthx']" + else + V4="[$V3, 'no-overview@fthx']" + fi + gsettings set org.gnome.shell enabled-extensions "$V4" + fi + if [ x"$backup_G_MESSAGES_DEBUG" != x ] ; then + export G_MESSAGES_DEBUG="$backup_G_MESSAGES_DEBUG" + fi +} + + +run_desktop() +{ + echo "$DESKTOP_COMMAND" | grep gnome-session > /dev/null + HAS_GNOME=$? + export DISPLAY=$DISPLAY + if test $HAVE_GRAPHICS -eq 1 ; then + /usr/libexec/Xorg.wrap -noreset +extension GLX +extension RANDR +extension RENDER -logfile ./xorg.log -config ./xorg.conf -configdir . $DISPLAY & + else + /usr/bin/Xvfb $DISPLAY -noreset +extension GLX +extension RANDR +extension RENDER -screen 0 1280x1024x24 & + fi + PID_XORG=$! + sleep 1 + # init_gnome need to be called with $DISPLAY before gnome-session is called + if [ $HAS_GNOME -eq 0 ] ; then + init_gnome + fi + echo "Running $DESKTOP_COMMAND with $USER in `tty`" + $DESKTOP_COMMAND & + PID_GNOME_SESSION=$! + sleep 30 + + # gnome-shell 42 checks if org.freedesktop.IBus.session.GNOME.service + # systemd file is available with org.freedesktop.systemd1.Manager.GetUnit + # D-Bus method, which is provided by IBus 1.5.26, and if the file + # is available, gnome-shell no longer launch ibus-daemon + # because gnome-shell assumes gnome-session would launch ibus-daemon + # with org.freedesktop.systemd1.Manager.StartUnit D-Bus method. + # But actually gnome-session failed to launch ibus-daemon + # because the IBus systemd file depends on gnome-session.target + # but this CI launches gnome-session directly. + # + # So ibus-dameon is now always called here after gnome-shell fails to + # launch ibus-daemon. + # It may be better this CI launches GDM autologin to run gnome-session + # with gnome-session.target systemd file. + # But `systemctl start gdm` terminates the parent script forcibly + # and the script cannot get the CI result. + ibus-daemon --daemonize --verbose + sleep 3 +} + + +count_case_result() +{ + retval=$1 + pass=$2 + fail=$3 + + if test $retval -eq 0 ; then + pass=`expr $pass + 1` + else + fail=`expr $fail + 1` + fi + echo $pass $fail +} + + +echo_case_result() +{ + retval=$1 + tst=$2 + subtst=${3:-''} + + if test $retval -eq 0 ; then + echo "PASS: $tst $subtst" >>$TEST_LOG + else + echo "FAIL: $tst $subtst" >>$TEST_LOG + fi +} + + +run_direct_test_cases() +{ + pass=0 + fail=0 + for tst in $TESTS; do + ENVS= + if test -f $SRCDIR/${tst}.env ; then + ENVS="`cat $SRCDIR/${tst}.env`" + fi + if test x"$ENVS" = x ; then + $BUILDDIR/$tst $SRCDIR 2>>$TEST_LOG 1>>$TEST_LOG + retval=$? + read pass fail << EOF_COUNT + `count_case_result $retval $pass $fail` +EOF_COUNT + echo_case_result $retval $tst + CACHE_FILES=`ls *.cache` + if [ x"$CACHE_FILES" != x ] ; then + echo "# Clean $CACHE_FILES" >>$TEST_LOG + rm $CACHE_FILES + fi + else + i=1 + # Deleted for var in "$ENVS" because IFS=$'\n' is not supported + # in POSIX sh + while read e ; do + first=`echo "$e" | grep '^#'` + if test x"$first" = x"#" ; then + continue + fi + echo "# Starting $e $BUILDDIR/$tst $SRCDIR" >>$TEST_LOG + env $e $BUILDDIR/$tst $SRCDIR 2>>$TEST_LOG 1>>$TEST_LOG + retval=$? + echo "# Finished $e $BUILDDIR/$tst $SRCDIR with $retval" >>$TEST_LOG + read pass fail << EOF_COUNT + `count_case_result $retval $pass $fail` +EOF_COUNT + echo_case_result $retval $tst $e + CACHE_FILES=`ls *.cache` + if [ x"$CACHE_FILES" != x ] ; then + echo "# Clean $CACHE_FILES" >>$TEST_LOG + rm $CACHE_FILES + fi + i=`expr $i + 1` + done << EOF_ENVS + `echo "$ENVS"` +EOF_ENVS + fi + done + echo $pass $fail +} + + +run_gnome_desktop_testing_runner() +{ + pass=0 + fail=0 + if [ x"$TESTS" = x ] ; then + TESTS='ibus' + fi + for tst in $TESTS; do + tst_dir="@INSTALLEDDIR@/$tst" + if [ ! -d "$tst_dir" ] ; then + print_log -e "${RED}FAIL${NC}: Not found %tst_dir" + fail=1 + continue + fi + gnome-desktop-testing-runner --timeout=$TIMEOUT $tst \ + 2>>$TEST_LOG 1>>$TEST_LOG + retval=$? + read pass fail << EOF + `count_case_result $retval $pass $fail` +EOF + done + child_pass=`grep '^PASS:' $TEST_LOG | wc -l` + child_fail=`grep '^FAIL:' $TEST_LOG | wc -l` + if [ $child_pass -ne 0 ] || [ $child_fail -ne 0 ] ; then + pass=$child_pass + if [ $child_fail -ne 0 ] ; then + fail=`expr $child_fail / 2` + else + fail=0 + fi + fi + echo $pass $fail +} + + +run_test_suite() +{ + pass=0 + fail=0 + export GTK_IM_MODULE=ibus + export IBUS_COMPOSE_CACHE_DIR=$PWD + if [ x"$TESTING_RUNNER" = x ] ; then + TESTING_RUNNER="default" + fi + case $TESTING_RUNNER in + default) + # Get only the last value with do-while. + read pass fail << EOF_RUNNER + `run_direct_test_cases` +EOF_RUNNER + ;; + gnome) + read pass fail << EOF_RUNNER + `run_gnome_desktop_testing_runner` +EOF_RUNNER + ;; + esac + echo "" + # Fedora CI assumes the test is failed even if $fail is 0. + if [ $pass -ne 0 ] ; then + print_log -e "${GREEN}PASS${NC}: $pass" + fi + if [ $fail -ne 0 ] ; then + print_log -e "${RED}FAIL${NC}: $fail" + fi + echo "" + if [ $TEST_LOG_STDOUT -eq 1 ] ; then + cat $TEST_LOG + else + echo "# See $TEST_LOG" + fi +} + + +finit() +{ + echo "# Killing left gnome-session and Xorg" + kill $PID_GNOME_SESSION $PID_XORG + ibus exit + SUSER=`echo "$USER" | cut -c 1-7` + LEFT_CALENDAR=`ps -ef | grep gnome-shell-calendar-server | grep $SUSER | grep -v grep` + if [ x"$LEFT_CALENDAR" != x ] ; then + echo "# Killing left gnome-shell-calendar-server" + echo "$LEFT_CALENDAR" + echo "$LEFT_CALENDAR" | awk '{print $2}' | xargs kill + fi + + echo "# Finished $PROGNAME testing" +} + + +main() +{ + parse_args "$@" + init_desktop + run_dbus_daemon 2>>$TEST_LOG 1>>$TEST_LOG + run_desktop 2>>$TEST_LOG 1>>$TEST_LOG + if [ x"$SCREEN_LOG" != x ] ; then + SCREEN_PNG="`date '+%Y%m%d%H%M%S'`.png" + gnome-screenshot --file=$SCREEN_PNG + if [ x"$SCREEN_LOG" = xSTDOUT ] ; then + base64 $SCREEN_PNG + else + base64 $SCREEN_PNG > $SCREEN_LOG + fi + fi + run_test_suite + finit +} + + +# Need to enclose $@ with double quotes not to split the array. +main "$@" diff --git a/src/tests/ibus-desktop-testing.desktop.in b/src/tests/ibus-desktop-testing.desktop.in new file mode 100644 index 000000000..1b8153456 --- /dev/null +++ b/src/tests/ibus-desktop-testing.desktop.in @@ -0,0 +1,11 @@ +[Desktop Entry] +Name=IBus Desktop Testing Runner +GenericName=Input Method Desktop Testing Runner +Comment=Test plugin for IBus Desktop Testing +Exec=@libexecdir@/ibus-desktop-testing-autostart /var/tmp/ibus-ci-autostart.log +Terminal=false +Type=Application +Encoding=UTF-8 +Icon=ibus +Categories=System +Keywords=im; diff --git a/src/tests/ibus-engine-switch.c b/src/tests/ibus-engine-switch.c new file mode 100644 index 000000000..a1eeba2a3 --- /dev/null +++ b/src/tests/ibus-engine-switch.c @@ -0,0 +1,236 @@ +/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ + +#include +#include "ibus.h" + +static IBusBus *bus; + +#define BEFORE_ENGINE "xkb:us::eng" +#define AFTER_ENGINE "xkb:jp::jpn" + +static const gchar *engine_names[] = { + BEFORE_ENGINE, + AFTER_ENGINE +}; + +static const gchar *engine_names2[] = { + AFTER_ENGINE, + BEFORE_ENGINE +}; + +static void +change_global_engine (gboolean reverse) +{ + gint i; + + for (i = 0; i < G_N_ELEMENTS (engine_names); i++) { + const gchar *engine_name = engine_names[i]; + if (reverse) + engine_name = engine_names2[i]; + ibus_bus_set_global_engine (bus, engine_name); + IBusEngineDesc *engine_desc = ibus_bus_get_global_engine (bus); + g_assert_cmpstr (ibus_engine_desc_get_name (engine_desc), + ==, + engine_name); + g_object_unref (G_OBJECT (engine_desc)); + } +} + +static void +change_context_engine (IBusInputContext *context) +{ + gint i; + + for (i = 0; i < G_N_ELEMENTS (engine_names); i++) { + ibus_input_context_set_engine (context, engine_names[i]); + IBusEngineDesc *engine_desc = ibus_input_context_get_engine (context); + g_assert_cmpstr (ibus_engine_desc_get_name (engine_desc), + ==, + engine_names[i]); + } +} + +typedef struct { + gint count; + guint timeout_id; + guint idle_id; + gboolean reverse; +} GlobalEngineChangedData; + +static void +global_engine_changed_cb (IBusBus *bus, gchar *name, gpointer user_data) +{ + GlobalEngineChangedData *data = (GlobalEngineChangedData *) user_data; + if (data->count++ == 0) + ibus_quit (); +} + +static gboolean +timeout_cb (gpointer user_data) +{ + GlobalEngineChangedData *data = (GlobalEngineChangedData *) user_data; + if (data->count == 0) + ibus_quit (); + data->timeout_id = 0; + return FALSE; +} + +static gboolean +change_global_engine_cb (gpointer user_data) +{ + GlobalEngineChangedData *data = (GlobalEngineChangedData *) user_data; + change_global_engine (data->reverse); + data->idle_id = 0; + return FALSE; +} + +static void +test_global_engine (void) +{ + GLogLevelFlags flags; + IBusEngineDesc *desc; + GlobalEngineChangedData data; + guint handler_id; + + if (!ibus_bus_get_use_global_engine (bus)) + return; + + /* "No global engine." warning is not critical message. */ + flags = g_log_set_always_fatal (G_LOG_LEVEL_CRITICAL); + desc = ibus_bus_get_global_engine (bus); + g_log_set_always_fatal (flags); + if (desc && + !g_strcmp0 (BEFORE_ENGINE, ibus_engine_desc_get_name (desc))) { + data.reverse = TRUE; + } else { + data.reverse = FALSE; + } + + data.count = 0; + + handler_id = g_signal_connect (bus, + "global-engine-changed", + G_CALLBACK (global_engine_changed_cb), + &data); + data.timeout_id = g_timeout_add_seconds (1, timeout_cb, &data); + data.idle_id = g_idle_add ((GSourceFunc) change_global_engine_cb, &data); + + ibus_main (); + + g_assert_cmpint (data.count, ==, G_N_ELEMENTS (engine_names)); + + if (data.idle_id > 0) + g_source_remove (data.idle_id); + if (data.timeout_id > 0) + g_source_remove (data.timeout_id); + g_signal_handler_disconnect (bus, handler_id); +} + +static void +test_context_engine (void) +{ + IBusEngineDesc *engine_desc; + IBusInputContext *context; + + if (ibus_bus_get_use_global_engine (bus)) + return; + + context = ibus_bus_create_input_context (bus, "test"); + ibus_input_context_set_capabilities (context, IBUS_CAP_FOCUS); + + /* ibus_bus_set_global_engine() changes focused context engine. */ + ibus_input_context_focus_in (context); + + change_context_engine (context); + engine_desc = ibus_input_context_get_engine (context); + g_assert_cmpstr (ibus_engine_desc_get_name (engine_desc), ==, AFTER_ENGINE); + + g_object_unref (context); +} + +static void +test_context_engine_set_by_global (void) +{ + IBusEngineDesc *engine_desc; + IBusInputContext *context; + + if (!ibus_bus_get_use_global_engine (bus)) + return; + + context = ibus_bus_create_input_context (bus, "test"); + ibus_input_context_set_capabilities (context, IBUS_CAP_FOCUS); + + /* ibus_bus_set_global_engine() changes focused context engine. */ + ibus_input_context_focus_in (context); + + change_global_engine (FALSE); + + /* ibus_input_context_set_engine() does not take effect when + global engine is used. */ + ibus_input_context_set_engine (context, BEFORE_ENGINE); + + engine_desc = ibus_input_context_get_engine (context); + g_assert_cmpstr (ibus_engine_desc_get_name (engine_desc), ==, AFTER_ENGINE); + + g_object_unref (context); +} + +static void +test_context_engine_set_by_focus (void) +{ + IBusEngineDesc *engine_desc; + IBusInputContext *context, *another_context; + + if (!ibus_bus_get_use_global_engine (bus)) + return; + + context = ibus_bus_create_input_context (bus, "test"); + ibus_input_context_set_capabilities (context, IBUS_CAP_FOCUS); + + another_context = ibus_bus_create_input_context (bus, "another"); + ibus_input_context_set_capabilities (another_context, IBUS_CAP_FOCUS); + + ibus_input_context_focus_in (context); + + change_global_engine (FALSE); + + /* When focus is lost, context engine is set to "dummy". */ + ibus_input_context_focus_in (another_context); + + engine_desc = ibus_input_context_get_engine (context); + g_assert_cmpstr (ibus_engine_desc_get_name (engine_desc), ==, "dummy"); + + engine_desc = ibus_input_context_get_engine (another_context); + g_assert_cmpstr (ibus_engine_desc_get_name (engine_desc), ==, AFTER_ENGINE); + + g_object_unref (context); + g_object_unref (another_context); +} + +gint +main (gint argc, + gchar **argv) +{ + gint result; + ibus_init (); + g_test_init (&argc, &argv, NULL); + bus = ibus_bus_new (); + g_object_unref (bus); + bus = ibus_bus_new (); // crosbug.com/17293 + + ibus_bus_set_watch_ibus_signal (bus, TRUE); + + g_test_add_func ("/ibus/engine-switch/global-engine", + test_global_engine); + g_test_add_func ("/ibus/engine-switch/context-engine", + test_context_engine); + g_test_add_func ("/ibus/engine-switch/context-engine-set-by-global", + test_context_engine_set_by_global); + g_test_add_func ("/ibus/engine-switch/context-engine-set-by-focus", + test_context_engine_set_by_focus); + + result = g_test_run (); + g_object_unref (bus); + + return result; +} diff --git a/src/tests/ibus-engine.c b/src/tests/ibus-engine.c index 75bdb1f49..225328d62 100644 --- a/src/tests/ibus-engine.c +++ b/src/tests/ibus-engine.c @@ -3,15 +3,15 @@ int main() { - g_type_init (); + ibus_init (); - GMainLoop *mainloop; - IBusConnection *connection; - IBusService *service; + GMainLoop *mainloop; + IBusConnection *connection; + IBusService *service; - mainloop = g_main_loop_new (NULL, FALSE); - connection = ibus_connection_open ("unix:path=/tmp/ibus-phuang/ibus--0.0"); - service = IBUS_SERVICE (ibus_engine_new ("/a/Engine", connection)); - g_main_loop_run (mainloop); - return 0; + mainloop = g_main_loop_new (NULL, FALSE); + connection = ibus_connection_open ("unix:path=/tmp/ibus-phuang/ibus--0.0"); + service = IBUS_SERVICE (ibus_engine_new ("/a/Engine", connection)); + g_main_loop_run (mainloop); + return 0; } diff --git a/src/tests/ibus-factory.c b/src/tests/ibus-factory.c index e3fa40552..7b5459885 100644 --- a/src/tests/ibus-factory.c +++ b/src/tests/ibus-factory.c @@ -33,8 +33,8 @@ gint main (gint argc, gchar **argv) { - g_mem_set_vtable (glib_mem_profiler_table); - g_type_init (); + ibus_init (); + g_test_init (&argc, &argv, NULL); g_test_add_func ("/ibus/factory", test_factory); diff --git a/src/tests/ibus-global-engine.c b/src/tests/ibus-global-engine.c index c6fff63e8..9007af2be 100644 --- a/src/tests/ibus-global-engine.c +++ b/src/tests/ibus-global-engine.c @@ -8,71 +8,68 @@ static GList *current_engine = NULL; void global_engine_changed_cb (IBusBus *bus) { - IBusEngineDesc *global_engine = ibus_bus_get_global_engine (bus); - const gchar *name = NULL; + IBusEngineDesc *global_engine = ibus_bus_get_global_engine (bus); + const gchar *name = NULL; - g_assert (global_engine); + g_assert (global_engine); - name = ibus_engine_desc_get_name (global_engine); - g_debug ("%s (id:%s, icon:%s)", - ibus_engine_desc_get_longname (global_engine), - name, - ibus_engine_desc_get_icon (global_engine)); - IBusEngineDesc *engine_desc = IBUS_ENGINE_DESC (current_engine->data); + name = ibus_engine_desc_get_name (global_engine); + g_debug ("%s (id:%s, icon:%s)", + ibus_engine_desc_get_longname (global_engine), + name, + ibus_engine_desc_get_icon (global_engine)); + IBusEngineDesc *engine_desc = IBUS_ENGINE_DESC (current_engine->data); - g_assert (strcmp (name, - ibus_engine_desc_get_name (engine_desc)) == 0); - g_object_unref (global_engine); + g_assert (strcmp (name, + ibus_engine_desc_get_name (engine_desc)) == 0); + g_object_unref (global_engine); } gboolean change_global_engine_cb (IBusBus *bus) { - if (!current_engine) - current_engine = engines; - else - current_engine = g_list_next (current_engine); + if (!current_engine) + current_engine = engines; + else + current_engine = g_list_next (current_engine); - if (!current_engine) { - ibus_quit(); - return FALSE; - } + if (!current_engine) { + ibus_quit(); + return FALSE; + } - IBusEngineDesc *engine_desc = IBUS_ENGINE_DESC (current_engine->data); + IBusEngineDesc *engine_desc = IBUS_ENGINE_DESC (current_engine->data); - ibus_bus_set_global_engine (bus, - ibus_engine_desc_get_name (engine_desc)); + ibus_bus_set_global_engine (bus, + ibus_engine_desc_get_name (engine_desc)); - return TRUE; + return TRUE; } int main() { - g_type_init (); + IBusBus *bus; - IBusBus *bus; + ibus_init (); - g_type_init (); - IBUS_TYPE_ENGINE_DESC; + bus = ibus_bus_new (); + engines = ibus_bus_list_active_engines (bus); + g_assert (engines); - bus = ibus_bus_new (); - engines = ibus_bus_list_active_engines (bus); - g_assert (engines); - - g_debug ("===== Global engine:"); - if (ibus_bus_get_use_global_engine (bus) == FALSE) + g_debug ("===== Global engine:"); + if (ibus_bus_get_use_global_engine (bus) == FALSE) return 0; - g_signal_connect (bus, "global-engine-changed", - G_CALLBACK (global_engine_changed_cb), bus); + g_signal_connect (bus, "global-engine-changed", + G_CALLBACK (global_engine_changed_cb), bus); - g_idle_add ((GSourceFunc)change_global_engine_cb, bus); + g_idle_add ((GSourceFunc)change_global_engine_cb, bus); - ibus_main(); + ibus_main(); - g_debug ("Test ibusbus.c's global engine api: passed."); - g_list_free (engines); - g_object_unref (bus); + g_debug ("Test ibusbus.c's global engine api: passed."); + g_list_free (engines); + g_object_unref (bus); - return 0; + return 0; } diff --git a/src/tests/ibus-inputcontext-create.c b/src/tests/ibus-inputcontext-create.c index 2a5a64acd..000f53f53 100644 --- a/src/tests/ibus-inputcontext-create.c +++ b/src/tests/ibus-inputcontext-create.c @@ -6,17 +6,17 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include @@ -93,9 +93,8 @@ main (gint argc, gchar **argv) { gint result; - g_type_init (); - g_test_init (&argc, &argv, NULL); ibus_init (); + g_test_init (&argc, &argv, NULL); bus = ibus_bus_new (); g_test_add_func ("/ibus/input_context_async_create_success", test_success); diff --git a/src/tests/ibus-inputcontext.c b/src/tests/ibus-inputcontext.c index 9053ca029..beffcda64 100644 --- a/src/tests/ibus-inputcontext.c +++ b/src/tests/ibus-inputcontext.c @@ -6,17 +6,17 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ #include @@ -37,18 +37,6 @@ fatal_handler(const gchar *log_domain, return TRUE; } -static gchar * -get_last_engine_id (const GList *engines) -{ - const char *result = NULL; - for (; engines; engines = g_list_next (engines)) { - IBusEngineDesc *engine_desc = IBUS_ENGINE_DESC (engines->data); - g_assert (engine_desc); - result = ibus_engine_desc_get_name (engine_desc); - } - return g_strdup (result); -} - static void call_basic_ipcs (IBusInputContext *context) { @@ -58,30 +46,35 @@ call_basic_ipcs (IBusInputContext *context) ibus_input_context_reset (context); /* When enable() is called, ibus-daemon may start a global (or preloaded, - * or default) engine in an asynchrnous manner and return immediately. + * or default) engine in an asynchronous manner and return immediately. * Therefore, it is not guaranteed that ibus_input_context_is_enabled() * returns TRUE. */ ibus_input_context_focus_in (context); -} +} static void test_input_context (void) { - GList *engines; - gchar *active_engine_name = NULL; IBusInputContext *context; + GLogLevelFlags flags; IBusEngineDesc *engine_desc; + gchar *active_engine_name = NULL; gchar *current_ic; context = ibus_bus_create_input_context (bus, "test"); call_basic_ipcs (context); - engines = ibus_bus_list_active_engines (bus); - if (engines != NULL) { - active_engine_name = get_last_engine_id (engines); + /* "No global engine." warning is not critical message. */ + flags = g_log_set_always_fatal (G_LOG_LEVEL_CRITICAL); + engine_desc = ibus_bus_get_global_engine (bus); + g_log_set_always_fatal (flags); + if (engine_desc != NULL) { + active_engine_name = g_strdup (ibus_engine_desc_get_name(engine_desc)); + g_object_unref (engine_desc); + engine_desc = NULL; } else { - active_engine_name = g_strdup ("dummy-engine-name"); + active_engine_name = g_strdup ("dummy"); } g_assert (active_engine_name); g_debug ("Use '%s' for testing.", active_engine_name); @@ -111,8 +104,6 @@ test_input_context (void) g_object_unref (context); g_free (active_engine_name); - g_list_foreach (engines, (GFunc) g_object_unref, NULL); - g_list_free (engines); } static void @@ -208,9 +199,8 @@ main (gint argc, gchar **argv) { gint result; - g_type_init (); - g_test_init (&argc, &argv, NULL); ibus_init (); + g_test_init (&argc, &argv, NULL); bus = ibus_bus_new (); g_test_add_func ("/ibus/input_context", test_input_context); diff --git a/src/tests/ibus-keymap.c b/src/tests/ibus-keymap.c index 9e5c46d48..ede5bb396 100644 --- a/src/tests/ibus-keymap.c +++ b/src/tests/ibus-keymap.c @@ -23,12 +23,12 @@ int main (int argc, char **argv) gint fd; struct input_event e; - g_type_init (); + ibus_init (); IBusKeymap *keymap = ibus_keymap_get (argc > 1 ? argv[1] : "us"); g_object_unref (keymap); - return 0; + return 0; fd = open (KEYBOARDPATH, O_RDONLY); diff --git a/src/tests/ibus-keynames.c b/src/tests/ibus-keynames.c index aa0bdc0b2..0793e7be1 100644 --- a/src/tests/ibus-keynames.c +++ b/src/tests/ibus-keynames.c @@ -11,7 +11,8 @@ gint main (gint argc, gchar **argv) { - g_type_init (); + ibus_init (); + g_test_init (&argc, &argv, NULL); g_test_add_func ("/ibus/keyname", test_keyname); diff --git a/src/tests/ibus-keypress.c b/src/tests/ibus-keypress.c new file mode 100644 index 000000000..bab05398c --- /dev/null +++ b/src/tests/ibus-keypress.c @@ -0,0 +1,303 @@ +#include +#include +#include "ibus.h" +#include +#include +#include + +#define GREEN "\033[0;32m" +#define RED "\033[0;31m" +#define NC "\033[0m" + +typedef struct _KeyData { + guint keyval; + guint modifiers; +} KeyData; + +static const KeyData test_cases[][30] = { + { { IBUS_KEY_a, 0 }, { IBUS_KEY_comma, IBUS_SHIFT_MASK }, + { IBUS_KEY_b, 0 }, { IBUS_KEY_period, IBUS_SHIFT_MASK }, + { IBUS_KEY_c, 0 }, { IBUS_KEY_slash, IBUS_SHIFT_MASK }, + { IBUS_KEY_d, 0 }, { IBUS_KEY_semicolon, IBUS_SHIFT_MASK }, + { IBUS_KEY_e, 0 }, { IBUS_KEY_apostrophe, IBUS_SHIFT_MASK }, + { IBUS_KEY_f, 0 }, { IBUS_KEY_bracketleft, IBUS_SHIFT_MASK }, + { IBUS_KEY_g, 0 }, { IBUS_KEY_backslash, IBUS_SHIFT_MASK }, + { 0, 0 } }, + { { IBUS_KEY_grave, IBUS_SHIFT_MASK }, { IBUS_KEY_a, IBUS_SHIFT_MASK }, + { IBUS_KEY_1, IBUS_SHIFT_MASK }, { IBUS_KEY_b, IBUS_SHIFT_MASK }, + { IBUS_KEY_2, IBUS_SHIFT_MASK }, { IBUS_KEY_c, IBUS_SHIFT_MASK }, + { IBUS_KEY_3, IBUS_SHIFT_MASK }, { IBUS_KEY_d, IBUS_SHIFT_MASK }, + { IBUS_KEY_9, IBUS_SHIFT_MASK }, { IBUS_KEY_e, IBUS_SHIFT_MASK }, + { IBUS_KEY_0, IBUS_SHIFT_MASK }, { IBUS_KEY_f, IBUS_SHIFT_MASK }, + { IBUS_KEY_equal, IBUS_SHIFT_MASK }, { IBUS_KEY_g, IBUS_SHIFT_MASK }, + { 0, 0 } }, + { { 0, 0 } } +}; + +KeyData test_end_key = { IBUS_KEY_z, IBUS_SHIFT_MASK }; + +static const gunichar test_results[][60] = { + { 'a', '<', 'b', '>', 'c', '?', 'd', ':', 'e', '"', 'f', '{', 'g', '|', 0 }, + { '~', 'A', '!', 'B', '@', 'C', '#', 'D', '(', 'E', ')', 'F', '+', 'G', 0 }, + { 0 } +}; + + +IBusBus *m_bus; +IBusEngine *m_engine; + +static gboolean window_focus_in_event_cb (GtkWidget *entry, + GdkEventFocus *event, + gpointer data); + +static IBusEngine * +create_engine_cb (IBusFactory *factory, const gchar *name, gpointer data) +{ + static int i = 1; + gchar *engine_path = + g_strdup_printf ("/org/freedesktop/IBus/engine/simpletest/%d", + i++); + + m_engine = ibus_engine_new_with_type (IBUS_TYPE_ENGINE_SIMPLE, + name, + engine_path, + ibus_bus_get_connection (m_bus)); + g_free (engine_path); + return m_engine; +} + +static gboolean +register_ibus_engine () +{ + IBusFactory *factory; + IBusComponent *component; + IBusEngineDesc *desc; + + m_bus = ibus_bus_new (); + if (!ibus_bus_is_connected (m_bus)) { + g_critical ("ibus-daemon is not running."); + return FALSE; + } + factory = ibus_factory_new (ibus_bus_get_connection (m_bus)); + g_signal_connect (factory, "create-engine", + G_CALLBACK (create_engine_cb), NULL); + + component = ibus_component_new ( + "org.freedesktop.IBus.SimpleTest", + "Simple Engine Test", + "0.0.1", + "GPL", + "Takao Fujiwara ", + "https://github.com/ibus/ibus/wiki", + "", + "ibus"); + desc = ibus_engine_desc_new ( + "xkbtest:us::eng", + "XKB Test", + "XKB Test", + "en", + "GPL", + "Takao Fujiwara ", + "ibus-engine", + "us"); + ibus_component_add_engine (component, desc); + ibus_bus_register_component (m_bus, component); + + return TRUE; +} + +static gboolean +finit (gpointer data) +{ + g_critical ("time out"); + gtk_main_quit (); + return FALSE; +} + +static void +send_key_event (Display *xdisplay, + guint keyval, + guint modifiers) +{ + static struct { + guint state; + KeySym keysym; + } state2keysym[] = { + { IBUS_CONTROL_MASK, XK_Control_L } , + { IBUS_MOD1_MASK, XK_Alt_L }, + { IBUS_MOD4_MASK, XK_Super_L }, + { IBUS_SHIFT_MASK, XK_Shift_L }, + { IBUS_LOCK_MASK, XK_Caps_Lock }, + { 0, 0L } + }; + int i; + guint keycode; + guint state = modifiers; + + while (state) { + for (i = 0; state2keysym[i].state; i++) { + if ((state2keysym[i].state & state) != 0) { + keycode = XKeysymToKeycode (xdisplay, state2keysym[i].keysym); + XTestFakeKeyEvent (xdisplay, keycode, True, CurrentTime); + XSync (xdisplay, False); + state ^= state2keysym[i].state; + break; + } + } + } + keycode = XKeysymToKeycode (xdisplay, keyval); + XTestFakeKeyEvent (xdisplay, keycode, True, CurrentTime); + XSync (xdisplay, False); + XTestFakeKeyEvent (xdisplay, keycode, False, CurrentTime); + XSync (xdisplay, False); + + state = modifiers; + while (state) { + for (i = G_N_ELEMENTS (state2keysym) - 1; i >= 0; i--) { + if ((state2keysym[i].state & state) != 0) { + keycode = XKeysymToKeycode (xdisplay, state2keysym[i].keysym); + XTestFakeKeyEvent (xdisplay, keycode, False, CurrentTime); + XSync (xdisplay, False); + state ^= state2keysym[i].state; + break; + } + } + } +} + +static void +set_engine_cb (GObject *object, + GAsyncResult *res, + gpointer data) +{ + IBusBus *bus = IBUS_BUS (object); + GtkWidget *entry = GTK_WIDGET (data); + GdkDisplay *display; + Display *xdisplay = NULL; + GError *error = NULL; + int i, j; + + g_assert (GTK_IS_ENTRY (entry)); + + if (!ibus_bus_set_global_engine_async_finish (bus, res, &error)) { + g_critical ("set engine failed: %s", error->message); + g_error_free (error); + return; + } + + display = gtk_widget_get_display (entry); + if (GDK_IS_X11_DISPLAY (display)) { + xdisplay = gdk_x11_display_get_xdisplay (display); + } else { +#if 0 + xdisplay = XOpenDisplay (NULL); +#else + g_critical ("No idea to simulate key events in Wayland\n"); +#endif + } + g_return_if_fail (xdisplay); + + for (i = 0; test_cases[i][0].keyval; i++) { + for (j = 0; test_cases[i][j].keyval; j++) { + send_key_event (xdisplay, + test_cases[i][j].keyval, + test_cases[i][j].modifiers); + } + send_key_event (xdisplay, test_end_key.keyval, test_end_key.modifiers); + } + + g_timeout_add_seconds (10, finit, NULL); +} + +static gboolean +window_focus_in_event_cb (GtkWidget *entry, GdkEventFocus *event, gpointer data) +{ + g_assert (m_bus != NULL); + ibus_bus_set_global_engine_async (m_bus, + "xkbtest:us::eng", + -1, + NULL, + set_engine_cb, + entry); + return FALSE; +} + +static void +window_inserted_text_cb (GtkEntryBuffer *buffer, + guint position, + const gchar *chars, + guint nchars, + gpointer data) +{ + GtkWidget *entry = data; + static int i = 0; + static int j = 0; + + if (g_utf8_get_char (chars) == 'Z') { + int k; + g_print ("\n" GREEN "PASS" NC ": "); + for (k = 0; k < j; k++) + g_print ("%lc(%X) ", test_results[i][k], test_results[i][k]); + g_print ("\n"); + i++; + j = 0; + if (test_results[i][0] == 0) + gtk_main_quit (); + else + gtk_entry_set_text (GTK_ENTRY (entry), ""); + return; + } + g_assert (g_utf8_get_char (chars) == test_results[i][j]); + j++; +} + +static void +create_window () +{ + GtkWidget *window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + GtkWidget *entry = gtk_entry_new (); + GtkEntryBuffer *buffer; + + g_signal_connect (window, "destroy", + G_CALLBACK (gtk_main_quit), NULL); + g_signal_connect (entry, "focus-in-event", + G_CALLBACK (window_focus_in_event_cb), NULL); + buffer = gtk_entry_get_buffer (GTK_ENTRY (entry)); + g_signal_connect (buffer, "inserted-text", + G_CALLBACK (window_inserted_text_cb), entry); + gtk_container_add (GTK_CONTAINER (window), entry); + gtk_widget_show_all (window); +} + +static void +test_keypress (void) +{ + int status = 0; + GError *error = NULL; + + g_spawn_command_line_sync ("setxkbmap -layout us", + NULL, NULL, + &status, &error); + g_assert (register_ibus_engine ()); + + create_window (); + gtk_main (); +} + +int +main (int argc, char *argv[]) +{ + ibus_init (); + /* Avoid a warning of "AT-SPI: Could not obtain desktop path or name" + * with gtk_main(). + */ + if (!g_setenv ("NO_AT_BRIDGE", "1", TRUE)) + g_message ("Failed setenv NO_AT_BRIDGE\n"); + g_test_init (&argc, &argv, NULL); + gtk_init (&argc, &argv); + + g_test_add_func ("/ibus/keyrepss", test_keypress); + + + return g_test_run (); +} diff --git a/src/tests/ibus-proxy.c b/src/tests/ibus-proxy.c index 911579b51..dbfb79d28 100644 --- a/src/tests/ibus-proxy.c +++ b/src/tests/ibus-proxy.c @@ -4,24 +4,24 @@ static _value_changed_cb (IBusConfig *config, gchar *section, gchar *name, GValue *value, gpointer data) { - g_debug ("value-changed %s %s", section, name); + g_debug ("value-changed %s %s", section, name); } int main() { - g_type_init (); + IBusBus *bus; + IBusConfig *config; - IBusBus *bus; - IBusConfig *config; + ibus_init (); - bus = ibus_bus_new (); - config = ibus_bus_get_config (bus); + bus = ibus_bus_new (); + config = ibus_bus_get_config (bus); - g_signal_connect (config, - "value-changed", - G_CALLBACK (_value_changed_cb), - NULL); - g_main_loop_run (g_main_loop_new (NULL, FALSE)); + g_signal_connect (config, + "value-changed", + G_CALLBACK (_value_changed_cb), + NULL); + g_main_loop_run (g_main_loop_new (NULL, FALSE)); - return 0; + return 0; } diff --git a/src/tests/ibus-registry.c b/src/tests/ibus-registry.c new file mode 100644 index 000000000..4c612926c --- /dev/null +++ b/src/tests/ibus-registry.c @@ -0,0 +1,10 @@ +#include + +int main() +{ + ibus_init (); + + IBusRegistry *registry = ibus_registry_new (); + g_object_unref (registry); + return 0; +} diff --git a/src/tests/ibus-serializable.c b/src/tests/ibus-serializable.c index d2bd61a4e..82e08621a 100644 --- a/src/tests/ibus-serializable.c +++ b/src/tests/ibus-serializable.c @@ -183,8 +183,8 @@ gint main (gint argc, gchar **argv) { - g_mem_set_vtable (glib_mem_profiler_table); - g_type_init (); + ibus_init (); + g_test_init (&argc, &argv, NULL); g_test_add_func ("/ibus/varianttypeinfo", test_varianttypeinfo); g_test_add_func ("/ibus/attrlist", test_attr_list); diff --git a/src/tests/ibus-share.c b/src/tests/ibus-share.c index 332e9c54f..6ff9c2d5b 100644 --- a/src/tests/ibus-share.c +++ b/src/tests/ibus-share.c @@ -15,8 +15,8 @@ gint main (gint argc, gchar **argv) { - g_mem_set_vtable (glib_mem_profiler_table); - g_type_init (); + ibus_init (); + g_test_init (&argc, &argv, NULL); g_test_add_func ("/ibus/marchine-id", test_machine_id); diff --git a/src/tests/ibus-util.c b/src/tests/ibus-util.c index 7a6dd4051..5db7ad243 100644 --- a/src/tests/ibus-util.c +++ b/src/tests/ibus-util.c @@ -10,7 +10,7 @@ int main (int argc, char **argv) { - setlocale(LC_ALL, "en_US.Utf-8"); + setlocale(LC_ALL, "C"); g_assert_cmpstr (ibus_get_language_name ("eng"), ==, "English"); diff --git a/src/tests/meta.test.in b/src/tests/meta.test.in new file mode 100644 index 000000000..ae2b29911 --- /dev/null +++ b/src/tests/meta.test.in @@ -0,0 +1,4 @@ +[Test] +Type=session +Exec=@TEST_EXEC@ --tap +Output=TAP diff --git a/src/tests/runtest b/src/tests/runtest new file mode 100755 index 000000000..a229140ae --- /dev/null +++ b/src/tests/runtest @@ -0,0 +1,224 @@ +#!/bin/sh + +# -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- +# vim:set et sts=4: + +# Run a test case given by the first argument in a separate directory. +# This script may also launch $top_builddir/bus/ibus-daemon for testing. + +# Executing a test that uses this file +# ==================================== +# +# Running a single test: +# +# $ make check TESTS=ibus-foo +# +# or +# +# $ top_builddir=<...> top_srcdir=<...> builddir=<...> ./runtest ibus-foo + +: ${top_builddir:=../..} +: ${top_srcdir:=../..} +: ${builddir:=.} +: ${srcdir:=.} +: ${DISABLE_GUI_TESTS:=''} +: ${DISABLE_DAEMONIZE_IN_TESTS:=''} + +BUS_REQUIRED_TESTS=" +ibus-bus +ibus-config +ibus-configservice +ibus-factory +ibus-inputcontext +ibus-inputcontext-create +ibus-engine-switch +ibus-compose +ibus-keypress +test-stress +xkb-latin-layouts +" +IBUS_SCHEMA_FILE='org.freedesktop.ibus.gschema.xml' +GTK_QUERY_MODULE=gtk-query-immodules-3.0-32 +MACHINE=`uname -m` + +if test x"$MACHINE" = xx86_64 ; then + GTK_QUERY_MODULE=gtk-query-immodules-3.0-64 +fi + +retval=0 + +# Portable replacement of basename. +func_basename () { + case "$1" in + */*) + expr "$1" : '.*/\(.*\)' + ;; + *) + echo "$1" + esac +} + +# Portable replacement of dirname. +func_dirname () { + case "$1" in + */*) + expr "$1" : '\(.*\)/.*' + ;; + *) + echo . + esac +} + +# Kill ibus-daemon process and remove temporary files. +func_cleanup () { + tstdir=$1 + if test -f $tstdir/ibus-daemon.pid; then + . $tstdir/ibus-daemon.pid + kill $IBUS_DAEMON_PID &> /dev/null + fi + rm -fr $tstdir +} + +# Prepare component files necessary for testing, under components/. +func_copy_component () { + file=$1 + base=`func_basename $file` + libexecdir=`func_dirname $file` + # top_srcdir != top_builddir in make dist + libexecdir=`echo "$libexecdir" | sed -e "s|$top_srcdir|$top_builddir|"` + if test -f $file.in; then + mkdir -p components + sed "s|@libexecdir@|$libexecdir|g" < $file.in > components/$base + fi +} + +trap 'func_cleanup $tstdir' 1 2 3 15 + +tst=$1; shift +tstdir=tmp-`func_basename $tst` + +for t in $DISABLE_GUI_TESTS; do + if test $t = `func_basename $tst`; then + exit 77 + fi +done + +# IBusEngine has GSettings +if test ! -f "$top_srcdir/data/dconf/$IBUS_SCHEMA_FILE" ; then + echo "NOT FOUND $top_srcdir/data/dconf/$IBUS_SCHEMA_FILE" + exit -1 +fi + +run_test_case() +{ + test -d $tstdir || mkdir $tstdir + backup_dir=$PWD + cd $tstdir + + need_bus=no + for t in $BUS_REQUIRED_TESTS; do + if test $t = `func_basename $tst`; then + need_bus=yes + fi + done + + if test $need_bus = yes; then + if test ! -f "../$top_builddir/conf/memconf/ibus-memconf" ; then + echo "NOT FOUNND ibus-memconf. Need configure --enable-memconf" + exit -1 + fi + # func_copy_component replaces s/$top_srcdir/%top_builddir/ + func_copy_component "../$top_srcdir/engine/simple.xml" + func_copy_component "../$top_srcdir/conf/memconf/memconf.xml" + + IBUS_COMPONENT_PATH=$PWD/components + export IBUS_COMPONENT_PATH + + IBUS_ADDRESS_FILE=$PWD/ibus-daemon.pid + export IBUS_ADDRESS_FILE + + if test -f "../$top_builddir/client/gtk3/.libs/im-ibus.so" ; then + IM_IBUS_SO="../$top_builddir/client/gtk3/.libs/im-ibus.so" + elif test -f "../$top_builddir/client/gtk3/im-ibus.so" ; then + IM_IBUS_SO="../$top_builddir/client/gtk3/im-ibus.so" + else + echo "NOT FOUND $top_builddir/client/gtk3/im-ibus.so" + exit -1 + fi + + GTK_IM_MODULE_FILE=$PWD/imcache + export GTK_IM_MODULE_FILE + $GTK_QUERY_MODULE "$IM_IBUS_SO" > $GTK_IM_MODULE_FILE + + cp "../$top_srcdir/data/dconf/$IBUS_SCHEMA_FILE" $PWD + glib-compile-schemas $PWD + if test $? -ne 0 ; then + echo "FAILED glib-compile-schemas" + retval=1 + return + fi + if test ! -f $PWD/gschemas.compiled ; then + echo "NOT FOUND $PWD/gschemas.compiled" + retval=1 + return + fi + export GSETTINGS_SCHEMA_DIR=$PWD + + # Start ibus-daemon. + DAEMON_ARGS=' + --cache=none + --panel=disable + --emoji-extension=disable + --config=default + --verbose + ' + if test x"$DISABLE_DAEMONIZE_IN_TESTS" = x ; then + ../$top_builddir/bus/ibus-daemon \ + $DAEMON_ARGS --daemonize; + else + ../$top_builddir/bus/ibus-daemon \ + $DAEMON_ARGS & + fi + + # Wait until all necessary components are up. + sleep 3 + + export GTK_IM_MODULE=ibus + fi + + export IBUS_COMPOSE_CACHE_DIR=$PWD + + "../$tst" ../$top_srcdir/src/tests ${1+"$@"} + + retval=`expr $retval \| $?` + + cd $backup_dir + + func_cleanup $tstdir +} + +envfile=$srcdir/`func_basename $tst`.env +if test -f $envfile ; then + ENVS="`cat $envfile`" +fi; +if test x"$ENVS" = x ; then + run_test_case $@ +else + LANG_backup=$LANG + i=1 + for e in $ENVS; do + first=`echo "$e" | cut -c1-1` + if test x"$first" = x"#" ; then + continue + fi + export $e + echo "Run `func_basename $tst` on $e" + echo "=======================" + run_test_case $@ + echo "" + i=`expr $i + 1` + done + export LANG=$LANG_backup +fi + +exit $retval diff --git a/src/tests/xkb-latin-layouts b/src/tests/xkb-latin-layouts new file mode 100755 index 000000000..f8dced6b0 --- /dev/null +++ b/src/tests/xkb-latin-layouts @@ -0,0 +1,130 @@ +#!/bin/bash + +PROGNAME=`basename $0` +VERSION=0.1 +# POSIX sh has no 'echo -e' +: ${ECHO:='/usr/bin/echo'} +TMPDIR= +INSTALLED_SCHEMAS_DIR= + + +usage() +{ + $ECHO -e \ +"This test runs setxkbmap command for gsettings xkb-latin-layouts value\n" \ +"$PROGNAME [OPTIONS…]\n" \ +"\n" \ +"OPTIONS:\n" \ +"-h, --help This help\n" \ +"-v, --version Show version\n" \ +"-D, --schemasdir=DIR Load the latest schema file in DIR\n" \ +"" +} + + +parse_args() +{ + # This is GNU getopt. "sudo port getopt" in BSD? + ARGS=`getopt -o hD:Tv --long \ + help,schemasdir:,tap,version\ + -- "$@"`; + eval set -- "$ARGS" + while [ 1 ] ; do + case "$1" in + -h | --help ) usage; exit 0;; + -D | --schemasdir ) INSTALLED_SCHEMAS_DIR="$2"; shift 2;; + -T | --tap ) shift;; # ignore the option + -v | --version ) $ECHO -e "$VERSION"; exit 0;; + -- ) shift; break;; + * ) shift;; + esac + done +} + + +init() +{ + set -e + + # gnome-continuous doesn't have a machine-id set, which + # breaks dbus-launch. There's dbus-run-session which is + # better, but not everyone has it yet. + export DBUS_FATAL_WARNINGS=0 + export TMPDIR=$(mktemp -d --tmpdir="$PWD") + export XDG_CONFIG_HOME="$TMPDIR/config" + export XDG_CACHE_HOME="$TMPDIR/cache" + export GSETTINGS_SCHEMA_DIR="$TMPDIR/schemas" + mkdir -p $XDG_CONFIG_HOME $XDG_CACHE_HOME $GSETTINGS_SCHEMA_DIR + + eval `dbus-launch --sh-syntax` + + trap 'rm -rf $TMPDIR; kill $DBUS_SESSION_BUS_PID; setxkbmap -layout us' ERR + + # in case that schema is not installed on the system + glib-compile-schemas --targetdir "$GSETTINGS_SCHEMA_DIR" "$INSTALLED_SCHEMAS_DIR" +} + + +finit() +{ + # dbus-launch and gsettings run /usr/lib*/gvfsd-fuse $TMPDIR/cache/gvfs -f + # via systemd since gvfs 1.45.90 in Fedora 33 + # and rm $TMPDIR could be failed until umount would be called. + if [ -d $TMPDIR/cache/gvfs ] ; then + umount $TMPDIR/cache/gvfs + fi + rm -rf $TMPDIR + + kill $DBUS_SESSION_BUS_PID + exit 0 +} + + +test_xkb_keymaps() +{ + # Loop over top level schemas since "gsettings list-recursively" only + # looks for direct children. + xkb_latin_layouts=`gsettings get org.freedesktop.ibus.general xkb-latin-layouts` + while read keymap ; do + eval keymap="$keymap" + HAS_VARIANT=$($ECHO "$keymap" | grep '(' 2> /dev/null) ||: + if [ "x$HAS_VARIANT" != "x" ] ; then + layout=$($ECHO "$keymap" | sed -e 's/\([^(]*\)([^)]*)/\1/') + variant=$($ECHO "$keymap" | sed -e 's/[^(]*(\([^)]*\))/\1/') + $ECHO setxkbmap -layout $layout -variant $variant + setxkbmap -layout $layout -variant $variant + else + layout="$keymap" + $ECHO setxkbmap -layout $layout + setxkbmap -layout $layout + fi + if [ $? -ne 0 ] ; then + $ECHO "Error in layout $layout variant $variant" + setxkbmap -layout us + exit 1 + fi + done << EOF_READ_XKB + `$ECHO $xkb_latin_layouts | sed -e 's/^\[//' -e 's/\]$//' | tr "," "\n"` +EOF_READ_XKB + + setxkbmap -layout us +} + + +main() +{ + parse_args "$@" + + if [ x"$INSTALLED_SCHEMAS_DIR" != x ] ; then + init + fi + + test_xkb_keymaps + + if [ x"$INSTALLED_SCHEMAS_DIR" != x ] ; then + finit + fi +} + + +main "$@" diff --git a/src/unicode-parser.c b/src/unicode-parser.c new file mode 100644 index 000000000..2c4eb6776 --- /dev/null +++ b/src/unicode-parser.c @@ -0,0 +1,507 @@ +/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ +/* vim:set et sts=4: */ +/* ibus - The Input Bus + * Copyright (C) 2018-2021 Takao Fujiwara + * Copyright (C) 2018-2021 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include + +#ifdef HAVE_LOCALE_H +#include +#endif + +#include "ibusunicode.h" + +#define NAMES_LIST_SUBJECT "The Unicode Standard" +#define BLOCKS_SUBJECT "Blocks-" + +/* This file has 21 lines about the license at the top of the file. */ +#define LICENSE_LINES 21 + +typedef enum +{ + UCD_NAMES_LIST, + UCD_BLOCKS +} UCDType; + +typedef struct _UnicodeData UnicodeData; +typedef struct _UnicodeDataIndex UnicodeDataIndex; + +struct _UnicodeData{ + gunichar code; + gchar *name; + gchar *alias; + gunichar start; + gunichar end; + GSList *list; +}; + +struct _UnicodeDataIndex { + gchar *index; + UnicodeData *data_list; +}; + +static gchar *unicode_version; + +static void +unicode_data_new_object (UnicodeData *data) +{ + g_return_if_fail (data != NULL); + if (!data->name) { + g_warning ("No name in U+%04X", data->code); + } + IBusUnicodeData *unicode = + ibus_unicode_data_new ("code", + data->code, + "name", + data->name ? data->name : "", + "alias", + data->alias ? data->alias : "", + NULL); + data->list = g_slist_append (data->list, unicode); +} + +static void +unicode_block_new_object (UnicodeData *data) +{ + g_return_if_fail (data != NULL); + if (!data->name) { + g_warning ("No name in U+%04X", data->start); + } + IBusUnicodeBlock *block = + ibus_unicode_block_new ("start", + data->start, + "end", + data->end, + "name", + data->name ? data->name : "", + NULL); + data->list = g_slist_append (data->list, block); +} + +static void +unicode_data_reset (UnicodeData *data) +{ + g_return_if_fail (data != NULL); + data->code = 0; + g_clear_pointer (&data->name, g_free); + g_clear_pointer (&data->alias, g_free); + data->start = 0; + data->end = 0; +} + +static gboolean +ucd_names_list_parse_comment (const gchar *line) +{ + static gboolean has_version = FALSE; + + if (has_version) + return TRUE; + if (strlen (line) > 4 && strncmp (line, "@@@", 3) == 0) { + gchar **elements = g_strsplit (line, "\t", -1); + if (strncmp (elements[1], NAMES_LIST_SUBJECT, + strlen (NAMES_LIST_SUBJECT)) == 0) { + unicode_version = + g_strdup (elements[1] + strlen (NAMES_LIST_SUBJECT) + 1); + has_version = TRUE; + } + g_strfreev (elements); + } + return TRUE; +} + +static gboolean +ucd_names_list_parse_alias (const gchar *line, + UnicodeData *data) +{ + g_return_val_if_fail (line != NULL, FALSE); + g_return_val_if_fail (data != NULL, FALSE); + + if (*line == '\0') + return FALSE; + data->alias = g_strdup (line); + return TRUE; +} + +static gboolean +ucd_names_list_parse_indent_line (const gchar *line, + UnicodeData *data) +{ + g_return_val_if_fail (line != NULL, FALSE); + + switch (*line) { + case '\0': + return FALSE; + case '=': + line++; + while (*line == ' ') line++; + return ucd_names_list_parse_alias (line, data); + default:; + } + return TRUE; +} + +static gboolean +ucd_names_list_parse_line (const gchar *line, + UnicodeData *data) +{ + g_return_val_if_fail (line != NULL, FALSE); + + switch (*line) { + case '\0': + return TRUE; + case ';': + return TRUE; + case '@': + return ucd_names_list_parse_comment (line); + case '\t': + return ucd_names_list_parse_indent_line (line + 1, data); + default:; + } + if (g_ascii_isxdigit (*line)) { + gchar **elements = g_strsplit (line, "\t", -1); + gunichar code; + gchar *name; + + if (g_strv_length (elements) < 2) { + g_strfreev (elements); + return FALSE; + } + code = g_ascii_strtoull (elements[0], NULL, 16); + name = g_strdup (elements[1]); + if (data->name) { + unicode_data_new_object (data); + unicode_data_reset (data); + } + data->code = code; + data->name = name; + } + return TRUE; +} + +static gboolean +ucd_blocks_parse_comment (const gchar *line) +{ + static gboolean has_version = FALSE; + + g_return_val_if_fail (line != NULL, FALSE); + + if (has_version) + return TRUE; + while (*line == ' ') line++; + if (strlen (line) > strlen (BLOCKS_SUBJECT) && + strncmp (line, BLOCKS_SUBJECT, strlen (BLOCKS_SUBJECT)) == 0) { + unicode_version = g_strdup (line + strlen (BLOCKS_SUBJECT) + 1); + has_version = TRUE; + } + return TRUE; +} + +static gboolean +ucd_blocks_parse_line (const gchar *line, + UnicodeData *data) +{ + g_return_val_if_fail (line != NULL, FALSE); + + switch (*line) { + case '\0': + return TRUE; + case '#': + return ucd_blocks_parse_comment (line + 1); + default:; + } + if (g_ascii_isxdigit (*line)) { + gchar *endptr = NULL; + gunichar start = g_ascii_strtoull (line, &endptr, 16); + gunichar end; + gchar *name = NULL; + + if (endptr == NULL || *endptr == '\0') + return FALSE; + while (*endptr == '.') endptr++; + line = endptr; + endptr = NULL; + end = g_ascii_strtoull (line, &endptr, 16); + if (endptr == NULL || *endptr == '\0') + return FALSE; + while (*endptr == ';') endptr++; + while (*endptr == ' ') endptr++; + if (*endptr == '\0') + return FALSE; + name = g_strdup (endptr); + if (data->name) { + unicode_block_new_object (data); + unicode_data_reset (data); + } + data->start = start; + data->end = end; + data->name = name; + } + return TRUE; +} + +static gboolean +ucd_parse_file (const gchar *filename, + GSList **list, + UCDType type) +{ + UnicodeData data = { 0, }; + gchar *content = NULL; + gsize length = 0; + GError *error = NULL; + gchar *head, *end, *line; + int n = 1; + + g_return_val_if_fail (filename != NULL, FALSE); + g_return_val_if_fail (list != NULL, FALSE); + + if (!g_file_get_contents (filename, &content, &length, &error)) { + g_warning ("Failed to load %s: %s", + filename, error ? error->message : ""); + goto failed_to_parse_ucd_names_list; + } + end = content; + while (*end == '\n' && end - content < length) { + end++; + n++; + } + head = end; + while (end - content < length) { + while (*end != '\n' && end - content < length) + end++; + if (end - content >= length) + break; + line = g_strndup (head, end - head); + switch (type) { + case UCD_NAMES_LIST: + if (!ucd_names_list_parse_line (line, &data)) { + g_warning ("parse error #%d in %s version %s: %s", + n, filename, + unicode_version ? unicode_version : "(null)", + line); + } + break; + case UCD_BLOCKS: + if (!ucd_blocks_parse_line (line, &data)) { + g_warning ("parse error #%d in %s version %s: %s", + n, filename, + unicode_version ? unicode_version : "(null)", + line); + } + break; + default: + abort (); + } + while (*end == '\n' && end - content < length) { + end++; + n++; + } + g_free (line); + head = end; + } + if (data.name != NULL) { + switch (type) { + case UCD_NAMES_LIST: + unicode_data_new_object (&data); + break; + case UCD_BLOCKS: + unicode_block_new_object (&data); + break; + default:; + } + unicode_data_reset (&data); + } + g_free (content); + *list = data.list; + return TRUE; + +failed_to_parse_ucd_names_list: + if (error) + g_error_free (error); + g_clear_pointer (&content, g_free); + *list = data.list; + return FALSE; +} + +static void +block_list_dump (IBusUnicodeBlock *block, + GString *buff) +{ + gchar *line; + g_return_if_fail (buff != NULL); + + g_string_append (buff, " /* TRANSLATORS: You might refer the " \ + "translations from gucharmap with\n" \ + " the following command:\n" \ + " msgmerge -C gucharmap.po ibus.po " \ + "ibus.pot */\n"); + line = g_strdup_printf (" N_(\"%s\"),\n", + ibus_unicode_block_get_name (block)); + g_string_append (buff, line); + g_free (line); +} + +static void +ucd_block_translatable_save (const gchar *filename, + GSList *blocks_list) +{ + gchar *content = NULL; + gsize length = 0; + GError *error = NULL; + gchar *p, *substr; + GString *buff = NULL; + int i; + GSList *list = blocks_list; + + g_return_if_fail (filename != NULL); + g_return_if_fail (list != NULL); + + if (!g_file_get_contents (__FILE__, &content, &length, &error)) { + g_warning ("Failed to load %s: %s", __FILE__, error->message); + g_clear_pointer (&error, g_error_free); + return; + } + + buff = g_string_new (NULL); + p = content; + for (i = 0; i < LICENSE_LINES; i++, p++) { + if ((p = strchr (p, '\n')) == NULL) + break; + } + if (p != NULL) { + substr = g_strndup (content, p - content); + g_string_append (buff, substr); + g_free (substr); + g_string_append_c (buff, '\n'); + } + g_clear_pointer (&content, g_free); + + g_string_append (buff, "\n"); + substr = g_strdup_printf ("/* This file is generated by %s. */", __FILE__); + g_string_append (buff, substr); + g_free (substr); + g_string_append (buff, "\n"); + g_string_append (buff, "include \n"); + g_string_append (buff, "\n"); + g_string_append (buff, "#ifndef __IBUS_UNICODE_GEN_H_\n"); + g_string_append (buff, "#define __IBUS_UNICODE_GEN_H_\n"); + g_string_append (buff, "const static char *unicode_blocks[] = {\n"); + g_slist_foreach (list, (GFunc)block_list_dump, buff); + g_string_append (buff, "};\n"); + g_string_append (buff, "#endif\n"); + + if (!g_file_set_contents (filename, buff->str, -1, &error)) { + g_warning ("Failed to save emoji category file %s: %s", + filename, error->message); + g_error_free (error); + } + + g_string_free (buff, TRUE); +} + +int +main (int argc, char *argv[]) +{ + gchar *prgname; + gchar *input_names_list = NULL; + gchar *input_blocks = NULL; + gchar *output_names_list = NULL; + gchar *output_blocks = NULL; + gchar *output_blocks_trans = NULL; + GOptionEntry entries[] = { + { "input-names-list", 'n', 0, G_OPTION_ARG_STRING, &input_names_list, + "Parse NamesList.txt FILE in unicode.org ", + "FILE" + }, + { "input-blocks", 'b', 0, G_OPTION_ARG_STRING, &input_blocks, + "Parse Blocks.txt FILE in unicode.org ", + "FILE" + }, + { "output-names-list", 'o', 0, G_OPTION_ARG_STRING, &output_names_list, + "Save the Unicode data as FILE", + "FILE" + }, + { "output-blocks", 'B', 0, G_OPTION_ARG_STRING, &output_blocks, + "Save the Unicode block list as FILE", + "FILE" + }, + { "output-blocks-trans", 'C', 0, G_OPTION_ARG_STRING, + &output_blocks_trans, + "Save the translatable Unicode blocks as FILE", + "FILE" + }, + { NULL } + }; + GOptionContext *context; + GError *error = NULL; + GSList *names_list = NULL; + GSList *blocks_list = NULL; + +#ifdef HAVE_LOCALE_H + /* To output emoji warnings. */ + setlocale (LC_ALL, ""); +#endif + + prgname = g_path_get_basename (argv[0]); + g_set_prgname (prgname); + g_free (prgname); + + context = g_option_context_new (NULL); + g_option_context_add_main_entries (context, entries, NULL); + + if (argc < 3) { + g_print ("%s", g_option_context_get_help (context, TRUE, NULL)); + g_option_context_free (context); + return -1; + } + + if (!g_option_context_parse (context, &argc, &argv, &error)) { + g_warning ("Failed options: %s", error->message); + g_error_free (error); + return -1; + } + g_option_context_free (context); + + if (input_names_list) { + ucd_parse_file (input_names_list, &names_list, UCD_NAMES_LIST); + g_free (input_names_list); + } + if (output_names_list && names_list) + ibus_unicode_data_save (output_names_list, names_list); + g_free (output_names_list); + + if (input_blocks) { + ucd_parse_file (input_blocks, &blocks_list, UCD_BLOCKS); + g_free (input_blocks); + } + if (output_blocks && blocks_list) + ibus_unicode_block_save (output_blocks, blocks_list); + if (output_blocks_trans && blocks_list) + ucd_block_translatable_save (output_blocks_trans, blocks_list); + g_free (output_blocks); + + g_free (unicode_version); + return 0; +} diff --git a/test/org.test.IBus.json b/test/org.test.IBus.json new file mode 100644 index 000000000..8bc28bf94 --- /dev/null +++ b/test/org.test.IBus.json @@ -0,0 +1,43 @@ +{ + "app-id": "org.test.IBus", + "runtime": "org.gnome.Platform", + "runtime-version": "3.24", + "sdk": "org.gnome.Sdk", + "command": "/usr/bin/zenity", + "finish-args": [ + /* X11 + XShm access */ + "--share=ipc", "--socket=x11", + /* Wayland access */ + "--socket=wayland", + /* Needed for dconf to work */ + "--filesystem=xdg-run/dconf", "--filesystem=~/.config/dconf:ro", + "--talk-name=ca.desrt.dconf", "--env=DCONF_USER_CONFIG_DIR=.config/dconf", + "--env=GTK_IM_MODULE_FILE=/app/lib/gtk-3.0/3.0.0/immodules.cache" + ], + "build-options" : { + "cflags": "-O2 -g", + "cxxflags": "-O2 -g", + "env": { + "V": "1" + } + }, + "cleanup": ["/include", "/lib/pkgconfig", + "/share/pkgconfig", "/share/aclocal", + "/man", "/share/man", "/share/gtk-doc", + "/share/vala", + "*.la", "*.a"], + "modules": [ + { + "name": "ibus", + "sources": [ + { + "type": "git", + "url": "https://github.com/ibus/ibus.git", + "branch": "master" + } + ], + "config-opts": ["--disable-emoji-dict", "--disable-dconf", "--disable-gtk2", "--disable-libnotify", "--disable-unicode-dict", "--disable-ui"], + "post-install": ["gtk-query-immodules-3.0 /app/lib/gtk-3.0/3.0.0/immodules/im-ibus.so > /app/lib/gtk-3.0/3.0.0/immodules.cache"] + } + ] +} diff --git a/test/org.test2.IBus.json b/test/org.test2.IBus.json new file mode 100644 index 000000000..1861a7b2f --- /dev/null +++ b/test/org.test2.IBus.json @@ -0,0 +1,43 @@ +{ + "app-id": "org.test2.IBus", + "runtime": "org.freedesktop.Platform", + "runtime-version": "18.08", + "sdk": "org.freedesktop.Sdk", + "command": "/usr/bin/zenity", + "finish-args": [ + /* X11 + XShm access */ + "--share=ipc", "--socket=x11", + /* Wayland access */ + "--socket=wayland", + /* Needed for dconf to work */ + "--filesystem=xdg-run/dconf", "--filesystem=~/.config/dconf:ro", + "--talk-name=ca.desrt.dconf", "--env=DCONF_USER_CONFIG_DIR=.config/dconf", + "--env=GTK_IM_MODULE_FILE=/usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules.cache" + ], + "build-options" : { + "cflags": "-O2 -g", + "cxxflags": "-O2 -g", + "env": { + "V": "1" + } + }, + "cleanup": ["/include", "/lib/pkgconfig", + "/share/pkgconfig", "/share/aclocal", + "/man", "/share/man", "/share/gtk-doc", + "/share/vala", + "*.la", "*.a"], + "modules": [ + { + "name": "ibus", + "sources": [ + { + "type": "git", + "url": "https://github.com/ibus/ibus.git", + "branch": "master" + } + ], + "config-opts": ["--disable-emoji-dict", "--disable-dconf", "--disable-gtk2", "--disable-libnotify", "--disable-unicode-dict", "--disable-ui"], + "post-install": ["gtk-query-immodules-3.0 /usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules/im-ibus.so > /usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules.cache"] + } + ] +} diff --git a/tools/Makefile.am b/tools/Makefile.am index cd5325597..5c18d3d68 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -2,43 +2,45 @@ # # ibus - The Input Bus # -# Copyright (c) 2007-2010 Peng Huang -# Copyright (c) 2007-2010 Red Hat, Inc. +# Copyright (c) 2007-2013 Peng Huang +# Copyright (c) 2015-2017 Takao Fujiwara +# Copyright (c) 2007-2017 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA NULL = libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la +libibus_emoji_dialog = \ + $(top_builddir)/ui/gtk3/libibus-emoji-dialog-@IBUS_API_VERSION@.la -INCLUDES = \ +# force include config.h before gi18n.h. +AM_CPPFLAGS = \ -I$(top_srcdir)/src \ -I$(top_builddir)/src \ + -include $(CONFIG_HEADER) \ $(NULL) AM_CFLAGS = \ @GLIB2_CFLAGS@ \ @GIO2_CFLAGS@ \ @GTHREAD2_CFLAGS@ \ - $(INCLUDES) \ -DG_LOG_DOMAIN=\"IBUS\" \ - -DPKGDATADIR=\"$(pkgdatadir)\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ - -DBINDIR=\"@bindir@\" \ - -DIBUS_DISABLE_DEPRECATED \ + -DIBUS_DISABLE_DEPRECATED \ -Wno-unused-variable \ -Wno-unused-but-set-variable \ -Wno-unused-function \ @@ -54,7 +56,11 @@ AM_LDADD = \ AM_VALAFLAGS = \ --vapidir=$(top_builddir)/bindings/vala \ + --vapidir=$(top_srcdir)/bindings/vala \ --pkg=ibus-1.0 \ + --pkg=posix \ + --pkg=config \ + --target-glib="$(VALA_TARGET_GLIB_VERSION)" \ $(NULL) bin_PROGRAMS = ibus @@ -67,13 +73,38 @@ ibus_LDADD = \ $(AM_LDADD) \ $(NULL) -bash_completion_SCRIPTS= \ +bash_completion_DATA= \ ibus.bash \ $(NULL) -bash_completiondir=@sysconfdir@/bash_completion.d +bash_completiondir=@datadir@/bash-completion/completions + +man_one_in_files = ibus.1.in +man_one_files = $(man_one_in_files:.1.in=.1) +man_one_DATA =$(man_one_files:.1=.1.gz) +man_onedir = $(mandir)/man1 +%.1: %.1.in + $(AM_V_GEN) sed \ + -e 's|@VERSION[@]|$(VERSION)|g' $< > $@.tmp && \ + mv $@.tmp $@ +%.1.gz: %.1 + $(AM_V_GEN) gzip -c $< > $@.tmp && mv $@.tmp $@ EXTRA_DIST = \ + $(man_one_in_files) \ ibus.bash \ $(NULL) +CLEANFILES = \ + $(man_one_DATA) \ + $(man_one_files) \ + $(NULL) + +if ENABLE_EMOJI_DICT +if ENABLE_UI +AM_VALAFLAGS += \ + --define=EMOJI_DICT \ + $(NULL) +endif +endif + -include $(top_srcdir)/git.mk diff --git a/tools/ibus.1.in b/tools/ibus.1.in new file mode 100644 index 000000000..525d972e6 --- /dev/null +++ b/tools/ibus.1.in @@ -0,0 +1,116 @@ +.\" This file is distributed under the same license as the ibus +.\" package. +.\" Copyright (C) Takao Fujiwara , 2013-2017. +.\" Copyright (c) Peng Huang , 2013. +.\" +.TH "IBUS" 1 "May 2017" "@VERSION@" "User Commands" +.SH NAME +.B ibus +\- command line utility for ibus + +.SH "SYNOPSIS" +.B ibus +\fICOMMAND\fR [\fIOPTION\fR]... + +.SH "DESCRIPTION" + +.PP +IBus is an Intelligent Input Bus. It is a new input framework for Linux +OS. It provides full featured and user friendly input method user +interface. It also may help developers to develop input method easily. + +.PP +.B ibus +is a command line utility which can restart or exit ibus-daemon, +get or set the current ibus engine or list the ibus engines. + +.PP +Homepage: https://github.com/ibus/ibus/wiki + +.SH "COMMAND" +.TP +\fBhelp\fR +Show the commands list. +.TP +\fBengine\fR [\fBENGINE_NAME\fR] +Show the curent ibus engine when +.B ENGINE_NAME +is not given. Set +.B ENGINE_NAME +to the current ibus engine. +.TP +\fBexit\fR +Exit ibus-daemon. +.TP +\fBlist-engine\fR +Show ibus engines list. +.TP +\fBrestart\fR +Restart ibus-daemon. +.TP +\fBversion\fR +Show the ibus version. +.TP +\fBread\-cache\fR [\fB\-\-system|\-\-file=FILE\fR] +Show the content of the user registry cache if +.B \-\-system +is not given. +Show the content of the system registry cache if +.B \-\-system +is given. +Show the content of the custom registry cache +.B FILE +if +.B \-\-file=FILE +is given. +.TP +\fBwrite\-cache\fR [\fB\-\-system|\-\-file=FILE\fR] +Save the user registry cache if +.B \-\-system +is not given. +Save the system registry cache if +.B \-\-system +is given. +Save the custom registry cache +.B FILE +if +.B \-\-file=FILE +is given. + +By default, it reads the component XML files from the standard +component directory (\fI/usr/share/ibus/component\fP), you can set +\fIIBUS_COMPONENT_PATH\fP environment variable for custom component +directories, separated by ':'. +.TP +\fBaddress\fR +Show the D-Bus address of ibus-daemon. +.TP +\fBread\-config\fR +Print the setting values in a gsettings configuration file. +.TP +\fBreset\-config\fR +Reset the user setting values to the default ones in a gsettings +configuration file. +.TP +\fBwatch\fR +Under construction. +.TP +\fBemoji\fR [\fB\-\-font=FONT|\-\-lang=LANG|\-\-help|\-\-partial\-match\fR] +Launch IBus Emojier ( +.B ibus\-emoji (1) +) and save the selected emoji to your clipboard. Can choose an emoji font with +.B \-\-font +option. Can choose a language of emoji annotations with +.B \-\-lang +option. If LANG="en", IBus Emojier loads /usr/share/ibus/dicts/emoji-en.dict . +.B \-\-partial\-match +option enables to match annotations with a partial string. These settings +are available with +.B ibus\-setup (1) +utility. + +.SH BUGS +If you find a bug, please report it at https://github.com/ibus/ibus/issues + +.SH "SEE ALSO" +.BR ibus-emoji (7) diff --git a/tools/ibus.bash b/tools/ibus.bash index 18e9d6c6f..da68ef777 100644 --- a/tools/ibus.bash +++ b/tools/ibus.bash @@ -9,17 +9,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA if ! type _get_comp_words_by_ref >/dev/null 2>&1; then if [[ -z ${ZSH_VERSION:+set} ]]; then diff --git a/tools/main.vala b/tools/main.vala index 9d4524243..26e7fd884 100644 --- a/tools/main.vala +++ b/tools/main.vala @@ -2,54 +2,71 @@ * * ibus - The Input Bus * - * Copyright(c) 2011 Peng Huang + * Copyright(c) 2013 Peng Huang + * Copyright(c) 2015-2020 Takao Fujiwara * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or(at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 Lesser General Public License for more details. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ -using GLib; -using IBus; +private const string IBUS_SCHEMAS_GENERAL = "org.freedesktop.ibus.general"; +private const string IBUS_SCHEMAS_GENERAL_HOTKEY = + "org.freedesktop.ibus.general.hotkey"; +private const string IBUS_SCHEMAS_PANEL = "org.freedesktop.ibus.panel"; +private const string IBUS_SCHEMAS_PANEL_EMOJI = + "org.freedesktop.ibus.panel.emoji"; bool name_only = false; +/* system() exists as a public API. */ +bool is_system = false; +string cache_file = null; +string engine_id = null; class EngineList { - public EngineDesc[] data = {}; + public IBus.EngineDesc[] data = {}; } -IBus.Bus get_bus() { - IBus.init(); +IBus.Bus? get_bus() { var bus = new IBus.Bus(); + if (!bus.is_connected ()) + return null; return bus; } int list_engine(string[] argv) { - const OptionEntry[] options = { - { "name-only", 0, 0, OptionArg.NONE, out name_only, "engine name only", "engine name only" }, + const OptionEntry[] options = { + { "name-only", 0, 0, OptionArg.NONE, out name_only, + N_("List engine name only"), null }, { null } }; - var option = new OptionContext("command [OPTIONS]"); - option.add_main_entries(options, "ibus"); + var option = new OptionContext(); + option.add_main_entries(options, Config.GETTEXT_PACKAGE); try { option.parse(ref argv); } catch (OptionError e) { + stderr.printf("%s\n", e.message); + return Posix.EXIT_FAILURE; } var bus = get_bus(); + if (bus == null) { + stderr.printf(_("Can't connect to IBus.\n")); + return Posix.EXIT_FAILURE; + } var engines = bus.list_engines(); @@ -57,7 +74,7 @@ int list_engine(string[] argv) { foreach (var engine in engines) { print("%s\n", engine.get_name()); } - return 0; + return Posix.EXIT_SUCCESS; } var map = new HashTable(GLib.str_hash, GLib.str_equal); @@ -73,13 +90,63 @@ int list_engine(string[] argv) { foreach (var language in map.get_keys()) { var list = map.get(language); - print("language: %s\n", IBus.get_language_name(language)); + print(_("language: %s\n"), IBus.get_language_name(language)); foreach (var engine in list.data) { print(" %s - %s\n", engine.get_name(), engine.get_longname()); } } - return 0; + return Posix.EXIT_SUCCESS; +} + +private int exec_setxkbmap(IBus.EngineDesc engine) { + string layout = engine.get_layout(); + string variant = engine.get_layout_variant(); + string option = engine.get_layout_option(); + string standard_error = null; + int exit_status = 0; + string[] args = { "setxkbmap" }; + + if (layout != null && layout != "" && layout != "default") { + args += "-layout"; + args += layout; + } + if (variant != null && variant != "" && variant != "default") { + args += "-variant"; + args += variant; + } + if (option != null && option != "" && option != "default") { + /*TODO: Need to get the session XKB options */ + args += "-option"; + args += "-option"; + args += option; + } + + if (args.length == 1) { + return Posix.EXIT_FAILURE; + } + + try { + if (!GLib.Process.spawn_sync(null, args, null, + GLib.SpawnFlags.SEARCH_PATH, + null, null, + out standard_error, + out exit_status)) { + warning("Switch xkb layout to %s failed.", + engine.get_layout()); + return Posix.EXIT_FAILURE; + } + } catch (GLib.SpawnError e) { + warning("Execute setxkbmap failed: %s", e.message); + return Posix.EXIT_FAILURE; + } + + if (exit_status != 0) { + warning("Execute setxkbmap failed: %s", standard_error ?? "(null)"); + return Posix.EXIT_FAILURE; + } + + return Posix.EXIT_SUCCESS; } int get_set_engine(string[] argv) { @@ -90,70 +157,341 @@ int get_set_engine(string[] argv) { if (engine == null) { var desc = bus.get_global_engine(); - if (desc == null) - return -1; + if (desc == null) { + stderr.printf(_("No engine is set.\n")); + return Posix.EXIT_FAILURE; + } print("%s\n", desc.get_name()); - return 0; + return Posix.EXIT_SUCCESS; } - if(!bus.set_global_engine(engine)) - return -1; + if(!bus.set_global_engine(engine)) { + stderr.printf(_("Set global engine failed.\n")); + return Posix.EXIT_FAILURE; + } var desc = bus.get_global_engine(); - if (desc == null) - return -1; - string cmdline = "setxkbmap %s".printf(desc.get_layout()); - try { - if (!GLib.Process.spawn_command_line_sync(cmdline)) { - warning("Switch xkb layout to %s failed.", - desc.get_layout()); - } - } catch (GLib.SpawnError e) { - warning("execute setxkblayout failed"); + if (desc == null) { + stderr.printf(_("Get global engine failed.\n")); + return Posix.EXIT_FAILURE; } - return 0; + + var settings = new GLib.Settings(IBUS_SCHEMAS_GENERAL); + if (!settings.get_boolean("use-system-keyboard-layout")) + return exec_setxkbmap(desc); + + return Posix.EXIT_SUCCESS; } int message_watch(string[] argv) { - return 0; + return Posix.EXIT_SUCCESS; } int restart_daemon(string[] argv) { var bus = get_bus(); + if (bus == null) { + stderr.printf(_("Can't connect to IBus.\n")); + return Posix.EXIT_FAILURE; + } bus.exit(true); - return 0; + return Posix.EXIT_SUCCESS; } int exit_daemon(string[] argv) { var bus = get_bus(); + if (bus == null) { + stderr.printf(_("Can't connect to IBus.\n")); + return Posix.EXIT_FAILURE; + } bus.exit(false); - return 0; + return Posix.EXIT_SUCCESS; } -delegate int EntryFunc(string[] argv); +int print_version(string[] argv) { + print("IBus %s\n", Config.PACKAGE_VERSION); + return Posix.EXIT_SUCCESS; +} -struct CommandEntry { - string name; - EntryFunc entry; +int read_cache (string[] argv) { + const OptionEntry[] options = { + { "system", 0, 0, OptionArg.NONE, out is_system, + N_("Read the system registry cache."), null }, + { "file", 0, 0, OptionArg.STRING, out cache_file, + N_("Read the registry cache FILE."), "FILE" }, + { null } + }; + + var option = new OptionContext(); + option.add_main_entries(options, Config.GETTEXT_PACKAGE); + + try { + option.parse(ref argv); + } catch (OptionError e) { + stderr.printf("%s\n", e.message); + return Posix.EXIT_FAILURE; + } + + var registry = new IBus.Registry(); + + if (cache_file != null) { + if (!registry.load_cache_file(cache_file)) { + stderr.printf(_("The registry cache is invalid.\n")); + return Posix.EXIT_FAILURE; + } + } else { + if (!registry.load_cache(!is_system)) { + stderr.printf(_("The registry cache is invalid.\n")); + return Posix.EXIT_FAILURE; + } + } + + var output = new GLib.StringBuilder(); + registry.output(output, 1); + + print ("%s\n", output.str); + return Posix.EXIT_SUCCESS; } -public int main(string[] argv) { - const CommandEntry commands[] = { - { "engine", get_set_engine }, - { "exit", exit_daemon }, - { "list-engine", list_engine }, - { "watch", message_watch }, - { "restart", restart_daemon } +int write_cache (string[] argv) { + const OptionEntry[] options = { + { "system", 0, 0, OptionArg.NONE, out is_system, + N_("Write the system registry cache."), null }, + { "file", 0, 0, OptionArg.STRING, out cache_file, + N_("Write the registry cache FILE."), + "FILE" }, + { null } + }; + + var option = new OptionContext(); + option.add_main_entries(options, Config.GETTEXT_PACKAGE); + + try { + option.parse(ref argv); + } catch (OptionError e) { + stderr.printf("%s\n", e.message); + return Posix.EXIT_FAILURE; + } + + var registry = new IBus.Registry(); + registry.load(); + + if (cache_file != null) { + return registry.save_cache_file(cache_file) ? + Posix.EXIT_SUCCESS : Posix.EXIT_FAILURE; + } + + return registry.save_cache(!is_system) ? + Posix.EXIT_SUCCESS : Posix.EXIT_FAILURE; +} + +int print_address(string[] argv) { + string address = IBus.get_address(); + print("%s\n", address != null ? address : "(null)"); + return Posix.EXIT_SUCCESS; +} + +private int read_config_options(string[] argv) { + const OptionEntry[] options = { + { "engine-id", 0, 0, OptionArg.STRING, out engine_id, + N_("Use engine schema paths instead of ibus core, " + + "which can be comma-separated values."), "ENGINE_ID" }, + { null } }; - if (argv.length >= 2) { - string[] new_argv = argv[1:argv.length]; - foreach (var command in commands) { - if (command.name == argv[1]) - return command.entry(new_argv); + var option = new OptionContext(); + option.add_main_entries(options, Config.GETTEXT_PACKAGE); + + try { + option.parse(ref argv); + } catch (OptionError e) { + stderr.printf("%s\n", e.message); + return Posix.EXIT_FAILURE; + } + return Posix.EXIT_SUCCESS; +} + +private GLib.SList get_ibus_schemas() { + string[] ids = {}; + if (engine_id != null) { + ids = engine_id.split(","); + } + GLib.SList ibus_schemas = new GLib.SList(); + GLib.SettingsSchemaSource schema_source = + GLib.SettingsSchemaSource.get_default(); + string[] list_schemas = {}; + schema_source.list_schemas(true, out list_schemas, null); + foreach (string schema in list_schemas) { + if (ids.length != 0) { + foreach (unowned string id in ids) { + if (id == schema || + schema.has_prefix("org.freedesktop.ibus.engine." + id)) { + ibus_schemas.prepend(schema); + break; + } + } + } else if (schema.has_prefix("org.freedesktop.ibus") && + !schema.has_prefix("org.freedesktop.ibus.engine")) { + ibus_schemas.prepend(schema); + } + } + if (ibus_schemas.length() == 0) { + printerr("Not found schemas of \"org.freedesktop.ibus\"\n"); + return ibus_schemas; + } + ibus_schemas.sort(GLib.strcmp); + + return ibus_schemas; +} + +int read_config(string[] argv) { + if (read_config_options(argv) == Posix.EXIT_FAILURE) + return Posix.EXIT_FAILURE; + + GLib.SList ibus_schemas = get_ibus_schemas(); + if (ibus_schemas.length() == 0) + return Posix.EXIT_FAILURE; + + GLib.SettingsSchemaSource schema_source = + GLib.SettingsSchemaSource.get_default(); + var output = new GLib.StringBuilder(); + foreach (string schema in ibus_schemas) { + GLib.SettingsSchema settings_schema = schema_source.lookup(schema, + false); + GLib.Settings settings = new GLib.Settings(schema); + + output.append_printf("SCHEMA: %s\n", schema); + + foreach (string key in settings_schema.list_keys()) { + GLib.Variant variant = settings.get_value(key); + output.append_printf(" %s: %s\n", key, variant.print(true)); + } + } + print("%s", output.str); + + return Posix.EXIT_SUCCESS; +} + +int reset_config(string[] argv) { + if (read_config_options(argv) == Posix.EXIT_FAILURE) + return Posix.EXIT_FAILURE; + + GLib.SList ibus_schemas = get_ibus_schemas(); + if (ibus_schemas.length() == 0) + return Posix.EXIT_FAILURE; + + print("%s\n", _("Resetting…")); + + GLib.SettingsSchemaSource schema_source = + GLib.SettingsSchemaSource.get_default(); + foreach (string schema in ibus_schemas) { + GLib.SettingsSchema settings_schema = schema_source.lookup(schema, + false); + GLib.Settings settings = new GLib.Settings(schema); + + print("SCHEMA: %s\n", schema); + + foreach (string key in settings_schema.list_keys()) { + print(" %s\n", key); + settings.reset(key); } - warning("%s is unknown command!", argv[1]); } - return -1; + GLib.Settings.sync(); + print("%s\n", _("Done")); + + return Posix.EXIT_SUCCESS; +} + +#if EMOJI_DICT +int emoji_dialog(string[] argv) { + string cmd = Config.LIBEXECDIR + "/ibus-ui-emojier"; + + var file = File.new_for_path(cmd); + if (!file.query_exists()) + cmd = "../ui/gtk3/ibus-ui-emojier"; + + argv[0] = cmd; + + string[] env = Environ.get(); + + try { + // Non-blocking + Process.spawn_async(null, argv, env, + SpawnFlags.SEARCH_PATH, + null, null); + } catch (SpawnError e) { + stderr.printf("%s\n", e.message); + return Posix.EXIT_FAILURE; + } + + return Posix.EXIT_SUCCESS; +} +#endif + +int print_help(string[] argv) { + print_usage(stdout); + return Posix.EXIT_SUCCESS; } +delegate int EntryFunc(string[] argv); + +struct CommandEntry { + unowned string name; + unowned string description; + unowned EntryFunc entry; +} + +const CommandEntry commands[] = { + { "engine", N_("Set or get engine"), get_set_engine }, + { "exit", N_("Exit ibus-daemon"), exit_daemon }, + { "list-engine", N_("Show available engines"), list_engine }, + { "watch", N_("(Not implemented)"), message_watch }, + { "restart", N_("Restart ibus-daemon"), restart_daemon }, + { "version", N_("Show version"), print_version }, + { "read-cache", N_("Show the content of registry cache"), read_cache }, + { "write-cache", N_("Create registry cache"), write_cache }, + { "address", N_("Print the D-Bus address of ibus-daemon"), print_address }, + { "read-config", N_("Show the configuration values"), read_config }, + { "reset-config", N_("Reset the configuration values"), reset_config }, +#if EMOJI_DICT + { "emoji", N_("Save emoji on dialog to clipboard"), emoji_dialog }, +#endif + { "help", N_("Show this information"), print_help } +}; + +static string program_name; + +void print_usage(FileStream stream) { + stream.printf(_("Usage: %s COMMAND [OPTION...]\n\n"), program_name); + stream.printf(_("Commands:\n")); + for (int i = 0; i < commands.length; i++) { + stream.printf(" %-12s %s\n", + commands[i].name, + GLib.dgettext(null, commands[i].description)); + } +} + +public int main(string[] argv) { + GLib.Intl.setlocale(GLib.LocaleCategory.ALL, ""); + GLib.Intl.bindtextdomain(Config.GETTEXT_PACKAGE, Config.LOCALEDIR); + GLib.Intl.bind_textdomain_codeset(Config.GETTEXT_PACKAGE, "UTF-8"); + GLib.Intl.textdomain(Config.GETTEXT_PACKAGE); + + IBus.init(); + + program_name = Path.get_basename(argv[0]); + if (argv.length < 2) { + print_usage(stderr); + return Posix.EXIT_FAILURE; + } + + string[] new_argv = argv[1:argv.length]; + new_argv[0] = "%s %s".printf(program_name, new_argv[0]); + for (int i = 0; i < commands.length; i++) { + if (commands[i].name == argv[1]) + return commands[i].entry(new_argv); + } + + stderr.printf(_("%s is unknown command!\n"), argv[1]); + print_usage(stderr); + return Posix.EXIT_FAILURE; +} diff --git a/ui/Makefile.am b/ui/Makefile.am index b3a81e133..4987a3ff2 100644 --- a/ui/Makefile.am +++ b/ui/Makefile.am @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA if ENABLE_GTK3 GTK3_UI = gtk3 diff --git a/ui/gtk2/Makefile.am b/ui/gtk2/Makefile.am index 1f1974842..7824bfe6e 100644 --- a/ui/gtk2/Makefile.am +++ b/ui/gtk2/Makefile.am @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA ui_gtk_PYTHON = \ candidatepanel.py \ @@ -52,16 +52,14 @@ CLEANFILES = \ EXTRA_DIST = \ ibus-ui-gtk.in \ - gtkpanel.xml.in.in \ + gtkpanel.xml.in \ $(NULL) gtkpanel.xml: gtkpanel.xml.in - $(AM_V_GEN) \ - ( \ - libexecdir=${libexecdir}; \ - s=`cat $<`; \ - eval "echo \"$${s}\""; \ - ) > $@ + $(AM_V_GEN) sed \ + -e 's|@VERSION[@]|$(VERSION)|g' \ + -e 's|@libexecdir[@]|$(libexecdir)|g' $< > $@.tmp && \ + mv $@.tmp $@ test: $(ENV) DBUS_DEBUG=true \ diff --git a/ui/gtk2/candidatepanel.py b/ui/gtk2/candidatepanel.py index 159b2bcf4..a105faa99 100644 --- a/ui/gtk2/candidatepanel.py +++ b/ui/gtk2/candidatepanel.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or(at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA import operator import gtk @@ -487,15 +487,20 @@ def __check_position(self): window_right = cursor_right + self.__toplevel.allocation.width window_bottom = cursor_bottom + self.__toplevel.allocation.height - root_window = gdk.get_default_root_window() - sx, sy = root_window.get_size() + screen = gdk.screen_get_default() + monitor_num = screen.get_monitor_at_point(cursor_location[0], + cursor_location[1]) + monitor_area = screen.get_monitor_geometry(monitor_num) - if window_right > sx: - x = sx - self.__toplevel.allocation.width + monitor_right = monitor_area.x + monitor_area.width + monitor_bottom = monitor_area.y + monitor_area.height + + if window_right > monitor_right: + x = monitor_right - self.__toplevel.allocation.width else: x = cursor_right - if window_bottom > sy: + if window_bottom > monitor_bottom: # move the window just above the cursor so the window and a preedit string do not overlap. y = cursor_location[1] - self.__toplevel.allocation.height else: diff --git a/ui/gtk2/engineabout.py b/ui/gtk2/engineabout.py index a34e93049..0b6cd2dbe 100644 --- a/ui/gtk2/engineabout.py +++ b/ui/gtk2/engineabout.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA import gtk from gtk import gdk diff --git a/ui/gtk2/gtkpanel.xml.in.in b/ui/gtk2/gtkpanel.xml.in similarity index 78% rename from ui/gtk2/gtkpanel.xml.in.in rename to ui/gtk2/gtkpanel.xml.in index edeed1cb8..e077d1c88 100644 --- a/ui/gtk2/gtkpanel.xml.in.in +++ b/ui/gtk2/gtkpanel.xml.in @@ -3,10 +3,10 @@ org.freedesktop.IBus.Panel Gtk Panel Component - ${libexecdir}/ibus-ui-gtk + @libexecdir@/ibus-ui-gtk @VERSION@ Peng Huang <shawn.p.huang@gmail.com> GPL - http://code.google.com/p/ibus + https://github.com/ibus/ibus ibus diff --git a/ui/gtk2/handle.py b/ui/gtk2/handle.py index 1e1db99d8..bb5494927 100644 --- a/ui/gtk2/handle.py +++ b/ui/gtk2/handle.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or(at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA import gtk import gtk.gdk as gdk diff --git a/ui/gtk2/i18n.py b/ui/gtk2/i18n.py index 98f60c4c2..af14efc63 100644 --- a/ui/gtk2/i18n.py +++ b/ui/gtk2/i18n.py @@ -2,33 +2,68 @@ # # ibus - The Input Bus # -# Copyright(c) 2007-2010 Peng Huang -# Copyright(c) 2007-2010 Google, Inc. +# Copyright(c) 2007-2015 Peng Huang +# Copyright(c) 2012-2021 Takao Fujiwara +# Copyright(c) 2007-2015 Google, Inc. +# Copyright(c) 2012-2021 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or(at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA +import locale import gettext import os +import sys DOMAINNAME = "ibus10" _ = lambda a: gettext.dgettext(DOMAINNAME, a) N_ = lambda a: a -def init(): - localedir = os.getenv("IBUS_LOCALEDIR") - gettext.bindtextdomain(DOMAINNAME, localedir) - gettext.bind_textdomain_codeset(DOMAINNAME, "UTF-8") +PY3K = sys.version_info >= (3, 0) +LOCALEDIR = os.getenv("IBUS_LOCALEDIR") + +def init_textdomain(domainname): + if domainname == '': + return + # Python's locale module doesn't provide all methods on some + # operating systems like FreeBSD + try: + locale.bindtextdomain(domainname, LOCALEDIR) + locale.bind_textdomain_codeset(domainname, 'UTF-8') + except AttributeError: + pass + gettext.bindtextdomain(domainname, LOCALEDIR) + # https://docs.python.org/3/library/gettext.html#gettext.lgettext + if not PY3K: + gettext.bind_textdomain_codeset(domainname, 'UTF-8') + +def gettext_engine_longname(engine): + name = engine.get_name() + if (name.startswith('xkb:')): + return gettext.dgettext('xkeyboard-config', engine.get_longname()) + textdomain = engine.get_textdomain() + if textdomain == '': + return engine.get_longname() + return gettext.dgettext(textdomain, engine.get_longname()) + +def gettext_engine_description(engine): + name = engine.get_name() + if (name.startswith('xkb:')): + return gettext.dgettext('xkeyboard-config', engine.get_description()) + textdomain = engine.get_textdomain() + if textdomain == '': + return engine.get_description() + return gettext.dgettext(textdomain, engine.get_description()) diff --git a/ui/gtk2/ibus-ui-gtk.in b/ui/gtk2/ibus-ui-gtk.in index d73e76d45..5e60b5e4d 100644 --- a/ui/gtk2/ibus-ui-gtk.in +++ b/ui/gtk2/ibus-ui-gtk.in @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA prefix=@prefix@ exec_prefix=@exec_prefix@ diff --git a/ui/gtk2/icon.py b/ui/gtk2/icon.py index 5b5f97ff1..f58d9b7ce 100644 --- a/ui/gtk2/icon.py +++ b/ui/gtk2/icon.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA import gtk import gtk.gdk as gdk diff --git a/ui/gtk2/languagebar.py b/ui/gtk2/languagebar.py index c3701a6e3..54a843197 100644 --- a/ui/gtk2/languagebar.py +++ b/ui/gtk2/languagebar.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or(at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA import gtk import gtk.gdk as gdk diff --git a/ui/gtk2/main.py b/ui/gtk2/main.py index cadcc96ce..219849833 100644 --- a/ui/gtk2/main.py +++ b/ui/gtk2/main.py @@ -2,23 +2,23 @@ # # ibus - The Input Bus # -# Copyright(c) 2007-2010 Peng Huang -# Copyright(c) 2007-2010 Red Hat, Inc. +# Copyright(c) 2007-2015 Peng Huang +# Copyright(c) 2007-2015 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or(at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA # try Cython # try: @@ -35,7 +35,7 @@ import gettext import panel import pynotify -from i18n import _, N_ +from i18n import DOMAINNAME, _, N_ class UIApplication: def __init__ (self, replace): @@ -128,5 +128,5 @@ def main(): if __name__ == "__main__": import i18n - i18n.init() + i18n.init_textdomain(DOMAINNAME) main() diff --git a/ui/gtk2/menu.py b/ui/gtk2/menu.py index 53fa39fd3..c229fa056 100644 --- a/ui/gtk2/menu.py +++ b/ui/gtk2/menu.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or(at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA import gtk import gobject diff --git a/ui/gtk2/notifications.py b/ui/gtk2/notifications.py index 979149e46..887acd07b 100644 --- a/ui/gtk2/notifications.py +++ b/ui/gtk2/notifications.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or(at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA import gtk import gtk.gdk as gdk diff --git a/ui/gtk2/panel.py b/ui/gtk2/panel.py index 42dde5d0f..709abb4a4 100644 --- a/ui/gtk2/panel.py +++ b/ui/gtk2/panel.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or(at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA import gtk import gtk.gdk as gdk @@ -511,7 +511,7 @@ def __sys_menu_item_activate_cb(self, item, command): about_dialog.set_copyright(ibus.get_copyright()) about_dialog.set_license(ibus.get_license()) about_dialog.set_comments(_("IBus is an intelligent input bus for Linux/Unix.")) - about_dialog.set_website("http://code.google.com/p/ibus") + about_dialog.set_website("https://github.com/ibus/ibus") about_dialog.set_authors(["Peng Huang "]) about_dialog.set_documenters(["Peng Huang "]) about_dialog.set_translator_credits(_("translator-credits")) diff --git a/ui/gtk2/propitem.py b/ui/gtk2/propitem.py index 3bd1e92e8..97c87ac5c 100644 --- a/ui/gtk2/propitem.py +++ b/ui/gtk2/propitem.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or(at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA class PropItem: def __init__(self, prop): diff --git a/ui/gtk2/toolitem.py b/ui/gtk2/toolitem.py index 4f4f97d42..743e7f0b9 100644 --- a/ui/gtk2/toolitem.py +++ b/ui/gtk2/toolitem.py @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA import gtk import gtk.gdk as gdk diff --git a/ui/gtk3/Makefile.am b/ui/gtk3/Makefile.am index 0fb9d3c6d..2a9cabdeb 100644 --- a/ui/gtk3/Makefile.am +++ b/ui/gtk3/Makefile.am @@ -2,23 +2,24 @@ # # ibus - The Input Bus # -# Copyright (c) 2007-2010 Peng Huang -# Copyright (c) 2007-2010 Red Hat, Inc. +# Copyright (c) 2007-2015 Peng Huang +# Copyright (c) 2015-2022 Takao Fujwiara +# Copyright (c) 2007-2020 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA NULL = @@ -29,17 +30,17 @@ component_DATA = \ $(NULL) componentdir = $(pkgdatadir)/component -gtkpanel.xml: gtkpanel.xml.in - $(AM_V_GEN) \ - ( \ - libexecdir=${libexecdir}; \ - s=`cat $<`; \ - eval "echo \"$${s}\""; \ - ) > $@ +%.xml: %.xml.in + $(AM_V_GEN) sed \ + -e 's|@VERSION[@]|$(VERSION)|g' \ + -e 's|@libexecdir[@]|$(libexecdir)|g' $< > $@.tmp && \ + mv $@.tmp $@ -INCLUDES = \ +# force include config.h before gi18n.h. +AM_CPPFLAGS = \ -I$(top_srcdir)/src \ -I$(top_builddir)/src \ + -include $(CONFIG_HEADER) \ $(NULL) AM_CFLAGS = \ @@ -48,14 +49,10 @@ AM_CFLAGS = \ @GTHREAD2_CFLAGS@ \ @GTK3_CFLAGS@ \ @X11_CFLAGS@ \ - $(INCLUDES) \ - -DGETTEXT_PACKAGE=\"@GETTEXT_PACKAGE@\" \ -DG_LOG_DOMAIN=\"IBUS\" \ + -DBINDIR=\"$(bindir)\" \ -DPKGDATADIR=\"$(pkgdatadir)\" \ - -DLIBEXECDIR=\"$(libexecdir)\" \ - -DBINDIR=\"@bindir@\" \ - -DIBUS_DISABLE_DEPRECATED \ - -DIBUS_VERSION=\"@IBUS_VERSION@\" \ + -DIBUS_DISABLE_DEPRECATED \ -Wno-unused-variable \ -Wno-unused-but-set-variable \ -Wno-unused-function \ @@ -74,40 +71,232 @@ AM_LDADD = \ AM_VALAFLAGS = \ --vapidir=$(top_builddir)/bindings/vala \ + --vapidir=$(top_srcdir)/bindings/vala \ --pkg=posix \ --pkg=gtk+-3.0 \ --pkg=gdk-x11-3.0 \ --pkg=ibus-1.0 \ + --pkg=config \ + --pkg=xi \ + --target-glib="$(VALA_TARGET_GLIB_VERSION)" \ $(NULL) +if ENABLE_LIBNOTIFY +AM_CFLAGS += \ + @LIBNOTIFY_CFLAGS@ \ + $(NULL) + +AM_LDADD += \ + @LIBNOTIFY_LIBS@ \ + $(NULL) + +AM_VALAFLAGS += \ + --pkg=libnotify \ + -D ENABLE_LIBNOTIFY \ + $(NULL) +endif + +if ENABLE_APPINDICATOR +AM_VALAFLAGS += --define=INDICATOR +endif + +if ENABLE_GDK3_WAYLAND +AM_VALAFLAGS += --pkg=gdk-wayland --define=USE_GDK_WAYLAND +endif + libexec_PROGRAMS = ibus-ui-gtk3 ibus_ui_gtk3_SOURCES = \ application.vala \ + bindingcommon.vala \ candidatearea.vala \ candidatepanel.vala \ + emojier.vala \ handle.vala \ iconwidget.vala \ + indicator.vala \ keybindingmanager.vala \ panel.vala \ pango.vala \ property.vala \ + propertypanel.vala \ separator.vala \ switcher.vala \ - grabkeycode.c \ + xkblayout.vala \ + gen-notification-item.xml.c \ + gen-notification-watcher.xml.c \ $(NULL) ibus_ui_gtk3_LDADD = \ $(AM_LDADD) \ $(NULL) -CLEANFILES = \ - gtkpanel.xml \ +gen-%.xml.c: %.xml + echo "Building $@ from $<" + echo "const char * _$(subst -,_,$(subst .,_,$(basename $(notdir $<)))) = " > $@ + sed -e "s:\":\\\\\":g" -e s:^:\": -e s:\$$:\\\\n\": $< >> $@ + echo ";" >> $@ + +CLEANFILES = \ + gtkpanel.xml \ + $(NULL) + +MAINTAINERCLEANFILES = + +emoji_headers = \ + ibusemojidialog.h \ + $(NULL) + +man_seven_in_files = ibus-emoji.7.in + +# References: +# libappindicator/src/notification-item.xml +# libappindicator/src/notification-watcher.xml +# kdelibs/kdeui/knotifications/src/org.kde.StatusNotifierItem.xml +# kdelibs/kdeui/knotifications/src/org.kde.StatusNotifierWatcher.xml +EXTRA_DIST = \ + $(emoji_headers) \ + $(man_seven_in_files) \ + emojierapp.vala \ + extension.vala \ + gtkextension.xml.in \ + gtkpanel.xml.in \ + notification-item.xml \ + notification-watcher.xml \ + ibus-ui-emojier.desktop.in \ + ibus-extension-gtk3.desktop.in \ + panelbinding.vala \ + $(NULL) + +if ENABLE_EMOJI_DICT +AM_VALAFLAGS += --define=EMOJI_DICT + +libexec_PROGRAMS += ibus-ui-emojier + +ibus_ui_emojier_VALASOURCES = \ + emojierapp.vala \ + emojier.vala \ + iconwidget.vala \ + separator.vala \ + pango.vala \ + $(NULL) +ibus_ui_emojier_SOURCES = \ + $(ibus_ui_emojier_VALASOURCES:.vala=.c) \ + $(NULL) + +ibus_ui_emojier_LDADD = \ + $(AM_LDADD) \ + $(NULL) + +ibus_ui_emojier_VALAFLAGS = \ + $(AM_VALAFLAGS) \ + $(NULL) + +# This line and foo_VALASOURCES line can delete the duplicated entries +# of emojier.c: emojier.vala +emojierapp.c: $(ibus_ui_emojier_VALASOURCES) + $(AM_V_VALAC)$(am__cd) $(srcdir) && $(VALAC) $(AM_VALAFLAGS) \ +$(VALAFLAGS) -C $(ibus_ui_emojier_VALASOURCES) + $(NULL) +# make dist creates .c files in a different srcdir +emojierapp.o: $(srcdir)/emojierapp.c + $(AM_V_CC)source='$<' object='$@' libtool=no \ + DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ + $(AM_V_CC_no)$(COMPILE) -c -o $@ $< + $(NULL) + +MAINTAINERCLEANFILES += emojierapp.c + +component_DATA += gtkextension.xml +CLEANFILES += gtkextension.xml +libexec_PROGRAMS += ibus-extension-gtk3 + +ibus_extension_gtk3_VALASOURCES = \ + bindingcommon.vala \ + emojier.vala \ + extension.vala \ + iconwidget.vala \ + keybindingmanager.vala \ + panelbinding.vala \ + pango.vala \ + $(NULL) +ibus_extension_gtk3_SOURCES = \ + $(ibus_extension_gtk3_VALASOURCES:.vala=.c) \ + $(NULL) + +ibus_extension_gtk3_LDADD = \ + $(AM_LDADD) \ + $(NULL) +ibus_extension_gtk3_VALAFLAGS = \ + $(AM_VALAFLAGS) \ + $(NULL) + +# This line and foo_VALASOURCES line can delete the duplicated entries +# of emojier.c: emojier.vala +extension.c: $(ibus_extension_gtk3_VALASOURCES) + $(AM_V_VALAC)$(am__cd) $(srcdir) && $(VALAC) $(AM_VALAFLAGS) \ +$(VALAFLAGS) -C $(ibus_extension_gtk3_VALASOURCES) $(NULL) +# make dist creates .c files in a different srcdir +extension.o: $(srcdir)/extension.c + $(AM_V_CC)source='$<' object='$@' libtool=no \ + DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ + $(AM_V_CC_no)$(COMPILE) -c -o $@ $< + $(NULL) +# of emojier.c: emojier.vala +panelbinding.c: $(ibus_extension_gtk3_VALASOURCES) + $(AM_V_VALAC)$(am__cd) $(srcdir) && $(VALAC) $(AM_VALAFLAGS) \ +$(VALAFLAGS) -C $(ibus_extension_gtk3_VALASOURCES) + $(NULL) +# make dist creates .c files in a different srcdir +panelbinding.o: $(srcdir)/panelbinding.c + $(AM_V_CC)source='$<' object='$@' libtool=no \ + DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ + $(AM_V_CC_no)$(COMPILE) -c -o $@ $< + $(NULL) + +MAINTAINERCLEANFILES += extension.c panelbinding.c -EXTRA_DIST = \ - gtkpanel.xml.in.in \ +man_seven_files = $(man_seven_in_files:.7.in=.7) +man_seven_DATA =$(man_seven_files:.7=.7.gz) +man_sevendir = $(mandir)/man7 +%.7: %.7.in + $(AM_V_GEN) sed \ + -e 's|@VERSION[@]|$(VERSION)|g' $< > $@.tmp && \ + mv $@.tmp $@ +%.7.gz: %.7 + $(AM_V_GEN) gzip -c $< > $@.tmp && mv $@.tmp $@ + +desktop_in_files = \ + ibus-ui-emojier.desktop.in \ + ibus-extension-gtk3.desktop.in \ + $(NULL) +desktop_notrans_files = $(desktop_in_files:.desktop.in=.desktop) +desktop_DATA = \ + org.freedesktop.IBus.Panel.Emojier.desktop \ + org.freedesktop.IBus.Panel.Extension.Gtk3.desktop \ + $(NULL) +desktopdir = $(datadir)/applications +%.desktop: %.desktop.in + $(AM_V_GEN) sed \ + -e 's|@libexecdir[@]|$(libexecdir)|g' $< > $@.tmp && \ + mv $@.tmp $@ + $(NULL) +org.freedesktop.IBus.Panel.Emojier.desktop: ibus-ui-emojier.desktop + $(AM_V_GEN) $(MSGFMT) --desktop --template $< -d $(top_srcdir)/po -o $@ $(NULL) +org.freedesktop.IBus.Panel.Extension.Gtk3.desktop: ibus-extension-gtk3.desktop + $(AM_V_GEN) $(MSGFMT) --desktop --template $< -d $(top_srcdir)/po -o $@ + $(NULL) + +CLEANFILES += \ + $(desktop_DATA) \ + $(desktop_notrans_files) \ + $(man_seven_DATA) \ + $(man_seven_files) \ + $(NULL) +endif +# end of ENABLE_EMOJI_DICT -include $(top_srcdir)/git.mk diff --git a/ui/gtk3/application.vala b/ui/gtk3/application.vala index 280da57a3..da65301b4 100644 --- a/ui/gtk3/application.vala +++ b/ui/gtk3/application.vala @@ -3,33 +3,31 @@ * ibus - The Input Bus * * Copyright(c) 2011 Peng Huang + * Copyright(c) 2017-2020 Takao Fujiwara * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or(at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 Lesser General Public License for more details. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ -using IBus; -using GLib; -using Gtk; - class Application { private IBus.Bus m_bus; private Panel m_panel; - private IBus.Config m_config; public Application(string[] argv) { + GLib.Intl.bindtextdomain(Config.GETTEXT_PACKAGE, Config.LOCALEDIR); + GLib.Intl.bind_textdomain_codeset(Config.GETTEXT_PACKAGE, "UTF-8"); IBus.init(); Gtk.init(ref argv); @@ -63,15 +61,6 @@ class Application { IBus.BusNameFlag.ALLOW_REPLACEMENT | IBus.BusNameFlag.REPLACE_EXISTING; m_bus.request_name(IBus.SERVICE_PANEL, flags); - - m_config = m_bus.get_config(); - connection.signal_subscribe("org.freedesktop.DBus", - "org.freedesktop.DBus", - "NameOwnerChanged", - "/org/freedesktop/DBus", - IBus.SERVICE_CONFIG, - DBusSignalFlags.NONE, - config_name_owner_changed_cb); } public int run() { @@ -80,42 +69,33 @@ class Application { } private void bus_name_acquired_cb(DBusConnection connection, - string sender_name, - string object_path, - string interface_name, - string signal_name, - Variant parameters) { + string? sender_name, + string object_path, + string interface_name, + string signal_name, + Variant parameters) { debug("signal_name = %s", signal_name); m_panel = new Panel(m_bus); - m_panel.set_config(m_config); + m_panel.load_settings(); } private void bus_name_lost_cb(DBusConnection connection, - string sender_name, - string object_path, - string interface_name, - string signal_name, - Variant parameters) { + string? sender_name, + string object_path, + string interface_name, + string signal_name, + Variant parameters) { + // "Destroy" dbus method was called before this callback is called. + // "Destroy" dbus method -> ibus_service_destroy() + // -> g_dbus_connection_unregister_object() + // -> g_object_unref(m_panel) will be called later with an idle method, + // which was assigned in the arguments of + // g_dbus_connection_register_object() debug("signal_name = %s", signal_name); - m_panel = null; - } - private void config_name_owner_changed_cb(DBusConnection connection, - string sender_name, - string object_path, - string interface_name, - string signal_name, - Variant parameters) { - debug("signal_name = %s", signal_name); - string name, new_owner, old_owner; - parameters.get("(sss)", out name, out new_owner, out old_owner); - if (new_owner == "") { - m_config = null; - } else { - m_config = m_bus.get_config(); - } - if (m_panel != null) - m_panel.set_config(m_config); + // unref m_panel + m_panel.disconnect_signals(); + m_panel = null; } private void bus_disconnected(IBus.Bus bus) { @@ -128,6 +108,15 @@ class Application { } public static void main(string[] argv) { + // https://bugzilla.redhat.com/show_bug.cgi?id=1226465#c20 + // In /etc/xdg/plasma-workspace/env/gtk3_scrolling.sh + // Plasma deskop sets this variable and prevents Super-space, + // and Ctrl-Shift-e when ibus-ui-gtk3 runs after the + // desktop is launched. + GLib.Environment.unset_variable("GDK_CORE_DEVICE_EVENTS"); + // for Gdk.X11.get_default_xdisplay() + Gdk.set_allowed_backends("x11"); + Application app = new Application(argv); app.run(); } diff --git a/ui/gtk3/bindingcommon.vala b/ui/gtk3/bindingcommon.vala new file mode 100644 index 000000000..4ecb71597 --- /dev/null +++ b/ui/gtk3/bindingcommon.vala @@ -0,0 +1,253 @@ +/* vim:set et sts=4 sw=4: + * + * ibus - The Input Bus + * + * Copyright(c) 2018 Peng Huang + * Copyright(c) 2018-2019 Takao Fujwiara + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +/* This file depends on keybindingmanager.vala */ + +class BindingCommon { + public enum KeyEventFuncType { + ANY, + IME_SWITCHER, + EMOJI_TYPING, + } + + public class Keybinding : GLib.Object { + public Keybinding(uint keysym, + Gdk.ModifierType modifiers, + bool reverse, + KeyEventFuncType ftype) { + this.keysym = keysym; + this.modifiers = modifiers; + this.reverse = reverse; + this.ftype = ftype; + } + + public uint keysym { get; set; } + public Gdk.ModifierType modifiers { get; set; } + public bool reverse { get; set; } + public KeyEventFuncType ftype { get; set; } + } + + public delegate void KeybindingFuncHandlerFunc(Gdk.Event event); + + public static void + keybinding_manager_bind(KeybindingManager keybinding_manager, + ref GLib.List keybindings, + string? accelerator, + KeyEventFuncType ftype, + KeybindingManager.KeybindingHandlerFunc + handler_normal, + KeybindingManager.KeybindingHandlerFunc? + handler_reverse) { + uint switch_keysym = 0; + Gdk.ModifierType switch_modifiers = 0; + Gdk.ModifierType reverse_modifier = Gdk.ModifierType.SHIFT_MASK; + Keybinding keybinding; + + Gtk.accelerator_parse(accelerator, + out switch_keysym, out switch_modifiers); + + // Map virtual modifiers to (i.e. Mod2, Mod3, ...) + const Gdk.ModifierType VIRTUAL_MODIFIERS = ( + Gdk.ModifierType.SUPER_MASK | + Gdk.ModifierType.HYPER_MASK | + Gdk.ModifierType.META_MASK); + if ((switch_modifiers & VIRTUAL_MODIFIERS) != 0) { + // workaround a bug in gdk vapi vala > 0.18 + // https://bugzilla.gnome.org/show_bug.cgi?id=677559 +#if VALA_0_18 + Gdk.Keymap.get_for_display(Gdk.Display.get_default() + ).map_virtual_modifiers(ref switch_modifiers); +#else + if ((switch_modifiers & Gdk.ModifierType.SUPER_MASK) != 0) + switch_modifiers |= Gdk.ModifierType.MOD4_MASK; + if ((switch_modifiers & Gdk.ModifierType.HYPER_MASK) != 0) + switch_modifiers |= Gdk.ModifierType.MOD4_MASK; +#endif + switch_modifiers &= ~VIRTUAL_MODIFIERS; + } + + if (switch_keysym == 0 && switch_modifiers == 0) { + warning("Parse accelerator '%s' failed!", accelerator); + return; + } + + keybinding = new Keybinding(switch_keysym, + switch_modifiers, + false, + ftype); + keybindings.append(keybinding); + + keybinding_manager.bind(switch_keysym, switch_modifiers, + handler_normal); + if (ftype == KeyEventFuncType.EMOJI_TYPING) { + return; + } + + // accelerator already has Shift mask + if ((switch_modifiers & reverse_modifier) != 0) { + return; + } + + switch_modifiers |= reverse_modifier; + + keybinding = new Keybinding(switch_keysym, + switch_modifiers, + true, + ftype); + keybindings.append(keybinding); + + if (ftype == KeyEventFuncType.IME_SWITCHER) { + keybinding_manager.bind(switch_keysym, switch_modifiers, + handler_reverse); + } + return; + } + + public static void + unbind_switch_shortcut(KeyEventFuncType ftype, + GLib.List keybindings) { + var keybinding_manager = KeybindingManager.get_instance(); + + while (keybindings != null) { + Keybinding keybinding = keybindings.data; + + if (ftype == KeyEventFuncType.ANY || + ftype == keybinding.ftype) { + keybinding_manager.unbind(keybinding.keysym, + keybinding.modifiers); + } + keybindings = keybindings.next; + } + } + + public static void + set_custom_font(GLib.Settings? settings_panel, + GLib.Settings? settings_emoji, + ref Gtk.CssProvider? css_provider) { + Gdk.Display display = Gdk.Display.get_default(); + Gdk.Screen screen = (display != null) ? + display.get_default_screen() : null; + + if (screen == null) { + warning("Could not open display."); + return; + } + + if (settings_emoji != null) { + string emoji_font = settings_emoji.get_string("font"); + if (emoji_font == null) { + warning("No config emoji:font."); + return; + } + IBusEmojier.set_emoji_font(emoji_font); + } + + if (settings_panel == null) + return; + + bool use_custom_font = settings_panel.get_boolean("use-custom-font"); + + if (css_provider != null) { + Gtk.StyleContext.remove_provider_for_screen(screen, + css_provider); + css_provider = null; + } + + if (use_custom_font == false) { + return; + } + + string custom_font = settings_panel.get_string("custom-font"); + if (custom_font == null) { + warning("No config panel:custom-font."); + return; + } + + Pango.FontDescription font_desc = + Pango.FontDescription.from_string(custom_font); + string font_family = font_desc.get_family(); + int font_size = font_desc.get_size() / Pango.SCALE; + string data; + + if (Gtk.MAJOR_VERSION < 3 || + (Gtk.MAJOR_VERSION == 3 && Gtk.MINOR_VERSION < 20)) { + data = "GtkLabel { font: %s; }".printf(custom_font); + } else { + data = "label { font-family: %s; font-size: %dpt; }" + .printf(font_family, font_size); + } + + css_provider = new Gtk.CssProvider(); + + try { + css_provider.load_from_data(data, -1); + } catch (GLib.Error e) { + warning("Failed css_provider_from_data: %s: %s", custom_font, + e.message); + return; + } + + Gtk.StyleContext.add_provider_for_screen( + screen, + css_provider, + Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION); + } + + public static void + set_custom_theme(GLib.Settings? settings_panel) { + if (settings_panel == null) + return; + + bool use_custom_theme = settings_panel.get_boolean("use-custom-theme"); + string custom_theme = settings_panel.get_string("custom-theme"); + + Gtk.Settings gtk_settings = Gtk.Settings.get_default(); + + if (use_custom_theme == false) + custom_theme = ""; + + if (custom_theme == null || custom_theme == "") + gtk_settings.reset_property("gtk-theme-name"); + else + gtk_settings.gtk_theme_name = custom_theme; + } + + public static void + set_custom_icon(GLib.Settings? settings_panel) { + if (settings_panel == null) + return; + + bool use_custom_icon = settings_panel.get_boolean("use-custom-icon"); + string custom_icon = settings_panel.get_string("custom-icon"); + + Gtk.Settings gtk_settings = Gtk.Settings.get_default(); + + if (use_custom_icon == false) + custom_icon = ""; + + if (custom_icon == null || custom_icon == "") + gtk_settings.reset_property("gtk-icon-theme-name"); + else + gtk_settings.gtk_icon_theme_name = custom_icon; + } +} diff --git a/ui/gtk3/candidatearea.vala b/ui/gtk3/candidatearea.vala index 13ebf769e..0ab412171 100644 --- a/ui/gtk3/candidatearea.vala +++ b/ui/gtk3/candidatearea.vala @@ -2,28 +2,25 @@ * * ibus - The Input Bus * - * Copyright(c) 2011 Peng Huang + * Copyright(c) 2011-2015 Peng Huang + * Copyright(c) 2015-2019 Takao Fujiwara * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or(at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 Lesser General Public License for more details. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ -using Gtk; -using IBus; -using Pango; - class CandidateArea : Gtk.Box { private bool m_vertical; private Gtk.Label[] m_labels; @@ -33,6 +30,24 @@ class CandidateArea : Gtk.Box { private IBus.Text[] m_ibus_candidates; private uint m_focus_candidate; private bool m_show_cursor; + private ThemedRGBA m_rgba; + + private Pango.Attribute m_language_attribute; + + private const string LABELS[] = { + "1.", "2.", "3.", "4.", "5.", "6.", "7.", "8.", + "9.", "0.", "a.", "b.", "c.", "d.", "e.", "f." + }; + + private const string PREV_PAGE_ICONS[] = { + "go-previous", + "go-up" + }; + + private const string NEXT_PAGE_ICONS[] = { + "go-next", + "go-down" + }; public signal void candidate_clicked(uint index, uint button, uint state); public signal void page_up(); @@ -41,39 +56,56 @@ class CandidateArea : Gtk.Box { public signal void cursor_down(); public CandidateArea(bool vertical) { - GLib.Object( - orientation: vertical ? Gtk.Orientation.VERTICAL : Gtk.Orientation.HORIZONTAL - ); - m_vertical = vertical; - recreate_ui(); - show_all(); + GLib.Object(); + set_vertical(vertical, true); + m_rgba = new ThemedRGBA(this); } - public void set_vertical(bool vertical) { - if (m_vertical == vertical) + public bool candidate_scrolled(Gdk.EventScroll event) { + switch (event.direction) { + case Gdk.ScrollDirection.UP: + cursor_up(); + break; + case Gdk.ScrollDirection.DOWN: + cursor_down(); + break; + } + return true; + } + + public bool get_vertical() { + return m_vertical; + } + + public void set_vertical(bool vertical, bool force = false) { + if (!force && m_vertical == vertical) return; m_vertical = vertical; + orientation = vertical ? + Gtk.Orientation.VERTICAL : + Gtk.Orientation.HORIZONTAL; recreate_ui(); - // Workaround a vala issue https://bugzilla.gnome.org/show_bug.cgi?id=661130 - set_candidates((owned)m_ibus_candidates, m_focus_candidate, m_show_cursor); - if (m_candidates.length > 0) + if (m_ibus_candidates.length > 0) { + // Workaround a vala issue + // https://bugzilla.gnome.org/show_bug.cgi?id=661130 + set_candidates((owned)m_ibus_candidates, + m_focus_candidate, + m_show_cursor); show_all(); + } } - public void set_labels(string[] labels) { - if (labels == null) { - const string labels[] = { - "1.", "2.", "3.", "4.", "5.", "6.", "7.", "8.", - "9.", "0.", "a.", "b.", "c.", "d.", "e.", "f." - }; - for (int i = 0 ; i < 16; i++) - m_labels[i].set_text(labels[i]); - } else { - int i = 0; - foreach (string label in labels) - m_labels[i].set_text(label); - } + public void set_labels(IBus.Text[] labels) { + int i; + for (i = 0; i < int.min(16, labels.length); i++) + m_labels[i].set_text(labels[i].get_text()); + for (; i < 16; i++) + m_labels[i].set_text(LABELS[i]); + } + + public void set_language(Pango.Attribute language_attribute) { + m_language_attribute = language_attribute.copy(); } public void set_candidates(IBus.Text[] candidates, @@ -83,28 +115,26 @@ class CandidateArea : Gtk.Box { m_focus_candidate = focus_candidate; m_show_cursor = show_cursor; - assert(candidates.length < 16); + assert(candidates.length <= 16); for (int i = 0 ; i < 16 ; i++) { Gtk.Label label = m_candidates[i]; bool visible = false; if (i < candidates.length) { Pango.AttrList attrs = get_pango_attr_list_from_ibus_text(candidates[i]); + attrs.change(m_language_attribute.copy()); if (i == focus_candidate && show_cursor) { - Gtk.StyleContext context = m_candidates[i].get_style_context(); - Gdk.RGBA color = context.get_color(Gtk.StateFlags.SELECTED); Pango.Attribute pango_attr = Pango.attr_foreground_new( - (uint16)(color.red * uint16.MAX), - (uint16)(color.green * uint16.MAX), - (uint16)(color.blue * uint16.MAX)); + (uint16)(m_rgba.selected_fg.red * uint16.MAX), + (uint16)(m_rgba.selected_fg.green * uint16.MAX), + (uint16)(m_rgba.selected_fg.blue * uint16.MAX)); pango_attr.start_index = 0; pango_attr.end_index = candidates[i].get_text().length; attrs.insert((owned)pango_attr); - color = context.get_background_color(Gtk.StateFlags.SELECTED); pango_attr = Pango.attr_background_new( - (uint16)(color.red * uint16.MAX), - (uint16)(color.green * uint16.MAX), - (uint16)(color.blue * uint16.MAX)); + (uint16)(m_rgba.selected_bg.red * uint16.MAX), + (uint16)(m_rgba.selected_bg.green * uint16.MAX), + (uint16)(m_rgba.selected_bg.blue * uint16.MAX)); pango_attr.start_index = 0; pango_attr.end_index = candidates[i].get_text().length; attrs.insert((owned)pango_attr); @@ -130,59 +160,72 @@ class CandidateArea : Gtk.Box { w.destroy(); } - const string labels[] = { - "1.", "2.", "3.", "4.", "5.", "6.", "7.", "8.", - "9.", "0.", "a.", "b.", "c.", "d.", "e.", "f." - }; - Gtk.Button prev_button = new Gtk.Button(); prev_button.clicked.connect((b) => page_up()); - prev_button.set_image(new Gtk.Image.from_icon_name(Gtk.Stock.GO_UP, Gtk.IconSize.MENU)); + prev_button.set_image(new Gtk.Image.from_icon_name( + PREV_PAGE_ICONS[orientation], + Gtk.IconSize.MENU)); prev_button.set_relief(Gtk.ReliefStyle.NONE); Gtk.Button next_button = new Gtk.Button(); next_button.clicked.connect((b) => page_down()); - next_button.set_image(new Gtk.Image.from_icon_name(Gtk.Stock.GO_DOWN, Gtk.IconSize.MENU)); + next_button.set_image(new Gtk.Image.from_icon_name( + NEXT_PAGE_ICONS[orientation], + Gtk.IconSize.MENU)); next_button.set_relief(Gtk.ReliefStyle.NONE); if (m_vertical) { + Gtk.EventBox container_ebox = new Gtk.EventBox(); + container_ebox.add_events(Gdk.EventMask.SCROLL_MASK); + container_ebox.scroll_event.connect(candidate_scrolled); + add(container_ebox); + + Gtk.Box vbox = new Gtk.Box(Gtk.Orientation.VERTICAL, 0); + container_ebox.add(vbox); + // Add Candidates - Gtk.HBox candidates_hbox = new Gtk.HBox(false, 0); - pack_start(candidates_hbox, false, false, 0); - Gtk.VBox labels_vbox = new Gtk.VBox(true, 0); - Gtk.VBox candidates_vbox = new Gtk.VBox(true, 0); + Gtk.Box candidates_hbox = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 0); + vbox.pack_start(candidates_hbox, false, false, 0); + Gtk.Box labels_vbox = new Gtk.Box(Gtk.Orientation.VERTICAL, 0); + labels_vbox.set_homogeneous(true); + Gtk.Box candidates_vbox = new Gtk.Box(Gtk.Orientation.VERTICAL, 0); + candidates_vbox.set_homogeneous(true); candidates_hbox.pack_start(labels_vbox, false, false, 4); candidates_hbox.pack_start(new VSeparator(), false, false, 0); candidates_hbox.pack_start(candidates_vbox, true, true, 4); // Add HSeparator - pack_start(new HSeparator(), false, false, 0); + vbox.pack_start(new HSeparator(), false, false, 0); // Add buttons - Gtk.HBox buttons_hbox = new Gtk.HBox(false, 0); + Gtk.Box buttons_hbox = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 0); Gtk.Label state_label = new Gtk.Label(null); state_label.set_size_request(20, -1); buttons_hbox.pack_start(state_label, true, true, 0); buttons_hbox.pack_start(prev_button, false, false, 0); buttons_hbox.pack_start(next_button, false, false, 0); - pack_start(buttons_hbox, false, false, 0); + vbox.pack_start(buttons_hbox, false, false, 0); m_labels = {}; m_candidates = {}; m_widgets = {}; for (int i = 0; i < 16; i++) { - Gtk.Label label = new Gtk.Label(labels[i]); - label.set_alignment(0.0f, 0.5f); + Gtk.Label label = new Gtk.Label(LABELS[i]); + label.set_halign(Gtk.Align.START); + label.set_valign(Gtk.Align.CENTER); label.show(); m_labels += label; Gtk.Label candidate = new Gtk.Label("test"); - candidate.set_alignment(0.0f, 0.5f); + candidate.set_halign(Gtk.Align.START); + candidate.set_valign(Gtk.Align.CENTER); candidate.show(); m_candidates += candidate; - label.set_property("xpad", 8); - candidate.set_property("xpad", 8); + label.set_margin_start (8); + label.set_margin_end (8); + candidate.set_margin_start (8); + candidate.set_margin_end (8); // Make a copy of i to workaround a bug in vala. // https://bugzilla.gnome.org/show_bug.cgi?id=628336 @@ -208,24 +251,31 @@ class CandidateArea : Gtk.Box { m_widgets += candidate_ebox; } } else { - Gtk.HBox hbox = new Gtk.HBox(false, 0); - add(hbox); + Gtk.EventBox container_ebox = new Gtk.EventBox(); + container_ebox.add_events(Gdk.EventMask.SCROLL_MASK); + container_ebox.scroll_event.connect(candidate_scrolled); + add(container_ebox); + + Gtk.Box hbox = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 0); + container_ebox.add(hbox); m_labels = {}; m_candidates = {}; m_widgets = {}; for (int i = 0; i < 16; i++) { - Gtk.Label label = new Gtk.Label(labels[i]); - label.set_alignment(0.0f, 0.5f); + Gtk.Label label = new Gtk.Label(LABELS[i]); + label.set_halign(Gtk.Align.START); + label.set_valign(Gtk.Align.CENTER); label.show(); m_labels += label; Gtk.Label candidate = new Gtk.Label("test"); - candidate.set_alignment(0.0f, 0.5f); + candidate.set_halign(Gtk.Align.START); + candidate.set_valign(Gtk.Align.CENTER); candidate.show(); m_candidates += candidate; - Gtk.HBox candidate_hbox = new Gtk.HBox(false, 0); + Gtk.Box candidate_hbox = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 0); candidate_hbox.show(); candidate_hbox.pack_start(label, false, false, 2); candidate_hbox.pack_start(candidate, false, false, 2); diff --git a/ui/gtk3/candidatepanel.vala b/ui/gtk3/candidatepanel.vala index d02c06d66..57544df36 100644 --- a/ui/gtk3/candidatepanel.vala +++ b/ui/gtk3/candidatepanel.vala @@ -2,31 +2,30 @@ * * ibus - The Input Bus * - * Copyright(c) 2011 Peng Huang + * Copyright(c) 2011-2015 Peng Huang + * Copyright(c) 2015-2019 Takao Fujiwara * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or(at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 Lesser General Public License for more details. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ -using Gtk; -using Pango; - -public class CandidatePanel : Gtk.HBox{ - private bool m_vertical = true; +public class CandidatePanel : Gtk.Box{ + private bool m_vertical_panel_system = true; + private bool m_vertical_writing; private Gtk.Window m_toplevel; - private Gtk.VBox m_vbox; + private Gtk.Box m_vbox; private Gtk.Label m_preedit_label; private Gtk.Label m_aux_label; @@ -35,6 +34,8 @@ public class CandidatePanel : Gtk.HBox{ private Gdk.Rectangle m_cursor_location; + private Pango.Attribute m_language_attribute; + public signal void cursor_up(); public signal void cursor_down(); public signal void page_up(); @@ -47,6 +48,7 @@ public class CandidatePanel : Gtk.HBox{ // Call base class constructor GLib.Object( name : "IBusCandidate", + orientation: Gtk.Orientation.HORIZONTAL, visible: true ); @@ -55,15 +57,18 @@ public class CandidatePanel : Gtk.HBox{ m_toplevel.button_press_event.connect((w, e) => { if (e.button != 1 || (e.state & Gdk.ModifierType.CONTROL_MASK) == 0) return false; - set_vertical(!m_vertical); + set_vertical(!m_vertical_panel_system); return true; }); + m_toplevel.size_allocate.connect((w, a) => { + adjust_window_position(); + }); Handle handle = new Handle(); handle.set_visible(true); pack_start(handle, false, false, 0); - m_vbox = new Gtk.VBox(false, 0); + m_vbox = new Gtk.Box(Gtk.Orientation.VERTICAL, 0); m_vbox.set_visible(true); pack_start(m_vbox, false, false, 0); @@ -73,28 +78,79 @@ public class CandidatePanel : Gtk.HBox{ } public void set_vertical(bool vertical) { - if (m_vertical == vertical) + if (m_vertical_panel_system == vertical) return; - m_vertical = vertical; + m_vertical_panel_system = vertical; m_candidate_area.set_vertical(vertical); } + private void set_orientation(IBus.Orientation orientation) { + switch (orientation) { + case IBus.Orientation.VERTICAL: + m_candidate_area.set_vertical(true); + break; + case IBus.Orientation.HORIZONTAL: + m_candidate_area.set_vertical(false); + break; + case IBus.Orientation.SYSTEM: + m_candidate_area.set_vertical(m_vertical_panel_system); + break; + } + } + public void set_cursor_location(int x, int y, int width, int height) { - Gdk.Rectangle location = { x, y, width, height }; + Gdk.Rectangle location = Gdk.Rectangle(){ + x = x, y = y, width = width, height = height }; if (m_cursor_location == location) return; m_cursor_location = location; - adjust_window_position(); + + /* Do not call adjust_window_position() here because + * m_toplevel is not shown yet and + * m_toplevel.get_allocation() returns height = width = 1 */ } - public void set_labels(string[] labels) { + private void set_labels(IBus.Text[] labels) { m_candidate_area.set_labels(labels); } + public void set_language(Pango.Attribute language_attribute) { + m_candidate_area.set_language(language_attribute); + m_language_attribute = language_attribute.copy(); + } + + private void set_attributes(Gtk.Label label, IBus.Text text) { + Pango.AttrList attrs = get_pango_attr_list_from_ibus_text(text); + attrs.change(m_language_attribute.copy()); + + Gtk.StyleContext context = label.get_style_context(); + Gdk.RGBA color; + + if (context.lookup_color("placeholder_text_color", out color)) { + Pango.Attribute pango_attr = Pango.attr_foreground_new( + (uint16)(color.red * uint16.MAX), + (uint16)(color.green * uint16.MAX), + (uint16)(color.blue * uint16.MAX)); + pango_attr.start_index = 0; + pango_attr.end_index = label.get_text().length; + attrs.insert((owned)pango_attr); + } + + label.set_attributes(attrs); + } + public void set_preedit_text(IBus.Text? text, uint cursor) { if (text != null) { - m_preedit_label.set_text(text.get_text()); - m_preedit_label.show(); + var str = text.get_text(); + + if (str.length > 0) { + m_preedit_label.set_text(str); + m_preedit_label.show(); + set_attributes(m_preedit_label, text); + } else { + m_preedit_label.set_text(""); + m_preedit_label.hide(); + } } else { m_preedit_label.set_text(""); m_preedit_label.hide(); @@ -105,6 +161,9 @@ public class CandidatePanel : Gtk.HBox{ public void set_auxiliary_text(IBus.Text? text) { if (text != null) { m_aux_label.set_text(text.get_text()); + Pango.AttrList attrs = get_pango_attr_list_from_ibus_text(text); + attrs.change(m_language_attribute.copy()); + m_aux_label.set_attributes(attrs); m_aux_label.show(); } else { m_aux_label.set_text(""); @@ -117,6 +176,8 @@ public class CandidatePanel : Gtk.HBox{ IBus.Text[] candidates = {}; uint cursor_in_page = 0; bool show_cursor = true; + IBus.Text[] labels = {}; + IBus.Orientation orientation = IBus.Orientation.SYSTEM; if (table != null) { uint page_size = table.get_page_size(); @@ -129,8 +190,25 @@ public class CandidatePanel : Gtk.HBox{ uint page_end_pos = uint.min(page_start_pos + page_size, ncandidates); for (uint i = page_start_pos; i < page_end_pos; i++) candidates += table.get_candidate(i); + + for (uint i = 0; i < page_size; i++) { + IBus.Text? label = table.get_label(i); + if (label != null) + labels += label; + } + + orientation = (IBus.Orientation)table.get_orientation(); } + m_candidate_area.set_candidates(candidates, cursor_in_page, show_cursor); + set_labels(labels); + + if (table != null) { + // Do not change orientation if table is null to avoid recreate + // candidates area. + set_orientation(orientation); + } + if (candidates.length != 0) m_candidate_area.show_all(); else @@ -139,7 +217,21 @@ public class CandidatePanel : Gtk.HBox{ update(); } + public void set_content_type(uint purpose, uint hints) { + m_vertical_writing = + ((hints & IBus.InputHints.VERTICAL_WRITING) != 0); + } + private void update() { + /* Do not call gtk_window_resize() in + * GtkWidgetClass->get_preferred_width() + * because the following warning is shown in GTK 3.20: + * "Allocating size to GtkWindow %x without calling + * gtk_widget_get_preferred_width/height(). How does the code + * know the size to allocate?" + * in gtk_widget_size_allocate_with_baseline() */ + m_toplevel.resize(1, 1); + if (m_candidate_area.get_visible() || m_preedit_label.get_visible() || m_aux_label.get_visible()) @@ -154,30 +246,24 @@ public class CandidatePanel : Gtk.HBox{ m_hseparator.hide(); } - public override void get_preferred_width(out int minimum_width, out int natural_width) { - base.get_preferred_width(out minimum_width, out natural_width); - m_toplevel.resize(1, 1); - } - - public override void get_preferred_height(out int minimum_width, out int natural_width) { - base.get_preferred_height(out minimum_width, out natural_width); - m_toplevel.resize(1, 1); - } - private void create_ui() { m_preedit_label = new Gtk.Label(null); m_preedit_label.set_size_request(20, -1); - m_preedit_label.set_alignment(0.0f, 0.5f); - m_preedit_label.set_padding(8, 0); + m_preedit_label.set_halign(Gtk.Align.START); + m_preedit_label.set_valign(Gtk.Align.CENTER); + m_preedit_label.set_margin_start(8); + m_preedit_label.set_margin_end(8); m_preedit_label.set_no_show_all(true); m_aux_label = new Gtk.Label(null); m_aux_label.set_size_request(20, -1); - m_aux_label.set_alignment(0.0f, 0.5f); - m_aux_label.set_padding(8, 0); + m_aux_label.set_halign(Gtk.Align.START); + m_aux_label.set_valign(Gtk.Align.CENTER); + m_aux_label.set_margin_start(8); + m_aux_label.set_margin_end(8); m_aux_label.set_no_show_all(true); - m_candidate_area = new CandidateArea(m_vertical); + m_candidate_area = new CandidateArea(m_vertical_panel_system); m_candidate_area.candidate_clicked.connect( (w, i, b, s) => candidate_clicked(i, b, s)); m_candidate_area.page_up.connect((c) => page_up()); @@ -211,8 +297,35 @@ public class CandidatePanel : Gtk.HBox{ } private void adjust_window_position() { + if (!m_vertical_writing) + adjust_window_position_horizontal(); + else + adjust_window_position_vertical(); + } + + private Gdk.Rectangle get_monitor_geometry() { + Gdk.Rectangle monitor_area = { 0, }; + + // Use get_monitor_geometry() instead of get_monitor_area(). + // get_monitor_area() excludes docks, but the lookup window should be + // shown over them. +#if VALA_0_34 + Gdk.Monitor monitor = Gdk.Display.get_default().get_monitor_at_point( + m_cursor_location.x, + m_cursor_location.y); + monitor_area = monitor.get_geometry(); +#else + Gdk.Screen screen = Gdk.Screen.get_default(); + int monitor_num = screen.get_monitor_at_point(m_cursor_location.x, + m_cursor_location.y); + screen.get_monitor_geometry(monitor_num, out monitor_area); +#endif + return monitor_area; + } + + private void adjust_window_position_horizontal() { Gdk.Point cursor_right_bottom = { - m_cursor_location.x + m_cursor_location.width, + m_cursor_location.x, m_cursor_location.y + m_cursor_location.height }; @@ -223,20 +336,85 @@ public class CandidatePanel : Gtk.HBox{ cursor_right_bottom.y + allocation.height }; - Gdk.Window root = Gdk.get_default_root_window(); - int root_width = root.get_width(); - int root_height = root.get_height(); + Gdk.Rectangle monitor_area = get_monitor_geometry(); + int monitor_right = monitor_area.x + monitor_area.width; + int monitor_bottom = monitor_area.y + monitor_area.height; int x, y; - if (window_right_bottom.x > root_width) - x = root_width - allocation.width; + if (window_right_bottom.x > monitor_right) + x = monitor_right - allocation.width; else x = cursor_right_bottom.x; + if (x < 0) + x = 0; - if (window_right_bottom.y > root_height) + if (window_right_bottom.y > monitor_bottom) y = m_cursor_location.y - allocation.height; else y = cursor_right_bottom.y; + if (y < 0) + y = 0; + + move(x, y); + } + + private void adjust_window_position_vertical() { + /* Not sure in which top or left cursor appears + * in the vertical writing mode. + * Max (m_cursor_location.width, m_cursor_location.height) + * can be considered as a char size. + */ + int char_size = int.max(m_cursor_location.width, + m_cursor_location.height); + Gdk.Point cursor_right_bottom = { + m_cursor_location.x + char_size, + m_cursor_location.y + char_size + }; + + Gtk.Allocation allocation; + m_toplevel.get_allocation(out allocation); + Gdk.Point hwindow_right_bottom = { + m_cursor_location.x + allocation.width, + cursor_right_bottom.y + allocation.height + }; + Gdk.Point vwindow_left_bottom = { + m_cursor_location.x - allocation.width, + m_cursor_location.y + allocation.height + }; + + Gdk.Rectangle monitor_area = get_monitor_geometry(); + int monitor_right = monitor_area.x + monitor_area.width; + int monitor_bottom = monitor_area.y + monitor_area.height; + + int x, y; + if (!m_candidate_area.get_vertical()) { + if (hwindow_right_bottom.x > monitor_right) + x = monitor_right - allocation.width; + else + x = m_cursor_location.x; + + if (hwindow_right_bottom.y > monitor_bottom) + y = m_cursor_location.y - allocation.height; + else + y = cursor_right_bottom.y; + } else { + if (vwindow_left_bottom.x > monitor_right) + x = monitor_right - allocation.width; + else if (vwindow_left_bottom.x < 0) + x = cursor_right_bottom.x; + else + x = vwindow_left_bottom.x; + + if (vwindow_left_bottom.y > monitor_bottom) + y = monitor_bottom - allocation.height; + else + y = m_cursor_location.y; + } + + if (x < 0) + x = 0; + if (y < 0) + y = 0; move(x, y); } diff --git a/ui/gtk3/emojier.vala b/ui/gtk3/emojier.vala new file mode 100644 index 000000000..69fb8abec --- /dev/null +++ b/ui/gtk3/emojier.vala @@ -0,0 +1,2667 @@ +/* vim:set et sts=4 sw=4: + * + * ibus - The Input Bus + * + * Copyright (c) 2017-2021 Takao Fujiwara + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +public class IBusEmojier : Gtk.ApplicationWindow { + private class EListBox : Gtk.ListBox { + public EListBox() { + GLib.Object( + vexpand : true, + halign : Gtk.Align.FILL, + valign : Gtk.Align.FILL + ); + this.motion_notify_event.connect((e) => { +#if VALA_0_24 + Gdk.EventMotion pe = e; +#else + Gdk.EventMotion *pe = &e; +#endif + if (m_mouse_x == pe.x_root && m_mouse_y == pe.y_root) + return false; + m_mouse_x = pe.x_root; + m_mouse_y = pe.y_root; + var row = this.get_row_at_y((int)e.y); + if (row != null) + this.select_row(row); + return false; + }); + this.enter_notify_event.connect((e) => { + // avoid gtk_button_update_state() + return true; + }); + } + } + private class EBoxRow : Gtk.ListBoxRow { + public EBoxRow(string text) { + this.text = text; + } + + public string text { get; set; } + } + private class EScrolledWindow : Gtk.ScrolledWindow { + public EScrolledWindow(Gtk.Adjustment? hadjustment=null, + Gtk.Adjustment? vadjustment=null) { + GLib.Object( + hscrollbar_policy : Gtk.PolicyType.NEVER, + vscrollbar_policy : Gtk.PolicyType.NEVER, + shadow_type : Gtk.ShadowType.IN, + margin_start : 6, + margin_end : 6, + margin_top : 6, + margin_bottom : 6 + ); + if (hadjustment != null) + set_hadjustment(hadjustment); + if (vadjustment != null) + set_hadjustment(vadjustment); + } + } + private class EGrid : Gtk.Grid { + public EGrid() { + GLib.Object( + row_homogeneous : false, + vexpand : true, + halign : Gtk.Align.FILL, + valign : Gtk.Align.FILL, + row_spacing : 5, + column_spacing : 5, + border_width : 2 + ); + } + } + private class EWhiteLabel : Gtk.Label { + private int m_minimum_width = 0; + private int m_natural_width = 0; + private int m_minimum_height = 0; + private int m_natural_height = 0; + public EWhiteLabel(string text) { + GLib.Object( + name : "IBusEmojierWhiteLabel" + ); + set_label(text); + } + public override void get_preferred_width(out int minimum_width, + out int natural_width) { + if (m_minimum_height == 0 && m_natural_height == 0) { + base.get_preferred_height(out m_minimum_height, + out m_natural_height); + } + var text = get_label(); + var ch = text.get_char(); + if (text.length == 1 && ch == '\t') { + m_minimum_width = minimum_width = m_minimum_height; + m_natural_width = natural_width = m_natural_height; + return; + } + base.get_preferred_width(out minimum_width, out natural_width); + if (text.length == 1 && (ch == '\n' || ch == '\r')) { + minimum_width /= 2; + natural_width /= 2; + m_minimum_width = minimum_width; + m_natural_width = natural_width; + return; + } + if (minimum_width < m_minimum_height) + minimum_width = m_minimum_height; + if (natural_width < m_natural_height) + natural_width = m_natural_height; + m_minimum_width = minimum_width; + m_natural_width = natural_width; + } + public override void get_preferred_height(out int minimum_height, + out int natural_height) { + if (m_minimum_width == 0 && m_natural_width == 0) { + base.get_preferred_width(out m_minimum_width, + out m_natural_width); + } + var text = get_label(); + var ch = text.get_char(); + if (text.length == 1 && ch == '\v') { + m_minimum_height = minimum_height = m_minimum_width; + m_natural_height = natural_height = m_natural_width; + return; + } + base.get_preferred_height(out minimum_height, out natural_height); + if (text.length == 1 && (ch == '\n' || ch == '\r')) { + minimum_height /= 2; + natural_height /= 2; + m_minimum_height = minimum_height; + m_natural_height = natural_height; + return; + } + m_minimum_height = minimum_height; + m_natural_height = natural_height; + } + } + private class ESelectedLabel : EWhiteLabel { + public ESelectedLabel(string text) { + GLib.Object( + name : "IBusEmojierSelectedLabel" + ); + if (text != "") + set_label(text); + } + } + private class EGoldLabel : EWhiteLabel { + public EGoldLabel(string text) { + GLib.Object( + name : "IBusEmojierGoldLabel" + ); + if (text != "") + set_label(text); + } + } + private class EPaddedLabel : Gtk.Label { + public EPaddedLabel(string text, + Gtk.Align align) { + GLib.Object( + name : "IBusEmojierPaddedLabel", + halign : align, + valign : Gtk.Align.CENTER, + margin_start : 20, + margin_end : 20, + margin_top : 6, + margin_bottom : 6 + ); + set_text(text); + } + } + private class EPaddedLabelBox : Gtk.Box { + public EPaddedLabelBox(string text, + Gtk.Align align, + TravelDirection direction=TravelDirection.NONE, + string? caption=null) { + GLib.Object( + name : "IBusEmojierPaddedLabelBox", + orientation : Gtk.Orientation.HORIZONTAL, + spacing : 0 + ); + if (direction == TravelDirection.BACKWARD) { + IconWidget icon; + if (Gtk.Widget.get_default_direction() == + Gtk.TextDirection.RTL) { + icon = new IconWidget("go-previous-rtl-symbolic", + Gtk.IconSize.MENU); + } else { + icon = new IconWidget("go-previous-symbolic", + Gtk.IconSize.MENU); + } + pack_start(icon, false, true, 0); + } + EPaddedLabel label = new EPaddedLabel(text, align); + pack_start(label, true, true, 0); + if (caption != null) { + EPaddedLabel label_r = new EPaddedLabel(caption, + Gtk.Align.END); + pack_end(label_r, true, true, 0); + } + } + } + private class LoadProgressObject : GLib.Object { + public LoadProgressObject() { + } + public signal void deserialize_unicode(uint done, uint total); + } + + + private enum TravelDirection { + NONE, + BACKWARD, + } + + public bool is_wayland { get; set; } + + public const uint BUTTON_CLOSE_BUTTON = 1000; + + private const uint EMOJI_GRID_PAGE = 10; + private const string EMOJI_CATEGORY_FAVORITES = N_("Favorites"); + private const string EMOJI_CATEGORY_OTHERS = N_("Others"); + private const string EMOJI_CATEGORY_UNICODE = N_("Open Unicode choice"); + private const unichar[] EMOJI_VARIANT_LIST = { + 0x1f3fb, 0x1f3fc, 0x1f3fd, 0x1f3fe, 0x1f3ff, 0x200d }; + + // Set the actual default values in the constructor + // because these fields are used for class_init() and static functions, + // e.g. set_emoji_font(), can be called before class_init() is called. + private static string m_current_lang_id; + private static string m_emoji_font_family; + private static int m_emoji_font_size; + private static bool m_emoji_font_changed = false; + private static string[] m_favorites; + private static string[] m_favorite_annotations; + private static int m_emoji_max_seq_len; + private static bool m_has_partial_match; + private static uint m_partial_match_length; + private static uint m_partial_match_condition; + private static bool m_show_emoji_variant = false; + private static int m_default_window_width; + private static int m_default_window_height; + private static GLib.HashTable>? + m_annotation_to_emojis_dict; + private static GLib.HashTable? + m_emoji_to_data_dict; + private static GLib.HashTable>? + m_category_to_emojis_dict; + private static GLib.HashTable>? + m_emoji_to_emoji_variants_dict; + private static GLib.HashTable? + m_unicode_to_data_dict; + private static GLib.HashTable>? + m_name_to_unicodes_dict; + private static GLib.SList m_unicode_block_list; + private static bool m_show_unicode = false; + private static LoadProgressObject m_unicode_progress_object; + private static bool m_loaded_unicode = false; + private static string m_warning_message = ""; + + private ThemedRGBA m_rgba; + private Gtk.Box m_vbox; + /* If emojier is emoji category list or Unicode category list, + * m_annotation is "" and preedit is also "". + * If emojier is candidate mode, m_annotation is an annotation and + * get_current_candidate() returns the current emoji. + * But the current preedit can be "" in candidate mode in case that + * Unicode candidate window has U+0000. + */ + private string m_annotation = ""; + private string? m_backward; + private int m_backward_index = -1; + private EScrolledWindow? m_scrolled_window = null; + private EListBox m_list_box; + private bool m_is_running = false; + private string m_input_context_path = ""; + private GLib.MainLoop? m_loop; + private string? m_result; + /* If m_candidate_panel_is_visible is true, emojier is candidate mode and + * the emoji lookup window is visible. + * If m_candidate_panel_is_visible is false, the emoji lookup window is + * not visible but the mode is not clear. + */ + private bool m_candidate_panel_is_visible; + /* If m_candidate_panel_mode is true, emojier is candidate mode and + * it does not depend on whether the window is visible or not. + * I.E. the first candidate does not show the lookup window and the + * second one shows the window. + * If m_candidate_panel_mode is false, emojier is emoji category list or + * Unicode category list. + */ + private bool m_candidate_panel_mode; + private int m_category_active_index = -1; + private IBus.LookupTable m_lookup_table; + private Gtk.Label[] m_candidates; + private bool m_enter_notify_enable = true; + private uint m_entry_notify_show_id; + private uint m_entry_notify_disable_id; + protected static double m_mouse_x; + protected static double m_mouse_y; + private Gtk.ProgressBar m_unicode_progress_bar; + private uint m_unicode_progress_id; + private Gtk.Label m_unicode_percent_label; + private double m_unicode_percent; + private Gdk.Rectangle m_cursor_location; + private bool m_is_up_side_down = false; + private uint m_redraw_window_id; + private bool m_rebuilding_gui = false; + private uint m_rebuilding_gui_timeout_id; + + public signal void candidate_clicked(uint index, uint button, uint state); + public signal void commit_text(string text); + public signal void cancel(); + + public IBusEmojier(bool is_wayland) { + GLib.Object( + type : Gtk.WindowType.POPUP + ); + this.is_wayland = is_wayland; + + // GLib.ActionEntry accepts const variables only. + var action = new GLib.SimpleAction.stateful( + "variant", + null, + new GLib.Variant.boolean(m_show_emoji_variant)); + action.activate.connect(check_action_variant_cb); + add_action(action); + action = new GLib.SimpleAction("close", null); + action.activate.connect(action_close_cb); + add_action(action); + if (m_current_lang_id == null) + m_current_lang_id = "en"; + if (m_emoji_font_family == null) { + m_emoji_font_family = "Monospace"; + m_emoji_font_changed = true; + } + if (m_emoji_font_size == 0) { + m_emoji_font_size = 16; + m_emoji_font_changed = true; + } + if (m_favorites == null) + m_favorites = {}; + if (m_favorite_annotations == null) + m_favorite_annotations = {}; + + set_css_data(); + + m_vbox = new Gtk.Box(Gtk.Orientation.VERTICAL, 0); + add(m_vbox); + + // The constructor of IBus.LookupTable does not support more than + // 16 pages. + m_lookup_table = new IBus.LookupTable(1, 0, true, true); + m_lookup_table.set_page_size(EMOJI_GRID_PAGE * EMOJI_GRID_PAGE); + + hide.connect(() => { + if (m_loop != null && m_loop.is_running()) + m_loop.quit(); + }); + + size_allocate.connect((w, a) => { + adjust_window_position(); + }); + + if (m_annotation_to_emojis_dict == null) { + reload_emoji_dict(); + } + + get_load_progress_object(); + } + + + private static void reload_emoji_dict() { + init_emoji_dict(); + make_emoji_dict("en"); + if (m_current_lang_id != "en") { + var lang_ids = m_current_lang_id.split("_"); + if (lang_ids.length > 1) { + string sub_id = lang_ids[0]; + make_emoji_dict(sub_id); + } + make_emoji_dict(m_current_lang_id); + } + add_variants_to_component(); + + GLib.List annotations = + m_annotation_to_emojis_dict.get_keys(); + foreach (unowned string annotation in annotations) { + if (m_emoji_max_seq_len < annotation.length) + m_emoji_max_seq_len = annotation.length; + } + update_favorite_emoji_dict(); + } + + + private static void init_emoji_dict() { + m_annotation_to_emojis_dict = + new GLib.HashTable>(GLib.str_hash, + GLib.str_equal); + m_emoji_to_data_dict = + new GLib.HashTable(GLib.str_hash, + GLib.str_equal); + m_category_to_emojis_dict = + new GLib.HashTable>(GLib.str_hash, + GLib.str_equal); + m_emoji_to_emoji_variants_dict = + new GLib.HashTable>(GLib.str_hash, + GLib.str_equal); + if (m_unicode_to_data_dict == null) { + m_unicode_to_data_dict = + new GLib.HashTable( + GLib.direct_hash, + GLib.direct_equal); + } + if (m_name_to_unicodes_dict == null) { + m_name_to_unicodes_dict = + new GLib.HashTable>(GLib.str_hash, + GLib.str_equal); + } + } + + + private static void make_emoji_dict(string lang) { + GLib.SList emoji_list = IBus.EmojiData.load( + Config.PKGDATADIR + "/dicts/emoji-" + lang + ".dict"); + if (emoji_list == null) + return; + foreach (IBus.EmojiData data in emoji_list) { + update_emoji_to_data_dict(data, lang); + update_annotation_to_emojis_dict(data); + update_category_to_emojis_dict(data, lang); + } + } + + + private static void add_variants_to_component() { + string category = "Component"; + unowned GLib.SList hits = + m_category_to_emojis_dict.lookup(category); + if (hits == null) { + category = "component"; + hits = m_category_to_emojis_dict.lookup(category); + } + if (hits == null) + return; + GLib.SList emoji_list = + new GLib.SList(); + GLib.SList annotations = new GLib.SList(); + annotations.append("zero"); + IBus.EmojiData _data; + _data = new IBus.EmojiData("emoji", "\u200d", + "annotations", annotations, + "description", + "ZERO WIDTH JOINER", + "category", category); + emoji_list.append(_data); + annotations = null; + annotations.append("text"); + annotations.append("variation"); + annotations.append("selector"); + _data = new IBus.EmojiData("emoji", "\ufe0e", + "annotations", annotations, + "description", + "VARIATION SELECTOR-15", + "category", category); + emoji_list.append(_data); + annotations = null; + annotations.append("emoji"); + annotations.append("variation"); + annotations.append("selector"); + _data = new IBus.EmojiData("emoji", "\ufe0f", + "annotations", annotations, + "description", + "VARIATION SELECTOR-16", + "category", category); + emoji_list.append(_data); + foreach (IBus.EmojiData data in emoji_list) { + update_emoji_to_data_dict(data, "en"); + update_annotation_to_emojis_dict(data); + update_category_to_emojis_dict(data, "en"); + } + } + + + private static void update_annotation_to_emojis_dict(IBus.EmojiData data) { + string emoji = data.get_emoji(); + unowned GLib.SList annotations = data.get_annotations(); + foreach (string annotation in annotations) { + bool has_emoji = false; + GLib.SList hits = + m_annotation_to_emojis_dict.lookup(annotation).copy_deep( + GLib.strdup); + foreach (string hit_emoji in hits) { + if (hit_emoji == emoji) { + has_emoji = true; + break; + } + } + if (!has_emoji) { + hits.append(emoji); + m_annotation_to_emojis_dict.replace( + annotation, + hits.copy_deep(GLib.strdup)); + } + } + } + + + private static string utf8_code_point(string str) { + var buff = new GLib.StringBuilder(); + int length = str.char_count(); + if (length == 0) { + buff.append("U+%04X".printf(0)); + return buff.str; + } + for (int i = 0; i < length; i++) { + unichar ch = str.get_char(0); + if (i == 0) + buff.append("U+%04X".printf(ch)); + else + buff.append(" %04X".printf(ch)); + str = str.next_char(); + } + return buff.str; + } + + + private static string utf8_entity(string str) { + var buff = new GLib.StringBuilder(); + int length = str.char_count(); + for (int i = 0; i < length; i++) { + unichar ch = str.get_char(0); + switch(ch) { + case '<': + buff.append("<"); + break; + case '>': + buff.append(">"); + break; + case '&': + buff.append("&"); + break; + default: + buff.append_unichar(ch); + break; + } + str = str.next_char(); + } + return buff.str; + } + + + private static void + update_annotations_with_description (IBus.EmojiData data, + string description) { + GLib.SList annotations = + data.get_annotations().copy_deep(GLib.strdup); + bool update_annotations = false; + string former = null; + string later = null; + int index = description.index_of(": "); + if (index > 0) { + former = description.substring(0, index); + if (annotations.find_custom(former, GLib.strcmp) == null) { + annotations.append(former); + update_annotations = true; + } + later = description.substring(index + 2); + } else { + later = description.dup(); + } + var words = later.split(" "); + // If the description has less than 3 words, add it to annotations + // FIXME: How to cast GLib.CompareFunc to strcmp? + if (words.length < 3 && + annotations.find_custom( + later, + GLib.strcmp) == null) { + annotations.append(later); + update_annotations = true; + } + if (update_annotations) + data.set_annotations(annotations.copy_deep(GLib.strdup)); + } + + + private static void update_emoji_to_data_dict(IBus.EmojiData data, + string lang) { + string emoji = data.get_emoji(); + if (lang == "en") { + string description = data.get_description().down(); + update_annotations_with_description (data, description); + m_emoji_to_data_dict.replace(emoji, data); + } else { + unowned IBus.EmojiData? en_data = null; + en_data = m_emoji_to_data_dict.lookup(emoji); + if (en_data == null) { + m_emoji_to_data_dict.insert(emoji, data); + return; + } + string trans_description = data.get_description(); + en_data.set_description(trans_description); + trans_description = trans_description.down(); + update_annotations_with_description (data, trans_description); + unowned GLib.SList annotations = data.get_annotations(); + unowned GLib.SList en_annotations + = en_data.get_annotations(); + foreach (string annotation in en_annotations) { + // FIXME: How to cast GLib.CompareFunc to strcmp? + if (annotations.find_custom( + annotation, + GLib.strcmp) == null) { + annotations.append(annotation.dup()); + } + } + en_data.set_annotations(annotations.copy_deep(GLib.strdup)); + } + } + + + private static void update_category_to_emojis_dict(IBus.EmojiData data, + string lang) { + string emoji = data.get_emoji(); + string category = data.get_category(); + if (category == "") + category = EMOJI_CATEGORY_OTHERS; + if (lang == "en") { + bool has_variant = false; + if (category.ascii_casecmp("component") != 0) { + foreach (unichar ch in EMOJI_VARIANT_LIST) { + if (emoji.index_of_char(ch) >= 0) { + has_variant = true; + break; + } + } + } + // If emoji includes variants (skin colors and items), + // it's escaped in m_emoji_to_emoji_variants_dict and + // not shown by default. + if (has_variant) { + unichar base_ch = emoji.get_char(); + string base_emoji = base_ch.to_string(); + var buff = new GLib.StringBuilder(); + buff.append_unichar(base_ch); + buff.append_unichar(0xfe0f); + if (m_emoji_to_data_dict.lookup(buff.str) != null) + base_emoji = buff.str; + GLib.SList? variants = + m_emoji_to_emoji_variants_dict.lookup( + base_emoji).copy_deep(GLib.strdup); + if (variants.find_custom(emoji, GLib.strcmp) == null) { + if (variants == null) + variants.append(base_emoji); + if (base_emoji != emoji) + variants.append(emoji); + m_emoji_to_emoji_variants_dict.replace( + base_emoji, + variants.copy_deep(GLib.strdup)); + } + return; + } + bool has_emoji = false; + GLib.SList hits = + m_category_to_emojis_dict.lookup(category).copy_deep( + GLib.strdup); + foreach (string hit_emoji in hits) { + if (hit_emoji == emoji) { + has_emoji = true; + break; + } + } + if (!has_emoji) { + hits.append(emoji); + m_category_to_emojis_dict.replace(category, + hits.copy_deep(GLib.strdup)); + } + } + } + + + private static void make_unicode_block_dict() { + m_unicode_block_list = IBus.UnicodeBlock.load( + Config.PKGDATADIR + "/dicts/unicode-blocks.dict"); + foreach (unowned IBus.UnicodeBlock block in m_unicode_block_list) { + unowned string name = block.get_name(); + if (m_emoji_max_seq_len < name.length) + m_emoji_max_seq_len = name.length; + } + } + + + private static void make_unicode_name_dict(Object source_object) { + IBus.UnicodeData.load_async( + Config.PKGDATADIR + "/dicts/unicode-names.dict", + source_object, + null, + (IBus.UnicodeDataLoadAsyncFinish)make_unicode_name_dict_finish); + } + + private static void + make_unicode_name_dict_finish(GLib.SList unicode_list) { + if (unicode_list == null) + return; + foreach (IBus.UnicodeData data in unicode_list) { + update_unicode_to_data_dict(data); + update_name_to_unicodes_dict(data); + } + GLib.List names = + m_name_to_unicodes_dict.get_keys(); + foreach (unowned string name in names) { + if (m_emoji_max_seq_len < name.length) + m_emoji_max_seq_len = name.length; + } + m_loaded_unicode = true; + } + + + private static void update_unicode_to_data_dict(IBus.UnicodeData data) { + unichar code = data.get_code(); + m_unicode_to_data_dict.replace(code, data); + } + + + private static void update_name_to_unicodes_dict(IBus.UnicodeData data) { + unichar code = data.get_code(); + string[] names = {data.get_name().down(), data.get_alias().down()}; + foreach (unowned string name in names) { + if (name == "") + continue; + bool has_code = false; + GLib.SList hits = + m_name_to_unicodes_dict.lookup(name).copy(); + foreach (unichar hit_code in hits) { + if (hit_code == code) { + has_code = true; + break; + } + } + if (!has_code) { + hits.append(code); + m_name_to_unicodes_dict.replace(name, hits.copy()); + } + } + } + + + private void set_css_data() { + Gdk.Display display = Gdk.Display.get_default(); + Gdk.Screen screen = (display != null) ? + display.get_default_screen() : null; + + if (screen == null) { + warning("Could not open display."); + return; + } + // Set en locale because de_DE's decimal_point is ',' instead of '.' + string? backup_locale = + Intl.setlocale(LocaleCategory.NUMERIC, null).dup(); + if (Intl.setlocale(LocaleCategory.NUMERIC, "en_US.UTF-8") == null) { + if (Intl.setlocale(LocaleCategory.NUMERIC, "C.UTF-8") == null) { + if (Intl.setlocale(LocaleCategory.NUMERIC, "C") == null) { + warning("You don't install either en_US.UTF-8 or C.UTF-8 " + + "or C locale"); + } + } + } + if (m_rgba == null) + m_rgba = new ThemedRGBA(this); + uint bg_red = (uint)(m_rgba.normal_bg.red * 255); + uint bg_green = (uint)(m_rgba.normal_bg.green * 255); + uint bg_blue = (uint)(m_rgba.normal_bg.blue * 255); + double bg_alpha = m_rgba.normal_bg.alpha; + string data = + "#IBusEmojierWhiteLabel { background-color: " + + "rgba(%u, %u, %u, %lf); ".printf( + bg_red, bg_green, bg_blue, bg_alpha) + + "font-family: %s; font-size: %dpt; ".printf( + m_emoji_font_family, m_emoji_font_size) + + "border-width: 4px; border-radius: 3px; } "; + + uint fg_red = (uint)(m_rgba.selected_fg.red * 255); + uint fg_green = (uint)(m_rgba.selected_fg.green * 255); + uint fg_blue = (uint)(m_rgba.selected_fg.blue * 255); + double fg_alpha = m_rgba.selected_fg.alpha; + bg_red = (uint)(m_rgba.selected_bg.red * 255); + bg_green = (uint)(m_rgba.selected_bg.green * 255); + bg_blue = (uint)(m_rgba.selected_bg.blue * 255); + bg_alpha = m_rgba.selected_bg.alpha; + data += "#IBusEmojierSelectedLabel { color: " + + "rgba(%u, %u, %u, %lf); ".printf( + fg_red, fg_green, fg_blue, fg_alpha) + + "font-family: %s; font-size: %dpt; ".printf( + m_emoji_font_family, m_emoji_font_size) + + "background-color: " + + "rgba(%u, %u, %u, %lf); ".printf( + bg_red, bg_green, bg_blue, bg_alpha) + + "border-width: 4px; border-radius: 3px; }"; + data += "#IBusEmojierGoldLabel { color: " + + "rgba(%u, %u, %u, %lf); ".printf( + fg_red, fg_green, fg_blue, fg_alpha) + + "font-family: %s; font-size: %dpt; ".printf( + m_emoji_font_family, m_emoji_font_size) + + "background-color: #b09c5f; " + + "border-width: 4px; border-radius: 3px; }"; + + Gtk.CssProvider css_provider = new Gtk.CssProvider(); + try { + css_provider.load_from_data(data, -1); + } catch (GLib.Error e) { + warning("Failed css_provider_from_data: %s", e.message); + return; + } + if (backup_locale != null) + Intl.setlocale(LocaleCategory.NUMERIC, backup_locale); + else + Intl.setlocale(LocaleCategory.NUMERIC, ""); + + Gtk.StyleContext.add_provider_for_screen( + screen, + css_provider, + Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION); + } + + + private void set_fixed_size() { + resize(20, 1); + } + + + private void remove_all_children() { + if (m_list_box != null) { + foreach (Gtk.Widget w in m_list_box.get_children()) { + w.destroy(); + } + m_list_box = null; + } + foreach (Gtk.Widget w in m_vbox.get_children()) { + if (w.name == "IBusEmojierEntry" || + w.name == "IBusEmojierTitleLabelBox") { + continue; + } + w.destroy(); + } + } + + + private void clamp_page() { + Gtk.ListBoxRow row; + if (m_category_active_index >= 0) { + row = m_list_box.get_row_at_index(m_category_active_index); + m_list_box.select_row(row); + } else { + row = m_list_box.get_row_at_index(0); + } + Gtk.Allocation alloc = { 0, 0, 0, 0 }; + row.get_allocation(out alloc); + var adjustment = m_scrolled_window.get_vadjustment(); + adjustment.clamp_page(alloc.y, alloc.y + alloc.height); + return_if_fail(m_category_active_index >= 0); + m_lookup_table.set_cursor_pos((uint)m_category_active_index); + } + + + private void show_category_list() { + // Do not call remove_all_children() to work adjustment.clamp_page() + // with PageUp/Down. + // After show_candidate_panel() is called, m_category_active_index + // is saved for Escape key but m_list_box is null by + // remove_all_children(). + if (m_category_active_index >= 0 && m_list_box != null) { + var row = m_list_box.get_row_at_index(m_category_active_index); + m_list_box.select_row(row); + return; + } + if (m_category_active_index < 0) + m_category_active_index = 0; + remove_all_children(); + m_scrolled_window = new EScrolledWindow(); + set_fixed_size(); + + m_vbox.add(m_scrolled_window); + Gtk.Viewport viewport = new Gtk.Viewport(null, null); + m_scrolled_window.add(viewport); + + m_list_box = new EListBox(); + viewport.add(m_list_box); + Gtk.Adjustment adjustment = m_scrolled_window.get_vadjustment(); + m_list_box.set_adjustment(adjustment); + m_list_box.row_activated.connect((box, gtkrow) => { + m_category_active_index = gtkrow.get_index(); + EBoxRow row = gtkrow as EBoxRow; + show_emoji_for_category(row.text); + show_all(); + }); + + uint ncandidates = m_lookup_table.get_number_of_candidates(); + for (uint i = 0; i < ncandidates; i++) { + string category = m_lookup_table.get_candidate(i).text; + EBoxRow row = new EBoxRow(category); + EPaddedLabelBox widget = + new EPaddedLabelBox(_(category), Gtk.Align.CENTER); + row.add(widget); + m_list_box.add(row); + if (i == m_category_active_index) + m_list_box.select_row(row); + } + + m_scrolled_window.show_all(); + if (m_category_active_index == -1) + m_list_box.unselect_all(); + m_list_box.invalidate_filter(); + m_list_box.set_selection_mode(Gtk.SelectionMode.SINGLE); + } + + + private void show_emoji_for_category(string category) { + if (category == EMOJI_CATEGORY_FAVORITES) { + m_lookup_table.clear(); + m_candidate_panel_mode = true; + foreach (unowned string favorate in m_favorites) { + IBus.Text text = new IBus.Text.from_string(favorate); + m_lookup_table.append_candidate(text); + } + m_backward = category; + } else if (category == EMOJI_CATEGORY_UNICODE) { + m_category_active_index = -1; + m_show_unicode = true; + update_unicode_blocks(); + return; + } else { + // Use copy_deep() since vala 0.43.4 does not allow to assign + // a weak pointer to the full one in SList: + // emojier.vala:885.48-886.62: error: Assignment: Cannot convert + // from `GLib.SList' to `GLib.SList?' + GLib.SList emojis = + m_category_to_emojis_dict.lookup(category).copy_deep( + GLib.strdup); + m_lookup_table.clear(); + m_candidate_panel_mode = true; + foreach (unowned string emoji in emojis) { + IBus.Text text = new IBus.Text.from_string(emoji); + m_lookup_table.append_candidate(text); + } + m_backward = category; + } + m_annotation = m_lookup_table.get_candidate(0).text; + // Restore the cursor position before the special table of + // emoji variants is shown. + if (m_backward_index >= 0) { + m_lookup_table.set_cursor_pos((uint)m_backward_index); + m_backward_index = -1; + } + } + + + private void show_emoji_variants(GLib.SList? emojis) { + m_backward_index = (int)m_lookup_table.get_cursor_pos(); + m_lookup_table.clear(); + foreach (unowned string emoji in emojis) { + IBus.Text text = new IBus.Text.from_string(emoji); + m_lookup_table.append_candidate(text); + } + } + + + private void show_unicode_blocks() { + // Do not call remove_all_children() to work adjustment.clamp_page() + // with PageUp/Down. + // After show_candidate_panel() is called, m_category_active_index + // is saved for Escape key but m_list_box is null by + // remove_all_children(). + if (m_category_active_index >= 0 && m_list_box != null) { + var row = m_list_box.get_row_at_index(m_category_active_index); + m_list_box.select_row(row); + return; + } + if (m_category_active_index < 0) + m_category_active_index = 0; + m_show_unicode = true; + if (m_default_window_width == 0 && m_default_window_height == 0) + get_size(out m_default_window_width, out m_default_window_height); + remove_all_children(); + set_fixed_size(); + + EPaddedLabelBox label = + new EPaddedLabelBox(_("Bring back emoji choice"), + Gtk.Align.CENTER, + TravelDirection.BACKWARD); + Gtk.Button button = new Gtk.Button(); + button.add(label); + m_vbox.add(button); + button.show_all(); + button.button_press_event.connect((w, e) => { + m_category_active_index = -1; + m_show_unicode = false; + start_rebuild_gui(false); + hide_candidate_panel(); + show_all(); + return true; + }); + m_scrolled_window = new EScrolledWindow(); + m_vbox.add(m_scrolled_window); + Gtk.Viewport viewport = new Gtk.Viewport(null, null); + m_scrolled_window.add(viewport); + + m_list_box = new EListBox(); + viewport.add(m_list_box); + Gtk.Adjustment adjustment = m_scrolled_window.get_vadjustment(); + m_list_box.set_adjustment(adjustment); + m_list_box.row_activated.connect((box, gtkrow) => { + m_category_active_index = gtkrow.get_index(); + EBoxRow row = gtkrow as EBoxRow; + show_unicode_for_block(row.text); + show_candidate_panel(); + }); + + uint n = 0; + foreach (unowned IBus.UnicodeBlock block in m_unicode_block_list) { + string name = block.get_name(); + string caption = "U+%08X".printf(block.get_start()); + EBoxRow row = new EBoxRow(name); + EPaddedLabelBox widget = + new EPaddedLabelBox(_(name), + Gtk.Align.CENTER, + TravelDirection.NONE, + caption); + row.add(widget); + m_list_box.add(row); + if (n++ == m_category_active_index) { + m_list_box.select_row(row); + } + } + + set_size_request(-1, m_default_window_height + 100); + m_scrolled_window.set_policy(Gtk.PolicyType.NEVER, + Gtk.PolicyType.AUTOMATIC); + m_scrolled_window.show_all(); + if (m_category_active_index == -1) + m_list_box.unselect_all(); + m_list_box.invalidate_filter(); + m_list_box.set_selection_mode(Gtk.SelectionMode.SINGLE); + Gtk.ListBoxRow row = m_list_box.get_row_at_index((int)n - 1); + + // If clamp_page() would be called without the allocation signal, + // the jumping page could be failed when returns from + // show_unicode_for_block() with Escape key. + row.size_allocate.connect((w, a) => { + clamp_page(); + }); + } + + + private void show_unicode_for_block(string block_name) { + unichar start = 0; + unichar end = 0; + foreach (unowned IBus.UnicodeBlock block in m_unicode_block_list) { + string name = block.get_name(); + if (block_name == name) { + start = block.get_start(); + end = block.get_end(); + } + } + m_lookup_table.clear(); + m_candidate_panel_mode = true; + for (unichar ch = start; ch < end; ch++) { + unowned IBus.UnicodeData? data = + m_unicode_to_data_dict.lookup(ch); + if (data == null) + continue; + IBus.Text text = new IBus.Text.from_unichar(ch); + m_lookup_table.append_candidate(text); + } + m_backward = block_name; + if (m_lookup_table.get_number_of_candidates() > 0) + m_annotation = m_lookup_table.get_candidate(0).text; + } + + + private void show_arrow_buttons() { + Gtk.Button next_button = new Gtk.Button(); + next_button.clicked.connect(() => { + m_lookup_table.page_down(); + show_candidate_panel(); + }); + next_button.set_image(new Gtk.Image.from_icon_name( + "go-down", + Gtk.IconSize.MENU)); + next_button.set_relief(Gtk.ReliefStyle.NONE); + next_button.set_tooltip_text(_("Page Down")); + + Gtk.Button prev_button = new Gtk.Button(); + prev_button.clicked.connect(() => { + m_lookup_table.page_up(); + show_candidate_panel(); + }); + prev_button.set_image(new Gtk.Image.from_icon_name( + "go-up", + Gtk.IconSize.MENU)); + prev_button.set_relief(Gtk.ReliefStyle.NONE); + prev_button.set_tooltip_text(_("Page Up")); + + var menu = new GLib.Menu(); + menu.append(_("Show emoji variants"), "win.variant"); + menu.append(_("Close"), "win.close"); + var menu_button = new Gtk.MenuButton(); + menu_button.set_direction(Gtk.ArrowType.NONE); + menu_button.set_valign(Gtk.Align.CENTER); + menu_button.set_menu_model(menu); + menu_button.set_relief(Gtk.ReliefStyle.NONE); + menu_button.set_tooltip_text(_("Menu")); + + IBus.Text text = this.get_title_text(); + Pango.AttrList attrs = get_pango_attr_list_from_ibus_text(text); + Gtk.Label title_label = new Gtk.Label(text.get_text()); + title_label.set_attributes(attrs); + + Gtk.Button? warning_button = null; + if (m_warning_message != "") { + warning_button = new Gtk.Button(); + warning_button.set_tooltip_text( + _("Click to view a warning message")); + warning_button.set_image(new Gtk.Image.from_icon_name( + "dialog-warning", + Gtk.IconSize.MENU)); + warning_button.set_relief(Gtk.ReliefStyle.NONE); + warning_button.clicked.connect(() => { + Gtk.Label warning_label = new Gtk.Label(m_warning_message); + warning_label.set_line_wrap(true); + warning_label.set_max_width_chars(40); + Gtk.Popover popover = new Gtk.Popover(warning_button); + popover.add(warning_label); + popover.show_all(); + popover.popup(); + }); + } + + Gtk.Box buttons_hbox = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 0); + Gtk.Label state_label = new Gtk.Label(null); + state_label.set_size_request(10, -1); + state_label.set_halign(Gtk.Align.CENTER); + state_label.set_valign(Gtk.Align.CENTER); + buttons_hbox.pack_start(state_label, false, true, 0); + buttons_hbox.pack_start(prev_button, false, false, 0); + buttons_hbox.pack_start(next_button, false, false, 0); + buttons_hbox.pack_start(title_label, false, false, 0); + if (warning_button != null) + buttons_hbox.pack_start(warning_button, false, false, 0); + buttons_hbox.pack_end(menu_button, false, false, 0); + m_vbox.pack_start(buttons_hbox, false, false, 0); + buttons_hbox.show_all(); + } + + + private void show_unicode_progress_bar() { + m_unicode_progress_bar = new Gtk.ProgressBar(); + m_unicode_progress_bar.set_ellipsize(Pango.EllipsizeMode.MIDDLE); + m_unicode_progress_bar.set_halign(Gtk.Align.CENTER); + m_unicode_progress_bar.set_valign(Gtk.Align.CENTER); + m_vbox.add(m_unicode_progress_bar); + m_unicode_progress_bar.show(); + var hbox = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 5); + hbox.set_halign(Gtk.Align.CENTER); + hbox.set_valign(Gtk.Align.CENTER); + m_vbox.add(hbox); + var label = new Gtk.Label(_("Loading a Unicode dictionary:")); + hbox.pack_start(label, false, true, 0); + m_unicode_percent_label = new Gtk.Label(""); + hbox.pack_start(m_unicode_percent_label, false, true, 0); + hbox.show_all(); + + m_unicode_progress_object.deserialize_unicode.connect((i, n) => { + m_unicode_percent = (double)i / n; + }); + if (m_unicode_progress_id > 0) { + GLib.Source.remove(m_unicode_progress_id); + } + m_unicode_progress_id = GLib.Timeout.add(100, () => { + m_unicode_progress_id = 0; + m_unicode_progress_bar.set_fraction(m_unicode_percent); + m_unicode_percent_label.set_text( + "%.0f%%\n".printf(m_unicode_percent * 100)); + m_unicode_progress_bar.show(); + m_unicode_percent_label.show(); + if (m_loaded_unicode) { + show_candidate_panel(); + } + return !m_loaded_unicode; + }); + } + + + private static string? check_unicode_point(string annotation) { + string unicode_point = null; + // Add "0x" because uint64.ascii_strtoull() is not accessible + // and need to use uint64.parse() + var buff = new GLib.StringBuilder("0x"); + var retval = new GLib.StringBuilder(); + for (int i = 0; i < annotation.char_count(); i++) { + unichar ch = annotation.get_char(i); + if (ch == 0) + return null; + if (ch.isspace()) { + unichar code = (unichar)uint64.parse(buff.str); + buff.assign("0x"); + if (!code.validate()) + return null; + retval.append(code.to_string()); + continue; + } + if (!ch.isxdigit()) + return null; + buff.append_unichar(ch); + } + unichar code = (unichar)uint64.parse(buff.str); + if (!code.validate()) + return null; + retval.append(code.to_string()); + unicode_point = retval.str; + if (unicode_point == null) + return null; + return unicode_point; + } + + + private static GLib.SList? + lookup_emojis_from_annotation(string annotation) { + GLib.SList? total_emojis = null; + unowned GLib.SList? sub_emojis = null; + unowned GLib.SList? sub_exact_unicodes = null; + unowned GLib.SList? sub_unicodes = null; + int length = annotation.length; + if (m_has_partial_match && length >= m_partial_match_length) { + GLib.SList? sorted_emojis = null; + foreach (unowned string key in + m_annotation_to_emojis_dict.get_keys()) { + if (key.length < length) + continue; + bool matched = false; + switch(m_partial_match_condition) { + case 0: + if (key.has_prefix(annotation)) + matched = true; + break; + case 1: + if (key.has_suffix(annotation)) + matched = true; + break; + case 2: + if (key.index_of(annotation) >= 0) + matched = true; + break; + default: + break; + } + if (!matched) + continue; + sub_emojis = m_annotation_to_emojis_dict.lookup(key); + foreach (unowned string emoji in sub_emojis) { + if (total_emojis.find_custom(emoji, GLib.strcmp) == null) { + sorted_emojis.insert_sorted(emoji, GLib.strcmp); + } + } + } + foreach (string emoji in sorted_emojis) { + if (total_emojis.find_custom(emoji, GLib.strcmp) == null) { + total_emojis.append(emoji); + } + } + } else { + sub_emojis = m_annotation_to_emojis_dict.lookup(annotation); + foreach (unowned string emoji in sub_emojis) + total_emojis.append(emoji); + } + sub_exact_unicodes = m_name_to_unicodes_dict.lookup(annotation); + foreach (unichar code in sub_exact_unicodes) { + string ch = code.to_string(); + if (total_emojis.find_custom(ch, GLib.strcmp) == null) { + total_emojis.append(ch); + } + } + if (length >= m_partial_match_length) { + GLib.SList? sorted_unicodes = null; + foreach (unowned string key in m_name_to_unicodes_dict.get_keys()) { + bool matched = false; + if (key.index_of(annotation) >= 0) + matched = true; + if (!matched) + continue; + sub_unicodes = m_name_to_unicodes_dict.lookup(key); + foreach (unichar code in sub_unicodes) { + string ch = code.to_string(); + if (sorted_unicodes.find_custom(ch, GLib.strcmp) == null) { + sorted_unicodes.insert_sorted(ch, GLib.strcmp); + } + } + } + foreach (string ch in sorted_unicodes) { + if (total_emojis.find_custom(ch, GLib.strcmp) == null) { + total_emojis.append(ch); + } + } + } + return total_emojis; + } + + + private void update_candidate_window() { + string annotation = m_annotation; + if (annotation.length == 0) { + m_backward = null; + return; + } + m_lookup_table.clear(); + m_category_active_index = -1; + if (annotation.length > m_emoji_max_seq_len) { + return; + } + string? unicode_point = check_unicode_point(annotation); + GLib.SList? total_emojis = null; + if (annotation.ascii_casecmp("history") == 0) { + for (int i = 0; i < m_favorites.length; i++) { + total_emojis.append(m_favorites[i].dup()); + } + } + if (total_emojis == null) + total_emojis = lookup_emojis_from_annotation(annotation); + if (total_emojis == null) { + /* Users can type title strings against lower case. + * E.g. "Smile" against "smile" + * But the dictionary has the case sensitive annotations. + * E.g. ":D" and ":q" + * So need to call lookup_emojis_from_annotation() twice. + */ + annotation = annotation.down(); + total_emojis = lookup_emojis_from_annotation(annotation); + } + if (total_emojis == null && unicode_point == null) { + return; + } + if (unicode_point != null) { + IBus.Text text = new IBus.Text.from_string(unicode_point); + m_lookup_table.append_candidate(text); + } + foreach (unowned string emoji in total_emojis) { + IBus.Text text = new IBus.Text.from_string(emoji); + m_lookup_table.append_candidate(text); + } + m_candidate_panel_is_visible = + (m_lookup_table.get_number_of_candidates() > 0) ? true : false; + m_candidate_panel_mode = true; + } + + + private void update_category_list() { + // Always update m_lookup_table even if the contents are same + // because m_category_active_index needs to be kept after + // bring back this API from show_emoji_for_category(). + reset_window_mode(); + m_lookup_table.clear(); + IBus.Text text; + if (m_favorites.length > 0) { + text = new IBus.Text.from_string(EMOJI_CATEGORY_FAVORITES); + m_lookup_table.append_candidate(text); + } + GLib.List categories = + m_category_to_emojis_dict.get_keys(); + // FIXME: How to cast GLib.CompareFunc to strcmp? + categories.sort((a, b) => { + if (a == EMOJI_CATEGORY_OTHERS && b != EMOJI_CATEGORY_OTHERS) + return 1; + else if (a != EMOJI_CATEGORY_OTHERS && b == EMOJI_CATEGORY_OTHERS) + return -1; + return GLib.strcmp(_(a), _(b)); + }); + foreach (unowned string category in categories) { + // "Others" category includes next unicode chars and fonts do not + // support the base and varints yet. + if (category == EMOJI_CATEGORY_OTHERS) + continue; + text = new IBus.Text.from_string(category); + m_lookup_table.append_candidate(text); + } + if (m_unicode_block_list.length() > 0) { + text = new IBus.Text.from_string(EMOJI_CATEGORY_UNICODE); + m_lookup_table.append_candidate(text); + } + // Do not set m_category_active_index to 0 here so that + // show_category_list() handles it. + } + + + private void update_unicode_blocks() { + // Always update m_lookup_table even if the contents are same + // because m_category_active_index needs to be kept after + // bring back this API from show_emoji_for_category(). + reset_window_mode(); + m_lookup_table.clear(); + m_show_unicode = true; + foreach (unowned IBus.UnicodeBlock block in m_unicode_block_list) { + string name = block.get_name(); + IBus.Text text = new IBus.Text.from_string(name); + m_lookup_table.append_candidate(text); + } + // Do not set m_category_active_index to 0 here so that + // show_unicode_blocks() handles it. + } + + + private void show_code_point_description(string text) { + EPaddedLabelBox widget_code = new EPaddedLabelBox( + _("Code point: %s").printf(utf8_code_point(text)), + Gtk.Align.START); + m_vbox.add(widget_code); + widget_code.show_all(); + if (m_emoji_to_emoji_variants_dict.lookup(text) != null) { + EPaddedLabelBox widget_has_variant = new EPaddedLabelBox( + _("Has emoji variants"), + Gtk.Align.START); + m_vbox.add(widget_has_variant); + widget_has_variant.show_all(); + } + } + + + private void show_candidate_panel() { + remove_all_children(); + set_fixed_size(); + if (m_emoji_font_changed) { + set_css_data(); + m_emoji_font_changed = false; + } + uint page_size = m_lookup_table.get_page_size(); + uint ncandidates = m_lookup_table.get_number_of_candidates(); + uint cursor = m_lookup_table.get_cursor_pos(); + uint page_start_pos = cursor / page_size * page_size; + uint page_end_pos = uint.min(page_start_pos + page_size, ncandidates); + Gtk.Button? backward_button = null; + if (m_backward != null) { + string backward_desc = _(m_backward); + EPaddedLabelBox label = + new EPaddedLabelBox(backward_desc, + Gtk.Align.CENTER, + TravelDirection.BACKWARD); + backward_button = new Gtk.Button(); + backward_button.add(label); + backward_button.button_press_event.connect((w, e) => { + // Bring back to emoji candidate panel in case + // m_show_emoji_variant is enabled and shows variants. + if (m_backward_index >= 0 && m_backward != null) { + show_emoji_for_category(m_backward); + show_candidate_panel(); + } else { + start_rebuild_gui(false); + hide_candidate_panel(); + show_all(); + } + return true; + }); + } + EGrid grid = new EGrid(); + int n = 0; + for (uint i = page_start_pos; i < page_end_pos; i++) { + string text = m_lookup_table.get_candidate(i).text; + bool has_variant = + (m_emoji_to_emoji_variants_dict.lookup(text) != null); + Gtk.Label label; + // If 'i' is the cursor position, use the selected color. + // If the emoji has emoji variants, use the gold color. + // Otherwise the white color. + if (i == cursor) { + label = new ESelectedLabel(text) as Gtk.Label; + } else if (m_show_emoji_variant && has_variant && + m_backward_index < 0) { + label = new EGoldLabel(text) as Gtk.Label; + } else { + label = new EWhiteLabel(text) as Gtk.Label; + } + if (text.char_count() > 2) { + string font_family = m_emoji_font_family; + int font_size = m_emoji_font_size - 2; + string emoji_font = "%s %d".printf(font_family, font_size); + string markup = "%s". + printf(emoji_font, utf8_entity(text)); + label.set_markup(markup); + } + label.set_halign(Gtk.Align.FILL); + label.set_valign(Gtk.Align.FILL); + Gtk.EventBox candidate_ebox = new Gtk.EventBox(); + candidate_ebox.add_events(Gdk.EventMask.POINTER_MOTION_MASK); + candidate_ebox.add(label); + // Make a copy of i to workaround a bug in vala. + // https://bugzilla.gnome.org/show_bug.cgi?id=628336 + uint index = i; + candidate_ebox.button_press_event.connect((w, e) => { + candidate_clicked(index, e.button, e.state); + return true; + }); + candidate_ebox.motion_notify_event.connect((e) => { + // m_enter_notify_enable is added because + // enter_notify_event conflicts with keyboard operations. + if (!m_enter_notify_enable) + return false; + if (m_lookup_table.get_cursor_pos() == index) + return false; +#if VALA_0_24 + Gdk.EventMotion pe = e; +#else + Gdk.EventMotion *pe = &e; +#endif + if (m_mouse_x == pe.x_root && m_mouse_y == pe.y_root) + return false; + m_mouse_x = pe.x_root; + m_mouse_y = pe.y_root; + + m_lookup_table.set_cursor_pos(index); + if (m_entry_notify_show_id > 0 && + GLib.MainContext.default().find_source_by_id( + m_entry_notify_show_id) != null) { + GLib.Source.remove(m_entry_notify_show_id); + } + // If timeout is not added, memory leak happens and + // button_press_event signal does not work above. + m_entry_notify_show_id = GLib.Timeout.add(100, () => { + show_candidate_panel(); + return false; + }); + return false; + }); + grid.attach(candidate_ebox, + n % (int)EMOJI_GRID_PAGE, n / (int)EMOJI_GRID_PAGE, + 1, 1); + n++; + + m_candidates += label; + } + m_candidate_panel_is_visible = true; + if (!m_is_up_side_down) { + show_arrow_buttons(); + if (backward_button != null) { + m_vbox.add(backward_button); + backward_button.show_all(); + } + if (n > 0) { + m_vbox.add(grid); + grid.show_all(); + show_description(); + } + if (!m_loaded_unicode) + show_unicode_progress_bar(); + } else { + if (!m_loaded_unicode) + show_unicode_progress_bar(); + if (n > 0) { + show_description(); + m_vbox.add(grid); + grid.show_all(); + } + if (backward_button != null) { + m_vbox.add(backward_button); + backward_button.show_all(); + } + show_arrow_buttons(); + } + } + + + private void show_description() { + uint cursor = m_lookup_table.get_cursor_pos(); + string text = m_lookup_table.get_candidate(cursor).text; + unowned IBus.EmojiData? data = m_emoji_to_data_dict.lookup(text); + if (data != null) { + show_emoji_description(data, text); + return; + } + if (text.char_count() <= 1) { + unichar code = text.get_char(); + unowned IBus.UnicodeData? udata = + m_unicode_to_data_dict.lookup(code); + if (udata != null) { + show_unicode_description(udata, text); + return; + } + } + EPaddedLabelBox widget = new EPaddedLabelBox( + _("Description: %s").printf(_("None")), + Gtk.Align.START); + m_vbox.add(widget); + widget.show_all(); + show_code_point_description(text); + } + + + private void show_emoji_description(IBus.EmojiData data, + string text) { + unowned string description = data.get_description(); + { + EPaddedLabelBox widget = new EPaddedLabelBox( + _("Description: %s").printf(description), + Gtk.Align.START); + m_vbox.add(widget); + widget.show_all(); + } + GLib.SList annotations = + data.get_annotations().copy_deep(GLib.strdup); + var buff = new GLib.StringBuilder(); + int i = 0; + foreach (unowned string annotation in annotations) { + if (i++ == 0) + buff.append_printf(_("Annotations: %s"), annotation); + else + buff.append_printf(" | %s", annotation); + if (buff.str.char_count() > 30) { + EPaddedLabelBox widget = + new EPaddedLabelBox(buff.str, + Gtk.Align.START); + m_vbox.add(widget); + widget.show_all(); + buff.erase(); + } + } + if (buff.str != "") { + EPaddedLabelBox widget = new EPaddedLabelBox(buff.str, + Gtk.Align.START); + m_vbox.add(widget); + widget.show_all(); + } + show_code_point_description(text); + } + + private void show_unicode_description(IBus.UnicodeData data, + string text) { + unowned string name = data.get_name(); + { + EPaddedLabelBox widget = new EPaddedLabelBox( + _("Name: %s").printf(name), + Gtk.Align.START); + m_vbox.add(widget); + widget.show_all(); + } + unowned string alias = data.get_alias(); + { + EPaddedLabelBox widget = new EPaddedLabelBox( + _("Alias: %s").printf(alias), + Gtk.Align.START); + m_vbox.add(widget); + widget.show_all(); + } + show_code_point_description(text); + } + + + private void hide_candidate_panel() { + hide(); + m_enter_notify_enable = true; + m_annotation = ""; + // Call remove_all_children() instead of show_category_list() + // so that show_category_list do not remove children with + // PageUp/PageDown. + remove_all_children(); + if (m_show_unicode) + update_unicode_blocks(); + else + update_category_list(); + } + + + private void enter_notify_disable_with_timer() { + // Enable keyboard operation and disable mouse operation. + m_enter_notify_enable = false; + if (m_entry_notify_disable_id > 0) { + GLib.Source.remove(m_entry_notify_disable_id); + } + // Bring back the mouse operation after a timeout. + m_entry_notify_show_id = GLib.Timeout.add(100, () => { + m_enter_notify_enable = true; + return false; + }); + } + + + private void candidate_panel_cursor_down() { + enter_notify_disable_with_timer(); + uint ncandidates = m_lookup_table.get_number_of_candidates(); + uint cursor = m_lookup_table.get_cursor_pos(); + if ((cursor + EMOJI_GRID_PAGE) < ncandidates) { + m_lookup_table.set_cursor_pos(cursor + EMOJI_GRID_PAGE); + } else if (cursor % EMOJI_GRID_PAGE < ncandidates) { + m_lookup_table.set_cursor_pos(cursor % EMOJI_GRID_PAGE); + } else { + m_lookup_table.set_cursor_pos(0); + } + } + + + private void candidate_panel_cursor_up() { + enter_notify_disable_with_timer(); + int ncandidates = (int)m_lookup_table.get_number_of_candidates(); + int cursor = (int)m_lookup_table.get_cursor_pos(); + int highest_pos = + ((ncandidates - 1)/ (int)EMOJI_GRID_PAGE * (int)EMOJI_GRID_PAGE) + + (cursor % (int)EMOJI_GRID_PAGE); + if ((cursor - (int)EMOJI_GRID_PAGE) >= 0) { + m_lookup_table.set_cursor_pos(cursor - (int)EMOJI_GRID_PAGE); + } else if (highest_pos < ncandidates) { + m_lookup_table.set_cursor_pos(highest_pos); + } else { + m_lookup_table.set_cursor_pos(0); + } + } + + + private int get_page_num() { + if (m_category_active_index < 0) + m_category_active_index = 0; + var row = m_list_box.get_row_at_index(m_category_active_index); + Gtk.Allocation alloc = { 0, 0, 0, 0 }; + row.get_allocation(out alloc); + var adjustment = m_scrolled_window.get_vadjustment(); + var page_size = (int)adjustment.get_page_size(); + int page_num = page_size / alloc.height; + page_num += ((page_size % alloc.height) > 0) ? 1 : 0; + return page_num; + } + + + private bool category_list_cursor_move(uint keyval) { + return_val_if_fail (m_list_box != null, false); + GLib.List list = m_list_box.get_children(); + int length = (int)list.length(); + if (length == 0) + return false; + switch(keyval) { + case Gdk.Key.Down: + if (++m_category_active_index == length) + m_category_active_index = 0; + break; + case Gdk.Key.Up: + if (--m_category_active_index < 0) + m_category_active_index = length - 1; + break; + case Gdk.Key.Home: + m_category_active_index = 0; + break; + case Gdk.Key.End: + m_category_active_index = length - 1; + break; + case Gdk.Key.Page_Down: + var page_num = get_page_num(); + if (m_category_active_index + 1 == length) + m_category_active_index = 0; + else if (m_category_active_index + page_num >= length) + m_category_active_index = length - 1; + else + m_category_active_index += page_num; + break; + case Gdk.Key.Page_Up: + var page_num = get_page_num(); + if (m_category_active_index == 0) + m_category_active_index = length - 1; + else if (m_category_active_index - page_num < 0) + m_category_active_index = 0; + else + m_category_active_index -= page_num; + break; + } + var row = m_list_box.get_selected_row(); + if (row != null) + m_list_box.unselect_row(row); + clamp_page (); + return true; + } + + + private void start_rebuild_gui(bool initial_launching) { + if (!this.is_wayland) + return; + if (!initial_launching && !base.get_visible()) + return; + if (initial_launching && base.get_visible()) + return; + if (m_rebuilding_gui_timeout_id != 0) { + GLib.Source.remove(m_rebuilding_gui_timeout_id); + m_rebuilding_gui_timeout_id = 0; + } + + m_rebuilding_gui = true; + m_rebuilding_gui_timeout_id = + GLib.Timeout.add_seconds(10, () => { + if (!m_rebuilding_gui) { + m_rebuilding_gui_timeout_id = 0; + return false; + } + warning("Rebuilding GUI is time out."); + m_rebuilding_gui = false; + m_rebuilding_gui_timeout_id = 0; + return false; + }, + GLib.Priority.DEFAULT_IDLE); + } + + + public bool has_variants(uint index, + bool need_commit_signal) { + if (index >= m_lookup_table.get_number_of_candidates()) + return false; + string text = m_lookup_table.get_candidate(index).text; + unowned GLib.SList? emojis = + m_emoji_to_emoji_variants_dict.lookup(text); + if (m_show_emoji_variant && emojis != null && + m_backward_index < 0) { + show_emoji_variants(emojis); + return true; + } + m_result = text; + if (need_commit_signal) + commit_text(text); + return false; + } + + + public bool key_press_cursor_horizontal(uint keyval, + uint modifiers) { + assert (keyval == Gdk.Key.Left || keyval == Gdk.Key.Right); + + if (m_candidate_panel_mode && + m_lookup_table.get_number_of_candidates() > 0) { + enter_notify_disable_with_timer(); + if (keyval == Gdk.Key.Left) + m_lookup_table.cursor_up(); + else if (keyval == Gdk.Key.Right) + m_lookup_table.cursor_down(); + } else { + // For Gdk.Key.f and Gdk.Key.b + if (keyval == Gdk.Key.Left) + keyval = Gdk.Key.Up; + else if (keyval == Gdk.Key.Right) + keyval = Gdk.Key.Down; + return category_list_cursor_move(keyval); + } + return true; + } + + + public bool key_press_cursor_vertical(uint keyval, + uint modifiers) { + assert (keyval == Gdk.Key.Down || keyval == Gdk.Key.Up || + keyval == Gdk.Key.Page_Down || keyval == Gdk.Key.Page_Up); + + if ((modifiers & Gdk.ModifierType.SHIFT_MASK) != 0) { + if (keyval == Gdk.Key.Down) + keyval = Gdk.Key.Page_Down; + else if (keyval == Gdk.Key.Up) + keyval = Gdk.Key.Page_Up; + } + if ((m_candidate_panel_is_visible || m_annotation.length > 0) + && m_lookup_table.get_number_of_candidates() > 0) { + switch (keyval) { + case Gdk.Key.Down: + candidate_panel_cursor_down(); + break; + case Gdk.Key.Up: + candidate_panel_cursor_up(); + break; + case Gdk.Key.Page_Down: + enter_notify_disable_with_timer(); + m_lookup_table.page_down(); + break; + case Gdk.Key.Page_Up: + enter_notify_disable_with_timer(); + m_lookup_table.page_up(); + break; + } + } else { + return category_list_cursor_move(keyval); + } + return true; + } + + + public bool key_press_cursor_home_end(uint keyval, + uint modifiers) { + assert (keyval == Gdk.Key.Home || keyval == Gdk.Key.End); + + uint ncandidates = m_lookup_table.get_number_of_candidates(); + if (m_candidate_panel_mode && ncandidates > 0) { + enter_notify_disable_with_timer(); + if (keyval == Gdk.Key.Home) { + m_lookup_table.set_cursor_pos(0); + } else if (keyval == Gdk.Key.End) { + m_lookup_table.set_cursor_pos(ncandidates - 1); + } + return true; + } + return category_list_cursor_move(keyval); + } + + + public bool key_press_escape() { + if (m_show_unicode) { + if (!m_candidate_panel_is_visible) { + m_show_unicode = false; + m_category_active_index = -1; + } + start_rebuild_gui(false); + hide_candidate_panel(); + return true; + } else if (m_backward_index >= 0 && m_backward != null) { + // Escape on Emoji variants window does not call focus-out events + // because hide() is not called here so start_rebuild_gui() + // is not called. + show_emoji_for_category(m_backward); + return true; + } else if (m_candidate_panel_is_visible && m_backward != null) { + start_rebuild_gui(false); + hide_candidate_panel(); + return true; + } + hide(); + if (m_candidate_panel_mode && + m_lookup_table.get_number_of_candidates() > 0) { + // Call remove_all_children() instead of show_category_list() + // so that show_category_list do not remove children with + // PageUp/PageDown. + remove_all_children(); + } + cancel(); + return false; + } + + + public bool key_press_enter(bool need_commit_signal) { + if (m_candidate_panel_is_visible) { + uint index = m_lookup_table.get_cursor_pos(); + return has_variants(index, need_commit_signal); + } else if (m_category_active_index >= 0) { + Gtk.ListBoxRow gtkrow = m_list_box.get_selected_row(); + EBoxRow row = gtkrow as EBoxRow; + if (m_show_unicode) + show_unicode_for_block(row.text); + else + show_emoji_for_category(row.text); + } + return true; + } + + + private Gdk.Rectangle get_monitor_geometry() { + Gdk.Rectangle monitor_area = { 0, }; + + // Use get_monitor_geometry() instead of get_monitor_area(). + // get_monitor_area() excludes docks, but the lookup window should be + // shown over them. +#if VALA_0_34 + Gdk.Monitor monitor = Gdk.Display.get_default().get_monitor_at_point( + m_cursor_location.x, + m_cursor_location.y); + monitor_area = monitor.get_geometry(); +#else + Gdk.Screen screen = Gdk.Screen.get_default(); + int monitor_num = screen.get_monitor_at_point(m_cursor_location.x, + m_cursor_location.y); + screen.get_monitor_geometry(monitor_num, out monitor_area); +#endif + return monitor_area; + } + + + private void adjust_window_position() { + Gdk.Point cursor_right_bottom = { + m_cursor_location.x + m_cursor_location.width, + m_cursor_location.y + m_cursor_location.height + }; + + Gtk.Allocation allocation; + get_allocation(out allocation); + Gdk.Point window_right_bottom = { + cursor_right_bottom.x + allocation.width, + cursor_right_bottom.y + allocation.height + }; + + Gdk.Rectangle monitor_area = get_monitor_geometry(); + int monitor_right = monitor_area.x + monitor_area.width; + int monitor_bottom = monitor_area.y + monitor_area.height; + + int x, y; + if (window_right_bottom.x > monitor_right) + x = monitor_right - allocation.width; + else + x = cursor_right_bottom.x; + if (x < 0) + x = 0; + + bool changed = false; + // Do not up side down frequently. + // The first pos does not show the lookup table yet but the + // preedit only and the second pos shows the lookup table. + if (m_lookup_table.get_cursor_pos() != 1) { + if (m_is_up_side_down) + y = m_cursor_location.y - allocation.height; + else + y = cursor_right_bottom.y; + } else if (window_right_bottom.y > monitor_bottom) { + y = m_cursor_location.y - allocation.height; + // Do not up side down in Wayland + if (m_input_context_path == "") { + changed = (m_is_up_side_down == false); + m_is_up_side_down = true; + } else { + changed = (m_is_up_side_down == true); + m_is_up_side_down = false; + } + } else { + y = cursor_right_bottom.y; + changed = (m_is_up_side_down == true); + m_is_up_side_down = false; + } + if (y < 0) + y = 0; + + move(x, y); + if (changed) { + if (m_redraw_window_id > 0) + GLib.Source.remove(m_redraw_window_id); + m_redraw_window_id = GLib.Timeout.add(100, () => { + m_redraw_window_id = 0; + this.show_all(); + return false; + }); + } + } + + +#if 0 + private void check_action_variant_cb(Gtk.MenuItem item) { + Gtk.CheckMenuItem check = item as Gtk.CheckMenuItem; + m_show_emoji_variant = check.get_active(); + // Redraw emoji candidate panel for m_show_emoji_variant + if (m_candidate_panel_is_visible) { + // DOTO: queue_draw() does not effect at the real time. + this.queue_draw(); + } + } +#else + private void check_action_variant_cb(GLib.SimpleAction action, + GLib.Variant? parameter) { + m_show_emoji_variant = !action.get_state().get_boolean(); + action.set_state(new GLib.Variant.boolean(m_show_emoji_variant)); + // Redraw emoji candidate panel for m_show_emoji_variant + if (m_candidate_panel_is_visible) { + // DOTO: queue_draw() does not effect at the real time. + this.queue_draw(); + } + } +#endif + + + private void action_close_cb(GLib.SimpleAction action, + GLib.Variant? parameter) { + candidate_clicked(0, BUTTON_CLOSE_BUTTON, 0); + } + + + public static void update_favorite_emoji_dict() { + if (m_emoji_to_data_dict == null || + m_annotation_to_emojis_dict == null) + return; + + for(int i = 0; i < m_favorites.length; i++) { + var favorite = m_favorites[i]; + + string? annotation = ""; + if (i < m_favorite_annotations.length) { + annotation = m_favorite_annotations[i]; + } + if (annotation == "") + continue; + unowned IBus.EmojiData? data = + m_emoji_to_data_dict.lookup(favorite); + if (data == null) { + GLib.SList new_annotations = new GLib.SList(); + new_annotations.append(annotation); + IBus.EmojiData new_data = GLib.Object.new( + typeof(IBus.EmojiData), + "emoji", favorite.dup(), + "annotations", new_annotations, + "description", annotation.dup() + ) as IBus.EmojiData; + m_emoji_to_data_dict.insert(favorite, new_data); + } else { + GLib.SList annotations = + data.get_annotations().copy_deep(GLib.strdup); + if (annotations.find_custom(annotation, GLib.strcmp) == null) { + annotations.append(annotation); + data.set_annotations(annotations.copy_deep(GLib.strdup)); + } + } + unowned GLib.SList emojis = + m_annotation_to_emojis_dict.lookup(annotation); + if (emojis.find_custom(favorite, GLib.strcmp) == null) { + emojis.append(favorite); + m_annotation_to_emojis_dict.replace( + annotation, + emojis.copy_deep(GLib.strdup)); + } + } + } + + + public void set_annotation(string annotation) { + m_annotation = annotation; + remove_all_children(); + if (annotation.length > 0) { + update_candidate_window(); + } else { + if (m_show_unicode) + update_unicode_blocks(); + else + update_category_list(); + } + } + + + public IBus.LookupTable get_one_dimension_lookup_table() { + var lookup_table = new IBus.LookupTable(EMOJI_GRID_PAGE, 0, true, true); + uint i = 0; + for (; i < m_lookup_table.get_number_of_candidates(); i++) { + IBus.Text text = new IBus.Text.from_string(""); + text.copy(m_lookup_table.get_candidate(i)); + lookup_table.append_candidate(text); + } + if (i > 0) + lookup_table.set_cursor_pos(m_lookup_table.get_cursor_pos()); + return lookup_table; + } + + + public uint get_number_of_candidates() { + return m_lookup_table.get_number_of_candidates(); + } + + + public uint get_cursor_pos() { + return m_lookup_table.get_cursor_pos(); + } + + + public void set_cursor_pos(uint cursor_pos) { + m_lookup_table.set_cursor_pos(cursor_pos); + } + + + public string get_current_candidate() { + // If category_list mode, do not show the category name on preedit. + // If candidate_panel mode, the first space key does not show the + // lookup table but the first candidate is available on preedit. + if (!m_candidate_panel_mode) + return ""; + uint cursor = m_lookup_table.get_cursor_pos(); + return m_lookup_table.get_candidate(cursor).text; + } + + + public IBus.Text get_title_text() { + var language = _(IBus.get_language_name(m_current_lang_id)); + uint ncandidates = this.get_number_of_candidates(); + string main_title = _("Emoji Choice"); + if (m_show_unicode) + main_title = _("Unicode Choice"); + var text = new IBus.Text.from_string( + "%s (%s) (%u / %u)".printf( + main_title, + language, + this.get_cursor_pos() + 1, + ncandidates)); + int char_count = text.text.char_count(); + int start_index = -1; + unowned string title = text.text; + for (int i = 0; i < char_count; i++) { + if (title.has_prefix(language)) { + start_index = i; + break; + } + title = title.next_char(); + } + if (start_index >= 0) { + var attr = new IBus.Attribute( + IBus.AttrType.FOREGROUND, + 0x808080, + start_index, + start_index + language.char_count()); + var attrs = new IBus.AttrList(); + attrs.append(attr); + text.set_attributes(attrs); + } + return text; + } + + +#if 0 + public GLib.SList? get_candidates() { + if (m_annotation.length == 0) { + return null; + } + if (m_annotation.length > m_emoji_max_seq_len) { + return null; + } + string? unicode_point = check_unicode_point(m_annotation); + GLib.SList? total_emojis = + lookup_emojis_from_annotation(m_annotation); + if (total_emojis == null) { + /* Users can type title strings against lower case. + * E.g. "Smile" against "smile" + * But the dictionary has the case sensitive annotations. + * E.g. ":D" and ":q" + * So need to call lookup_emojis_from_annotation() twice. + */ + string lower_annotation = m_annotation.down(); + total_emojis = lookup_emojis_from_annotation(lower_annotation); + } + if (unicode_point != null) + total_emojis.prepend(unicode_point); + return total_emojis; + } +#endif + + +#if 0 + public string run(string input_context_path, + Gdk.Event event) { + assert (m_loop == null); + + m_is_running = true; + m_input_context_path = input_context_path; + m_candidate_panel_is_visible = false; + m_result = null; + m_enter_notify_enable = true; + m_show_unicode = false; + + /* Let gtk recalculate the window size. */ + resize(1, 1); + + show_category_list(); + show_all(); + + /* Some window managers, e.g. MATE, GNOME, Plasma desktops, + * does not give the keyboard focus when Emojier is lauched + * twice with Ctrl-period via XIEvent, if present_with_time() + * is not applied. + * But XFCE4 desktop does not effect this bug. + * Seems this is caused by the window manager's focus stealing + * prevention logic: + * https://mail.gnome.org/archives/gtk-devel-list/2017-May/msg00026.html + */ + present_centralize(event); + + Gdk.Device pointer; +#if VALA_0_34 + Gdk.Seat seat = event.get_seat(); + if (seat == null) { + var display = get_display(); + seat = display.get_default_seat(); + } + pointer = seat.get_pointer(); +#else + Gdk.Device device = event.get_device(); + if (device == null) { + var display = get_display(); + device = display.list_devices().data; + } + if (device.get_source() == Gdk.InputSource.KEYBOARD) + pointer = device.get_associated_device(); + else + pointer = device; +#endif + pointer.get_position_double(null, + out m_mouse_x, + out m_mouse_y); + + m_loop = new GLib.MainLoop(); + m_loop.run(); + m_loop = null; + + hide(); + // Make sure the switcher is hidden before returning from this function. + while (Gtk.events_pending()) + Gtk.main_iteration(); + m_is_running = false; + + return m_result; + } +#endif + + + // override virtual functions + public override void show_all() { + // Ctrl-period, space keys causes focus-out/in events in GNOME Wayland. + start_rebuild_gui(true); + base.show_all(); + if (m_candidate_panel_mode) + show_candidate_panel(); + else if (m_show_unicode) + show_unicode_blocks(); + else + show_category_list(); + } + + + public override void hide() { + base.hide(); + m_candidate_panel_is_visible = false; + // m_candidate_panel_mode is not false in when you type something + // during enabling the candidate panel. + if (m_redraw_window_id > 0) { + GLib.Source.remove(m_redraw_window_id); + m_redraw_window_id = 0; + } + if (m_unicode_progress_id > 0) { + GLib.Source.remove(m_unicode_progress_id); + m_unicode_progress_id = 0; + } + } + + + public override bool key_press_event(Gdk.EventKey event) { + uint keyval = event.keyval; + uint modifiers = event.state; + + /* Need to handle events in key_press_event() instead of + * key_release_event() so that this can know if the event + * was handled by IME. + */ + switch (keyval) { + case Gdk.Key.Escape: + if (key_press_escape()) + show_all(); + return true; + case Gdk.Key.Return: + case Gdk.Key.KP_Enter: + if (key_press_enter(true)) + show_all(); + else + hide(); + return true; + case Gdk.Key.space: + case Gdk.Key.KP_Space: + if (m_candidate_panel_is_visible) { + enter_notify_disable_with_timer(); + m_lookup_table.cursor_down(); + show_candidate_panel(); + } + else { + category_list_cursor_move(Gdk.Key.Down); + show_all(); + } + return true; + case Gdk.Key.Right: + case Gdk.Key.KP_Right: + key_press_cursor_horizontal(Gdk.Key.Right, modifiers); + show_all(); + return true; + case Gdk.Key.Left: + case Gdk.Key.KP_Left: + key_press_cursor_horizontal(Gdk.Key.Left, modifiers); + show_all(); + return true; + case Gdk.Key.Down: + case Gdk.Key.KP_Down: + key_press_cursor_vertical(Gdk.Key.Down, modifiers); + show_all(); + return true; + case Gdk.Key.Up: + case Gdk.Key.KP_Up: + key_press_cursor_vertical(Gdk.Key.Up, modifiers); + show_all(); + return true; + case Gdk.Key.Page_Down: + case Gdk.Key.KP_Page_Down: + key_press_cursor_vertical(Gdk.Key.Page_Down, modifiers); + show_all(); + return true; + case Gdk.Key.Page_Up: + case Gdk.Key.KP_Page_Up: + key_press_cursor_vertical(Gdk.Key.Page_Up, modifiers); + show_all(); + return true; + case Gdk.Key.Home: + case Gdk.Key.KP_Home: + key_press_cursor_home_end(Gdk.Key.Home, modifiers); + show_all(); + return true; + case Gdk.Key.End: + case Gdk.Key.KP_End: + key_press_cursor_home_end(Gdk.Key.End, modifiers); + show_all(); + return true; + } + + if ((modifiers & Gdk.ModifierType.CONTROL_MASK) != 0) { + switch (keyval) { + case Gdk.Key.f: + key_press_cursor_horizontal(Gdk.Key.Right, modifiers); + show_all(); + return true; + case Gdk.Key.b: + key_press_cursor_horizontal(Gdk.Key.Left, modifiers); + show_all(); + return true; + case Gdk.Key.n: + case Gdk.Key.N: + key_press_cursor_vertical(Gdk.Key.Down, modifiers); + show_all(); + return true; + case Gdk.Key.p: + case Gdk.Key.P: + key_press_cursor_vertical(Gdk.Key.Up, modifiers); + show_all(); + return true; + case Gdk.Key.h: + key_press_cursor_home_end(Gdk.Key.Home, modifiers); + show_all(); + return true; + case Gdk.Key.e: + key_press_cursor_home_end(Gdk.Key.End, modifiers); + show_all(); + return true; + case Gdk.Key.C: + case Gdk.Key.c: + if ((modifiers & Gdk.ModifierType.SHIFT_MASK) != 0) { + if (m_candidate_panel_is_visible) { + uint index = m_lookup_table.get_cursor_pos(); + var text = m_lookup_table.get_candidate(index).text; + Gtk.Clipboard clipboard = + Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD); + clipboard.set_text(text, -1); + clipboard.store(); + return true; + } + } + break; + } + return false; + } + return true; + } + + + public override bool focus_in_event(Gdk.EventFocus event) { + m_rebuilding_gui = false; + return base.focus_in_event(event); + } + + + public override bool focus_out_event(Gdk.EventFocus event) { + return base.focus_out_event(event); + } + + + public bool is_running() { + return m_is_running; + } + + + public string get_input_context_path() { + return m_input_context_path; + } + + + public void set_input_context_path(string input_context_path) { + m_input_context_path = input_context_path; + if (input_context_path == "") { + m_warning_message = _("" + + "Failed to get the current text application. " + + "Please re-focus your application. E.g. Press Esc key " + + "several times to release the emoji typing mode, " + + "click your desktop and click your text application again." + ); + } else { + m_warning_message = ""; + } + } + + + public string get_selected_string() { + return m_result; + } + + + private void reset_window_mode() { + m_backward_index = -1; + m_backward = null; + m_candidate_panel_is_visible = false; + m_candidate_panel_mode = false; + // Do not clear m_lookup_table to work with space key later. + } + + + public void reset() { + reset_window_mode(); + m_input_context_path = ""; + m_result = null; + m_category_active_index = -1; + m_show_unicode = false; + } + + + public void present_centralize(Gdk.Event event) { + Gtk.Allocation allocation; + get_allocation(out allocation); + Gdk.Rectangle monitor_area; + Gdk.Rectangle work_area; +#if VALA_0_34 + Gdk.Display display = Gdk.Display.get_default(); + Gdk.Monitor monitor = display.get_monitor_at_window(this.get_window()); + monitor_area = monitor.get_geometry(); + work_area = monitor.get_workarea(); +#else + Gdk.Screen screen = Gdk.Screen.get_default(); + int monitor_num = screen.get_monitor_at_window(this.get_window()); + screen.get_monitor_geometry(monitor_num, out monitor_area); + work_area = screen.get_monitor_workarea(monitor_num); +#endif + int x = (monitor_area.x + monitor_area.width - allocation.width)/2; + int y = (monitor_area.y + monitor_area.height + - allocation.height)/2; + // Do not hide a bottom panel in XFCE4 + if (work_area.y < y) + y = work_area.y; + // FIXME: move() does not work in Wayland + move(x, y); + + uint32 timestamp = event.get_time(); + present_with_time(timestamp); + } + + + public void set_cursor_location(int x, + int y, + int width, + int height) { + Gdk.Rectangle location = Gdk.Rectangle(){ + x = x, y = y, width = width, height = height }; + if (m_cursor_location == location) + return; + m_cursor_location = location; + } + + + public bool is_candidate_panel_mode() { + return m_candidate_panel_mode; + } + + + public bool is_rebuilding_gui() { + /* The candidate window and preedit text should not be closed + * when the GUI is rebuilding. + */ + return m_rebuilding_gui; + } + + + public static bool has_loaded_emoji_dict() { + if (m_emoji_to_data_dict == null) + return false; + GLib.List keys = m_emoji_to_data_dict.get_keys(); + if (keys.length() == 0) + return false; + return true; + } + + + public static void set_annotation_lang(string? lang) { + if (lang == null || lang == "") + lang = "en"; + if (m_current_lang_id == lang) + return; + m_current_lang_id = lang; + reload_emoji_dict(); + } + + + public static string get_annotation_lang() { + return m_current_lang_id; + } + + public static void set_emoji_font(string? emoji_font) { + return_if_fail(emoji_font != null && emoji_font != ""); + Pango.FontDescription font_desc = + Pango.FontDescription.from_string(emoji_font); + string font_family = font_desc.get_family(); + if (font_family != null) { + m_emoji_font_family = font_family; + m_emoji_font_changed = true; + } + int font_size = font_desc.get_size() / Pango.SCALE; + if (font_size != 0) { + m_emoji_font_size = font_size; + m_emoji_font_changed = true; + } + } + + + public static void set_partial_match(bool has_partial_match) { + m_has_partial_match = has_partial_match; + } + + + public static void set_partial_match_length(int length) { + if (length < 1) + return; + m_partial_match_length = length; + } + + + public static void set_partial_match_condition(int condition) { + if (condition < 0) + return; + m_partial_match_condition = condition; + } + + + public static void set_favorites(string[]? unowned_favorites, + string[]? unowned_favorite_annotations) { + m_favorites = {}; + m_favorite_annotations = {}; + for(int i = 0; i < unowned_favorites.length; i++) { + string? favorite = unowned_favorites[i]; + // Avoid gsetting value error by manual setting + GLib.return_if_fail(favorite != null); + m_favorites += favorite; + } + for(int i = 0; i < unowned_favorite_annotations.length; i++) { + string? favorite_annotation = unowned_favorite_annotations[i]; + GLib.return_if_fail(favorite_annotation != null); + m_favorite_annotations += favorite_annotation; + } + update_favorite_emoji_dict(); + } + + + private static GLib.Object get_load_progress_object() { + if (m_unicode_progress_object == null) + m_unicode_progress_object = new LoadProgressObject(); + return m_unicode_progress_object as GLib.Object; + } + + + public static void load_unicode_dict() { + if (m_unicode_block_list.length() == 0) + make_unicode_block_dict(); + if (m_name_to_unicodes_dict.size() == 0) + make_unicode_name_dict(IBusEmojier.get_load_progress_object()); + } +} diff --git a/ui/gtk3/emojierapp.vala b/ui/gtk3/emojierapp.vala new file mode 100644 index 000000000..812356f08 --- /dev/null +++ b/ui/gtk3/emojierapp.vala @@ -0,0 +1,277 @@ +/* vim:set et sts=4 sw=4: + * + * ibus - The Input Bus + * + * Copyright (c) 2017 Peng Wu + * Copyright (c) 2017-2021 Takao Fujiwara + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +string emoji_font = null; +string annotation_lang = null; +bool partial_match = false; +int partial_match_length = -1; +int partial_match_condition = -1; + +public class EmojiApplication : Gtk.Application { + private IBusEmojier? m_emojier; + private GLib.Settings m_settings_emoji = + new GLib.Settings("org.freedesktop.ibus.panel.emoji"); + private ApplicationCommandLine? m_command_line = null; + + + private EmojiApplication() { + Object(application_id: "org.freedesktop.IBus.Panel.Emojier", + flags: ApplicationFlags.HANDLES_COMMAND_LINE); + set_inactivity_timeout(100000); + } + + + private void save_selected_string(string? selected_string, + bool cancelled) { + if (cancelled) { + m_command_line.print("%s\n", _("Canceled to choose an emoji.")); + return; + } + GLib.return_if_fail(selected_string != null); + Gtk.Clipboard clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD); + clipboard.set_text(selected_string, -1); + clipboard.store(); + + var emojier_favorites = m_settings_emoji.get_strv("favorites"); + bool has_favorite = false; + foreach (unowned string favorite in emojier_favorites) { + if (favorite == selected_string) { + has_favorite = true; + break; + } + } + if (!has_favorite) { + emojier_favorites += selected_string; + m_settings_emoji.set_strv("favorites", emojier_favorites); + } + m_command_line.print("%s\n", _("Copied an emoji to your clipboard.")); + } + + + private void show_dialog(ApplicationCommandLine command_line) { + m_command_line = command_line; + m_emojier.reset(); + m_emojier.set_annotation(""); + m_emojier.show_all(); + } + + + public void candidate_clicked_lookup_table(uint index, + uint button, + uint state) { + if (m_command_line == null) + return; + if (button == IBusEmojier.BUTTON_CLOSE_BUTTON) { + m_emojier.hide(); + save_selected_string(null, true); + m_command_line = null; + return; + } + if (m_emojier == null) + return; + bool show_candidate = false; + uint ncandidates = m_emojier.get_number_of_candidates(); + if (ncandidates > 0 && ncandidates >= index) { + m_emojier.set_cursor_pos(index); + show_candidate = m_emojier.has_variants(index, false); + } else { + return; + } + if (show_candidate) { + return; + } + string emoji = m_emojier.get_current_candidate(); + m_emojier.hide(); + save_selected_string(emoji, false); + m_command_line = null; + } + + + public void activate_dialog(ApplicationCommandLine command_line) { + this.hold (); + show_dialog(command_line); + this.release (); + } + + + private int _command_line(ApplicationCommandLine command_line) { + // Set default font size + IBusEmojier.set_emoji_font(m_settings_emoji.get_string("font")); + + const OptionEntry[] options = { + { "font", 0, 0, OptionArg.STRING, out emoji_font, + /* TRANSLATORS: "FONT" should be capital and translatable. + * It's used for an argument command --font=FONT + */ + N_("\"FONT\" for emoji characters on emoji dialog"), + N_("FONT") }, + { "lang", 0, 0, OptionArg.STRING, out annotation_lang, + /* TRANSLATORS: "LANG" should be capital and translatable. + * It's used for an argument command --lang=LANG + */ + N_("\"LANG\" for annotations on emoji dialog. E.g. \"en\""), + N_("LANG") }, + { "partial-match", 0, 0, OptionArg.NONE, out partial_match, + N_("Emoji annotations can be match partially"), + null }, + { "partial-match-length", 0, 0, OptionArg.INT, + out partial_match_length, + N_("Match with the length of the specified integer"), + null }, + { "partial-match-condition", 0, 0, OptionArg.INT, + out partial_match_condition, + N_("Match with the condition of the specified integer"), + null }, + { null } + }; + + var option = new OptionContext(); + option.add_main_entries(options, Config.GETTEXT_PACKAGE); + + // We have to make an extra copy of the array, + // since .parse assumes that it can remove strings + // from the array without freeing them. + string[] args = command_line.get_arguments(); + string*[] _args = new string[args.length]; + for (int i = 0; i < args.length; i++) { + _args[i] = args[i]; + } + + // Need to initialize for the second instance. + emoji_font = null; + annotation_lang = null; + + try { + unowned string[] tmp = _args; + option.parse(ref tmp); + } catch (OptionError e) { + stderr.printf("%s\n", e.message); + return Posix.EXIT_FAILURE; + } + + if (m_emojier != null && m_emojier.is_running()) { + Gdk.Event event = new Gdk.Event(Gdk.EventType.KEY_PRESS); + event.key.time = Gdk.CURRENT_TIME; + m_emojier.present_centralize(event); + return Posix.EXIT_SUCCESS; + } + + if (annotation_lang == null) + annotation_lang = m_settings_emoji.get_string("lang"); + IBusEmojier.set_annotation_lang(annotation_lang); + IBusEmojier.set_partial_match(partial_match); + if (partial_match_length > 0) { + IBusEmojier.set_partial_match_length(partial_match_length); + } else { + IBusEmojier.set_partial_match_length( + m_settings_emoji.get_int("partial-match-length")); + } + if (partial_match_condition > 2) { + warning("Need condition between 0 and 2."); + IBusEmojier.set_partial_match_condition( + m_settings_emoji.get_int("partial-match-condition")); + } + else if (partial_match_condition >= 0) { + IBusEmojier.set_partial_match_condition(partial_match_condition); + } else { + IBusEmojier.set_partial_match_condition( + m_settings_emoji.get_int("partial-match-condition")); + } + + if (emoji_font != null) + IBusEmojier.set_emoji_font(emoji_font); + + IBusEmojier.set_favorites( + m_settings_emoji.get_strv("favorites"), + m_settings_emoji.get_strv("favorite-annotations")); + + IBusEmojier.load_unicode_dict(); + + if (m_emojier == null) { + bool is_wayland = false; +#if USE_GDK_WAYLAND + Type instance_type = Gdk.Display.get_default().get_type(); + Type wayland_type = typeof(GdkWayland.Display); + is_wayland = instance_type.is_a(wayland_type); +#else + warning("Checking Wayland is disabled"); +#endif + m_emojier = new IBusEmojier(is_wayland); + // For title handling in gnome-shell + add_window(m_emojier); + m_emojier.candidate_clicked.connect((i, b, s) => { + candidate_clicked_lookup_table(i, b, s); + }); + m_emojier.cancel.connect(() => { + if (m_command_line == null) + return; + m_emojier.hide(); + save_selected_string(null, true); + m_command_line = null; + }); + m_emojier.commit_text.connect(() => { + if (m_command_line == null) + return; + m_emojier.hide(); + string selected_string = m_emojier.get_selected_string(); + save_selected_string(selected_string, false); + m_command_line = null; + }); + } + + activate_dialog(command_line); + + return Posix.EXIT_SUCCESS; + } + + + public override int command_line(ApplicationCommandLine command_line) { + // keep the application running until we are done with this commandline + this.hold(); + int result = _command_line(command_line); + this.release(); + return result; + } + + + public override void shutdown() { + base.shutdown(); + remove_window(m_emojier); + m_emojier = null; + } + + + public static int main (string[] args) { + GLib.Intl.bindtextdomain(Config.GETTEXT_PACKAGE, Config.LOCALEDIR); + GLib.Intl.bind_textdomain_codeset(Config.GETTEXT_PACKAGE, "UTF-8"); + GLib.Intl.textdomain(Config.GETTEXT_PACKAGE); + + IBus.init(); + + Gtk.init(ref args); + + EmojiApplication app = new EmojiApplication(); + int status = app.run(args); + return status; + } +} diff --git a/ui/gtk3/extension.vala b/ui/gtk3/extension.vala new file mode 100644 index 000000000..a6f2e8e6a --- /dev/null +++ b/ui/gtk3/extension.vala @@ -0,0 +1,129 @@ +/* vim:set et sts=4 sw=4: + * + * ibus - The Input Bus + * + * Copyright(c) 2018 Peng Huang + * Copyright(c) 2018-2020 Takao Fujiwara + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +class ExtensionGtk : Gtk.Application { + private IBus.Bus m_bus; + private PanelBinding m_panel; + + public ExtensionGtk(string[] args) { + Object(application_id: "org.freedesktop.IBus.Panel.Extension.Gtk3", + flags: ApplicationFlags.FLAGS_NONE); + GLib.Intl.bindtextdomain(Config.GETTEXT_PACKAGE, Config.LOCALEDIR); + GLib.Intl.bind_textdomain_codeset(Config.GETTEXT_PACKAGE, "UTF-8"); + IBus.init(); + Gtk.init(ref args); + + m_bus = new IBus.Bus(); + + m_bus.connected.connect(bus_connected); + m_bus.disconnected.connect(bus_disconnected); + + if (m_bus.is_connected()) { + init(); + } + } + + private void init() { + DBusConnection connection = m_bus.get_connection(); + connection.signal_subscribe("org.freedesktop.DBus", + "org.freedesktop.DBus", + "NameAcquired", + "/org/freedesktop/DBus", + IBus.SERVICE_PANEL_EXTENSION_EMOJI, + DBusSignalFlags.NONE, + bus_name_acquired_cb); + connection.signal_subscribe("org.freedesktop.DBus", + "org.freedesktop.DBus", + "NameLost", + "/org/freedesktop/DBus", + IBus.SERVICE_PANEL_EXTENSION_EMOJI, + DBusSignalFlags.NONE, + bus_name_lost_cb); + var flags = + IBus.BusNameFlag.ALLOW_REPLACEMENT | + IBus.BusNameFlag.REPLACE_EXISTING; + m_bus.request_name(IBus.SERVICE_PANEL_EXTENSION_EMOJI, flags); + } + + + private void bus_name_acquired_cb(DBusConnection connection, + string? sender_name, + string object_path, + string interface_name, + string signal_name, + Variant parameters) { + debug("signal_name = %s", signal_name); + m_panel = new PanelBinding(m_bus, this); + m_panel.load_settings(); + } + + private void bus_name_lost_cb(DBusConnection connection, + string? sender_name, + string object_path, + string interface_name, + string signal_name, + Variant parameters) { + // "Destroy" dbus method was called before this callback is called. + // "Destroy" dbus method -> ibus_service_destroy() + // -> g_dbus_connection_unregister_object() + // -> g_object_unref(m_panel) will be called later with an idle method, + // which was assigned in the arguments of + // g_dbus_connection_register_object() + debug("signal_name = %s", signal_name); + + // unref m_panel + m_panel.disconnect_signals(); + m_panel = null; + } + + private void bus_disconnected(IBus.Bus bus) { + debug("connection is lost."); + Gtk.main_quit(); + } + + private void bus_connected(IBus.Bus bus) { + init(); + } + + + public override void activate() { + Gtk.main(); + } + + + public static int main(string[] args) { + // https://bugzilla.redhat.com/show_bug.cgi?id=1226465#c20 + // In /etc/xdg/plasma-workspace/env/gtk3_scrolling.sh + // Plasma deskop sets this variable and prevents Super-space, + // and Ctrl-Shift-e when ibus-ui-gtk3 runs after the + // desktop is launched. + GLib.Environment.unset_variable("GDK_CORE_DEVICE_EVENTS"); + // Gdk.set_allowed_backends("x11") let present_with_time() failed on + // launching the dialog secondly in Wayland. + //Gdk.set_allowed_backends("x11"); + + ExtensionGtk extension = new ExtensionGtk(args); + int status = extension.run(args); + return status; + } +} diff --git a/ui/gtk3/grabkeycode.c b/ui/gtk3/grabkeycode.c deleted file mode 100644 index 200f95641..000000000 --- a/ui/gtk3/grabkeycode.c +++ /dev/null @@ -1,105 +0,0 @@ -/* vim:set et sts=4 sw=4: - * - * ibus - The Input Bus - * - * Copyright(c) 2011 Peng Huang - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or(at your option) any later version. - * - * This library 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA - */ - -#include -#include -#include - -gboolean grab_keycode (GdkDisplay *display, - guint keyval, - guint modifiers) { - Display *xdisplay = GDK_DISPLAY_XDISPLAY (display); - int keycode = XKeysymToKeycode (xdisplay, keyval); - if (keycode == 0) { - g_warning ("Can not convert keyval=%u to keycode!", keyval); - return FALSE; - } - - XIEventMask mask; - mask.deviceid = XIAllMasterDevices; - mask.mask_len = XIMaskLen(XI_RawMotion); - mask.mask = g_new0 (unsigned char, mask.mask_len); - XISetMask (mask.mask, XI_KeyPress); - XISetMask (mask.mask, XI_KeyRelease); - - XIGrabModifiers ximodifiers[] = { - {modifiers, 0}, - {Mod2Mask | modifiers, 0}, - {LockMask | modifiers, 0}, - {Mod5Mask | modifiers, 0}, - {Mod2Mask | LockMask | modifiers, 0}, - {Mod2Mask | Mod5Mask | modifiers, 0}, - {LockMask | Mod5Mask | modifiers, 0}, - {Mod2Mask | LockMask | Mod5Mask | modifiers, 0}, - }; - - int retval = XIGrabKeycode (xdisplay, - XIAllMasterDevices, - keycode, - DefaultRootWindow (xdisplay), - GrabModeAsync, - GrabModeAsync, - True, - &mask, - G_N_ELEMENTS (ximodifiers), - ximodifiers); - - g_free (mask.mask); - - if (retval == -1) - return FALSE; - return TRUE; -} - -gboolean ungrab_keycode (GdkDisplay *display, - guint keyval, - guint modifiers) { - Display *xdisplay = GDK_DISPLAY_XDISPLAY (display); - int keycode = XKeysymToKeycode (xdisplay, keyval); - if (keycode == 0) { - g_warning ("Can not convert keyval=%u to keycode!", keyval); - return FALSE; - } - - XIGrabModifiers ximodifiers[] = { - {modifiers, 0}, - {Mod2Mask | modifiers, 0}, - {LockMask | modifiers, 0}, - {Mod5Mask | modifiers, 0}, - {Mod2Mask | LockMask | modifiers, 0}, - {Mod2Mask | Mod5Mask | modifiers, 0}, - {LockMask | Mod5Mask | modifiers, 0}, - {Mod2Mask | LockMask | Mod5Mask | modifiers, 0}, - }; - - int retval = XIUngrabKeycode (xdisplay, - XIAllMasterDevices, - keycode, - DefaultRootWindow (xdisplay), - G_N_ELEMENTS (ximodifiers), - ximodifiers); - - if (retval == -1) - return FALSE; - - return TRUE; -} diff --git a/ui/gtk3/gtkextension.xml.in b/ui/gtk3/gtkextension.xml.in new file mode 100644 index 000000000..b8157c97f --- /dev/null +++ b/ui/gtk3/gtkextension.xml.in @@ -0,0 +1,12 @@ + + + + org.freedesktop.IBus.Panel.Extension + Gtk Panel Extension Component + @libexecdir@/ibus-extension-gtk3 + @VERSION@ + Takao Fujiwara <takao.fujiwara1@gmail.com> + GPL + https://github.com/ibus/ibus/wiki + ibus + diff --git a/ui/gtk3/gtkpanel.xml.in.in b/ui/gtk3/gtkpanel.xml.in similarity index 77% rename from ui/gtk3/gtkpanel.xml.in.in rename to ui/gtk3/gtkpanel.xml.in index c480bcdc5..b61f40090 100644 --- a/ui/gtk3/gtkpanel.xml.in.in +++ b/ui/gtk3/gtkpanel.xml.in @@ -3,10 +3,10 @@ org.freedesktop.IBus.Panel Gtk Panel Component - ${libexecdir}/ibus-ui-gtk3 + @libexecdir@/ibus-ui-gtk3 @VERSION@ Peng Huang <shawn.p.huang@gmail.com> GPL - http://code.google.com/p/ibus + https://github.com/ibus/ibus/wiki ibus diff --git a/ui/gtk3/handle.vala b/ui/gtk3/handle.vala index 6738415f5..fc9164a05 100644 --- a/ui/gtk3/handle.vala +++ b/ui/gtk3/handle.vala @@ -2,28 +2,25 @@ * * ibus - The Input Bus * - * Copyright(c) 2011 Peng Huang + * Copyright(c) 2011-2016 Peng Huang + * Copyright(c) 2016-2017 Takao Fujiwara * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or(at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 Lesser General Public License for more details. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ -using Cairo; -using Gdk; -using Gtk; - class Handle : Gtk.EventBox { private bool m_move_begined; private Gdk.Rectangle m_workarea; @@ -33,6 +30,11 @@ class Handle : Gtk.EventBox { public signal void move_end(); public Handle() { + // Call base class constructor + GLib.Object( + name : "IBusHandle" + ); + set_size_request(6, -1); Gdk.EventMask mask = Gdk.EventMask.EXPOSURE_MASK | Gdk.EventMask.BUTTON_PRESS_MASK | @@ -40,17 +42,30 @@ class Handle : Gtk.EventBox { Gdk.EventMask.BUTTON1_MOTION_MASK; set_events(mask); m_move_begined = false; + + // Currently it is too hard to notice this Handle on PropertyPanel + // so now this widget is drawn by the gray color for the visibility. + Gtk.CssProvider css_provider = new Gtk.CssProvider(); + try { + css_provider.load_from_data( + "#IBusHandle { background-color: gray }", -1); + } catch (GLib.Error error) { + warning("Parse error in Handle: %s", error.message); + } + Gtk.StyleContext context = get_style_context(); + context.add_provider(css_provider, + Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION); } public override void realize() { base.realize(); - // get_window().set_cursor(new Gdk.Cursor(Gdk.CursorType.FLEUR)); } public override bool button_press_event(Gdk.EventButton event) { if (event.button != 1) return false; - m_workarea = {0, 0, int.MAX, int.MAX}; + m_workarea = Gdk.Rectangle(){ + x = 0, y = 0, width = int.MAX, height = int.MAX}; do { Gdk.Window root = Gdk.get_default_root_window(); Gdk.Atom property = Gdk.Atom.intern("_NET_CURRENT_DESKTOP", false); @@ -110,7 +125,8 @@ class Handle : Gtk.EventBox { int x, y; Gtk.Window toplevel = (Gtk.Window)get_toplevel(); toplevel.get_position(out x, out y); - m_press_pos = { (int)event.x_root - x, (int)event.y_root - y }; + m_press_pos.x = (int)event.x_root - x; + m_press_pos.y = (int)event.y_root - y; move_begin(); return true; } @@ -119,8 +135,11 @@ class Handle : Gtk.EventBox { if (event.button != 1) return false; m_move_begined = false; - m_press_pos = { 0, 0 }; - get_window().set_cursor(new Gdk.Cursor(Gdk.CursorType.LEFT_PTR)); + m_press_pos.x = 0; + m_press_pos.y = 0; + get_window().set_cursor(new Gdk.Cursor.for_display( + Gdk.Display.get_default(), + Gdk.CursorType.FLEUR)); move_end(); return true; } @@ -153,7 +172,7 @@ class Handle : Gtk.EventBox { Gtk.StyleContext context = get_style_context(); Gtk.Allocation allocation; get_allocation(out allocation); - Gtk.render_handle(context, cr, + context.render_handle(cr, allocation.x, allocation.y + (allocation.height - 40) / 2, allocation.width, 40.0); } return false; diff --git a/ui/gtk3/ibus-emoji.7.in b/ui/gtk3/ibus-emoji.7.in new file mode 100644 index 000000000..b4d941eca --- /dev/null +++ b/ui/gtk3/ibus-emoji.7.in @@ -0,0 +1,99 @@ +.\" This file is distributed under the same license as the ibus +.\" package. +.\" Copyright (C) Takao Fujiwara , 2017-2022. +.\" +.TH "IBUS EMOJI" 7 "February 2022" "@VERSION@" "User Commands" +.SH NAME +.B ibus-emoji +\- Call the IBus emoji utility by +.B IBus Emojier + +.SH "SYNOPSIS" +.B /usr/libexec/ibus\-ui\-emojier +[\fIOPTION\fR]... + +.SH "DESCRIPTION" + +.PP +IBus Emojier provides a GUI to select an emoji by typing an emoji annotation +or choosing a character with mouse click and it's designed to work as +an extended IBus lookup window using Space, Enter, and Arrow keys. +The text entry accepts an emoji annotation or Unicode points. +If IBus panel is launched, IBus panel calls IBus Emojier with a +shortcut key or the right click menu and output the selected emoji +on the previous focused text on an application. +If IBus panel is not available likes GNOME desktop, You can still use +.B ibus emoji +command to launch IBus Emojier and it saves the selected emoji in +your clipboard and you can paste the emoji by a paste key likes +Control\-v. + +.PP +Refer +.B emoji +section in +.B ibus (1) +for the command line options. + +.PP +Homepage: https://github.com/ibus/ibus/wiki + +.SH "SETTINGS" +.TP +\fBANNOTATION LANGUAGE\fR +You can choose a language of emoji annotations with +.B ibus\-setup (1). +.TP +\fBFONT\fR +You can choose an emoji font with +.B ibus\-setup (1). +E.g. "Noto Color Emoji", "Android Emoji" font. + +.SH "KEYBOARD OPERATIONS" +.TP +\fBControl-Period or Control-Semicolon\fR +Launch IBus Emojier. The shortcut key can be customized by +.B ibus\-setup (1). +.TP +\fBLeft, Right arrow, Control-b or Control-f\fR +Select the next left or right category or emoji on the list +if an annotation is not typed. +Otherwise move the cursor to the immdediate left or right in the typed +annotation. +.TP +\fBDown, Up arrow, Control-n or Control-p\fR +Select the next top or down category or emoji on the list +.TP +\fBEnter\fR +Commit the selected emoji. +.TP +\fBEscape\fR +Go back to the category list from emoji list, erase the typed annotation, +and close IBus Emojier. +.TP +\fBSpace\fR +Select the next left category or emoji on the list. +If Shift\-Space is typed, +a space chararacter can be inserted between words in an annotation or +Unicode points. E.g. 1f466 Shift\-Space 1f3fb +.TP +\fBPageDown, PageUp, Control-Shift-n or Control-Shift-p\fR +Move to the next or previous page in the category or emoji list. +.TP +\fBHead, End, Control-h or Control-e\fR +Select the first or last emoji on the list if an annotation is not typed. +Otherwise move the cursor to the head or end in the typed annotation. +.TP +\fBControl-u\fR +Erase the typed annotation. +.TP +\fBControl-x or Control-v or Control-c\fR +Cut the selected annotation to the clipboard with Control-x. Paste +the contents of the clipboard into the annotation entry with Control-v. +Copy the selected annotation to the clipboard with Control-c. +.TP +\fBControl-Shift-c\fR +Copy the selected emoji to the clipboard. + +.SH BUGS +If you find a bug, please report it at https://github.com/ibus/ibus/issues diff --git a/ui/gtk3/ibus-extension-gtk3.desktop.in b/ui/gtk3/ibus-extension-gtk3.desktop.in new file mode 100644 index 000000000..5e0e910d3 --- /dev/null +++ b/ui/gtk3/ibus-extension-gtk3.desktop.in @@ -0,0 +1,6 @@ +[Desktop Entry] +Name=Emoji Choice +Icon=ibus +Exec=@libexecdir@/ibus-extension-gtk3 +Type=Application +NoDisplay=true diff --git a/ui/gtk3/ibus-ui-emojier.desktop.in b/ui/gtk3/ibus-ui-emojier.desktop.in new file mode 100644 index 000000000..f65fe3d81 --- /dev/null +++ b/ui/gtk3/ibus-ui-emojier.desktop.in @@ -0,0 +1,6 @@ +[Desktop Entry] +Name=Emoji Choice +Icon=ibus +Exec=ibus emoji +Type=Application +NoDisplay=true diff --git a/ui/gtk3/ibusemojidialog.h b/ui/gtk3/ibusemojidialog.h new file mode 100644 index 000000000..c946124b3 --- /dev/null +++ b/ui/gtk3/ibusemojidialog.h @@ -0,0 +1,207 @@ +/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ +/* vim:set et sts=4: */ +/* bus - The Input Bus + * Copyright (C) 2017-2018 Takao Fujiwara + * Copyright (C) 2017 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +#ifndef __IBUS_EMOJI_DIALOG_H_ +#define __IBUS_EMOJI_DIALOG_H_ + +#include + +/** + * SECTION: ibusemojidialog + * @short_description: emoji dialog utility. + * @stability: Unstable + * + * miscellaneous emoji dialg APIs. + */ + +G_BEGIN_DECLS + +typedef struct _IBusEmojier IBusEmojier; +typedef struct _IBusEmojierPrivate IBusEmojierPrivate; +typedef struct _IBusEmojierClass IBusEmojierClass; + +struct _IBusEmojier { + /*< private >*/ + GtkWindow parent_instance; + IBusEmojierPrivate * priv; + /* instance members */ + /*< public >*/ +}; + +struct _IBusEmojierClass { + /*< private >*/ + GtkWindowClass parent_class; + /* class members */ + /*< public >*/ + /* signals */ +}; + +GType ibus_emojier_get_type (void); + +/** + * ibus_emojier_new: + * + * Creates a new #IBusEmojier. + * + * Returns: A newly allocated #IBusEmojiier. + */ +IBusEmojier * ibus_emojier_new (void); + +/** + * ibus_emojier_run: + * @self: An #IBusEmojier + * @input_context_path: An input context path of #IBusInputContext + * of the focused application. + * @event: A #GdkEventKey for timestamp + * + * Runs emoji dialog to select emoji. + * + * Returns: A selected emoji character. + */ +gchar * ibus_emojier_run (IBusEmojier* self, + const gchar* + input_context_path, + GdkEvent* event); + +/** + * ibus_emojier_is_running: + * @self: An #IBusEmojier + * + * Returns: boolean if the emoji dialog is running + */ +gboolean ibus_emojier_is_running (IBusEmojier* self); + +/** + * ibus_emojier_get_input_context_path: + * @self: An #IBusEmojier + * + * Returns: an input context path of #IBusInputContext + * which is saved in ibus_emojier_run(). + */ +gchar * ibus_emojier_get_input_context_path (IBusEmojier* self); + +/** + * ibus_emojier_get_selected_string: + * @self: An #IBusEmojier + * + * Returns: an selected emoji character on the emoji dialog. + */ +gchar * ibus_emojier_get_selected_string (IBusEmojier* self); + +/** + * ibus_emojier_reset: + * @self: An #IBusEmojier + * + * Reset the selected string and input context path. + */ +void ibus_emojier_reset (IBusEmojier* self); + +/** + * ibus_emojier_present_centralize: + * @self: An #IBusEmojier + * @event: A #GdkEventKey for timestamp + * + * Move the window to the toplevel on the screen and centralize it. + */ +void ibus_emojier_present_centralize (IBusEmojier* self, + GdkEvent* event); + +/** + * ibus_emojier_has_loaded_emoji_dict: + * + * Returns: %TRUE if the emoji dict is loaded, otherwise %FALSE. + */ +gboolean ibus_emojier_has_loaded_emoji_dict (void); + +/** + * ibus_emojier_set_annotation_lang: + * @lang: A langauge id for emoji annotations. + * + * Set a language id for emoji annotations. #IBusEmojier will load + * $PKGDATADIR/dicts/emoji-@lang.dict. The default is "en". + */ +void ibus_emojier_set_annotation_lang (const gchar* lang); + +/** + * ibus_emojier_set_emoji_font: + * @emoji_font: font name for emoji characters + * + * Set emoji font on the emoji dialog + */ +void ibus_emojier_set_emoji_font (const gchar* emoji_font); + +/** + * ibus_emojier_set_favorites: + * @favorites: (array length=favorites_length): A custom emoji list. + * @favorites_length: A length of @favorites + * @favorite_annotations: (array length=favorite_annotations_length): + * (nullable): + * A custom annotation listfor @favorites. + * @favorite_annotations_length: A length of @favorite_annotations + * + * Set custom emojis on the emoji dialog. @favorite_annotations + * can be null. If you don't assign an annotation for a specific emoji, + * you can pass the annotation as "", e.g. + * favorite_annotations = { "", "", "my annotation" }; + */ +void ibus_emojier_set_favorites (gchar** favorites, + int + favorites_length, + gchar** + favorite_annotations, + int + favorite_annotations_length); + +/** + * ibus_emojier_set_partial_match: + * @has_partial_match: Enable the partial match if %TRUE. Otherwise if %FALSE. + * + * Set partial match for emoji annotations. + */ +void ibus_emojier_set_partial_match (gboolean has_partial_match); + +/** + * ibus_emojier_set_partial_match_length: + * @length: minimum length to match partially. + * + * Set the minimum length to match partially. + */ +void ibus_emojier_set_partial_match_length + (gint length); + +/** + * ibus_emojier_set_partial_match_condition: + * @condition: condition id between 0 and 2. + * + * Set the partial match condition with the integer. + */ +void ibus_emojier_set_partial_match_condition + (gint condition); +/** + * ibus_emojier_load_unicode_dict: + * + * Load the dictionary of #IBusUnicodeData. + */ +void ibus_emojier_load_unicode_dict (void); + +G_END_DECLS +#endif diff --git a/ui/gtk3/iconwidget.vala b/ui/gtk3/iconwidget.vala index d73cb6bef..36643c74b 100644 --- a/ui/gtk3/iconwidget.vala +++ b/ui/gtk3/iconwidget.vala @@ -2,50 +2,163 @@ * * ibus - The Input Bus * - * Copyright(c) 2011 Peng Huang + * Copyright(c) 2011-2014 Peng Huang + * Copyright(c) 2018 Takao Fujiwara * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or(at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 Lesser General Public License for more details. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ -using Gdk; -using GLib; -using Gtk; +class ThemedRGBA { + public Gdk.RGBA *normal_fg { get; set; } + public Gdk.RGBA *normal_bg { get; set; } + public Gdk.RGBA *selected_fg { get; set; } + public Gdk.RGBA *selected_bg { get; set; } + + private Gtk.StyleContext m_style_context; + + public ThemedRGBA(Gtk.Widget widget) { + this.normal_fg = null; + this.normal_bg = null; + this.selected_fg = null; + this.selected_bg = null; + + /* Use the color of Gtk.TextView instead of Gtk.Label + * because the selected label "color" is not configured + * in "Adwaita" theme and the selected label "background-color" + * is not configured in "Maia" theme. + * https://github.com/ibus/ibus/issues/1871 + */ + Gtk.WidgetPath widget_path = new Gtk.WidgetPath(); + widget_path.append_type(typeof(Gtk.TextView)); + m_style_context = new Gtk.StyleContext(); + m_style_context.set_path(widget_path); + m_style_context.add_class(Gtk.STYLE_CLASS_VIEW); + + /* "-gtk-secondary-caret-color" value is different + * if the parent widget is set in "Menta" theme. + */ + m_style_context.set_parent(widget.get_style_context()); + + get_rgba(); + + m_style_context.changed.connect(() => { get_rgba(); }); + } + + ~ThemedRGBA() { + reset_rgba(); + } + + private void reset_rgba() { + if (this.normal_fg != null) { + this.normal_fg.free(); + this.normal_fg = null; + } + if (this.normal_bg != null) { + this.normal_bg.free(); + this.normal_bg = null; + } + if (this.selected_fg != null) { + this.selected_fg.free(); + this.selected_fg = null; + } + if (this.selected_bg != null) { + this.selected_bg.free(); + this.selected_bg = null; + } + } + + private void get_rgba() { + reset_rgba(); + Gdk.RGBA *normal_fg = null; + Gdk.RGBA *normal_bg = null; + Gdk.RGBA *selected_fg = null; + Gdk.RGBA *selected_bg = null; + m_style_context.get(Gtk.StateFlags.NORMAL, + "color", + out normal_fg); + m_style_context.get(Gtk.StateFlags.SELECTED, + "color", + out selected_fg); + + string bg_prop = "background-color"; + m_style_context.get(Gtk.StateFlags.NORMAL, + bg_prop, + out normal_bg); + m_style_context.get(Gtk.StateFlags.SELECTED, + bg_prop, + out selected_bg); + if (normal_bg.red == selected_bg.red && + normal_bg.green == selected_bg.green && + normal_bg.blue == selected_bg.blue && + normal_bg.alpha == selected_bg.alpha) { + normal_bg.free(); + normal_bg = null; + normal_bg.free(); + normal_bg = null; + bg_prop = "-gtk-secondary-caret-color"; + m_style_context.get(Gtk.StateFlags.NORMAL, + bg_prop, + out normal_bg); + m_style_context.get(Gtk.StateFlags.SELECTED, + bg_prop, + out selected_bg); + } + this.normal_fg = normal_fg; + this.normal_bg = normal_bg; + this.selected_fg = selected_fg; + this.selected_bg = selected_bg; + } +} class IconWidget: Gtk.Image { - public IconWidget(string icon, int size) { + /** + * IconWidget: + * @icon_name_or_path: Can be a name or path but not stock id + * because gtk_icon_theme_load_icon() cannot fallback the + * stock id to a real file name against + * gtk_image_new_from_stock(). + * @size: #Gtk.IconSize + */ + public IconWidget(string icon_name_or_path, Gtk.IconSize size) { Gdk.Pixbuf pixbuf = null; + int fixed_width, fixed_height; + Gtk.icon_size_lookup(size, out fixed_width, out fixed_height); + try { - if (icon[0] == '/') { - pixbuf = new Gdk.Pixbuf.from_file(icon); + if (icon_name_or_path[0] == '/') { + pixbuf = new Gdk.Pixbuf.from_file(icon_name_or_path); } else { var theme = Gtk.IconTheme.get_default(); - pixbuf = theme.load_icon(icon, size, 0); + pixbuf = theme.load_icon(icon_name_or_path, fixed_width, 0); } } catch (GLib.Error e) { try { var theme = Gtk.IconTheme.get_default(); - pixbuf = theme.load_icon(Gtk.Stock.MISSING_IMAGE, size, 0); - } catch (GLib.Error e) {} + pixbuf = theme.load_icon("ibus-engine", fixed_width, 0); + } catch (GLib.Error e) { + set_from_icon_name("image-missing", size); + return; + } } if (pixbuf == null) return; float width = (float)pixbuf.get_width(); float height = (float)pixbuf.get_height(); - float scale = size / (width > height ? width : height); + float scale = fixed_width / (width > height ? width : height); width *= scale; height *= scale; diff --git a/ui/gtk3/indicator.vala b/ui/gtk3/indicator.vala new file mode 100644 index 000000000..0cca410ff --- /dev/null +++ b/ui/gtk3/indicator.vala @@ -0,0 +1,588 @@ +/* vim:set et sts=4 sw=4: + * + * ibus - The Input Bus + * + * Copyright(c) 2015-2017 Takao Fujiwara + * Copyright(c) 2015 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +/* This class extends AppIndicator because + * AppIndicator misses "Activate" dbus method in the definition + * for left click on the indicator. + */ + +public extern string _notification_item; +public extern string _notification_watcher; + +class Indicator : IBus.Service +{ + public string id { get; construct; } + public string category_s { get; construct; } + public string status_s { get; set; } + public string icon_name { get; set; } + public string icon_desc { get; set; } + public string attention_icon_name { get; set; } + public string attention_icon_desc { get; set; } + public string title { get; set; } + public string icon_theme_path { get; set; } + public bool connected { get; set; } + public string label_s { get; set; } + public string label_guide_s { get; set; } + public uint32 ordering_index { get; set; } + public GLib.Variant icon_vector { get; set; } + + public enum Category { + APPLICATION_STATUS, + COMMUNICATIONS, + SYSTEM_SERVICES, + HARDWARE, + OTHER; + + public string to_nick() { + switch(this) { + case APPLICATION_STATUS: return "ApplicationStatus"; + case COMMUNICATIONS: return "Communications"; + case SYSTEM_SERVICES: return "SystemServices"; + case HARDWARE: return "Hardware"; + case OTHER: return "Other"; + default: assert_not_reached(); + } + } + } + + public enum Status { + PASSIVE, + ACTIVE, + ATTENTION; + + public string to_nick() { + switch(this) { + case PASSIVE: return "Passive"; + case ACTIVE: return "Active"; + case ATTENTION: return "NeedsAttention"; + default: assert_not_reached(); + } + } + } + + private const string DEFAULT_ITEM_PATH = "/org/ayatana/NotificationItem"; + private const string NOTIFICATION_ITEM_DBUS_IFACE = + "org.kde.StatusNotifierItem"; + private const string NOTIFICATION_WATCHER_DBUS_IFACE = + "org.kde.StatusNotifierWatcher"; + private const string NOTIFICATION_WATCHER_DBUS_ADDR = + "org.kde.StatusNotifierWatcher"; + private const string NOTIFICATION_WATCHER_DBUS_OBJ = + "/StatusNotifierWatcher"; + + private GLib.DBusNodeInfo m_watcher_node_info; + private unowned GLib.DBusInterfaceInfo m_watcher_interface_info; + private GLib.DBusProxy m_proxy; + private int m_context_menu_x; + private int m_context_menu_y; + private int m_activate_menu_x; + private int m_activate_menu_y; + private Gdk.Window m_indicator_window; + + + public Indicator(string id, + GLib.DBusConnection connection, + Category category = Category.OTHER) { + string path = DEFAULT_ITEM_PATH + "/" + id; + path = path.delimit("-", '_'); + + // AppIndicator.set_category() converts enum value to string internally. + GLib.Object(object_path: path, + id: id, + connection: connection, + category_s: category.to_nick()); + this.status_s = Status.PASSIVE.to_nick(); + this.icon_name = ""; + this.icon_desc = ""; + this.title = ""; + this.icon_theme_path = ""; + this.attention_icon_name = ""; + this.attention_icon_desc = ""; + this.label_s = ""; + this.label_guide_s = ""; + unregister(connection); + add_interfaces(_notification_item); + try { + if (!register(connection)) + return; + } catch (GLib.Error e) { + warning("Failed to register the application indicator xml: " + + e.message); + return; + } + + try { + m_watcher_node_info = + new GLib.DBusNodeInfo.for_xml(_notification_watcher); + } catch (GLib.Error e) { + warning("Failed to create dbus node info: " + e.message); + return; + } + m_watcher_interface_info = + m_watcher_node_info.lookup_interface( + NOTIFICATION_WATCHER_DBUS_IFACE); + check_connect(); + } + + + private void check_connect() { + if (m_proxy == null) { + GLib.DBusProxy.new.begin( + connection, + GLib.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES | + GLib.DBusProxyFlags.DO_NOT_CONNECT_SIGNALS, + m_watcher_interface_info, + NOTIFICATION_WATCHER_DBUS_ADDR, + NOTIFICATION_WATCHER_DBUS_OBJ, + NOTIFICATION_WATCHER_DBUS_IFACE, + null, + (obj, res) => { + bus_watcher_ready(obj, res); + }); + } else { + bus_watcher_ready(null, null); + } + } + + + private void bus_watcher_ready(GLib.Object? obj, GLib.AsyncResult? res) { + if (res != null) { + try { + m_proxy = GLib.DBusProxy.new.end(res); + } catch (GLib.IOError e) { + warning("Failed to call dbus proxy: " + e.message); + return; + } + + m_proxy.notify["g-name-owner"].connect((obj, pspec) => { + var name = m_proxy.get_name_owner(); + if (name != null) + check_connect(); + }); + } + + var name = m_proxy.get_name_owner(); + // KDE panel does not run yet if name == null + if (name == null) + return; + + m_proxy.call.begin("RegisterStatusNotifierItem", + new GLib.Variant("(s)", this.object_path), + GLib.DBusCallFlags.NONE, + -1, + null, + (p_obj, p_res) => { + try { + m_proxy.call.end(p_res); + registered_status_notifier_item(); + } catch (GLib.Error e) { + warning("Failed to call " + + "RegisterStatusNotifierItem: " + + e.message); + } + }); + } + + + private void _context_menu_cb(GLib.DBusConnection connection, + GLib.Variant parameters, + GLib.DBusMethodInvocation invocation) { + GLib.Variant var_x = parameters.get_child_value(0); + GLib.Variant var_y = parameters.get_child_value(1); + m_context_menu_x = var_x.get_int32(); + m_context_menu_y = var_y.get_int32(); + Gdk.Window window = query_gdk_window(); + context_menu(m_context_menu_x, m_context_menu_y, window, 2, 0); + } + + + private void _activate_menu_cb(GLib.DBusConnection connection, + GLib.Variant parameters, + GLib.DBusMethodInvocation invocation) { + GLib.Variant var_x = parameters.get_child_value(0); + GLib.Variant var_y = parameters.get_child_value(1); + m_activate_menu_x = var_x.get_int32(); + m_activate_menu_y = var_y.get_int32(); + Gdk.Window window = query_gdk_window(); + activate(m_activate_menu_x, m_activate_menu_y, window); + } + + + private Gdk.Window? query_gdk_window() { + if (m_indicator_window != null) + return m_indicator_window; + + Gdk.Display display = Gdk.Display.get_default(); + unowned X.Display xdisplay = + (display as Gdk.X11.Display).get_xdisplay(); + X.Window current = xdisplay.default_root_window(); + X.Window parent = 0; + X.Window child = 0; + int root_x, root_y, win_x, win_y; + uint mask = 0; + root_x = root_y = win_x = win_y = 0; + bool retval; + // Need XSetErrorHandler for BadWindow? + while ((retval = xdisplay.query_pointer(current, + out parent, out child, + out root_x, out root_y, + out win_x, out win_y, + out mask))) { + if (child == 0) + break; + current = child; + } + if (!retval) { + string format = + "XQueryPointer is failed: current: %x root: %x " + + "child: %x (%d, %d), (%d, %d), %u"; + string message = format.printf((uint)current, + (uint)xdisplay.default_root_window(), + (uint)child, + root_x, root_y, win_x, win_y, + mask); + warning("XQueryPointer is failed: %s", message); + return null; + } + if (current == xdisplay.default_root_window()) + warning("The query window is root window"); + m_indicator_window = Gdk.X11.Window.lookup_for_display( + display as Gdk.X11.Display, + current); + if (m_indicator_window != null) + return m_indicator_window; + m_indicator_window = new Gdk.X11.Window.foreign_for_display( + display as Gdk.X11.Display, + current); + return m_indicator_window; + } + + + private GLib.Variant? _get_id(GLib.DBusConnection connection) { + return new GLib.Variant.string(this.id); + } + + + private GLib.Variant? _get_category(GLib.DBusConnection connection) { + return new GLib.Variant.string(this.category_s); + } + + + private GLib.Variant? _get_status(GLib.DBusConnection connection) { + return new GLib.Variant.string(this.status_s); + } + + + private GLib.Variant? _get_icon_name(GLib.DBusConnection connection) { + return new GLib.Variant.string(this.icon_name); + } + + + private GLib.Variant? _get_icon_vector(GLib.DBusConnection connection) { + return this.icon_vector; + } + + + private GLib.Variant? _get_icon_desc(GLib.DBusConnection connection) { + return new GLib.Variant.string(this.icon_desc); + } + + + private GLib.Variant? _get_attention_icon_name(GLib.DBusConnection + connection) { + return new GLib.Variant.string(this.attention_icon_name); + } + + + private GLib.Variant? _get_attention_icon_desc(GLib.DBusConnection + connection) { + return new GLib.Variant.string(this.attention_icon_desc); + } + + + private GLib.Variant? _get_title(GLib.DBusConnection connection) { + return new GLib.Variant.string(this.title); + } + + + private GLib.Variant? _get_icon_theme_path(GLib.DBusConnection connection) { + return new GLib.Variant.string(this.icon_theme_path); + } + + + private GLib.Variant? _get_menu(GLib.DBusConnection connection) { + return null; + } + + + private GLib.Variant? _get_xayatana_label(GLib.DBusConnection connection) { + return new GLib.Variant.string(this.label_s); + } + + + private GLib.Variant? _get_xayatana_label_guide(GLib.DBusConnection + connection) { + return new GLib.Variant.string(this.label_guide_s); + } + + + private GLib.Variant? _get_xayatana_ordering_index(GLib.DBusConnection + connection) { + return new GLib.Variant.uint32(this.ordering_index); + } + + + public override void service_method_call(GLib.DBusConnection + connection, + string sender, + string object_path, + string interface_name, + string method_name, + GLib.Variant parameters, + GLib.DBusMethodInvocation + invocation) { + GLib.return_if_fail (object_path == this.object_path); + GLib.return_if_fail (interface_name == NOTIFICATION_ITEM_DBUS_IFACE); + + if (method_name == "Activate") { + _activate_menu_cb(connection, parameters, invocation); + return; + } + if (method_name == "ContextMenu") { + _context_menu_cb(connection, parameters, invocation); + return; + } + + warning("service_method_call() does not handle the method: " + + method_name); + } + + + public override GLib.Variant? service_get_property(GLib.DBusConnection + connection, + string sender, + string object_path, + string interface_name, + string property_name) { + GLib.return_val_if_fail (object_path == this.object_path, null); + GLib.return_val_if_fail ( + interface_name == NOTIFICATION_ITEM_DBUS_IFACE, + null); + + if (property_name == "Id") + return _get_id(connection); + if (property_name == "Category") + return _get_category(connection); + if (property_name == "Status") + return _get_status(connection); + if (property_name == "IconName") + return _get_icon_name(connection); + if (property_name == "IconPixmap") + return _get_icon_vector(connection); + if (property_name == "IconAccessibleDesc") + return _get_icon_desc(connection); + if (property_name == "AttentionIconName") + return _get_attention_icon_name(connection); + if (property_name == "AttentionAccessibleDesc") + return _get_attention_icon_desc(connection); + if (property_name == "Title") + return _get_title(connection); + if (property_name == "IconThemePath") + return _get_icon_theme_path(connection); + if (property_name == "Menu") + return _get_menu(connection); + if (property_name == "XAyatanaLabel") + return _get_xayatana_label(connection); + if (property_name == "XAyatanaLabelGuide") + return _get_xayatana_label_guide(connection); + if (property_name == "XAyatanaOrderingIndex") + return _get_xayatana_ordering_index(connection); + + warning("service_get_property() does not handle the property: " + + property_name); + + return null; + } + + + public override bool service_set_property(GLib.DBusConnection + connection, + string sender, + string object_path, + string interface_name, + string property_name, + GLib.Variant value) { + return false; + } + + + // AppIndicator.set_status() converts enum value to string internally. + public void set_status(Status status) { + string status_s = status.to_nick(); + if (this.status_s == status_s) + return; + this.status_s = status_s; + + /* This API does not require (this.connection != null) + * because service_get_property() can be called when + * this.connection emits the "NewStatus" signal or + * or m_proxy calls the "RegisterStatusNotifierItem" signal. + */ + if (this.connection == null) + return; + try { + this.connection.emit_signal(null, + this.object_path, + NOTIFICATION_ITEM_DBUS_IFACE, + "NewStatus", + new GLib.Variant("(s)", status_s)); + } catch(GLib.Error e) { + warning("Unable to send signal for NewIcon: %s", e.message); + } + } + + + // AppIndicator.set_icon() is deprecated. + public void set_icon_full(string icon_name, string? icon_desc) { + bool changed = false; + if (this.icon_name != icon_name) { + this.icon_name = icon_name; + this.icon_vector = null; + changed = true; + } + if (this.icon_desc != icon_desc) { + this.icon_desc = icon_desc; + changed = true; + } + if (!changed) + return; + + /* This API does not require (this.connection != null) + * because service_get_property() can be called when + * this.connection emits the "NewIcon" signal or + * or m_proxy calls the "RegisterStatusNotifierItem" signal. + */ + if (this.connection == null) + return; + try { + this.connection.emit_signal(null, + this.object_path, + NOTIFICATION_ITEM_DBUS_IFACE, + "NewIcon", + null); + } catch(GLib.Error e) { + warning("Unable to send signal for NewIcon: %s", e.message); + } + } + + + public void set_cairo_image_surface_full(Cairo.ImageSurface image, + string? icon_desc) { + int width = image.get_width(); + int height = image.get_height(); + int stride = image.get_stride(); + unowned uint8[] data = (uint8[]) image.get_data(); + data.length = stride * height; + GLib.Bytes bytes = new GLib.Bytes(data); + GLib.Variant bs = + new GLib.Variant.from_bytes(GLib.VariantType.BYTESTRING, + bytes, + true); + GLib.VariantBuilder builder = new GLib.VariantBuilder( + new GLib.VariantType("a(iiay)")); + builder.open(new GLib.VariantType("(iiay)")); + builder.add("i", width); + builder.add("i", height); + builder.add_value(bs); + builder.close(); + this.icon_vector = new GLib.Variant("a(iiay)", builder); + this.icon_name = ""; + + if (this.icon_desc != icon_desc) + this.icon_desc = icon_desc; + + /* This API does not require (this.connection != null) + * because service_get_property() can be called when + * this.connection emits the "NewIcon" signal or + * or m_proxy calls the "RegisterStatusNotifierItem" signal. + */ + if (this.connection == null) + return; + try { + this.connection.emit_signal(null, + this.object_path, + NOTIFICATION_ITEM_DBUS_IFACE, + "NewIcon", + null); + } catch(GLib.Error e) { + warning("Unable to send signal for NewIcon: %s", e.message); + } + } + + + public void position_context_menu(Gtk.Menu menu, + out int x, + out int y, + out bool push_in) { + x = m_context_menu_x; + y = m_context_menu_y; + push_in = false; + } + + + public void position_activate_menu(Gtk.Menu menu, + out int x, + out int y, + out bool push_in) { + x = m_activate_menu_x; + y = m_activate_menu_y; + push_in = false; + } + + + /** + * unregister_connection: + * + * "Destroy" dbus method is not called for the indicator's connection + * when panel's connection is disconnected because the dbus connection + * is a shared session bus so need to call + * g_dbus_connection_unregister_object() by manual here + * so that g_object_unref(m_panel) will be called later with an idle method, + * which was assigned in the arguments of + * g_dbus_connection_register_object() + */ + public void unregister_connection() { + unregister(get_connection()); + } + + + public signal void context_menu(int x, + int y, + Gdk.Window window, + uint button, + uint activate_time); + public signal void activate(int x, + int y, + Gdk.Window window); + public signal void registered_status_notifier_item(); +} diff --git a/ui/gtk3/keybindingmanager.vala b/ui/gtk3/keybindingmanager.vala index 0b588da8e..12d11976e 100644 --- a/ui/gtk3/keybindingmanager.vala +++ b/ui/gtk3/keybindingmanager.vala @@ -4,25 +4,12 @@ valac --pkg gtk+-2.0 --pkg x11 --pkg gdk-x11-2.0 --pkg gee-1.0 keybinding-manage /** * This class is in charge to grab keybindings on the X11 display - * and filter X11-events and passing on such events to the registed + * and filter X11-events and passing on such events to the registered * handler methods. * * @author Oliver Sauder */ -using Gdk; -using GLib; -using Gtk; -using X; - -extern bool grab_keycode (Gdk.Display display, - uint keyval, - uint modifiers); - -extern bool ungrab_keycode (Gdk.Display display, - uint keyval, - uint modifiers); - public class KeybindingManager : GLib.Object { /** * list of binded keybindings @@ -31,28 +18,35 @@ public class KeybindingManager : GLib.Object { private static KeybindingManager m_instance = null; - public static const uint MODIFIER_FILTER = + public const uint MODIFIER_FILTER = Gdk.ModifierType.MODIFIER_MASK & ~( - Gdk.ModifierType.MOD2_MASK | - Gdk.ModifierType.LOCK_MASK | - Gdk.ModifierType.MOD4_MASK | - Gdk.ModifierType.MOD5_MASK); + Gdk.ModifierType.LOCK_MASK | // Caps Lock + // Gdk.ModifierType.MOD1_MASK | // Alt + Gdk.ModifierType.MOD2_MASK | // Num Lock + // Gdk.ModifierType.MOD3_MASK | + // Gdk.ModifierType.MOD4_MASK | // Super, Hyper + // Gdk.ModifierType.MOD5_MASK | // + Gdk.ModifierType.BUTTON1_MASK | + Gdk.ModifierType.BUTTON2_MASK | + Gdk.ModifierType.BUTTON3_MASK | + Gdk.ModifierType.BUTTON4_MASK | + Gdk.ModifierType.BUTTON5_MASK | + Gdk.ModifierType.SUPER_MASK | + Gdk.ModifierType.HYPER_MASK | + Gdk.ModifierType.META_MASK); /** * Helper class to store keybinding */ private class Keybinding { - public Keybinding(string accelerator, - uint keysym, + public Keybinding(uint keysym, Gdk.ModifierType modifiers, KeybindingHandlerFunc handler) { - this.accelerator = accelerator; this.keysym = keysym; this.modifiers = modifiers; this.handler = handler; } - public string accelerator { get; set; } public uint keysym { get; set; } public Gdk.ModifierType modifiers { get; set; } public unowned KeybindingHandlerFunc handler { get; set; } @@ -73,21 +67,18 @@ public class KeybindingManager : GLib.Object { /** * Bind accelerator to given handler * - * @param accelerator accelerator parsable by Gtk.accelerator_parse + * @param keysym + * @param modifiers * @param handler handler called when given accelerator is pressed */ - public bool bind(string accelerator, + public bool bind(uint keysym, + Gdk.ModifierType modifiers, KeybindingHandlerFunc handler) { - debug("Binding key " + accelerator); - - // convert accelerator - uint keysym; - Gdk.ModifierType modifiers; - Gtk.accelerator_parse(accelerator, out keysym, out modifiers); - - get_primary_modifier(modifiers); - +#if VALA_0_24 + unowned X.Display display = Gdk.X11.get_default_xdisplay(); +#else unowned X.Display display = Gdk.x11_get_default_xdisplay(); +#endif int keycode = display.keysym_to_keycode(keysym); @@ -97,27 +88,24 @@ public class KeybindingManager : GLib.Object { grab_keycode (Gdk.Display.get_default(), keysym, modifiers); // store binding - Keybinding binding = new Keybinding(accelerator, - keysym, modifiers, - handler); + Keybinding binding = new Keybinding(keysym, modifiers, handler); m_bindings.append(binding); - debug("Successfully binded key " + accelerator); return true; } /** * Unbind given accelerator. * - * @param accelerator accelerator parsable by Gtk.accelerator_parse + * @param keysym + * @param modifiers */ - public void unbind (string accelerator) { - debug("Unbinding key " + accelerator); - + public void unbind(uint keysym, + Gdk.ModifierType modifiers) { // unbind all keys with given accelerator GLib.List remove_bindings = new GLib.List(); foreach(Keybinding binding in m_bindings) { - if(str_equal(accelerator, binding.accelerator)) { + if (binding.keysym == keysym && binding.modifiers == modifiers) { ungrab_keycode (Gdk.Display.get_default(), binding.keysym, binding.modifiers); @@ -136,8 +124,8 @@ public class KeybindingManager : GLib.Object { return m_instance; } - public static uint get_primary_modifier (uint binding_mask) { - const uint[] masks = { + public static Gdk.ModifierType get_primary_modifier (uint binding_mask) { + const Gdk.ModifierType[] masks = { Gdk.ModifierType.MOD5_MASK, Gdk.ModifierType.MOD4_MASK, Gdk.ModifierType.MOD3_MASK, @@ -147,7 +135,8 @@ public class KeybindingManager : GLib.Object { Gdk.ModifierType.SHIFT_MASK, Gdk.ModifierType.LOCK_MASK }; - foreach (var mask in masks) { + for (int i = 0; i < masks.length; i++) { + Gdk.ModifierType mask = masks[i]; if ((binding_mask & mask) == mask) return mask; } @@ -167,8 +156,9 @@ public class KeybindingManager : GLib.Object { else pointer = device; + double[] axes = null; uint modifier = 0; - pointer.get_state(keyevent.window, null, out modifier); + pointer.get_state(keyevent.window, axes, out modifier); if ((primary_modifier & modifier) == primary_modifier) return true; @@ -204,13 +194,19 @@ public class KeybindingManager : GLib.Object { private void event_handler(Gdk.Event event) { do { - if (event.any.window != Gdk.get_default_root_window()) + if (event.any.window != Gdk.get_default_root_window()) { break; + } if (event.type == Gdk.EventType.KEY_PRESS) { uint modifiers = event.key.state & MODIFIER_FILTER; + uint keyval = event.key.keyval; + if (keyval >= IBus.KEY_A && keyval <= IBus.KEY_Z && + (modifiers & Gdk.ModifierType.SHIFT_MASK) != 0) { + keyval = keyval - IBus.KEY_A + IBus.KEY_a; + } foreach (var binding in m_bindings) { - if (event.key.keyval != binding.keysym || + if (keyval != binding.keysym || modifiers != binding.modifiers) continue; binding.handler(event); @@ -220,6 +216,92 @@ public class KeybindingManager : GLib.Object { } while (false); Gtk.main_do_event(event); } + + // Get union of given modifiers and all the combination of the + // modifiers in ignored_modifiers. + XI.GrabModifiers[] get_grab_modifiers(uint modifiers) { + const int[] ignored_modifiers = { + X.KeyMask.LockMask, + X.KeyMask.Mod2Mask, + X.KeyMask.Mod5Mask + }; + int[] masks = {}; + for (int i = 0; i < ignored_modifiers.length; i++) { + int modifier = ignored_modifiers[i]; + masks += modifier; + + int length = masks.length; + for (int j = 0; j < length - 1; j++) { + masks += masks[j] | modifier; + } + } + masks += 0; + + XI.GrabModifiers[] ximodifiers = {}; + foreach (var mask in masks) { + ximodifiers += XI.GrabModifiers() { + modifiers = mask | modifiers, + status = 0 + }; + } + + return ximodifiers; + } + + bool grab_keycode(Gdk.Display display, uint keyval, uint modifiers) { +#if VALA_0_24 + unowned X.Display xdisplay = + (display as Gdk.X11.Display).get_xdisplay(); +#else + unowned X.Display xdisplay = Gdk.X11Display.get_xdisplay(display); +#endif + int keycode = xdisplay.keysym_to_keycode(keyval); + if (keycode == 0) { + warning("Can not convert keyval=%u to keycode!", keyval); + return false; + } + + XI.EventMask evmask = XI.EventMask() { + deviceid = XI.AllMasterDevices, + mask = new uchar[(XI.LASTEVENT + 7) / 8] + }; + XI.set_mask(evmask.mask, XI.EventType.KeyPress); + XI.set_mask(evmask.mask, XI.EventType.KeyRelease); + + int retval = XI.grab_keycode (xdisplay, + XI.AllMasterDevices, + keycode, + xdisplay.default_root_window(), + X.GrabMode.Async, + X.GrabMode.Async, + true, + evmask, + get_grab_modifiers(modifiers)); + + return retval == 0; + } + + bool ungrab_keycode(Gdk.Display display, uint keyval, uint modifiers) { +#if VALA_0_24 + unowned X.Display xdisplay = + (display as Gdk.X11.Display).get_xdisplay(); +#else + unowned X.Display xdisplay = Gdk.X11Display.get_xdisplay(display); +#endif + int keycode = xdisplay.keysym_to_keycode(keyval); + if (keycode == 0) { + warning("Can not convert keyval=%u to keycode!", keyval); + return false; + } + + int retval = XI.ungrab_keycode (xdisplay, + XI.AllMasterDevices, + keycode, + xdisplay.default_root_window(), + get_grab_modifiers(modifiers)); + + return retval == 0; + } } /* diff --git a/ui/gtk3/notification-item.xml b/ui/gtk3/notification-item.xml new file mode 100644 index 000000000..6fde3d3e4 --- /dev/null +++ b/ui/gtk3/notification-item.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ui/gtk3/notification-watcher.xml b/ui/gtk3/notification-watcher.xml new file mode 100644 index 000000000..0c28a8f88 --- /dev/null +++ b/ui/gtk3/notification-watcher.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ui/gtk3/panel.vala b/ui/gtk3/panel.vala index e851b2474..452b14c87 100644 --- a/ui/gtk3/panel.vala +++ b/ui/gtk3/panel.vala @@ -2,46 +2,90 @@ * * ibus - The Input Bus * - * Copyright(c) 2011 Peng Huang + * Copyright(c) 2011-2014 Peng Huang + * Copyright(c) 2015-2022 Takao Fujwiara * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or(at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 Lesser General Public License for more details. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ -using IBus; -using GLib; -using Gtk; -using Posix; +class Panel : IBus.PanelService { -public extern const string IBUS_VERSION; -public extern const string BINDIR; + private enum IconType { + STATUS_ICON, + INDICATOR, + } -class Panel : IBus.PanelService { private IBus.Bus m_bus; - private IBus.Config m_config; + private GLib.Settings m_settings_general = null; + private GLib.Settings m_settings_hotkey = null; + private GLib.Settings m_settings_panel = null; + private IconType m_icon_type = IconType.STATUS_ICON; + private Indicator m_indicator; +#if INDICATOR + private GLib.DBusConnection m_session_bus_connection; +#endif private Gtk.StatusIcon m_status_icon; private Gtk.Menu m_ime_menu; private Gtk.Menu m_sys_menu; private IBus.EngineDesc[] m_engines = {}; + private IBus.EngineDesc m_en_engine; + private GLib.HashTable m_engine_contexts = + new GLib.HashTable(GLib.str_hash, + GLib.str_equal); + private string m_current_context_path = ""; + private string m_real_current_context_path = ""; + private bool m_use_global_engine = true; + private bool m_use_engine_lang = true; private CandidatePanel m_candidate_panel; private Switcher m_switcher; + private uint m_switcher_focus_set_engine_id; private PropertyManager m_property_manager; + private PropertyPanel m_property_panel; private GLib.Pid m_setup_pid = 0; private Gtk.AboutDialog m_about_dialog; - private const string ACCELERATOR_SWITCH_IME_FOREWARD = "space"; - private const string ACCELERATOR_SWITCH_IME_BACKWARD = "space"; + private Gtk.CssProvider m_css_provider; + private int m_switcher_delay_time = 400; + private bool m_use_system_keyboard_layout = false; + private GLib.HashTable m_xkb_icon_pixbufs = + new GLib.HashTable(GLib.str_hash, + GLib.str_equal); + private GLib.HashTable m_xkb_icon_image = + new GLib.HashTable(GLib.str_hash, + GLib.str_equal); + private Gdk.RGBA m_xkb_icon_rgba = Gdk.RGBA(){ + red = 0.0, green = 0.0, blue = 0.0, alpha = 1.0 }; + private XKBLayout m_xkblayout = new XKBLayout(); + private bool inited_engines_order = true; + private uint m_preload_engines_id; + private const uint PRELOAD_ENGINES_DELAY_TIME = 30000; + private string m_icon_prop_key = ""; + private int m_property_icon_delay_time = 500; + private uint m_property_icon_delay_time_id; + private bool m_is_wayland; +#if INDICATOR + private bool m_is_kde = is_kde(); +#else + private bool m_is_kde = false; +#endif + private ulong m_popup_menu_id; + private ulong m_activate_id; + private ulong m_registered_status_notifier_item_id; + + private GLib.List m_keybindings = + new GLib.List(); public Panel(IBus.Bus bus) { GLib.assert(bus.is_connected()); @@ -51,27 +95,54 @@ class Panel : IBus.PanelService { m_bus = bus; +#if USE_GDK_WAYLAND + Gdk.set_allowed_backends("*"); + var display = Gdk.DisplayManager.get().open_display(null); + Type instance_type = display.get_type(); + Type wayland_type = typeof(GdkWayland.Display); + m_is_wayland = instance_type.is_a(wayland_type); + Gdk.set_allowed_backends("x11"); +#else + m_is_wayland = false; + warning("Checking Wayland is disabled"); +#endif + + init_settings(); + // init ui - m_status_icon = new Gtk.StatusIcon(); - m_status_icon.set_name("ibus-ui-gtk"); - m_status_icon.set_title("IBus Panel"); - m_status_icon.popup_menu.connect(status_icon_popup_menu_cb); - m_status_icon.activate.connect(status_icon_activate_cb); - m_status_icon.set_from_icon_name("ibus-keyboard"); +#if INDICATOR + if (m_is_kde) { + init_indicator(); + } else { + init_status_icon(); + } +#else + init_status_icon(); +#endif m_candidate_panel = new CandidatePanel(); + m_candidate_panel.page_up.connect((w) => this.page_up()); + m_candidate_panel.page_down.connect((w) => this.page_down()); + m_candidate_panel.cursor_up.connect((w) => this.cursor_up()); + m_candidate_panel.cursor_down.connect((w) => this.cursor_down()); + m_candidate_panel.candidate_clicked.connect( + (w, i, b, s) => this.candidate_clicked(i, b, s)); m_switcher = new Switcher(); + // The initial shortcut is "space" + bind_switch_shortcut(); - var keybinding_manager = KeybindingManager.get_instance(); - keybinding_manager.bind(ACCELERATOR_SWITCH_IME_FOREWARD, - (e) => handle_engine_switch(e, false)); - - keybinding_manager.bind(ACCELERATOR_SWITCH_IME_BACKWARD, - (e) => handle_engine_switch(e, true)); + if (m_switcher_delay_time >= 0) { + m_switcher.set_popup_delay_time((uint) m_switcher_delay_time); + } m_property_manager = new PropertyManager(); - m_property_manager.property_activate.connect((k, s) => { + m_property_manager.property_activate.connect((w, k, s) => { + property_activate(k, s); + }); + + m_property_panel = new PropertyPanel(); + m_property_panel.property_activate.connect((w, k, s) => { property_activate(k, s); }); @@ -79,120 +150,905 @@ class Panel : IBus.PanelService { } ~Panel() { +#if INDICATOR + // unref m_indicator + if (m_indicator != null) + m_indicator.unregister_connection(); +#endif + BindingCommon.unbind_switch_shortcut( + BindingCommon.KeyEventFuncType.ANY, m_keybindings); + m_keybindings = null; + } + + private void init_settings() { + m_settings_general = new GLib.Settings("org.freedesktop.ibus.general"); + m_settings_hotkey = + new GLib.Settings("org.freedesktop.ibus.general.hotkey"); + m_settings_panel = new GLib.Settings("org.freedesktop.ibus.panel"); + + m_settings_general.changed["preload-engines"].connect((key) => { + update_engines(m_settings_general.get_strv(key), + null); + }); + + m_settings_general.changed["switcher-delay-time"].connect((key) => { + set_switcher_delay_time(); + }); + + m_settings_general.changed["use-system-keyboard-layout"].connect( + (key) => { + set_use_system_keyboard_layout(); + }); + + m_settings_general.changed["embed-preedit-text"].connect((key) => { + set_embed_preedit_text(); + }); + + m_settings_general.changed["use-global-engine"].connect((key) => { + set_use_global_engine(); + }); + + m_settings_general.changed["use-xmodmap"].connect((key) => { + set_use_xmodmap(); + }); + + m_settings_hotkey.changed["triggers"].connect((key) => { + BindingCommon.unbind_switch_shortcut( + BindingCommon.KeyEventFuncType.IME_SWITCHER, + m_keybindings); + m_keybindings = null; + bind_switch_shortcut(); + }); + + m_settings_panel.changed["custom-font"].connect((key) => { + BindingCommon.set_custom_font(m_settings_panel, + null, + ref m_css_provider); + }); + + m_settings_panel.changed["use-custom-font"].connect((key) => { + BindingCommon.set_custom_font(m_settings_panel, + null, + ref m_css_provider); + }); + + m_settings_panel.changed["custom-theme"].connect((key) => { + BindingCommon.set_custom_theme(m_settings_panel); + }); + + m_settings_panel.changed["use-custom-theme"].connect((key) => { + BindingCommon.set_custom_theme(m_settings_panel); + }); + + m_settings_panel.changed["custom-icon"].connect((key) => { + BindingCommon.set_custom_icon(m_settings_panel); + }); + + m_settings_panel.changed["use-custom-icon"].connect((key) => { + BindingCommon.set_custom_icon(m_settings_panel); + }); + + m_settings_panel.changed["use-glyph-from-engine-lang"].connect((key) => + { + m_use_engine_lang = m_settings_panel.get_boolean( + "use-glyph-from-engine-lang"); + var engine = m_bus.get_global_engine(); + if (engine != null) + set_language_from_engine(engine); + }); + + m_settings_panel.changed["show-icon-on-systray"].connect((key) => { + set_show_icon_on_systray(); + }); + + m_settings_panel.changed["lookup-table-orientation"].connect((key) => { + set_lookup_table_orientation(); + }); + + m_settings_panel.changed["show"].connect((key) => { + set_show_property_panel(); + }); + + m_settings_panel.changed["timeout"].connect((key) => { + set_timeout_property_panel(); + }); + + m_settings_panel.changed["follow-input-cursor-when-always-shown"] + .connect((key) => { + set_follow_input_cursor_when_always_shown_property_panel(); + }); + + m_settings_panel.changed["xkb-icon-rgba"].connect((key) => { + set_xkb_icon_rgba(); + }); + + m_settings_panel.changed["property-icon-delay-time"].connect((key) => { + set_property_icon_delay_time(); + }); + } + + private void popup_menu_at_area_window(Gtk.Menu menu, + Gdk.Rectangle area, + Gdk.Window? window, + Gtk.MenuPositionFunc? func) { +#if VALA_0_34 + Gdk.Gravity rect_anchor = Gdk.Gravity.SOUTH_WEST; + Gdk.Gravity menu_anchor = Gdk.Gravity.NORTH_WEST; + + // Gtk.Menu.popup() is now deprecated but + // Gtk.Menu.popup_at_rect() requires a Gdk.Window and + // Gtk.Menu.popup_at_rect() outputs a warning of + // "no trigger event for menu popup" + // for the foreigner QT window which is generated by + // Gdk.X11.Window.foreign_for_display. + // https://git.gnome.org/browse/gtk+/tree/gtk/gtkmenu.c?h=gtk-3-22#n2251 + menu.popup_at_rect(window, area, rect_anchor, menu_anchor, null); +#else + menu.popup(null, null, func, 0, Gtk.get_current_event_time()); +#endif + } + +#if INDICATOR + private static bool is_kde() { + unowned string? desktop = + Environment.get_variable("XDG_CURRENT_DESKTOP"); + if (desktop == "KDE") + return true; + /* If ibus-dameon is launched from systemd, XDG_CURRENT_DESKTOP + * environment variable could be set after ibus-dameon would be + * launched and XDG_CURRENT_DESKTOP could be "(null)". + * But XDG_SESSION_DESKTOP can be set with systemd's PAM. + */ + if (desktop == null || desktop == "(null)") + desktop = Environment.get_variable("XDG_SESSION_DESKTOP"); + if (desktop == "plasma" || desktop == "KDE-wayland") + return true; + if (desktop == null) { + warning ("XDG_CURRENT_DESKTOP is not exported in your desktop " + + "session."); + } + warning ("If you launch KDE5 on xterm, " + + "export XDG_CURRENT_DESKTOP=KDE before launch KDE5."); + return false; + } + + private void popup_menu_at_pointer_window(Gtk.Menu menu, + int x, + int y, + Gdk.Window? window, + Gtk.MenuPositionFunc? func) { + int win_x = 0; + int win_y = 0; + window.get_origin(out win_x, out win_y); + Gdk.Rectangle area = { x - win_x, y - win_y, 1, 1 }; + // window is a bottom wide panel instead of status icon + popup_menu_at_area_window(menu, area, window, func); + } + + private void init_indicator() { + m_icon_type = IconType.INDICATOR; + GLib.Bus.get.begin(GLib.BusType.SESSION, null, (obj, res) => { + try { + m_session_bus_connection = GLib.Bus.get.end(res); + m_indicator = + new Indicator("ibus-ui-gtk3", + m_session_bus_connection, + Indicator.Category.APPLICATION_STATUS); + m_indicator.title = _("IBus Panel"); + m_registered_status_notifier_item_id = + m_indicator.registered_status_notifier_item.connect( + () => { + m_indicator.set_status(Indicator.Status.ACTIVE); + state_changed(); + }); + m_popup_menu_id = + m_indicator.context_menu.connect((x, y, w, b, t) => { + popup_menu_at_pointer_window( + create_context_menu(), + x, y, w, + m_indicator.position_context_menu); + }); + m_activate_id = + m_indicator.activate.connect((x, y, w) => { + popup_menu_at_pointer_window( + create_activate_menu(), + x, y, w, + m_indicator.position_activate_menu); + }); + } catch (GLib.IOError e) { + warning("Failed to get the session bus: %s", e.message); + } + }); + } +#endif + + private void init_status_icon() { + m_status_icon = new Gtk.StatusIcon(); + m_status_icon.set_name("ibus-ui-gtk"); + m_status_icon.set_title(_("IBus Panel")); + + // Gdk.Window.get_width() is needed for the menu position + if (m_status_icon.get_size() > 0) + init_status_icon_menu(); + else + m_status_icon.notify["size"].connect(init_status_icon_menu); + } + + private void init_status_icon_menu() { + Gdk.Rectangle area = { 0, 0, 0, 0 }; + Gdk.Window? window = null; + Gtk.MenuPositionFunc? func = null; +#if VALA_0_34 + window = Gdk.X11.Window.lookup_for_display( + Gdk.Display.get_default() as Gdk.X11.Display, + m_status_icon.get_x11_window_id()) as Gdk.Window; + if (window == null) { + warning("StatusIcon does not have GdkWindow"); + return; + } + Gtk.Orientation orient; + m_status_icon.get_geometry(null, out area, out orient); + int win_x = 0; + int win_y = 0; + window.get_origin(out win_x, out win_y); + // The (x, y) is converted by gdk_window_get_root_coords() + // in gdk_window_impl_move_to_rect() + area.x -= win_x; + area.y -= win_y; +#else + func = m_status_icon.position_menu; +#endif + m_popup_menu_id = m_status_icon.popup_menu.connect((b, t) => { + popup_menu_at_area_window( + create_context_menu(), + area, window, func); + }); + m_activate_id = m_status_icon.activate.connect(() => { + popup_menu_at_area_window( + create_activate_menu(), + area, window, func); + }); + m_status_icon.set_from_icon_name("ibus-keyboard"); + } + + private void bind_switch_shortcut() { + string[] accelerators = m_settings_hotkey.get_strv("triggers"); + var keybinding_manager = KeybindingManager.get_instance(); - keybinding_manager.unbind(ACCELERATOR_SWITCH_IME_FOREWARD); - keybinding_manager.unbind(ACCELERATOR_SWITCH_IME_BACKWARD); + + foreach (var accelerator in accelerators) { + BindingCommon.keybinding_manager_bind( + keybinding_manager, + ref m_keybindings, + accelerator, + BindingCommon.KeyEventFuncType.IME_SWITCHER, + handle_engine_switch_normal, + handle_engine_switch_reverse); + } } - public void set_config(IBus.Config config) { - if (m_config != null) { - m_config.value_changed.disconnect(config_value_changed_cb); - m_config = null; +/* + public static void + unbind_switch_shortcut(KeyEventFuncType ftype, + GLib.List keybindings) { + var keybinding_manager = KeybindingManager.get_instance(); + + while (keybindings != null) { + Keybinding keybinding = keybindings.data; + + if (ftype == KeyEventFuncType.ANY || + ftype == keybinding.ftype) { + keybinding_manager.unbind(keybinding.keysym, + keybinding.modifiers); + } + keybindings = keybindings.next; } + } +*/ + + /** + * panel_get_engines_from_xkb: + * @self: #Panel class + * @engines: all engines from ibus_bus_list_engines() + * @returns: ibus xkb engines + * + * Made ibus engines from the current XKB keymaps. + * This returns only XKB engines whose name start with "xkb:". + */ + private GLib.List + get_engines_from_xkb(GLib.List engines) { + string layouts; + string variants; + string option; + XKBLayout.get_layout(out layouts, out variants, out option); + + GLib.List xkb_engines = + new GLib.List(); + IBus.EngineDesc us_engine = + new IBus.EngineDesc("xkb:us::eng", + "", "", "", "", "", "", ""); + string[] layout_array = layouts.split(","); + string[] variant_array = variants.split(","); + + for (int i = 0; i < layout_array.length; i++) { + string layout = layout_array[i]; + string variant = null; + IBus.EngineDesc current_engine = null; + + if (i < variant_array.length) + variant = variant_array[i]; + + /* If variants == "", variants.split(",") is { null }. + * To meet engine.get_layout_variant(), convert null to "" + * here. + */ + if (variant == null) + variant = ""; + + foreach (unowned IBus.EngineDesc engine in engines) { + + string name = engine.get_name(); + if (!name.has_prefix("xkb:")) + continue; + + if (engine.get_layout() == layout && + engine.get_layout_variant() == variant) { + current_engine = engine; + break; + } + } - m_config = config; - if (m_config != null) { - m_config.value_changed.connect(config_value_changed_cb); - update_engines(m_config.get_value("general", "preload_engines"), - m_config.get_value("general", "engines_order")); - } else { - update_engines(null, null); + if (current_engine != null) { + xkb_engines.append(current_engine); + } else if (xkb_engines.find(us_engine) == null) { + warning("Fallback %s(%s) to us layout.", layout, variant); + xkb_engines.append(us_engine); + } } + + if (xkb_engines.length() == 0) + warning("Not found IBus XKB engines from the session."); + + return xkb_engines; } - private void switch_engine(int i, bool force = false) { - GLib.assert(i >= 0 && i < m_engines.length); + /** + * panel_get_engines_from_locale: + * @self: #Panel class + * @engines: all engines from ibus_bus_list_engines() + * @returns: ibus im engines + * + * Made ibus engines from the current locale and IBus.EngineDesc.lang . + * This returns non-XKB engines whose name does not start "xkb:". + */ + private GLib.List + get_engines_from_locale(GLib.List engines) { + string locale = Intl.setlocale(LocaleCategory.CTYPE, null); + + if (locale == null) + locale = "C"; + + string lang = locale.split(".")[0]; + GLib.List im_engines = + new GLib.List(); + + foreach (unowned IBus.EngineDesc engine in engines) { + string name = engine.get_name(); + + if (name.has_prefix("xkb:")) + continue; - // Do not need switch - if (i == 0 && !force) + if (engine.get_language() == lang && + engine.get_rank() > 0) + im_engines.append(engine); + } + + if (im_engines.length() == 0) { + lang = lang.split("_")[0]; + + foreach (unowned IBus.EngineDesc engine in engines) { + string name = engine.get_name(); + + if (name.has_prefix("xkb:")) + continue; + + if (engine.get_language() == lang && + engine.get_rank() > 0) + im_engines.append(engine); + } + } + + if (im_engines.length() == 0) + return im_engines; + + im_engines.sort((a, b) => { + return (int) b.get_rank() - (int) a.get_rank(); + }); + + return im_engines; + } + + private void init_engines_order() { + m_xkblayout.set_latin_layouts( + m_settings_general.get_strv("xkb-latin-layouts")); + + if (inited_engines_order) return; - // Move the target engine to the first place. - IBus.EngineDesc engine = m_engines[i]; - for (int j = i; j > 0; j--) { - m_engines[j] = m_engines[j - 1]; + if (m_settings_general.get_strv("preload-engines").length > 0) + return; + + GLib.List engines = m_bus.list_engines(); + GLib.List xkb_engines = get_engines_from_xkb(engines); + GLib.List im_engines = + get_engines_from_locale(engines); + + if (m_is_wayland) { + if (xkb_engines.length() > 0) + xkb_engines = new GLib.List(); } - m_engines[0] = engine; - if (!m_bus.set_global_engine(engine.get_name())) { - warning("Switch engine to %s failed.", engine.get_name()); + string[] names = {}; + foreach (unowned IBus.EngineDesc engine in xkb_engines) + names += engine.get_name(); + foreach (unowned IBus.EngineDesc engine in im_engines) + names += engine.get_name(); + + m_settings_general.set_strv("preload-engines", names); + } + + + private void set_switcher_delay_time() { + m_switcher_delay_time = + m_settings_general.get_int("switcher-delay-time"); + + if (m_switcher != null && m_switcher_delay_time >= 0) { + m_switcher.set_popup_delay_time((uint) m_switcher_delay_time); + } + } + + private void set_use_system_keyboard_layout() { + m_use_system_keyboard_layout = + m_settings_general.get_boolean("use-system-keyboard-layout"); + } + + private void set_embed_preedit_text() { + Variant variant = + m_settings_general.get_value("embed-preedit-text"); + + if (variant == null) { return; } - // set xkb layout - string cmdline = "setxkbmap %s".printf(engine.get_layout()); + + m_bus.set_ibus_property("EmbedPreeditText", variant); + } + + private void set_use_global_engine() { + m_use_global_engine = + m_settings_general.get_boolean("use-global-engine"); + } + + private void set_use_xmodmap() { + m_xkblayout.set_use_xmodmap( + m_settings_general.get_boolean("use-xmodmap")); + } + + private void set_show_icon_on_systray() { + if (m_icon_type == IconType.STATUS_ICON) { + if (m_status_icon == null) + return; + + m_status_icon.set_visible( + m_settings_panel.get_boolean("show-icon-on-systray")); + } else if (m_icon_type == IconType.INDICATOR) { + if (m_indicator == null) + return; + + if (m_settings_panel.get_boolean("show-icon-on-systray")) + m_indicator.set_status(Indicator.Status.ACTIVE); + else + m_indicator.set_status(Indicator.Status.PASSIVE); + } + } + + private void set_lookup_table_orientation() { + if (m_candidate_panel == null) + return; + + m_candidate_panel.set_vertical( + m_settings_panel.get_int("lookup-table-orientation") + == IBus.Orientation.VERTICAL); + } + + private void set_show_property_panel() { + if (m_property_panel == null) + return; + + m_property_panel.set_show(m_settings_panel.get_int("show")); + } + + private void set_timeout_property_panel() { + if (m_property_panel == null) + return; + + m_property_panel.set_auto_hide_timeout( + (uint) m_settings_panel.get_int("auto-hide-timeout")); + } + + private void set_follow_input_cursor_when_always_shown_property_panel() { + if (m_property_panel == null) + return; + + m_property_panel.set_follow_input_cursor_when_always_shown( + m_settings_panel.get_boolean( + "follow-input-cursor-when-always-shown")); + } + + private void set_xkb_icon_rgba() { + string spec = m_settings_panel.get_string("xkb-icon-rgba"); + + Gdk.RGBA rgba = { 0, }; + + if (!rgba.parse(spec)) { + warning("invalid format of xkb-icon-rgba: %s", spec); + m_xkb_icon_rgba = Gdk.RGBA(){ + red = 0.0, green = 0.0, blue = 0.0, alpha = 1.0 }; + } else + m_xkb_icon_rgba = rgba; + + if (m_icon_type == IconType.STATUS_ICON) { + if (m_xkb_icon_pixbufs.size() > 0) { + m_xkb_icon_pixbufs.remove_all(); + + if (m_status_icon != null && m_switcher != null) + state_changed(); + } + } else if (m_icon_type == IconType.INDICATOR) { + if (m_xkb_icon_image.size() > 0) { + m_xkb_icon_image.remove_all(); + + if (m_indicator != null && m_switcher != null) + state_changed(); + } + } + } + + private void set_property_icon_delay_time() { + m_property_icon_delay_time = + m_settings_panel.get_int("property-icon-delay-time"); + } + + + private int compare_versions(string version1, string version2) { + string[] version1_list = version1.split("."); + string[] version2_list = version2.split("."); + int major1, minor1, micro1, major2, minor2, micro2; + + if (version1 == version2) { + return 0; + } + + // The initial dconf value of "version" is "". + if (version1 == "") { + return -1; + } + if (version2 == "") { + return 1; + } + + assert(version1_list.length >= 3); + assert(version2_list.length >= 3); + + major1 = int.parse(version1_list[0]); + minor1 = int.parse(version1_list[1]); + micro1 = int.parse(version1_list[2]); + + major2 = int.parse(version2_list[0]); + minor2 = int.parse(version2_list[1]); + micro2 = int.parse(version2_list[2]); + + if (major1 == minor1 && minor1 == minor2 && micro1 == micro2) { + return 0; + } + if ((major1 > major2) || + (major1 == major2 && minor1 > minor2) || + (major1 == major2 && minor1 == minor2 && + micro1 > micro2)) { + return 1; + } + return -1; + } + + private void update_version_1_5_8() { + inited_engines_order = false; + } + + private void update_version_1_5_26() { + var message = _("Keymap changes do not work in Plasma Wayland at " + + "present. Please use systemsettings5 instead."); +#if ENABLE_LIBNOTIFY + if (!Notify.is_initted()) { + Notify.init ("ibus"); + } + + var notification = new Notify.Notification( + _("IBus Notification"), + message, + "ibus"); + notification.set_timeout(30 * 1000); + notification.set_category("hotkey"); + try { - if (!GLib.Process.spawn_command_line_sync(cmdline)) { - warning("Switch xkb layout to %s failed.", - engine.get_layout()); + notification.show(); + } catch (GLib.Error e) { + warning (message); + } +#else + warning (message); +#endif + } + + private void set_version() { + string prev_version = m_settings_general.get_string("version"); + string current_version = null; + + if (compare_versions(prev_version, "1.5.8") < 0) + update_version_1_5_8(); + + if (compare_versions(prev_version, "1.5.26") < 0) + update_version_1_5_26(); + + current_version = "%d.%d.%d".printf(IBus.MAJOR_VERSION, + IBus.MINOR_VERSION, + IBus.MICRO_VERSION); + + if (prev_version == current_version) { + return; + } + + m_settings_general.set_string("version", current_version); + } + + public void load_settings() { + set_version(); + + init_engines_order(); + + // Update m_use_system_keyboard_layout before update_engines() + // is called. + set_use_system_keyboard_layout(); + set_use_global_engine(); + set_use_xmodmap(); + m_use_engine_lang = m_settings_panel.get_boolean( + "use-glyph-from-engine-lang"); + update_engines(m_settings_general.get_strv("preload-engines"), + m_settings_general.get_strv("engines-order")); + BindingCommon.unbind_switch_shortcut( + BindingCommon.KeyEventFuncType.ANY, + m_keybindings); + m_keybindings = null; + bind_switch_shortcut(); + set_switcher_delay_time(); + set_embed_preedit_text(); + BindingCommon.set_custom_font(m_settings_panel, + null, + ref m_css_provider); + BindingCommon.set_custom_theme(m_settings_panel); + BindingCommon.set_custom_icon(m_settings_panel); + set_show_icon_on_systray(); + set_lookup_table_orientation(); + set_show_property_panel(); + set_timeout_property_panel(); + set_follow_input_cursor_when_always_shown_property_panel(); + set_xkb_icon_rgba(); + set_property_icon_delay_time(); + } + + /** + * disconnect_signals: + * + * Call this API before m_panel = null so that the ref_count becomes 0 + */ + public void disconnect_signals() { + unowned GLib.Object object = m_status_icon; +#if INDICATOR + if (m_is_kde) + object = m_indicator; +#endif + if (m_popup_menu_id > 0) { + // No name functions refer m_panel in m_status_icon + if (GLib.SignalHandler.is_connected(object, m_popup_menu_id)) + object.disconnect(m_popup_menu_id); + m_popup_menu_id = 0; + } + if (m_activate_id > 0) { + if (GLib.SignalHandler.is_connected(object, m_activate_id)) + object.disconnect(m_activate_id); + m_activate_id = 0; + } + if (m_registered_status_notifier_item_id > 0) { + if (GLib.SignalHandler.is_connected( + object, + m_registered_status_notifier_item_id)) { + object.disconnect(m_registered_status_notifier_item_id); } - } catch (GLib.SpawnError e) { - warning("execute setxkblayout failed"); + m_registered_status_notifier_item_id = 0; + } + if (m_preload_engines_id > 0) { + GLib.Source.remove(m_preload_engines_id); + m_preload_engines_id = 0; } + } - string[] names = {}; - foreach(var desc in m_engines) { - names += desc.get_name(); + private void engine_contexts_insert(IBus.EngineDesc engine) { + if (m_use_global_engine) + return; + + if (m_engine_contexts.size() >= 200) { + warning ("Contexts by windows are too much counted!"); + m_engine_contexts.remove_all(); + } + + m_engine_contexts.replace(m_current_context_path, engine); + } + + private void set_language_from_engine(IBus.EngineDesc engine) { + if (m_use_engine_lang) { + m_candidate_panel.set_language(new Pango.AttrLanguage( + Pango.Language.from_string(engine.get_language()))); + } else { + m_candidate_panel.set_language(new Pango.AttrLanguage( + Pango.Language.from_string(null))); } - if (m_config != null) - m_config.set_value("general", - "engines_order", - new GLib.Variant.strv(names)); + } - private void config_value_changed_cb(IBus.Config config, - string section, - string name, - Variant variant) { - if (section == "general" && name == "preload_engines") { - update_engines(variant, null); + private void set_engine(IBus.EngineDesc engine) { + if (m_property_icon_delay_time_id > 0) { + GLib.Source.remove(m_property_icon_delay_time_id); + m_property_icon_delay_time_id = 0; + } + + if (!m_bus.set_global_engine(engine.get_name())) { + warning("Switch engine to %s failed.", engine.get_name()); + return; } + /* Panel.update_property() will be called with a time lag + * by another engine because of DBus delay so need to + * clear m_icon_prop_key here to avoid wrong panel icon in + * disabled m_use_global_engine. + */ + m_icon_prop_key = ""; + + // set xkb layout + if (!m_use_system_keyboard_layout && !m_is_wayland) + m_xkblayout.set_layout(engine); + + set_language_from_engine(engine); + engine_contexts_insert(engine); } - private void handle_engine_switch(Gdk.Event event, bool revert) { + private void switch_engine(int i, bool force = false) { + if (m_is_wayland) + GLib.assert(i >= 0 && i <= m_engines.length); + else + GLib.assert(i >= 0 && i < m_engines.length); + + // Do not need switch + if (i == 0 && !force) + return; + + IBus.EngineDesc engine; + if (m_is_wayland && m_engines.length == 0) + engine = m_en_engine; + else + engine = m_engines[i]; + + set_engine(engine); + } + + private void handle_engine_switch_normal(Gdk.Event event) { + handle_engine_switch(event, false); + } + + private void handle_engine_switch_reverse(Gdk.Event event) { + handle_engine_switch(event, true); + } + + private void handle_engine_switch(Gdk.Event event, bool reverse) { // Do not need switch IME if (m_engines.length <= 1) return; + uint keyval = event.key.keyval; + uint modifiers = KeybindingManager.MODIFIER_FILTER & event.key.state; + uint primary_modifiers = KeybindingManager.get_primary_modifier(event.key.state); bool pressed = KeybindingManager.primary_modifier_still_pressed( event, primary_modifiers); - if (pressed) { - int i = revert ? m_engines.length - 1 : 1; - i = m_switcher.run(event, m_engines, i); + + if (reverse) { + modifiers &= ~Gdk.ModifierType.SHIFT_MASK; + } + + if (pressed && m_switcher_delay_time >= 0) { + int i = reverse ? m_engines.length - 1 : 1; + + /* The flag of m_switcher.is_running avoids the following problem: + * + * When an IME is chosen on m_switcher, focus_in() is called + * for the fake input context. If an engine is set in focus_in() + * during running m_switcher when m_use_global_engine is false, + * state_changed() is also called and m_engines[] is modified + * in state_changed() and m_switcher.run() returns the index + * for m_engines[] but m_engines[] was modified by state_changed() + * and the index is not correct. */ + i = m_switcher.run(keyval, modifiers, event, m_engines, i, + m_real_current_context_path); + if (i < 0) { debug("switch cancelled"); + } else if (i == 0) { + debug("do not have to switch"); } else { - GLib.assert(i < m_engines.length); - switch_engine(i); + this.switcher_focus_set_engine(); } } else { - int i = revert ? m_engines.length - 1 : 1; + int i = reverse ? m_engines.length - 1 : 1; switch_engine(i); } } - private void update_engines(GLib.Variant? var_engines, - GLib.Variant? var_order) { - string[] engine_names = null; - if (var_engines != null) - engine_names = var_engines.dup_strv(); + private void run_preload_engines(IBus.EngineDesc[] engines, int index) { + string[] names = {}; + + if (engines.length <= index) { + return; + } + + if (m_preload_engines_id != 0) { + GLib.Source.remove(m_preload_engines_id); + m_preload_engines_id = 0; + } + + names += engines[index].get_name(); + m_preload_engines_id = + Timeout.add( + PRELOAD_ENGINES_DELAY_TIME, + () => { + if (!m_bus.is_connected()) + return false; + m_bus.preload_engines_async.begin(names, + -1, + null); + return false; + }); + } + + private void update_engines(string[]? unowned_engine_names, + string[]? order_names) { + string[]? engine_names = unowned_engine_names; + if (engine_names == null || engine_names.length == 0) engine_names = {"xkb:us::eng"}; - string[] order_names = - (var_order != null) ? var_order.dup_strv() : null; - string[] names = {}; foreach (var name in order_names) { + if (m_is_wayland && name.has_prefix("xkb:")) + name = "xkb:us::eng"; + if (name in names) + continue; if (name in engine_names) names += name; } foreach (var name in engine_names) { + if (m_is_wayland && name.has_prefix("xkb:")) + name = "xkb:us::eng"; if (name in names) continue; names += name; @@ -200,9 +1056,53 @@ class Panel : IBus.PanelService { var engines = m_bus.get_engines_by_names(names); + /* Fedora internal patch could save engines not in simple.xml + * likes 'xkb:cn::chi'. + */ + if (engines.length < names.length) { + string message1; + if (engines.length == 0) { + string[] fallback_names = {"xkb:us::eng"}; + m_settings_general.set_strv("preload-engines", fallback_names); + engines = m_bus.get_engines_by_names(fallback_names); + message1 = _("Your configured input method %s does not exist " + + "in IBus input methods so \"US\" layout was " + + "configured instead of your input method." + ).printf(names[0]); + } else { + message1 = _("At least one of your configured input methods " + + "does not exist in IBus input methods."); + } + var message2 = _("Please run `ibus-setup` command, open \"Input " + + "Method\" tab, and configure your input methods " + + "again."); + var dialog = new Gtk.MessageDialog( + null, + Gtk.DialogFlags.DESTROY_WITH_PARENT, + Gtk.MessageType.WARNING, + Gtk.ButtonsType.CLOSE, + "%s %s", message1, message2); + dialog.response.connect((id) => { + dialog.destroy(); + }); + dialog.show_all(); + } + if (m_engines.length == 0) { m_engines = engines; + // Do not show engines in panel icon and suggest systemsettings5 + // in Plasma Wayland in case all engines are XKB. + if (m_is_wayland && m_engines.length == 1 && + m_engines[0].get_name() == "xkb:us::eng") { + m_engines = {}; + if (m_en_engine == null) { + m_en_engine = + m_bus.get_engines_by_names({"xkb:us::eng"})[0]; + } + } switch_engine(0, true); + if (m_engines.length > 0) + run_preload_engines(m_engines, 1); } else { var current_engine = m_engines[0]; m_engines = engines; @@ -210,22 +1110,105 @@ class Panel : IBus.PanelService { for (i = 0; i < m_engines.length; i++) { if (current_engine.get_name() == engines[i].get_name()) { switch_engine(i); + if (i != 0) { + run_preload_engines(engines, 0); + } else { + run_preload_engines(engines, 1); + } return; } } switch_engine(0, true); + run_preload_engines(engines, 1); + } + + } + + private void context_render_string(Cairo.Context cr, + string symbol, + int image_width, + int image_height) { + int lwidth = 0; + int lheight = 0; + var desc = Pango.FontDescription.from_string("Monospace Bold 22"); + var layout = Pango.cairo_create_layout(cr); + + if (symbol.length >= 3) + desc = Pango.FontDescription.from_string("Monospace Bold 18"); + + layout.set_font_description(desc); + layout.set_text(symbol, -1); + layout.get_size(out lwidth, out lheight); + cr.move_to((image_width - lwidth / Pango.SCALE) / 2, + (image_height - lheight / Pango.SCALE) / 2); + cr.set_source_rgba(m_xkb_icon_rgba.red, + m_xkb_icon_rgba.green, + m_xkb_icon_rgba.blue, + m_xkb_icon_rgba.alpha); + Pango.cairo_show_layout(cr, layout); + } + + private Cairo.ImageSurface + create_cairo_image_surface_with_string(string symbol, bool cache) { + Cairo.ImageSurface image = null; + + if (cache) { + image = m_xkb_icon_image[symbol]; + + if (image != null) + return image; + } + + image = new Cairo.ImageSurface(Cairo.Format.ARGB32, 48, 48); + var cr = new Cairo.Context(image); + int width = image.get_width(); + int height = image.get_height(); + int stride = image.get_stride(); + + cr.set_source_rgba(0.0, 0.0, 0.0, 0.0); + cr.set_operator(Cairo.Operator.SOURCE); + cr.paint(); + cr.set_operator(Cairo.Operator.OVER); + context_render_string(cr, symbol, width, height); + image.flush(); + + if (m_icon_type == IconType.INDICATOR) { + if (GLib.BYTE_ORDER == GLib.ByteOrder.LITTLE_ENDIAN) { + unowned uint[] data = (uint[]) image.get_data(); + int length = stride * height / (int) sizeof(uint); + for (int i = 0; i < length; i++) + data[i] = data[i].to_big_endian(); + } } + if (cache) + m_xkb_icon_image.insert(symbol, image); + + return image; + } + + private Gdk.Pixbuf create_icon_pixbuf_with_string(string symbol) { + Gdk.Pixbuf pixbuf = m_xkb_icon_pixbufs[symbol]; + + if (pixbuf != null) + return pixbuf; + + var image = create_cairo_image_surface_with_string(symbol, false); + int width = image.get_width(); + int height = image.get_height(); + pixbuf = Gdk.pixbuf_get_from_surface(image, 0, 0, width, height); + m_xkb_icon_pixbufs.insert(symbol, pixbuf); + return pixbuf; } private void show_setup_dialog() { if (m_setup_pid != 0) { - if (Posix.kill(m_setup_pid, Posix.SIGUSR1) == 0) + if (Posix.kill(m_setup_pid, Posix.Signal.USR1) == 0) return; m_setup_pid = 0; } - string binary = GLib.Path.build_filename(BINDIR, "ibus-setup"); + string binary = GLib.Path.build_filename(Config.BINDIR, "ibus-setup"); try { GLib.Process.spawn_async(null, {binary, "ibus-setup"}, @@ -250,16 +1233,17 @@ class Panel : IBus.PanelService { if (m_about_dialog == null) { m_about_dialog = new Gtk.AboutDialog(); m_about_dialog.set_program_name("IBus"); - m_about_dialog.set_version(IBUS_VERSION); + m_about_dialog.set_version(Config.PACKAGE_VERSION); - string copyright = _( - "Copyright (c) 2007-2012 Peng Huang\n" + - "Copyright (c) 2007-2010 Red Hat, Inc.\n"); + string copyright = + "Copyright © 2007-2015 Peng Huang\n" + + "Copyright © 2015-2022 Takao Fujiwara\n" + + "Copyright © 2007-2015 Red Hat, Inc.\n"; m_about_dialog.set_copyright(copyright); m_about_dialog.set_license("LGPL"); m_about_dialog.set_comments(_("IBus is an intelligent input bus for Linux/Unix.")); - m_about_dialog.set_website("http://code.google.com/p/ibus"); + m_about_dialog.set_website("https://github.com/ibus/ibus/wiki"); m_about_dialog.set_authors({"Peng Huang "}); m_about_dialog.set_documenters({"Peng Huang "}); m_about_dialog.set_translator_credits(_("translator-credits")); @@ -275,62 +1259,72 @@ class Panel : IBus.PanelService { } } - private void status_icon_popup_menu_cb(Gtk.StatusIcon status_icon, - uint button, - uint activate_time) { + private Gtk.Menu create_context_menu() { // Show system menu if (m_sys_menu == null) { - Gtk.ImageMenuItem item; + Gtk.MenuItem item; m_sys_menu = new Gtk.Menu(); - item = new Gtk.ImageMenuItem.from_stock(Gtk.Stock.PREFERENCES, null); + item = new Gtk.MenuItem.with_label(_("Preferences")); item.activate.connect((i) => show_setup_dialog()); m_sys_menu.append(item); - item = new Gtk.ImageMenuItem.from_stock(Gtk.Stock.ABOUT, null); +#if EMOJI_DICT + item = new Gtk.MenuItem.with_label(_("Emoji Choice")); + item.activate.connect((i) => { + IBus.ExtensionEvent event = new IBus.ExtensionEvent( + "name", "emoji", "is-enabled", true, + "params", "category-list"); + /* new GLib.Variant("(sv)", "emoji", event.serialize_object()) + * will call g_variant_unref() for the child variant by vala. + * I have no idea not to unref the object so integrated + * the purpose to IBus.ExtensionEvent above. + */ + panel_extension(event); + }); + m_sys_menu.append(item); +#endif + + item = new Gtk.MenuItem.with_label(_("About")); item.activate.connect((i) => show_about_dialog()); m_sys_menu.append(item); - m_sys_menu.append(new SeparatorMenuItem()); + m_sys_menu.append(new Gtk.SeparatorMenuItem()); - item = new Gtk.ImageMenuItem.from_stock(Gtk.Stock.REFRESH, null); - item.set_label(_("Restart")); + item = new Gtk.MenuItem.with_label(_("Restart")); item.activate.connect((i) => m_bus.exit(true)); m_sys_menu.append(item); - item = new Gtk.ImageMenuItem.from_stock(Gtk.Stock.QUIT, null); + item = new Gtk.MenuItem.with_label(_("Quit")); item.activate.connect((i) => m_bus.exit(false)); m_sys_menu.append(item); m_sys_menu.show_all(); } - m_sys_menu.popup(null, - null, - m_status_icon.position_menu, - 0, - Gtk.get_current_event_time()); + return m_sys_menu; } - private void status_icon_activate_cb(Gtk.StatusIcon status_icon) { + private Gtk.Menu create_activate_menu() { m_ime_menu = new Gtk.Menu(); // Show properties and IME switching menu m_property_manager.create_menu_items(m_ime_menu); - m_ime_menu.append(new SeparatorMenuItem()); - - int width, height; - Gtk.icon_size_lookup(Gtk.IconSize.MENU, out width, out height); + m_ime_menu.append(new Gtk.SeparatorMenuItem()); // Append IMEs foreach (var engine in m_engines) { + var language = engine.get_language(); var longname = engine.get_longname(); - var item = new Gtk.ImageMenuItem.with_label(longname); - if (engine.get_icon() != "") { - var icon = new IconWidget(engine.get_icon(), width); - item.set_image(icon); + var textdomain = engine.get_textdomain(); + var transname = GLib.dgettext(textdomain, longname); + if (m_is_wayland && engine.get_name().has_prefix("xkb:")) { + language = _("Other"); + transname = _("No input method"); } + var item = new Gtk.MenuItem.with_label( + "%s - %s".printf (IBus.get_language_name(language), transname)); // Make a copy of engine to workaround a bug in vala. // https://bugzilla.gnome.org/show_bug.cgi?id=628336 var e = engine; @@ -349,40 +1343,200 @@ class Panel : IBus.PanelService { // Do not take focuse to avoid some focus related issues. m_ime_menu.set_take_focus(false); - m_ime_menu.popup(null, - null, - m_status_icon.position_menu, - 0, - Gtk.get_current_event_time()); + + return m_ime_menu; + } + + private void set_properties(IBus.PropList props) { + int i = 0; + while (true) { + IBus.Property prop = props.get(i); + if (prop == null) + break; + set_property(props.get(i), true); + i++; + } + } + + private new void set_property(IBus.Property prop, bool all_update) { + string symbol = prop.get_symbol().get_text(); + + if (m_icon_prop_key != "" && prop.get_key() == m_icon_prop_key + && symbol != "") + animate_icon(symbol, all_update); + } + + private void animate_icon(string symbol, bool all_update) { + if (m_property_icon_delay_time < 0) + return; + + uint timeout = 0; + if (all_update) + timeout = (uint) m_property_icon_delay_time; + + if (m_property_icon_delay_time_id > 0) { + GLib.Source.remove(m_property_icon_delay_time_id); + m_property_icon_delay_time_id = 0; + } + + m_property_icon_delay_time_id = GLib.Timeout.add(timeout, () => { + m_property_icon_delay_time_id = 0; + + if (m_icon_type == IconType.STATUS_ICON) { + Gdk.Pixbuf pixbuf = create_icon_pixbuf_with_string(symbol); + m_status_icon.set_from_pixbuf(pixbuf); + } + else if (m_icon_type == IconType.INDICATOR) { + Cairo.ImageSurface image = + create_cairo_image_surface_with_string(symbol, true); + m_indicator.set_cairo_image_surface_full(image, ""); + } + + return false; + }); } /* override virtual functions */ public override void set_cursor_location(int x, int y, int width, int height) { m_candidate_panel.set_cursor_location(x, y, width, height); + m_property_panel.set_cursor_location(x, y, width, height); + } + + private bool switcher_focus_set_engine_real() { + IBus.EngineDesc? selected_engine = m_switcher.get_selected_engine(); + string prev_context_path = m_switcher.get_input_context_path(); + if (selected_engine != null && + prev_context_path != "" && + prev_context_path == m_current_context_path) { + set_engine(selected_engine); + m_switcher.reset(); + return true; + } + + return false; + } + + private void switcher_focus_set_engine() { + IBus.EngineDesc? selected_engine = m_switcher.get_selected_engine(); + string prev_context_path = m_switcher.get_input_context_path(); + if (selected_engine == null && + prev_context_path != "" && + m_switcher.is_running()) { + var context = GLib.MainContext.default(); + if (m_switcher_focus_set_engine_id > 0 && + context.find_source_by_id(m_switcher_focus_set_engine_id) + != null) { + GLib.Source.remove(m_switcher_focus_set_engine_id); + } + m_switcher_focus_set_engine_id = GLib.Timeout.add(100, () => { + // focus_in is comming before switcher returns + switcher_focus_set_engine_real(); + m_switcher_focus_set_engine_id = -1; + return false; + }); + } else { + if (switcher_focus_set_engine_real()) { + var context = GLib.MainContext.default(); + if (m_switcher_focus_set_engine_id > 0 && + context.find_source_by_id(m_switcher_focus_set_engine_id) + != null) { + GLib.Source.remove(m_switcher_focus_set_engine_id); + } + m_switcher_focus_set_engine_id = -1; + } + } } public override void focus_in(string input_context_path) { + m_current_context_path = input_context_path; + + /* 'fake' input context is named as + * '/org/freedesktop/IBus/InputContext_1' and always send in + * focus-out events by ibus-daemon for the global engine mode. + * Now ibus-daemon assumes to always use the global engine. + * But this event should not be used for modal dialogs + * such as Switcher. + */ + if (!input_context_path.has_suffix("InputContext_1")) { + m_real_current_context_path = m_current_context_path; + m_property_panel.focus_in(); + this.switcher_focus_set_engine(); + } + + if (m_use_global_engine) + return; + + var engine = m_engine_contexts[input_context_path]; + + if (engine == null) { + /* If engine == null, need to call set_engine(m_engines[0]) + * here and update m_engine_contexts[] to avoid the + * following problem: + * + * If context1 is focused and does not set an engine and + * return here, the current engine1 is used for context1. + * When context2 is focused and switch engine1 to engine2, + * the current engine becomes engine2. + * And when context1 is focused again, context1 still + * does not set an engine and return here, + * engine2 is used for context2 instead of engine1. */ + engine = m_engines.length > 0 ? m_engines[0] : null; + + if (engine == null) + return; + } else { + bool in_engines = false; + + foreach (var e in m_engines) { + if (engine.get_name() == e.get_name()) { + in_engines = true; + break; + } + } + + /* The engine is deleted by ibus-setup before focus_in() + * is called. */ + if (!in_engines) + return; + } + + set_engine(engine); } public override void focus_out(string input_context_path) { + m_current_context_path = ""; + } + + public override void destroy_context(string input_context_path) { + if (m_use_global_engine) + return; + + m_engine_contexts.remove(input_context_path); } public override void register_properties(IBus.PropList props) { m_property_manager.set_properties(props); + m_property_panel.set_properties(props); + set_properties(props); } public override void update_property(IBus.Property prop) { m_property_manager.update_property(prop); + m_property_panel.update_property(prop); + set_property(prop, false); } public override void update_preedit_text(IBus.Text text, uint cursor_pos, bool visible) { - if (visible) + if (visible) { m_candidate_panel.set_preedit_text(text, cursor_pos); - else + m_property_panel.set_preedit_text(text, cursor_pos); + } else { m_candidate_panel.set_preedit_text(null, 0); + m_property_panel.set_preedit_text(null, 0); + } } public override void hide_preedit_text() { @@ -392,6 +1546,7 @@ class Panel : IBus.PanelService { public override void update_auxiliary_text(IBus.Text text, bool visible) { m_candidate_panel.set_auxiliary_text(visible ? text : null); + m_property_panel.set_auxiliary_text(visible ? text : null); } public override void hide_auxiliary_text() { @@ -401,22 +1556,108 @@ class Panel : IBus.PanelService { public override void update_lookup_table(IBus.LookupTable table, bool visible) { m_candidate_panel.set_lookup_table(visible ? table : null); + m_property_panel.set_lookup_table(visible ? table : null); } public override void hide_lookup_table() { m_candidate_panel.set_lookup_table(null); } + public override void set_content_type(uint purpose, uint hints) { + m_candidate_panel.set_content_type(purpose, hints); + } + public override void state_changed() { + /* Do not change the order of m_engines during running switcher. */ + if (m_switcher.is_running()) + return; + if (m_engines.length == 0) + return; + + if (m_icon_type == IconType.INDICATOR) { + // Wait for the callback of the session bus. + if (m_indicator == null) + return; + } + var icon_name = "ibus-keyboard"; var engine = m_bus.get_global_engine(); - if (engine != null) + if (engine != null) { icon_name = engine.get_icon(); + m_icon_prop_key = engine.get_icon_prop_key(); + } else { + m_icon_prop_key = ""; + } - if (icon_name[0] == '/') - m_status_icon.set_from_file(icon_name); - else - m_status_icon.set_from_icon_name(icon_name); + if (icon_name[0] == '/') { + if (m_icon_type == IconType.STATUS_ICON) + m_status_icon.set_from_file(icon_name); + else if (m_icon_type == IconType.INDICATOR) + m_indicator.set_icon_full(icon_name, ""); + } else { + string language = null; + + if (engine != null) { + var name = engine.get_name(); + if (!m_is_wayland && name.length >= 4 && name[0:4] == "xkb:") + language = m_switcher.get_xkb_language(engine); + } + + if (language != null) { + if (m_icon_type == IconType.STATUS_ICON) { + Gdk.Pixbuf pixbuf = + create_icon_pixbuf_with_string(language); + m_status_icon.set_from_pixbuf(pixbuf); + } + else if (m_icon_type == IconType.INDICATOR) { + Cairo.ImageSurface image = + create_cairo_image_surface_with_string(language, + true); + m_indicator.set_cairo_image_surface_full(image, ""); + } + } else { + var theme = Gtk.IconTheme.get_default(); + if (theme.lookup_icon(icon_name, 48, 0) != null) { + if (m_icon_type == IconType.STATUS_ICON) + m_status_icon.set_from_icon_name(icon_name); + else if (m_icon_type == IconType.INDICATOR) + m_indicator.set_icon_full(icon_name, ""); + } else { + if (m_icon_type == IconType.STATUS_ICON) + m_status_icon.set_from_icon_name("ibus-engine"); + else if (m_icon_type == IconType.INDICATOR) + m_indicator.set_icon_full("ibus-engine", ""); + } + } + } + + if (engine == null) + return; + + int i; + for (i = 0; i < m_engines.length; i++) { + if (m_engines[i].get_name() == engine.get_name()) + break; + } + + // engine is first engine in m_engines. + if (i == 0) + return; + + // engine is not in m_engines. + if (i >= m_engines.length) + return; + + for (int j = i; j > 0; j--) { + m_engines[j] = m_engines[j - 1]; + } + m_engines[0] = engine; + + string[] names = {}; + foreach(var desc in m_engines) { + names += desc.get_name(); + } + m_settings_general.set_strv("engines-order", names); } } diff --git a/ui/gtk3/panelbinding.vala b/ui/gtk3/panelbinding.vala new file mode 100644 index 000000000..3c516afd5 --- /dev/null +++ b/ui/gtk3/panelbinding.vala @@ -0,0 +1,1136 @@ +/* vim:set et sts=4 sw=4: + * + * ibus - The Input Bus + * + * Copyright(c) 2018 Peng Huang + * Copyright(c) 2018-2021 Takao Fujwiara + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +class Preedit : Gtk.Window { + private Gtk.Label m_extension_preedit_text; + private Gtk.Label m_extension_preedit_emoji; + private IBus.Text? m_engine_preedit_text; + private bool m_engine_preedit_text_show; + private uint m_engine_preedit_cursor_pos; + private string m_prefix = "@"; + private bool m_is_shown = true; + + + public Preedit() { + GLib.Object( + name : "IBusPreedit", + type: Gtk.WindowType.POPUP + ); + m_extension_preedit_text = new Gtk.Label(""); + m_extension_preedit_emoji = new Gtk.Label(""); + } + + + public new void hide() { + reset(); + base.hide(); + m_is_shown = false; + } + + + public bool is_shown() { + return m_is_shown; + } + + + public void reset() { + set_emoji(""); + set_text(""); + resize(1, 1); + m_is_shown = true; + } + + public void append_text(string text) { + if (text.length == 0) + return; + string total = m_extension_preedit_text.get_text(); + total += text; + m_extension_preedit_text.set_text(total); + } + + + public string get_text() { + return m_extension_preedit_text.get_text(); + } + + + public void set_text(string text) { + m_extension_preedit_text.set_text(text); + } + + + public string get_emoji() { + return m_extension_preedit_emoji.get_text(); + } + + + public void set_emoji(string text) { + m_extension_preedit_emoji.set_text(text); + } + + + public bool backspace() { + string total = m_extension_preedit_emoji.get_text(); + if (total.length > 0) { + m_extension_preedit_emoji.set_text(""); + resize(1, 1); + return false; + } + total = m_extension_preedit_text.get_text(); + int char_count = total.char_count(); + if (char_count == 0) + return true; + total = total[0:total.index_of_nth_char(char_count - 1)]; + resize(1, 1); + m_extension_preedit_text.set_text(total); + if (total.length == 0) + resize(1, 1); + return true; + } + + + private string get_extension_text () { + string extension_text = m_extension_preedit_emoji.get_text(); + if (extension_text.length == 0) + extension_text = m_extension_preedit_text.get_text(); + return m_prefix + extension_text; + } + + + private void set_preedit_color(IBus.Text text, + uint start_index, + uint end_index) { + text.append_attribute(IBus.AttrType.UNDERLINE, + IBus.AttrUnderline.SINGLE, + start_index, (int)end_index); + } + + + public IBus.Text get_engine_preedit_text() { + string extension_text = get_extension_text(); + uint char_count = extension_text.char_count(); + IBus.Text retval; + if (m_engine_preedit_text == null || !m_engine_preedit_text_show) { + retval = new IBus.Text.from_string(extension_text); + set_preedit_color(retval, 0, char_count); + return retval; + } + retval = new IBus.Text.from_string( + extension_text + m_engine_preedit_text.get_text()); + set_preedit_color(retval, 0, char_count); + + unowned IBus.AttrList attrs = m_engine_preedit_text.get_attributes(); + + if (attrs == null) + return retval; + + int i = 0; + while (true) { + IBus.Attribute attr = attrs.get(i++); + if (attr == null) + break; + long start_index = attr.start_index; + long end_index = attr.end_index; + if (start_index < 0) + start_index = 0; + if (end_index < 0) + end_index = m_engine_preedit_text.get_length(); + retval.append_attribute(attr.type, attr.value, + char_count + (uint)start_index, + (int)char_count + (int)end_index); + } + return retval; + } + + + public void set_engine_preedit_text(IBus.Text? text) { + m_engine_preedit_text = text; + } + + + public void show_engine_preedit_text() { + m_engine_preedit_text_show = true; + } + + + public void hide_engine_preedit_text() { + m_engine_preedit_text_show = false; + } + + + public uint get_engine_preedit_cursor_pos() { + return get_extension_text().char_count() + m_engine_preedit_cursor_pos; + } + + + public void set_engine_preedit_cursor_pos(uint cursor_pos) { + m_engine_preedit_cursor_pos = cursor_pos; + } + + + public IBus.Text get_commit_text() { + string extension_text = m_extension_preedit_emoji.get_text(); + if (extension_text.length == 0 && m_prefix != "u") + extension_text = m_extension_preedit_text.get_text(); + return new IBus.Text.from_string(extension_text); + } + + + public void set_extension_name(string extension_name) { + if (extension_name.length == 0) + m_prefix = "@"; + else + m_prefix = extension_name[0:1]; + } +} + + +class PanelBinding : IBus.PanelService { + private bool m_is_wayland; + private bool m_wayland_lookup_table_is_visible; + private IBus.Bus m_bus; + private Gtk.Application m_application; + private GLib.Settings m_settings_panel = null; + private GLib.Settings m_settings_emoji = null; + private string m_current_context_path = ""; + private string m_real_current_context_path = ""; + private IBusEmojier? m_emojier; + private uint m_emojier_set_emoji_lang_id; + private uint m_emojier_focus_commit_text_id; + private string[] m_emojier_favorites = {}; + private Gtk.CssProvider m_css_provider; + private const uint PRELOAD_ENGINES_DELAY_TIME = 30000; + private bool m_load_emoji_at_startup; + private bool m_loaded_emoji = false; + private bool m_load_unicode_at_startup; + private bool m_loaded_unicode = false; + private bool m_enable_extension; + private string m_extension_name = ""; + private Preedit m_preedit; + private IBus.ProcessKeyEventData m_key_event_data = + IBus.ProcessKeyEventData(); + + public PanelBinding(IBus.Bus bus, + Gtk.Application application) { + GLib.assert(bus.is_connected()); + // Chain up base class constructor + GLib.Object(connection : bus.get_connection(), + object_path : IBus.PATH_PANEL_EXTENSION_EMOJI); + +#if USE_GDK_WAYLAND + Type instance_type = Gdk.Display.get_default().get_type(); + Type wayland_type = typeof(GdkWayland.Display); + m_is_wayland = instance_type.is_a(wayland_type); +#else + m_is_wayland = false; + warning("Checking Wayland is disabled"); +#endif + + m_bus = bus; + m_application = application; + + init_settings(); + m_preedit = new Preedit(); + } + + + private void init_settings() { + m_settings_panel = new GLib.Settings("org.freedesktop.ibus.panel"); + m_settings_emoji = new GLib.Settings("org.freedesktop.ibus.panel.emoji"); + + m_settings_panel.changed["custom-font"].connect((key) => { + BindingCommon.set_custom_font(m_settings_panel, + m_settings_emoji, + ref m_css_provider); + }); + + m_settings_panel.changed["use-custom-font"].connect((key) => { + BindingCommon.set_custom_font(m_settings_panel, + m_settings_emoji, + ref m_css_provider); + }); + + m_settings_panel.changed["custom-theme"].connect((key) => { + BindingCommon.set_custom_theme(m_settings_panel); + }); + + m_settings_panel.changed["use-custom-theme"].connect((key) => { + BindingCommon.set_custom_theme(m_settings_panel); + }); + + m_settings_panel.changed["custom-icon"].connect((key) => { + BindingCommon.set_custom_icon(m_settings_panel); + }); + + m_settings_panel.changed["use-custom-icon"].connect((key) => { + BindingCommon.set_custom_icon(m_settings_panel); + }); + + m_settings_emoji.changed["unicode-hotkey"].connect((key) => { + set_emoji_hotkey(); + }); + + m_settings_emoji.changed["font"].connect((key) => { + BindingCommon.set_custom_font(m_settings_panel, + m_settings_emoji, + ref m_css_provider); + }); + + m_settings_emoji.changed["hotkey"].connect((key) => { + set_emoji_hotkey(); + }); + + m_settings_emoji.changed["favorites"].connect((key) => { + set_emoji_favorites(); + }); + + m_settings_emoji.changed["favorite-annotations"].connect((key) => { + set_emoji_favorites(); + }); + + m_settings_emoji.changed["lang"].connect((key) => { + set_emoji_lang(); + }); + + m_settings_emoji.changed["has-partial-match"].connect((key) => { + set_emoji_partial_match(); + }); + + m_settings_emoji.changed["partial-match-length"].connect((key) => { + set_emoji_partial_match(); + }); + + m_settings_emoji.changed["partial-match-condition"].connect((key) => { + set_emoji_partial_match(); + }); + + m_settings_emoji.changed["load-emoji-at-startup"].connect((key) => { + set_load_emoji_at_startup(); + }); + + m_settings_emoji.changed["load-unicode-at-startup"].connect((key) => { + set_load_unicode_at_startup(); + }); + } + + + // Returning unowned IBus.KeyEventData causes NULL with gcc optimization + // and use m_key_event_data. + private void parse_accelerator(string accelerator) { + m_key_event_data = {}; + uint keysym = 0; + IBus.ModifierType modifiers = 0; + IBus.accelerator_parse(accelerator, + out keysym, out modifiers); + if (keysym == 0U && modifiers == 0) { + warning("Failed to parse shortcut key '%s'".printf(accelerator)); + return; + } + if ((modifiers & IBus.ModifierType.SUPER_MASK) != 0) { + modifiers ^= IBus.ModifierType.SUPER_MASK; + modifiers |= IBus.ModifierType.MOD4_MASK; + } + m_key_event_data.keyval = keysym; + m_key_event_data.state = modifiers; + } + + + private void set_emoji_hotkey() { + IBus.ProcessKeyEventData[] emoji_keys = {}; + IBus.ProcessKeyEventData key; + string[] accelerators = m_settings_emoji.get_strv("hotkey"); + foreach (var accelerator in accelerators) { + parse_accelerator(accelerator); + emoji_keys += m_key_event_data; + } + + /* Since {} is not allocated, parse_accelerator() should be unowned. */ + key = {}; + emoji_keys += key; + + IBus.ProcessKeyEventData[] unicode_keys = {}; + accelerators = m_settings_emoji.get_strv("unicode-hotkey"); + foreach (var accelerator in accelerators) { + parse_accelerator(accelerator); + unicode_keys += m_key_event_data; + } + key = {}; + unicode_keys += key; + + panel_extension_register_keys("emoji", emoji_keys, + "unicode", unicode_keys); + } + + + private void set_emoji_favorites() { + m_emojier_favorites = m_settings_emoji.get_strv("favorites"); + IBusEmojier.set_favorites( + m_emojier_favorites, + m_settings_emoji.get_strv("favorite-annotations")); + } + + + private void set_emoji_lang() { + if (m_emojier_set_emoji_lang_id > 0) { + GLib.Source.remove(m_emojier_set_emoji_lang_id); + m_emojier_set_emoji_lang_id = 0; + } + m_emojier_set_emoji_lang_id = GLib.Idle.add(() => { + IBusEmojier.set_annotation_lang( + m_settings_emoji.get_string("lang")); + m_emojier_set_emoji_lang_id = 0; + m_loaded_emoji = true; + if (m_load_unicode_at_startup && !m_loaded_unicode) { + IBusEmojier.load_unicode_dict(); + m_loaded_unicode = true; + } + return false; + }); + } + + + private void set_emoji_partial_match() { + IBusEmojier.set_partial_match( + m_settings_emoji.get_boolean("has-partial-match")); + IBusEmojier.set_partial_match_length( + m_settings_emoji.get_int("partial-match-length")); + IBusEmojier.set_partial_match_condition( + m_settings_emoji.get_int("partial-match-condition")); + } + + + private void set_load_emoji_at_startup() { + m_load_emoji_at_startup = + m_settings_emoji.get_boolean("load-emoji-at-startup"); + } + + + private void set_load_unicode_at_startup() { + m_load_unicode_at_startup = + m_settings_emoji.get_boolean("load-unicode-at-startup"); + } + + public void load_settings() { + + set_emoji_hotkey(); + set_load_emoji_at_startup(); + set_load_unicode_at_startup(); + BindingCommon.set_custom_font(m_settings_panel, + m_settings_emoji, + ref m_css_provider); + BindingCommon.set_custom_theme(m_settings_panel); + BindingCommon.set_custom_icon(m_settings_panel); + set_emoji_favorites(); + if (m_load_emoji_at_startup && !m_loaded_emoji) + set_emoji_lang(); + set_emoji_partial_match(); + } + + + /** + * disconnect_signals: + * + * Call this API before m_panel = null so that the ref_count becomes 0 + */ + public void disconnect_signals() { + if (m_emojier_set_emoji_lang_id > 0) { + GLib.Source.remove(m_emojier_set_emoji_lang_id); + m_emojier_set_emoji_lang_id = 0; + } + if (m_emojier != null) { + m_application.remove_window(m_emojier); + m_emojier = null; + } + m_application = null; + } + + + private void commit_text_update_favorites(IBus.Text text, + bool disable_extension) { + commit_text(text); + + // If disable_extension is false, the extension event is already + // sent before the focus-in is received. + if (disable_extension) { + IBus.ExtensionEvent event = new IBus.ExtensionEvent( + "name", m_extension_name, + "is-enabled", false, + "is-extension", true); + panel_extension(event); + } + string committed_string = text.text; + string preedit_string = m_preedit.get_text(); + m_preedit.hide(); + if (preedit_string == committed_string) + return; + bool has_favorite = false; + foreach (unowned string favorite in m_emojier_favorites) { + if (favorite == committed_string) { + has_favorite = true; + break; + } + } + if (!has_favorite) { + m_emojier_favorites += committed_string; + m_settings_emoji.set_strv("favorites", m_emojier_favorites); + } + } + + + private bool emojier_focus_commit_real() { + if (m_emojier == null) + return true; + string selected_string = m_emojier.get_selected_string(); + string prev_context_path = m_emojier.get_input_context_path(); + if (selected_string != null && + prev_context_path != "" && + prev_context_path == m_current_context_path) { + IBus.Text text = new IBus.Text.from_string(selected_string); + commit_text_update_favorites(text, false); + m_emojier.reset(); + return true; + } + + return false; + } + + + private void emojier_focus_commit() { + if (m_emojier == null) + return; + string selected_string = m_emojier.get_selected_string(); + string prev_context_path = m_emojier.get_input_context_path(); + if (selected_string == null && + prev_context_path != "") { + var context = GLib.MainContext.default(); + if (m_emojier_focus_commit_text_id > 0 && + context.find_source_by_id(m_emojier_focus_commit_text_id) + != null) { + GLib.Source.remove(m_emojier_focus_commit_text_id); + } + m_emojier_focus_commit_text_id = GLib.Timeout.add(100, () => { + // focus_in is comming before switcher returns + emojier_focus_commit_real(); + m_emojier_focus_commit_text_id = -1; + return false; + }); + } else { + if (emojier_focus_commit_real()) { + var context = GLib.MainContext.default(); + if (m_emojier_focus_commit_text_id > 0 && + context.find_source_by_id(m_emojier_focus_commit_text_id) + != null) { + GLib.Source.remove(m_emojier_focus_commit_text_id); + } + m_emojier_focus_commit_text_id = -1; + } + } + } + + + private bool key_press_escape() { + if (is_emoji_lookup_table()) { + bool show_candidate = m_emojier.key_press_escape(); + convert_preedit_text(); + return show_candidate; + } + if (m_preedit.get_emoji() != "") { + m_preedit.set_emoji(""); + string annotation = m_preedit.get_text(); + m_emojier.set_annotation(annotation); + return false; + } + m_enable_extension = false; + hide_emoji_lookup_table(); + m_preedit.hide(); + IBus.ExtensionEvent event = new IBus.ExtensionEvent( + "name", m_extension_name, + "is-enabled", false, + "is-extension", true); + panel_extension(event); + return false; + } + + + private bool key_press_keyval(uint keyval) { + unichar ch = IBus.keyval_to_unicode(keyval); + if (m_extension_name == "unicode" && !ch.isxdigit()) + return false; + if (ch.iscntrl()) + return false; + string str = ch.to_string(); + m_preedit.append_text(str); + string annotation = m_preedit.get_text(); + m_emojier.set_annotation(annotation); + m_preedit.set_emoji(""); + return true; + } + + + private bool key_press_enter() { + if (m_extension_name != "unicode" && is_emoji_lookup_table()) { + // Check if variats exist + if (m_emojier.key_press_enter(false)) { + convert_preedit_text(); + return true; + } + } + IBus.Text text = m_preedit.get_commit_text(); + commit_text_update_favorites(text, true); + return false; + } + + + private void convert_preedit_text() { + if (m_emojier.get_number_of_candidates() > 0) + m_preedit.set_emoji(m_emojier.get_current_candidate()); + else + m_preedit.set_emoji(""); + } + + + private bool key_press_space() { + bool show_candidate = false; + if (m_preedit.get_emoji() != "") { + m_emojier.key_press_cursor_horizontal(Gdk.Key.Right, 0); + show_candidate = true; + } else { + string annotation = m_preedit.get_text(); + if (annotation.length == 0) { + show_candidate = true; + if (is_emoji_lookup_table()) + m_emojier.key_press_cursor_horizontal(Gdk.Key.Right, 0); + } else { + m_emojier.set_annotation(annotation); + } + } + convert_preedit_text(); + return show_candidate; + } + + + private bool key_press_cursor_horizontal(uint keyval, + uint modifiers) { + if (is_emoji_lookup_table()) { + m_emojier.key_press_cursor_horizontal(keyval, modifiers); + convert_preedit_text(); + return true; + } + return false; + } + + + private bool key_press_cursor_vertical(uint keyval, + uint modifiers) { + if (is_emoji_lookup_table()) { + m_emojier.key_press_cursor_vertical(keyval, modifiers); + convert_preedit_text(); + return true; + } + return false; + } + + + private bool key_press_cursor_home_end(uint keyval, + uint modifiers) { + if (is_emoji_lookup_table()) { + m_emojier.key_press_cursor_home_end(keyval, modifiers); + convert_preedit_text(); + return true; + } + return false; + } + + + private bool key_press_control_keyval(uint keyval, + uint modifiers) { + bool show_candidate = false; + switch(keyval) { + case Gdk.Key.f: + show_candidate = key_press_cursor_horizontal(Gdk.Key.Right, + modifiers); + break; + case Gdk.Key.b: + show_candidate = key_press_cursor_horizontal(Gdk.Key.Left, + modifiers); + break; + case Gdk.Key.n: + case Gdk.Key.N: + show_candidate = key_press_cursor_vertical(Gdk.Key.Down, modifiers); + break; + case Gdk.Key.p: + case Gdk.Key.P: + show_candidate = key_press_cursor_vertical(Gdk.Key.Up, modifiers); + break; + case Gdk.Key.h: + show_candidate = key_press_cursor_home_end(Gdk.Key.Home, modifiers); + break; + case Gdk.Key.e: + show_candidate = key_press_cursor_home_end(Gdk.Key.End, modifiers); + break; + case Gdk.Key.u: + m_preedit.reset(); + m_emojier.set_annotation(""); + hide_emoji_lookup_table(); + break; + case Gdk.Key.C: + case Gdk.Key.c: + if ((modifiers & Gdk.ModifierType.SHIFT_MASK) != 0) { + if (!m_is_wayland && m_emojier != null && + m_emojier.get_number_of_candidates() > 0) { + var text = m_emojier.get_current_candidate(); + Gtk.Clipboard clipboard = + Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD); + clipboard.set_text(text, -1); + clipboard.store(); + } + show_candidate = is_emoji_lookup_table(); + } + break; + default: + show_candidate = is_emoji_lookup_table(); + break; + } + return show_candidate; + } + + + private void hide_wayland_lookup_table() { + m_wayland_lookup_table_is_visible = false; + var text = new IBus.Text.from_string(""); + update_auxiliary_text_received(text, false); + update_lookup_table_received( + new IBus.LookupTable(1, 0, false, true), + false); + } + + + private void show_wayland_lookup_table(IBus.Text text) { + m_wayland_lookup_table_is_visible = true; + var table = m_emojier.get_one_dimension_lookup_table(); + uint ncandidates = table.get_number_of_candidates(); + update_auxiliary_text_received( + text, + ncandidates > 0 ? true : false); + update_lookup_table_received( + table, + ncandidates > 0 ? true : false); + } + + + private void hide_emoji_lookup_table() { + if (m_emojier == null) + return; + if (m_wayland_lookup_table_is_visible) + hide_wayland_lookup_table(); + else + m_emojier.hide(); + } + + + private void show_emoji_lookup_table() { + /* Emojier category_list is shown in both Xorg and Wayland + * because the annotation information is useful but the Wayland lookup + * window is alway one dimension. So the category_list is shown + * when the user annotation is null. + */ + if (m_is_wayland && m_preedit.get_text() != "") { + var text = m_emojier.get_title_text(); + show_wayland_lookup_table(text); + } else { + // POPUP window takes the focus in Wayland. + if (m_is_wayland) + m_emojier.set_input_context_path(m_real_current_context_path); + m_emojier.show_all(); + } + } + + + private bool is_emoji_lookup_table() { + if (m_is_wayland) + return m_wayland_lookup_table_is_visible; + else + return m_emojier.get_visible(); + } + + + private void show_preedit_and_candidate(bool show_candidate) { + uint cursor_pos = 0; + if (!show_candidate) + cursor_pos = m_preedit.get_engine_preedit_cursor_pos(); + update_preedit_text_received( + m_preedit.get_engine_preedit_text(), + cursor_pos, + true); + if (!show_candidate) { + hide_emoji_lookup_table(); + return; + } + if (m_emojier == null) + return; + /* Wayland gives the focus on Emojir which is a GTK popup window + * and move the focus fom the current input context to Emojier. + * This forwards the lookup table to gnome-shell's lookup table + * but it enables one dimension lookup table only. + */ + show_emoji_lookup_table(); + } + + + public override void focus_in(string input_context_path) { + m_current_context_path = input_context_path; + + /* 'fake' input context is named as + * '/org/freedesktop/IBus/InputContext_1' and always send in + * focus-out events by ibus-daemon for the global engine mode. + * Now ibus-daemon assumes to always use the global engine. + * But this event should not be used for modal dialogs + * such as Switcher. + */ + if (!input_context_path.has_suffix("InputContext_1")) { + m_real_current_context_path = m_current_context_path; + if (m_is_wayland) + this.emojier_focus_commit(); + } + } + + + public override void focus_out(string input_context_path) { + m_current_context_path = ""; + /* Close emoji typing when the focus out happens but it's not a + * rebuilding GUI. + * Emojier rebuilding GUI happens when Escape key is pressed on + * Emojier candidate list and the rebuilding also causes focus-out/in + * events in GNOME Wayland but not Xorg desktops. + * The rebuilding GUI can be checked with m_emojier.is_rebuilding_gui() + * in Wayland. + * m_emojier.is_rebuilding_gui() always returns false in Xorg desktops + * since focus-out/in events does not happen. + */ + if (m_emojier != null && !m_emojier.is_rebuilding_gui()) { + m_preedit.reset(); + m_emojier.set_annotation(""); + if (m_wayland_lookup_table_is_visible) + hide_wayland_lookup_table(); + key_press_escape(); + } + } + + + public override void panel_extension_received(IBus.ExtensionEvent event) { + m_extension_name = event.get_name(); + if (m_extension_name != "emoji" && m_extension_name != "unicode") { + string format = "The name %s is not implemented in PanelExtension"; + warning (format.printf(m_extension_name)); + m_extension_name = ""; + return; + } + m_enable_extension = event.is_enabled; + if (!m_enable_extension) { + hide_emoji_lookup_table(); + return; + } + if (!m_loaded_emoji) + set_emoji_lang(); + if (!m_loaded_unicode && m_loaded_emoji) { + IBusEmojier.load_unicode_dict(); + m_loaded_unicode = true; + } + if (m_emojier == null) { + m_emojier = new IBusEmojier(m_is_wayland); + // For title handling in gnome-shell + m_application.add_window(m_emojier); + m_emojier.candidate_clicked.connect((i, b, s) => { + candidate_clicked_lookup_table_real(i, b, s, true); + }); + m_emojier.commit_text.connect((s) => { + if (!m_is_wayland) + return; + // Currently emojier has a focus but the text input focus + // does not and commit the text later. + IBus.ExtensionEvent close_event = new IBus.ExtensionEvent( + "name", m_extension_name, + "is-enabled", false, + "is-extension", true); + panel_extension(close_event); + }); + } + m_emojier.reset(); + m_emojier.set_annotation(""); + m_preedit.set_extension_name(m_extension_name); + m_preedit.reset(); + update_preedit_text_received( + m_preedit.get_engine_preedit_text(), + m_preedit.get_engine_preedit_cursor_pos(), + true); + string params = event.get_params(); + if (params == "category-list") { + key_press_space(); + show_preedit_and_candidate(true); + } + } + + + public override void set_cursor_location(int x, + int y, + int width, + int height) { + if (m_emojier != null) + m_emojier.set_cursor_location(x, y, width, height); + } + + + public override void update_preedit_text(IBus.Text text, + uint cursor_pos, + bool visible) { + m_preedit.set_engine_preedit_text(text); + if (visible) + m_preedit.show_engine_preedit_text(); + else + m_preedit.hide_engine_preedit_text(); + m_preedit.set_engine_preedit_cursor_pos(cursor_pos); + update_preedit_text_received(m_preedit.get_engine_preedit_text(), + m_preedit.get_engine_preedit_cursor_pos(), + visible); + } + + + public override void show_preedit_text() { + m_preedit.show_engine_preedit_text(); + show_preedit_and_candidate(false); + } + + + public override void hide_preedit_text() { + m_preedit.hide_engine_preedit_text(); + show_preedit_and_candidate(false); + } + + + public override bool process_key_event(uint keyval, + uint keycode, + uint state) { + if ((state & IBus.ModifierType.RELEASE_MASK) != 0) + return false; + uint modifiers = state; + bool show_candidate = false; + switch(keyval) { + case Gdk.Key.Escape: + show_candidate = key_press_escape(); + if (!m_preedit.is_shown()) + return true; + break; + case Gdk.Key.Return: + case Gdk.Key.KP_Enter: + if (m_extension_name == "unicode") + key_press_space(); + show_candidate = key_press_enter(); + if (!m_preedit.is_shown()) { + hide_emoji_lookup_table(); + return true; + } + break; + case Gdk.Key.BackSpace: + m_preedit.backspace(); + string annotation = m_preedit.get_text(); + if (annotation == "" && m_extension_name == "unicode") { + key_press_escape(); + return true; + } + m_emojier.set_annotation(annotation); + break; + case Gdk.Key.space: + case Gdk.Key.KP_Space: + if ((modifiers & Gdk.ModifierType.SHIFT_MASK) != 0) { + if (!key_press_keyval(keyval)) + return true; + show_candidate = is_emoji_lookup_table(); + break; + } + show_candidate = key_press_space(); + if (m_extension_name == "unicode") { + key_press_enter(); + return true; + } + break; + case Gdk.Key.Right: + case Gdk.Key.KP_Right: + /* one dimension in Wayland, two dimensions in X11 */ + if (m_is_wayland) { + show_candidate = key_press_cursor_vertical(Gdk.Key.Down, + modifiers); + } else { + show_candidate = key_press_cursor_horizontal(Gdk.Key.Right, + modifiers); + } + break; + case Gdk.Key.Left: + case Gdk.Key.KP_Left: + if (m_is_wayland) { + show_candidate = key_press_cursor_vertical(Gdk.Key.Up, + modifiers); + } else { + show_candidate = key_press_cursor_horizontal(Gdk.Key.Left, + modifiers); + } + break; + case Gdk.Key.Down: + case Gdk.Key.KP_Down: + if (m_is_wayland) { + show_candidate = key_press_cursor_horizontal(Gdk.Key.Right, + modifiers); + } else { + show_candidate = key_press_cursor_vertical(Gdk.Key.Down, + modifiers); + } + break; + case Gdk.Key.Up: + case Gdk.Key.KP_Up: + if (m_is_wayland) { + show_candidate = key_press_cursor_horizontal(Gdk.Key.Left, + modifiers); + } else { + show_candidate = key_press_cursor_vertical(Gdk.Key.Up, + modifiers); + } + break; + case Gdk.Key.Page_Down: + case Gdk.Key.KP_Page_Down: + if (m_is_wayland) { + show_candidate = key_press_cursor_vertical(Gdk.Key.Down, + modifiers); + } else { + show_candidate = key_press_cursor_vertical(Gdk.Key.Page_Down, + modifiers); + } + break; + case Gdk.Key.Page_Up: + case Gdk.Key.KP_Page_Up: + if (m_is_wayland) { + show_candidate = key_press_cursor_vertical(Gdk.Key.Up, + modifiers); + } else { + show_candidate = key_press_cursor_vertical(Gdk.Key.Page_Up, + modifiers); + } + break; + case Gdk.Key.Home: + case Gdk.Key.KP_Home: + show_candidate = key_press_cursor_home_end(Gdk.Key.Home, modifiers); + break; + case Gdk.Key.End: + case Gdk.Key.KP_End: + show_candidate = key_press_cursor_home_end(Gdk.Key.End, modifiers); + break; + default: + if ((modifiers & Gdk.ModifierType.CONTROL_MASK) != 0) { + show_candidate = key_press_control_keyval(keyval, modifiers); + break; + } + if (!key_press_keyval(keyval)) + return true; + show_candidate = is_emoji_lookup_table(); + break; + } + show_preedit_and_candidate(show_candidate); + return true; + } + + public override void commit_text_received(IBus.Text text) { + unowned string? str = text.text; + if (str == null) + return; + /* Do not call convert_preedit_text() because it depends on + * each IME whether process_key_event() receives Shift-space or not. + */ + m_preedit.append_text(str); + m_preedit.set_emoji(""); + string annotation = m_preedit.get_text(); + m_emojier.set_annotation(annotation); + show_preedit_and_candidate(false); + } + + public override void page_up_lookup_table() { + bool show_candidate = key_press_cursor_vertical(Gdk.Key.Up, 0); + show_preedit_and_candidate(show_candidate); + } + + public override void page_down_lookup_table() { + bool show_candidate = key_press_cursor_vertical(Gdk.Key.Down, 0); + show_preedit_and_candidate(show_candidate); + } + + public override void cursor_up_lookup_table() { + bool show_candidate = key_press_cursor_horizontal(Gdk.Key.Left, 0); + show_preedit_and_candidate(show_candidate); + } + + public override void cursor_down_lookup_table() { + bool show_candidate = key_press_cursor_horizontal(Gdk.Key.Right, 0); + show_preedit_and_candidate(show_candidate); + } + + private void candidate_clicked_lookup_table_real(uint index, + uint button, + uint state, + bool is_emojier) { + if (button == IBusEmojier.BUTTON_CLOSE_BUTTON) { + m_enable_extension = false; + hide_emoji_lookup_table(); + m_preedit.hide(); + IBus.ExtensionEvent event = new IBus.ExtensionEvent( + "name", m_extension_name, + "is-enabled", false, + "is-extension", true); + panel_extension(event); + return; + } + if (m_emojier == null) + return; + bool show_candidate = false; + uint ncandidates = m_emojier.get_number_of_candidates(); + if (ncandidates > 0 && ncandidates >= index) { + m_emojier.set_cursor_pos(index); + bool need_commit_signal = m_is_wayland && is_emojier; + show_candidate = m_emojier.has_variants(index, need_commit_signal); + if (!m_is_wayland) + m_preedit.set_emoji(m_emojier.get_current_candidate()); + } else { + return; + } + if (!show_candidate) { + IBus.Text text = m_preedit.get_commit_text(); + hide_emoji_lookup_table(); + if (!is_emojier || !m_is_wayland) + commit_text_update_favorites(text, true); + return; + } + show_preedit_and_candidate(show_candidate); + } + + public override void candidate_clicked_lookup_table(uint index, + uint button, + uint state) { + candidate_clicked_lookup_table_real(index, button, state, false); + } +} diff --git a/ui/gtk3/pango.vala b/ui/gtk3/pango.vala index adcce4390..bbcfcc785 100644 --- a/ui/gtk3/pango.vala +++ b/ui/gtk3/pango.vala @@ -7,22 +7,19 @@ * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or(at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 Lesser General Public License for more details. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ -using IBus; -using Pango; - Pango.AttrList get_pango_attr_list_from_ibus_text(IBus.Text text) { Pango.AttrList pango_attrs = new Pango.AttrList(); unowned IBus.AttrList attrs = text.get_attributes(); @@ -53,17 +50,17 @@ Pango.AttrList get_pango_attr_list_from_ibus_text(IBus.Text text) { switch(attr.type) { case IBus.AttrType.FOREGROUND: { - uint16 r = (uint16)(attr.value & 0x00ff0000) >> 8; + uint16 r = (uint16)((attr.value & 0x00ff0000) >> 8); uint16 g = (uint16)(attr.value & 0x0000ff00); - uint16 b = (uint16)(attr.value & 0x000000ff) << 8; + uint16 b = (uint16)((attr.value & 0x000000ff) << 8); pango_attr = Pango.attr_foreground_new(r, g, b); break; } case IBus.AttrType.BACKGROUND: { - uint16 r = (uint16)(attr.value & 0x00ff0000) >> 8; + uint16 r = (uint16)((attr.value & 0x00ff0000) >> 8); uint16 g = (uint16)(attr.value & 0x0000ff00); - uint16 b = (uint16)(attr.value & 0x000000ff) << 8; + uint16 b = (uint16)((attr.value & 0x000000ff) << 8); pango_attr = Pango.attr_background_new(r, g, b); break; } diff --git a/ui/gtk3/property.vala b/ui/gtk3/property.vala index e24bc4043..419f2bf13 100644 --- a/ui/gtk3/property.vala +++ b/ui/gtk3/property.vala @@ -2,28 +2,24 @@ * * ibus - The Input Bus * - * Copyright(c) 2011 Peng Huang + * Copyright(c) 2011-2015 Peng Huang * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or(at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 Lesser General Public License for more details. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ -using IBus; -using GLib; -using Gtk; - public class PropertyManager { private IBus.PropList m_props; @@ -104,7 +100,7 @@ public interface IPropItem : GLib.Object { public signal void property_activate(string key, int state); } -public class PropImageMenuItem : Gtk.ImageMenuItem, IPropItem { +public class PropImageMenuItem : Gtk.MenuItem, IPropItem { private IBus.Property m_property; public PropImageMenuItem(IBus.Property property) { assert(property != null); @@ -115,8 +111,10 @@ public class PropImageMenuItem : Gtk.ImageMenuItem, IPropItem { } public void update_property(IBus.Property property) { + if (m_property.get_key() != property.get_key()) + return; + m_property.set_label(property.get_label()); - m_property.set_icon(property.get_icon()); m_property.set_visible(property.get_visible()); m_property.set_sensitive(property.get_sensitive()); m_property.set_tooltip(property.get_tooltip()); @@ -126,23 +124,16 @@ public class PropImageMenuItem : Gtk.ImageMenuItem, IPropItem { private void sync() { set_label(m_property.get_label().get_text()); - set_icon(m_property.get_icon()); set_visible(m_property.get_visible()); set_sensitive(m_property.get_sensitive()); } - private void set_icon(string icon) { - int width, height; - Gtk.icon_size_lookup(Gtk.IconSize.MENU, out width, out height); - set_image(new IconWidget(icon, width)); - } - public override void activate() { property_activate(m_property.get_key(), m_property.get_state()); } } -public class PropCheckMenuItem : Gtk.RadioMenuItem, IPropItem { +public class PropCheckMenuItem : Gtk.CheckMenuItem, IPropItem { private IBus.Property m_property; public PropCheckMenuItem(IBus.Property property) { assert(property != null); @@ -153,6 +144,9 @@ public class PropCheckMenuItem : Gtk.RadioMenuItem, IPropItem { } public void update_property(IBus.Property property) { + if (m_property.get_key() != property.get_key()) + return; + m_property.set_label(property.get_label()); m_property.set_icon(property.get_icon()); m_property.set_visible(property.get_visible()); @@ -179,13 +173,50 @@ public class PropCheckMenuItem : Gtk.RadioMenuItem, IPropItem { } } -public class PropRadioMenuItem : PropCheckMenuItem { +public class PropRadioMenuItem : Gtk.RadioMenuItem, IPropItem { + private IBus.Property m_property; public PropRadioMenuItem(IBus.Property property, PropRadioMenuItem ?group_source) { - base(property); + assert(property != null); + + m_property = property; + set_no_show_all(true); if (group_source != null) set_group(group_source.get_group()); + + /* Call sync() after call set_group() because + * gtk_radio_menu_item_set_group() sets active = 0. */ + sync(); + } + + public void update_property(IBus.Property property) { + if (m_property.get_key() != property.get_key()) + return; + + m_property.set_label(property.get_label()); + m_property.set_icon(property.get_icon()); + m_property.set_visible(property.get_visible()); + m_property.set_sensitive(property.get_sensitive()); + m_property.set_tooltip(property.get_tooltip()); + m_property.set_state(property.get_state()); + sync(); + } + + private void sync() { + set_label(m_property.get_label().get_text()); + set_visible(m_property.get_visible()); + set_sensitive(m_property.get_sensitive()); + set_active(m_property.get_state() == IBus.PropState.CHECKED); + } + + public override void toggled() { + IBus.PropState new_state = + get_active() ? IBus.PropState.CHECKED : IBus.PropState.UNCHECKED; + if (m_property.get_state() != new_state) { + m_property.set_state(new_state); + property_activate(m_property.get_key(), m_property.get_state()); + } } } diff --git a/ui/gtk3/propertypanel.vala b/ui/gtk3/propertypanel.vala new file mode 100644 index 000000000..b94b2b794 --- /dev/null +++ b/ui/gtk3/propertypanel.vala @@ -0,0 +1,816 @@ +/* vim:set et sts=4 sw=4: + * + * ibus - The Input Bus + * + * Copyright(c) 2013-2016 Red Hat, Inc. + * Copyright(c) 2013-2015 Peng Huang + * Copyright(c) 2013-2017 Takao Fujiwara + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +enum PanelShow { + DO_NOT_SHOW, + AUTO_HIDE, + ALWAYS +} + +public class PropertyPanel : Gtk.Box { + private unowned Gdk.Window m_root_window; + private unowned X.Display m_xdisplay; + private Gtk.Window m_toplevel; + private IBus.PropList m_props; + private IPropToolItem[] m_items; + private Gdk.Rectangle m_cursor_location = Gdk.Rectangle(){ + x = -1, y = -1, width = 0, height = 0 }; + private int m_show = PanelShow.DO_NOT_SHOW; + private uint m_auto_hide_timeout = 10000; + private uint m_auto_hide_timeout_id = 0; + private bool m_follow_input_cursor_when_always_shown = false; + // The timeout indicates milliseconds. 1000 msec == 1 sec + private const uint MONITOR_NET_WORKAREA_TIMEOUT = 300000; + private uint m_remove_filter_id; + + public PropertyPanel() { + /* Chain up base class constructor */ + GLib.Object(orientation: Gtk.Orientation.HORIZONTAL, + spacing: 0); + + set_visible(true); + + m_root_window = Gdk.get_default_root_window(); + unowned Gdk.Display display = m_root_window.get_display(); +#if VALA_0_24 + m_xdisplay = (display as Gdk.X11.Display).get_xdisplay(); +#else + m_xdisplay = Gdk.X11Display.get_xdisplay(display); +#endif + + m_toplevel = new Gtk.Window(Gtk.WindowType.POPUP); + m_toplevel.add_events(Gdk.EventMask.BUTTON_PRESS_MASK); + + Handle handle = new Handle(); + handle.set_visible(true); + pack_start(handle, false, false, 0); + + m_toplevel.add(this); + + m_toplevel.size_allocate.connect((w, a) => { + if (!m_follow_input_cursor_when_always_shown && + m_show == PanelShow.ALWAYS && m_items.length > 0 && + m_cursor_location.x == -1 && m_cursor_location.y == -1) { + set_default_location(); + m_cursor_location.x = 0; + m_cursor_location.y = 0; + } + }); + + // PropertyPanel runs before KDE5 panel runs and + // monitor the desktop size. + monitor_net_workarea_atom(); + } + + public void set_properties(IBus.PropList props) { + debug("set_properties()\n"); + + // When click PropMenuToolButton, the focus is changed and + // set_properties() is called here while the menu button is active. + // Ignore that case here not to remove items. + bool has_active = false; + foreach (var item in m_items) { + Type type = item.get_type(); + if (type == typeof(PropMenuToolButton) || + type == typeof(PropToggleToolButton)) { + if ((item as Gtk.ToggleToolButton).get_active()) { + has_active = true; + break; + } + } + } + if (has_active) + return; + + foreach (var item in m_items) + remove((item as Gtk.Widget)); + m_items = {}; + + m_props = props; + + create_menu_items(); + + /* show_with_auto_hide_timer() needs to call here because + * if the event order is, focus_in(), set_cursor_location() and + * set_properties(), m_items.length can be 0 when + * set_cursor_location() is called and Property Panel is not shown. + */ + show_with_auto_hide_timer(); + } + + public void update_property(IBus.Property prop) { + GLib.assert(prop != null); + + debug("update_property(prop.key = %s)\n", prop.get_key()); + + if (m_props != null) + m_props.update_property(prop); + + /* Need to update GUI since panel buttons are not redrawn. */ + foreach (var item in m_items) + item.update_property(prop); + + show_with_auto_hide_timer(); + } + + public void set_cursor_location(int x, int y, int width, int height) { + if (!m_follow_input_cursor_when_always_shown && + m_show == PanelShow.ALWAYS) + return; + + /* FIXME: set_cursor_location() has a different behavior + * in embedded preedit by applications. + * GtkTextView applications, e.g. gedit, always call + * set_cursor_location() with and without preedit + * but VTE applications, e.g. gnome-terminal, and xterm + * do not call set_cursor_location() with preedit. + * firefox and thunderbird do not call set_cursor_location() + * without preedit. + * This may treat GtkIMContext and XIM with different ways. + * Maybe get_preedit_string() class method. + */ + + /* FIXME: When the cursor is at the bottom of the screen, + * gedit returns the right cursor position but terminal applications + * such as gnome-terminal, xfce4-terminal and etc, the position is + * not accurate and the cursor and panel could be overlapped slightly. + * Maybe it's a bug in vte. + */ + Gdk.Rectangle location = Gdk.Rectangle(){ + x = x, y = y, width = width, height = height }; + + if (m_cursor_location == location) + return; + + debug("set_cursor_location(x = %d, y = %d, width = %d, height = %d)\n", + x, y, width, height); + + /* Hide the panel in AUTO_HIDE mode when the cursor position is + * chagned on the same input context by typing keyboard or + * clicking mouse. (But not focus change or property change) + */ + if (m_show == PanelShow.AUTO_HIDE) + if (m_cursor_location.x != -1 || m_cursor_location.y != -1) { + m_cursor_location = location; + hide_if_necessary(); + adjust_window_position(); + return; + } + + m_cursor_location = location; + adjust_window_position(); + show_with_auto_hide_timer(); + } + + public void set_preedit_text(IBus.Text? text, uint cursor) { + if (text == null && cursor == 0) + return; + + debug("set_preedit_text(text, cursor = %u)\n", cursor); + + /* Hide the panel in AUTO_HIDE mode when embed-preedit-text value + * is disabled and the preedit is changed on the same input context. + */ + hide_if_necessary(); + } + + public void set_auxiliary_text(IBus.Text? text) { + if (text == null) + return; + + debug("set_auxiliary_text(text)\n"); + + hide_if_necessary(); + } + + public void set_lookup_table(IBus.LookupTable? table) { + if (table == null) + return; + + debug("set_lookup_table(table)\n"); + + hide_if_necessary(); + } + + public new void show() { + /* m_items.length is not checked here because set_properties() + * is not called yet when set_show() is called. */ + if (m_show == PanelShow.DO_NOT_SHOW) { + m_toplevel.hide(); + return; + } + else if (m_show == PanelShow.ALWAYS) { + m_toplevel.show_all(); + return; + } + + /* Do not change the state here if m_show == AUTO_HIDE. */ + } + + public new void hide() { + m_toplevel.hide(); + } + + public void focus_in() { + debug("focus_in()\n"); + + /* Reset m_auto_hide_timeout_id in previous focus-in */ + hide_if_necessary(); + + /* Invalidate m_cursor_location before set_cursor_location() + * is called because the position can be same even if the input + * focus is changed. + * E.g. Two tabs on gnome-terminal can keep the cursor position. + */ + if (m_follow_input_cursor_when_always_shown || + m_show != PanelShow.ALWAYS) + m_cursor_location = { -1, -1, 0, 0 }; + + /* set_cursor_location() will be called later. */ + } + + public void set_show(int _show) { + m_show = _show; + show(); + } + + public void set_auto_hide_timeout(uint timeout) { + m_auto_hide_timeout = timeout; + } + + public void set_follow_input_cursor_when_always_shown(bool is_follow) { + m_follow_input_cursor_when_always_shown = is_follow; + } + + private void create_menu_items() { + int i = 0; + while (true) { + IBus.Property prop = m_props.get(i); + if (prop == null) + break; + + i++; + IPropToolItem item = null; + switch(prop.get_prop_type()) { + case IBus.PropType.NORMAL: + item = new PropToolButton(prop); + break; + case IBus.PropType.TOGGLE: + item = new PropToggleToolButton(prop); + break; + case IBus.PropType.MENU: + item = new PropMenuToolButton(prop); + break; + case IBus.PropType.SEPARATOR: + item = new PropSeparatorToolItem(prop); + break; + default: + warning("unknown property type %d", + (int) prop.get_prop_type()); + break; + } + if (item != null) { + pack_start(item as Gtk.Widget, false, false, 0); + m_items += item; + item.property_activate.connect((w, k, s) => + property_activate(k, s)); + } + } + } + + private void move(int x, int y) { + m_toplevel.move(x, y); + } + + private void adjust_window_position() { + Gdk.Point cursor_right_bottom = { + m_cursor_location.x + m_cursor_location.width, + m_cursor_location.y + m_cursor_location.height + }; + + Gtk.Allocation allocation; + m_toplevel.get_allocation(out allocation); + Gdk.Point window_right_bottom = { + cursor_right_bottom.x + allocation.width, + cursor_right_bottom.y + allocation.height + }; + + int root_width = m_root_window.get_width(); + int root_height = m_root_window.get_height(); + + int x, y; + if (window_right_bottom.x > root_width) + x = root_width - allocation.width; + else + x = cursor_right_bottom.x; + + if (window_right_bottom.y > root_height) + y = m_cursor_location.y - allocation.height; + else + y = cursor_right_bottom.y; + + move(x, y); + } + + private bool is_bottom_panel() { + string desktop = Environment.get_variable("XDG_CURRENT_DESKTOP"); + // LXDE has not implemented DesktopNames yet. + if (desktop == null) + desktop = Environment.get_variable("XDG_SESSION_DESKTOP"); + switch (desktop) { + case "KDE": return true; + case "LXDE": return true; + default: return false; + } + } + + private void set_default_location() { + Gtk.Allocation allocation; + m_toplevel.get_allocation(out allocation); + + Gdk.Rectangle monitor_area; +#if VALA_0_34 + // gdk_screen_get_monitor_workarea() no longer return the correct + // area from "_NET_WORKAREA" atom in GTK 3.22 + Gdk.Monitor monitor = Gdk.Display.get_default().get_monitor(0); + monitor_area = monitor.get_workarea(); +#else + Gdk.Screen screen = Gdk.Screen.get_default(); + monitor_area = screen.get_monitor_workarea(0); +#endif + int monitor_right = monitor_area.x + monitor_area.width; + int monitor_bottom = monitor_area.y + monitor_area.height; + int x, y; + if (is_bottom_panel()) { + /* Translators: If your locale is RTL, the msgstr is "default:RTL". + * Otherwise the msgstr is "default:LTR". */ + if (_("default:LTR") != "default:RTL") { + x = monitor_right - allocation.width; + y = monitor_bottom - allocation.height; + } else { + x = monitor_area.x; + y = monitor_bottom - allocation.height; + } + } else { + if (_("default:LTR") != "default:RTL") { + x = monitor_right - allocation.width; + y = monitor_area.y; + } else { + x = monitor_area.x; + y = monitor_area.y; + } + } + + move(x, y); + } + + private Gdk.FilterReturn root_window_filter(Gdk.XEvent gdkxevent, + Gdk.Event event) { + X.Event *xevent = (X.Event*) gdkxevent; + if (xevent.type == X.EventType.PropertyNotify) { + string aname = m_xdisplay.get_atom_name(xevent.xproperty.atom); + if (aname == "_NET_WORKAREA" && xevent.xproperty.state == 0) { + set_default_location(); + m_root_window.remove_filter(root_window_filter); + if (m_remove_filter_id > 0) { + GLib.Source.remove(m_remove_filter_id); + m_remove_filter_id = 0; + } + return Gdk.FilterReturn.CONTINUE; + } + } + return Gdk.FilterReturn.CONTINUE; + } + + private void monitor_net_workarea_atom() { + Gdk.EventMask events = m_root_window.get_events(); + if ((events & Gdk.EventMask.PROPERTY_CHANGE_MASK) == 0) + m_root_window.set_events (events | + Gdk.EventMask.PROPERTY_CHANGE_MASK); + + m_root_window.add_filter(root_window_filter); + + m_remove_filter_id = GLib.Timeout.add(MONITOR_NET_WORKAREA_TIMEOUT, + () => { + m_remove_filter_id = 0; + m_root_window.remove_filter(root_window_filter); + return false; + }, + GLib.Priority.DEFAULT_IDLE); + } + + private void show_with_auto_hide_timer() { + /* Do not call gtk_window_resize() in + * GtkWidgetClass->get_preferred_width() + * because the following warning is shown in GTK 3.20: + * "Allocating size to GtkWindow %x without calling + * gtk_widget_get_preferred_width/height(). How does the code + * know the size to allocate?" + * in gtk_widget_size_allocate_with_baseline() */ + m_toplevel.resize(1, 1); + + if (m_items.length == 0) { + /* Do not blink the panel with focus-in in case the panel + * is always shown. */ + if (m_follow_input_cursor_when_always_shown || + m_show != PanelShow.ALWAYS) + m_toplevel.hide(); + + return; + } + + if (m_show != PanelShow.AUTO_HIDE) { + show(); + return; + } + + /* If all windows are closed, desktop background is focused and + * focus_in() and set_properties() are called but + * set_cursor_location() is not called. + * Then we should not show Property panel when m_cursor_location + * is (-1, -1) because of no windows. + */ + if (m_cursor_location.x == -1 && m_cursor_location.y == -1) + return; + + if (m_auto_hide_timeout_id != 0) + GLib.Source.remove(m_auto_hide_timeout_id); + + m_toplevel.show_all(); + + /* Change the priority because IME typing sometimes freezes. */ + m_auto_hide_timeout_id = GLib.Timeout.add(m_auto_hide_timeout, () => { + m_toplevel.hide(); + m_auto_hide_timeout_id = 0; + return false; + }, + GLib.Priority.DEFAULT_IDLE); + } + + private void hide_if_necessary() { + if (m_show == PanelShow.AUTO_HIDE && m_auto_hide_timeout_id != 0) { + GLib.Source.remove(m_auto_hide_timeout_id); + m_auto_hide_timeout_id = 0; + m_toplevel.hide(); + } + } + + public signal void property_activate(string key, int state); +} + +public interface IPropToolItem : GLib.Object { + public abstract void update_property(IBus.Property prop); + public signal void property_activate(string key, int state); +} + +public class PropMenu : Gtk.Menu, IPropToolItem { + private Gtk.Widget m_parent_button; + private IPropItem[] m_items; + + public PropMenu(IBus.Property prop) { + /* Chain up base class constructor */ + GLib.Object(); + + set_take_focus(false); + create_items(prop.get_sub_props()); + show_all(); + set_sensitive(prop.get_sensitive()); + } + + public void update_property(IBus.Property prop) { + foreach (var item in m_items) + item.update_property(prop); + } + + public new void popup(uint button, + uint32 activate_time, + Gtk.Widget widget) { +#if VALA_0_34 + base.popup_at_widget(widget, + Gdk.Gravity.SOUTH_WEST, + Gdk.Gravity.NORTH_WEST, + null); +#else + m_parent_button = widget; + base.popup(null, null, menu_position, button, activate_time); +#endif + } + + public override void destroy() { + m_parent_button = null; + foreach (var item in m_items) + remove((item as Gtk.Widget)); + m_items = {}; + base.destroy(); + } + + private void create_items(IBus.PropList props) { + int i = 0; + PropRadioMenuItem last_radio = null; + + while (true) { + IBus.Property prop = props.get(i); + if (prop == null) + break; + + i++; + IPropItem item = null; + switch(prop.get_prop_type()) { + case IBus.PropType.NORMAL: + item = new PropImageMenuItem(prop); + break; + case IBus.PropType.TOGGLE: + item = new PropCheckMenuItem(prop); + break; + case IBus.PropType.RADIO: + last_radio = new PropRadioMenuItem(prop, last_radio); + item = last_radio; + break; + case IBus.PropType.MENU: + { + var menuitem = new PropImageMenuItem(prop); + menuitem.set_submenu(new PropMenu(prop)); + item = menuitem; + } + break; + case IBus.PropType.SEPARATOR: + item = new PropSeparatorMenuItem(prop); + break; + default: + warning("Unknown property type: %d", + (int) prop.get_prop_type()); + break; + } + if (prop.get_prop_type() != IBus.PropType.RADIO) + last_radio = null; + if (item != null) { + append(item as Gtk.MenuItem); + item.property_activate.connect((w, k, s) => + property_activate(k, s)); + m_items += item; + } + } + } + +#if !VALA_0_34 + private void menu_position(Gtk.Menu menu, + out int x, + out int y, + out bool push_in) { + var button = m_parent_button; + var screen = button.get_screen(); + var monitor = screen.get_monitor_at_window(button.get_window()); + + Gdk.Rectangle monitor_location; + screen.get_monitor_geometry(monitor, out monitor_location); + + button.get_window().get_origin(out x, out y); + + Gtk.Allocation button_allocation; + button.get_allocation(out button_allocation); + + x += button_allocation.x; + y += button_allocation.y; + + int menu_width; + int menu_height; + menu.get_size_request(out menu_width, out menu_height); + + if (x + menu_width >= monitor_location.width) + x -= menu_width - button_allocation.width; + else if (x - menu_width <= 0) + ; + else { + if (x <= monitor_location.width * 3 / 4) + ; + else + x -= menu_width - button_allocation.width; + } + + if (y + button_allocation.height + menu_width + >= monitor_location.height) + y -= menu_height; + else if (y - menu_height <= 0) + y += button_allocation.height; + else { + if (y <= monitor_location.height * 3 / 4) + y += button_allocation.height; + else + y -= menu_height; + } + + push_in = false; + } +#endif +} + +public class PropToolButton : Gtk.ToolButton, IPropToolItem { + private IBus.Property m_prop = null; + + public PropToolButton(IBus.Property prop) { + /* Chain up base class constructor + * + * If the constructor sets "label" property, "halign" property + * does not work in KDE5 so use sync() for the label. + */ + GLib.Object(halign: Gtk.Align.START); + + m_prop = prop; + + set_homogeneous(false); + sync(); + } + + public void update_property(IBus.Property prop) { + if (m_prop.get_key() != prop.get_key()) + return; + m_prop.set_symbol(prop.get_symbol()); + m_prop.set_tooltip(prop.get_tooltip()); + m_prop.set_sensitive(prop.get_sensitive()); + m_prop.set_icon(prop.get_icon()); + m_prop.set_state(prop.get_state()); + m_prop.set_visible(prop.get_visible()); + sync(); + } + + private void sync() { + set_label(m_prop.get_symbol().get_text()); + set_tooltip_text(m_prop.get_tooltip().get_text()); + set_sensitive(m_prop.get_sensitive()); + set_icon_name(m_prop.get_icon()); + + if (m_prop.get_visible()) + show(); + else + hide(); + } + + public override void clicked() { + property_activate(m_prop.get_key(), m_prop.get_state()); + } + + public new void set_icon_name(string icon_name) { + string label = m_prop.get_symbol().get_text(); + IconWidget icon_widget = null; + + if (label == "") { + label = null; + icon_widget = new IconWidget(icon_name, Gtk.IconSize.BUTTON); + set_is_important(false); + } else { + set_is_important(true); + } + + set_icon_widget(icon_widget); + } +} + +public class PropToggleToolButton : Gtk.ToggleToolButton, IPropToolItem { + private IBus.Property m_prop = null; + + public PropToggleToolButton(IBus.Property prop) { + /* Chain up base class constructor + * + * Need to set halign for KDE5 + */ + GLib.Object(halign: Gtk.Align.START); + + m_prop = prop; + + set_homogeneous(false); + sync(); + } + + public new void set_property(IBus.Property prop) { + m_prop = prop; + sync(); + } + + public void update_property(IBus.Property prop) { + if (m_prop.get_key() != prop.get_key()) + return; + m_prop.set_symbol(prop.get_symbol()); + m_prop.set_tooltip(prop.get_tooltip()); + m_prop.set_sensitive(prop.get_sensitive()); + m_prop.set_icon(prop.get_icon()); + m_prop.set_state(prop.get_state()); + m_prop.set_visible(prop.get_visible()); + sync(); + } + + private void sync() { + set_label(m_prop.get_symbol().get_text()); + set_tooltip_text(m_prop.get_tooltip().get_text()); + set_sensitive(m_prop.get_sensitive()); + set_icon_name(m_prop.get_icon()); + set_active(m_prop.get_state() == IBus.PropState.CHECKED); + + if (m_prop.get_visible()) + show(); + else + hide(); + } + + public override void toggled() { + /* Do not send property-activate to engine in case the event is + * sent from engine. */ + + bool do_emit = false; + + if (get_active()) { + if (m_prop.get_state() != IBus.PropState.CHECKED) + do_emit = true; + m_prop.set_state(IBus.PropState.CHECKED); + } else { + if (m_prop.get_state() != IBus.PropState.UNCHECKED) + do_emit = true; + m_prop.set_state(IBus.PropState.UNCHECKED); + } + + if (do_emit) + property_activate(m_prop.get_key(), m_prop.get_state()); + } + + public new void set_icon_name(string icon_name) { + string label = m_prop.get_symbol().get_text(); + IconWidget icon_widget = null; + + if (label == "") { + label = null; + icon_widget = new IconWidget(icon_name, Gtk.IconSize.BUTTON); + set_is_important(false); + } else { + set_is_important(true); + } + + set_icon_widget(icon_widget); + } +} + +public class PropMenuToolButton : PropToggleToolButton, IPropToolItem { + private PropMenu m_menu = null; + + public PropMenuToolButton(IBus.Property prop) { + /* Chain up base class constructor + * + * Need to set halign for KDE5 + */ + GLib.Object(halign: Gtk.Align.START); + + m_menu = new PropMenu(prop); + m_menu.deactivate.connect((m) => + set_active(false)); + m_menu.property_activate.connect((k, s) => + property_activate(k, s)); + + base.set_property(prop); + } + + public new void update_property(IBus.Property prop) { + base.update_property(prop); + m_menu.update_property(prop); + } + + public override void toggled() { + if (get_active()) + m_menu.popup(0, Gtk.get_current_event_time(), this); + } + + public override void destroy() { + m_menu = null; + base.destroy(); + } +} + +public class PropSeparatorToolItem : Gtk.SeparatorToolItem, IPropToolItem { + public PropSeparatorToolItem(IBus.Property prop) { + /* Chain up base class constructor */ + GLib.Object(); + + set_homogeneous(false); + } + + public void update_property(IBus.Property prop) { + } +} diff --git a/ui/gtk3/separator.vala b/ui/gtk3/separator.vala index 0917f4c2b..b5ff5471a 100644 --- a/ui/gtk3/separator.vala +++ b/ui/gtk3/separator.vala @@ -2,37 +2,37 @@ * * ibus - The Input Bus * - * Copyright(c) 2011 Peng Huang + * Copyright(c) 2011-2014 Peng Huang * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or(at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 Lesser General Public License for more details. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ -using Gtk; - -class HSeparator : Gtk.HSeparator { +class HSeparator : Gtk.Separator { public HSeparator() { GLib.Object( + orientation : Gtk.Orientation.HORIZONTAL, margin : 2 ); } } -class VSeparator : Gtk.VSeparator { +class VSeparator : Gtk.Separator { public VSeparator() { GLib.Object( + orientation : Gtk.Orientation.VERTICAL, margin : 2 ); } diff --git a/ui/gtk3/switcher.vala b/ui/gtk3/switcher.vala index 5db459c3c..a4529c889 100644 --- a/ui/gtk3/switcher.vala +++ b/ui/gtk3/switcher.vala @@ -2,36 +2,103 @@ * * ibus - The Input Bus * - * Copyright(c) 2011 Peng Huang + * Copyright(c) 2011-2016 Peng Huang + * Copyright(c) 2015-2019 Takao Fujiwara * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or(at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * * This library 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 Lesser General Public License for more details. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA */ -using IBus; -using GLib; -using Gtk; - class Switcher : Gtk.Window { + private class IBusEngineButton : Gtk.Button { + public IBusEngineButton(IBus.EngineDesc engine, Switcher switcher) { + GLib.Object(); + + var longname = engine.get_longname(); + var textdomain = engine.get_textdomain(); + this.transname = GLib.dgettext(textdomain, longname); + + var name = engine.get_name(); + + if (name.length < 4 || name[0:4] != "xkb:") { + IconWidget icon = new IconWidget(engine.get_icon(), + Gtk.IconSize.DIALOG); + icon.set_halign(Gtk.Align.CENTER); + icon.set_valign(Gtk.Align.CENTER); + add(icon); + } else { + var language = switcher.get_xkb_language(engine); + + Gtk.Label label = new Gtk.Label(language); + label.set_halign(Gtk.Align.CENTER); + label.set_valign(Gtk.Align.CENTER); + string language_font = "Monospace Bold 16"; + string markup = "%s". + printf(language_font, language); + + label.set_markup(markup); + + int fixed_width, fixed_height; + Gtk.icon_size_lookup(Gtk.IconSize.DIALOG, + out fixed_width, + out fixed_height); + label.set_size_request(fixed_width, fixed_height); + + add(label); + } + } + + public string transname { get; set; } + + public override bool draw(Cairo.Context cr) { + base.draw(cr); + if (is_focus) { + cr.save(); + cr.rectangle( + 0, 0, get_allocated_width(), get_allocated_height()); + cr.set_source_rgba(0.0, 0.0, 1.0, 0.1); + cr.fill(); + cr.restore(); + } + return true; + } + } + private Gtk.Box m_box; - private Gtk.Button[] m_buttons = {}; + private Gtk.Label m_label; + private IBusEngineButton[] m_buttons = {}; private IBus.EngineDesc[] m_engines; private uint m_selected_engine; - private uint m_primary_modifier; + private uint m_keyval; + private uint m_modifiers; + private Gdk.ModifierType m_primary_modifier; + private bool m_is_running = false; + private string m_input_context_path = ""; private GLib.MainLoop m_loop; - private int m_result; + private int m_result = -1; + private IBus.EngineDesc? m_result_engine = null; + private uint m_popup_delay_time = 0; + private uint m_popup_delay_time_id = 0; + private int m_root_x; + private int m_root_y; + private double m_mouse_init_x; + private double m_mouse_init_y; + private bool m_mouse_moved; + private GLib.HashTable m_xkb_languages = + new GLib.HashTable(GLib.str_hash, + GLib.str_equal); public Switcher() { GLib.Object( @@ -43,33 +110,122 @@ class Switcher : Gtk.Window { modal : true, focus_visible : true ); - m_box = new Gtk.Box(Gtk.Orientation.VERTICAL, 0); - add(m_box); + Gtk.Box vbox = new Gtk.Box(Gtk.Orientation.VERTICAL, 0); + add(vbox); + m_box = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 0); + m_box.set_halign(Gtk.Align.CENTER); + m_box.set_valign(Gtk.Align.CENTER); + vbox.pack_start(m_box, true, true, 0); + m_label = new Gtk.Label(""); + + /* Set the accessible role of the label to a status bar so it + * will emit name changed events that can be used by screen + * readers. + */ + Atk.Object obj = m_label.get_accessible(); + obj.set_role (Atk.Role.STATUSBAR); + + m_label.set_margin_start(3); + m_label.set_margin_end(3); + m_label.set_margin_top(3); + m_label.set_margin_bottom(3); + vbox.pack_end(m_label, false, false, 0); grab_focus(); } - public int run(Gdk.Event event, IBus.EngineDesc[] engines, int index) { + public int run(uint keyval, + uint state, + Gdk.Event event, + IBus.EngineDesc[] engines, + int index, + string input_context_path) { assert (m_loop == null); assert (index < engines.length); + m_is_running = true; + m_keyval = keyval; + m_modifiers = state; m_primary_modifier = KeybindingManager.get_primary_modifier( - event.key.state & KeybindingManager.MODIFIER_FILTER); + state & KeybindingManager.MODIFIER_FILTER); + m_selected_engine = m_result = index; + m_input_context_path = input_context_path; + m_result_engine = null; update_engines(engines); - m_selected_engine = index; + /* Let gtk recalculate the window size. */ + resize(1, 1); + + m_label.set_text(m_buttons[index].transname); m_buttons[index].grab_focus(); + // Avoid regressions. + if (m_popup_delay_time > 0) { + get_position(out m_root_x, out m_root_y); + // Pull the window from the screen so that the window gets + // the key press and release events but mouse does not select + // an IME unexpectedly. + move(-1000, -1000); + } + + show_all(); + + if (m_popup_delay_time > 0) { + // Restore the window position after m_popup_delay_time + m_popup_delay_time_id = GLib.Timeout.add(m_popup_delay_time, + () => { + restore_window_position("timeout"); + return false; + }); + } + + Gdk.Device pointer; +#if VALA_0_34 + Gdk.Seat seat = event.get_seat(); + if (seat == null) { + var display = get_display(); + seat = display.get_default_seat(); + } + //keyboard = seat.get_keyboard(); + pointer = seat.get_pointer(); + + Gdk.GrabStatus status; + // Grab all keyboard events + status = seat.grab(get_window(), + Gdk.SeatCapabilities.KEYBOARD, + true, + null, + event, + null); + if (status != Gdk.GrabStatus.SUCCESS) + warning("Grab keyboard failed! status = %d", status); + status = seat.grab(get_window(), + Gdk.SeatCapabilities.POINTER, + true, + null, + event, + null); + if (status != Gdk.GrabStatus.SUCCESS) + warning("Grab pointer failed! status = %d", status); +#else Gdk.Device device = event.get_device(); if (device == null) { var display = get_display(); var device_manager = display.get_device_manager(); +/* The macro VALA_X_Y supports even numbers. + * http://git.gnome.org/browse/vala/commit/?id=294b374af6 + */ +#if VALA_0_16 device = device_manager.list_devices(Gdk.DeviceType.MASTER).data; +#else + unowned GLib.List devices = + device_manager.list_devices(Gdk.DeviceType.MASTER); + device = devices.data; +#endif } Gdk.Device keyboard; - Gdk.Device pointer; if (device.get_source() == Gdk.InputSource.KEYBOARD) { keyboard = device; pointer = device.get_associated_device(); @@ -78,20 +234,6 @@ class Switcher : Gtk.Window { keyboard = device.get_associated_device(); } - show_all(); - - if (is_composited()) { - // Hide the window by set the opactiy to 0.0, because real hiden - // window can not grab keyboard and pointer. - get_window().set_opacity(0.0); - - // Show window after 1/10 secound - GLib.Timeout.add(100, ()=> { - get_window().set_opacity(1.0); - return false; - }); - } - Gdk.GrabStatus status; // Grab all keyboard events status = keyboard.grab(get_window(), @@ -113,20 +255,39 @@ class Switcher : Gtk.Window { Gdk.CURRENT_TIME); if (status != Gdk.GrabStatus.SUCCESS) warning("Grab pointer failed! status = %d", status); +#endif + + // Probably we can delete m_popup_delay_time in 1.6 + pointer.get_position_double(null, + out m_mouse_init_x, + out m_mouse_init_y); + m_mouse_moved = false; m_loop = new GLib.MainLoop(); m_loop.run(); m_loop = null; +#if VALA_0_34 + seat.ungrab(); +#else + keyboard.ungrab(Gdk.CURRENT_TIME); + pointer.ungrab(Gdk.CURRENT_TIME); +#endif + hide(); // Make sure the switcher is hidden before returning from this function. while (Gtk.events_pending()) Gtk.main_iteration (); + GLib.assert(m_result < m_engines.length); + m_result_engine = m_engines[m_result]; + m_is_running = false; + return m_result; } + /* Based on metacity/src/ui/tabpopup.c:meta_ui_tab_popup_new */ private void update_engines(IBus.EngineDesc[] engines) { foreach (var button in m_buttons) { button.destroy(); @@ -138,21 +299,41 @@ class Switcher : Gtk.Window { return; } - int width, height; - Gtk.icon_size_lookup(Gtk.IconSize.MENU, out width, out height); m_engines = engines; + int max_label_width = 0; + for (int i = 0; i < m_engines.length; i++) { var index = i; var engine = m_engines[i]; - var button = new Gtk.Button.with_label(engine.get_longname()); - button.set_image(new IconWidget(engine.get_icon(), width)); + var button = new IBusEngineButton(engine, this); + var longname = engine.get_longname(); + var textdomain = engine.get_textdomain(); + var transname = GLib.dgettext(textdomain, longname); button.set_relief(Gtk.ReliefStyle.NONE); + button.add_events(Gdk.EventMask.POINTER_MOTION_MASK); button.show(); button.enter_notify_event.connect((e) => { + // avoid gtk_button_update_state() + return true; + }); + button.motion_notify_event.connect((e) => { +#if VALA_0_24 + Gdk.EventMotion pe = e; +#else + Gdk.EventMotion *pe = &e; +#endif + if (m_selected_engine == index) + return false; + if (!m_mouse_moved && + m_mouse_init_x == pe.x_root && + m_mouse_init_y == pe.y_root) { + return false; + } + m_mouse_moved = true; button.grab_focus(); m_selected_engine = index; - return true; + return false; }); button.button_press_event.connect((e) => { @@ -162,9 +343,43 @@ class Switcher : Gtk.Window { return true; }); + button.transname = transname; + m_label.set_label(transname); + + int width; + m_label.get_preferred_width(null, out width); + max_label_width = int.max(max_label_width, width); + m_box.pack_start(button, true, true); m_buttons += button; } + + m_label.set_text(m_buttons[0].transname); + m_label.set_ellipsize(Pango.EllipsizeMode.END); + + Gdk.Display display = Gdk.Display.get_default(); + int screen_width = 0; +#if VALA_0_34 + // display.get_monitor_at_window() is null because of unrealized window + Gdk.Monitor monitor = display.get_primary_monitor(); + Gdk.Rectangle area = monitor.get_geometry(); + screen_width = area.width; +#else + Gdk.Screen screen = (display != null) ? + display.get_default_screen() : null; + + if (screen != null) { + screen_width = screen.get_width(); + } +#endif + + if (screen_width > 0 && max_label_width > (screen_width / 4)) { + max_label_width = screen_width / 4; + } + + /* add random padding */ + max_label_width += 20; + set_default_size(max_label_width, -1); } private void next_engine() { @@ -172,6 +387,7 @@ class Switcher : Gtk.Window { m_selected_engine = 0; else m_selected_engine ++; + m_label.set_text(m_buttons[m_selected_engine].transname); set_focus(m_buttons[m_selected_engine]); } @@ -180,9 +396,23 @@ class Switcher : Gtk.Window { m_selected_engine = m_engines.length - 1; else m_selected_engine --; + m_label.set_text(m_buttons[m_selected_engine].transname); set_focus(m_buttons[m_selected_engine]); } + private void restore_window_position(string debug_str) { + debug("restore_window_position %s: (%ld, %ld)\n", + debug_str, m_root_x, m_root_y); + + if (m_popup_delay_time_id == 0) { + return; + } + + GLib.Source.remove(m_popup_delay_time_id); + m_popup_delay_time_id = 0; + move(m_root_x, m_root_y); + } + /* override virtual functions */ public override void show() { base.show(); @@ -190,46 +420,143 @@ class Switcher : Gtk.Window { } public override bool key_press_event(Gdk.EventKey e) { + bool retval = true; + +/* Gdk.EventKey is changed to the pointer. + * https://git.gnome.org/browse/vala/commit/?id=598942f1 + */ +#if VALA_0_24 + Gdk.EventKey pe = e; +#else Gdk.EventKey *pe = &e; - switch (pe->keyval) { - case 0x0020: /* space */ - case 0xff80: /* KP_Space */ - if ((pe->state & Gdk.ModifierType.SHIFT_MASK) == 0) +#endif + + if (m_popup_delay_time > 0) { + restore_window_position("pressed"); + } + + do { + uint modifiers = KeybindingManager.MODIFIER_FILTER & pe.state; + + if ((modifiers != m_modifiers) && + (modifiers != (m_modifiers | Gdk.ModifierType.SHIFT_MASK))) { + break; + } + + if (pe.keyval == m_keyval) { + if (modifiers == m_modifiers) next_engine(); - else + else // modififers == m_modifiers | SHIFT_MASK previous_engine(); break; - case 0x08fb: /* leftarrow */ - case 0xff51: /* Down */ - break; - case 0x08fc: /* uparrow */ - case 0xff52: /* Up */ - previous_engine(); - break; - case 0x08fd: /* rightarrow */ - case 0xff53: /* Right */ - break; - case 0x08fe: /* downarrow */ - case 0xff54: /* Down */ - next_engine(); - break; - default: - debug("0x%04x", pe->keyval); - break; - } - return true; + } + + switch (pe.keyval) { + case 0x08fb: /* leftarrow */ + case 0xff51: /* Left */ + previous_engine(); + break; + case 0x08fc: /* uparrow */ + case 0xff52: /* Up */ + break; + case 0x08fd: /* rightarrow */ + case 0xff53: /* Right */ + next_engine(); + break; + case 0x08fe: /* downarrow */ + case 0xff54: /* Down */ + break; + default: + debug("0x%04x", pe.keyval); + break; + } + } while (false); + return retval; } public override bool key_release_event(Gdk.EventKey e) { +#if VALA_0_24 + Gdk.EventKey pe = e; +#else Gdk.EventKey *pe = &e; +#endif - if (KeybindingManager.primary_modifier_still_pressed((Gdk.Event *)pe, + if (KeybindingManager.primary_modifier_still_pressed((Gdk.Event) pe, m_primary_modifier)) { return true; } + // if e.type == Gdk.EventType.KEY_RELEASE, m_loop is already null. + if (m_loop == null) { + return false; + } + + if (m_popup_delay_time > 0) { + if (m_popup_delay_time_id != 0) { + GLib.Source.remove(m_popup_delay_time_id); + m_popup_delay_time_id = 0; + } + } + m_loop.quit(); m_result = (int)m_selected_engine; return true; } + + public void set_popup_delay_time(uint popup_delay_time) { + m_popup_delay_time = popup_delay_time; + } + + public string get_xkb_language(IBus.EngineDesc engine) { + var name = engine.get_name(); + + assert(name[0:4] == "xkb:"); + + var language = m_xkb_languages[name]; + + if (language != null) + return language; + + language = engine.get_language(); + int length = language.length; + + /* Maybe invalid layout */ + if (length < 2) + return language; + + language = language.up(); + + int index = 0; + + foreach (var saved_language in m_xkb_languages.get_values()) { + if (language == saved_language[0:length]) + index++; + } + + if (index > 0) { + unichar u = 0x2081 + index; + language = "%s%s".printf(language, u.to_string()); + } + + m_xkb_languages.insert(name, language); + return language; + } + + public bool is_running() { + return m_is_running; + } + + public string get_input_context_path() { + return m_input_context_path; + } + + public IBus.EngineDesc? get_selected_engine() { + return m_result_engine; + } + + public void reset() { + m_input_context_path = ""; + m_result = -1; + m_result_engine = null; + } } diff --git a/ui/gtk3/xkblayout.vala b/ui/gtk3/xkblayout.vala new file mode 100644 index 000000000..729b48ced --- /dev/null +++ b/ui/gtk3/xkblayout.vala @@ -0,0 +1,252 @@ +/* vim:set et sts=4 sw=4: + * + * ibus - The Input Bus + * + * Copyright(c) 2014 Red Hat, Inc. + * Copyright(c) 2014 Peng Huang + * Copyright(c) 2014 Takao Fujiwara + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +class XKBLayout +{ + private const string XKB_COMMAND = "setxkbmap"; + private const string XKB_QUERY_ARG = "-query"; + private const string XKB_LAYOUT_ARG = "-layout"; + private const string XMODMAP_COMMAND = "xmodmap"; + private const string[] XMODMAP_KNOWN_FILES = {".xmodmap", ".xmodmaprc", + ".Xmodmap", ".Xmodmaprc"}; + private string[] m_xkb_latin_layouts = {}; + private string m_default_layout = ""; + private string m_default_variant = ""; + private string m_default_option = ""; + private bool m_use_xmodmap = true; + + public XKBLayout() { + } + + public void set_latin_layouts(string[] xkb_latin_layouts) { + m_xkb_latin_layouts = xkb_latin_layouts; + } + + public static void get_layout(out string layout, + out string variant, + out string option) { + string[] exec_command = {}; + exec_command += XKB_COMMAND; + exec_command += XKB_QUERY_ARG; + string standard_output = null; + string standard_error = null; + int exit_status = 0; + + layout = ""; + variant = ""; + option = ""; + + try { + GLib.Process.spawn_sync(null, + exec_command, + null, + GLib.SpawnFlags.SEARCH_PATH, + null, + out standard_output, + out standard_error, + out exit_status); + } catch (GLib.SpawnError err) { + stderr.printf("IBUS_ERROR: %s\n", err.message); + } + if (exit_status != 0) { + stderr.printf("IBUS_ERROR: %s\n", standard_error ?? ""); + } + if (standard_output == null) { + return; + } + + foreach (string line in standard_output.split("\n")) { + string element = "layout:"; + string retval = ""; + if (line.has_prefix(element)) { + retval = line[element.length:line.length]; + if (retval != null) { + retval = retval.strip(); + } + layout = retval; + } + + element = "variant:"; + retval = ""; + if (line.has_prefix(element)) { + retval = line[element.length:line.length]; + if (retval != null) { + retval = retval.strip(); + } + variant = retval; + } + + element = "options:"; + retval = ""; + if (line.has_prefix(element)) { + retval = line[element.length:line.length]; + if (retval != null) { + retval = retval.strip(); + } + option = retval; + } + } + } + + public void set_layout(IBus.EngineDesc engine) { + string layout = engine.get_layout(); + string variant = engine.get_layout_variant(); + string option = engine.get_layout_option(); + + assert (layout != null); + + /* If the layout is "default", return here so that the current + * keymap is not changed. + * Some engines do not wish to change the current keymap. + */ + if (layout == "default" && + (variant == "default" || variant == "") && + (option == "default" || option == "")) { + return; + } + + bool need_us_layout = false; + if (variant != "eng") + need_us_layout = layout in m_xkb_latin_layouts; + if (!need_us_layout && variant != null) + need_us_layout = + "%s(%s)".printf(layout, variant) in m_xkb_latin_layouts; + + if (m_default_layout == "") { + get_layout (out m_default_layout, + out m_default_variant, + out m_default_option); + } + + if (layout == "default" || layout == "") { + layout = m_default_layout; + variant = m_default_variant; + } + + if (layout == "") { + warning("Could not get the correct layout"); + return; + } + + if (option == "default" || option == "") { + option = m_default_option; + } else { + if (!(option in m_default_option.split(","))) { + option = "%s,%s".printf(m_default_option, option); + } else { + option = m_default_option; + } + } + + if (need_us_layout) { + layout += ",us"; + if (variant != null) { + variant += ","; + } + } + + string[] args = {}; + args += XKB_COMMAND; + args += XKB_LAYOUT_ARG; + args += layout; + if (variant != null && variant != "" && variant != "default") { + args += "-variant"; + args += variant; + } + if (option != null && option != "" && option != "default") { + /*TODO: Need to get the session XKB options */ + args += "-option"; + args += "-option"; + args += option; + } + + string standard_error = null; + int exit_status = 0; + try { + if (!GLib.Process.spawn_sync(null, + args, + null, + GLib.SpawnFlags.SEARCH_PATH, + null, + null, + out standard_error, + out exit_status)) + warning("Switch xkb layout to %s failed.", + engine.get_layout()); + } catch (GLib.SpawnError e) { + warning("Execute setxkbmap failed: %s", e.message); + return; + } + + if (exit_status != 0) + warning("Execute setxkbmap failed: %s", + standard_error ?? "(null)"); + + run_xmodmap(); + } + + public void run_xmodmap() { + if (!m_use_xmodmap) { + return; + } + + string homedir = GLib.Environment.get_home_dir(); + foreach (string xmodmap_file in XMODMAP_KNOWN_FILES) { + string xmodmap_filepath = GLib.Path.build_filename(homedir, + xmodmap_file); + + if (!GLib.FileUtils.test(xmodmap_filepath, GLib.FileTest.EXISTS)) { + continue; + } + + string[] args = {XMODMAP_COMMAND, xmodmap_filepath}; + + /* Call async here because if both setxkbmap and xmodmap is + * sync, it seems a DBus timeout happens and xmodmap causes + * a loop for a while and users would think panel icon is + * frozen in case the global engine mode is disabled. + * + * Do not return here even if the previous async is running + * so that all xmodmap can be done after setxkbmap is called. + */ + try { + GLib.Process.spawn_async(null, + args, + null, + GLib.SpawnFlags.SEARCH_PATH, + null, + null); + } catch (GLib.SpawnError e) { + warning("Execute xmodmap is failed: %s\n", e.message); + return; + } + + break; + } + } + + public void set_use_xmodmap(bool use_xmodmap) { + m_use_xmodmap = use_xmodmap; + } +} diff --git a/util/IMdkit/FrameMgr.c b/util/IMdkit/FrameMgr.c index 9b4979480..80d019a06 100644 --- a/util/IMdkit/FrameMgr.c +++ b/util/IMdkit/FrameMgr.c @@ -27,6 +27,7 @@ SOFTWARE. ******************************************************************/ #include +#include #include #include "FrameMgr.h" @@ -850,7 +851,7 @@ static Bool _FrameMgrProcessPadding (FrameMgr fm, FmStatus* status) return True; } /*endif*/ - next_type = FrameInstGetNextType (fm->fi, &info); + FrameInstGetNextType (fm->fi, &info); fm->idx += info.num; if ((fitr = _FrameIterCounterIncr (fm->iters, info.num))) _FrameMgrRemoveIter (fm, fitr); @@ -989,6 +990,7 @@ static XimFrameType FrameInstGetNextType(FrameInst fi, XimFrameTypeInfo info) while (number > 0) { i = _FrameInstDecrement (fi->template, i); + assert (i >= 0); size += _FrameInstGetItemSize (fi, i); number--; } @@ -1138,6 +1140,7 @@ static XimFrameType FrameInstPeekNextType (FrameInst fi, XimFrameTypeInfo info) while (number > 0) { i = _FrameInstDecrement (fi->template, i); + assert (i >= 0); size += _FrameInstGetItemSize (fi, i); number--; } @@ -1356,6 +1359,7 @@ static FmStatus FrameInstSetSize (FrameInst fi, int num) break; } /*endswitch*/ + assert (i >= 0); i = _FrameInstIncrement(fi->template, i); } /*endwhile*/ @@ -1410,6 +1414,7 @@ static int FrameInstGetSize (FrameInst fi) break; } /*endswitch*/ + assert (i >= 0); i = _FrameInstIncrement (fi->template, i); } /*endwhile*/ @@ -1457,6 +1462,7 @@ static FmStatus FrameInstSetIterCount (FrameInst fi, int num) break; } /*endswitch*/ + assert (i >= 0); i = _FrameInstIncrement (fi->template, i); } /*endwhile*/ @@ -1474,6 +1480,7 @@ static int FrameInstGetTotalSize (FrameInst fi) while (fi->template[i].type != EOL) { size += _FrameInstGetItemSize (fi, i); + assert (i >= 0); i = _FrameInstIncrement (fi->template, i); } /*endwhile*/ @@ -1518,6 +1525,11 @@ static Iter IterInit (XimFrame frame, int count) register XimFrameType type; it = (Iter) Xmalloc (sizeof (IterRec)); + if (!it) { + fprintf (stderr, "(XIM-IMdkit) WARNING: malloc failed in %s:%d.\n", + __FILE__, __LINE__); + return NULL; + } it->template = frame; it->max_count = (count == NO_VALUE) ? 0 : count; it->allow_expansion = (count == NO_VALUE); @@ -1662,8 +1674,15 @@ static Bool IterIsLoopEnd (Iter it, Bool *myself) static XimFrameType IterGetNextType (Iter it, XimFrameTypeInfo info) { - XimFrameType type = it->template->type; + XimFrameType type; + + if (!it || !it->template) { + fprintf (stderr, "(XIM-IMdkit) WARNING: malloc failed in %s:%d.\n", + __FILE__, __LINE__); + return (XimFrameType) NULL; + } + type = it->template->type; if (it->start_counter) { (*it->start_watch_proc) (it, it->client_data); @@ -1759,7 +1778,15 @@ static XimFrameType IterGetNextType (Iter it, XimFrameTypeInfo info) static XimFrameType IterPeekNextType (Iter it, XimFrameTypeInfo info) { - XimFrameType type = it->template->type; + XimFrameType type; + + if (!it->template) { + fprintf (stderr, "(XIM-IMdkit) WARNING: dereference pointer %s:%d.\n", + __FILE__, __LINE__); + return (XimFrameType) NULL; + } + + type = it->template->type; if (!it->allow_expansion && it->cur_no >= it->max_count) return (EOL); @@ -1859,6 +1886,9 @@ static FmStatus IterSetSize (Iter it, int num) dr.num = NO_VALUE; d = ChainMgrSetData (&it->cm, i, dr); } + if (!d) { + return FmNoMoreData; + } /*endif*/ if (d->num == NO_VALUE) { @@ -2247,6 +2277,11 @@ static ExtraData ChainMgrSetData (ChainMgr cm, ExtraDataRec data) { Chain cur = (Chain) Xmalloc (sizeof (ChainRec)); + if (!cur) { + fprintf (stderr, "(XIM-IMdkit) WARNING: malloc failed in %s:%d.\n", + __FILE__, __LINE__); + return NULL; + } cur->frame_no = frame_no; cur->d = data; @@ -2419,6 +2454,7 @@ static int _FrameInstGetItemSize (FrameInst fi, int cur_no) size = 0; while (number > 0) { + assert (i >= 0); i = _FrameInstDecrement (fi->template, i); size += _FrameInstGetItemSize (fi, i); number--; diff --git a/util/IMdkit/IMConn.c b/util/IMdkit/IMConn.c index 6d3658938..8e8b8ece3 100644 --- a/util/IMdkit/IMConn.c +++ b/util/IMdkit/IMConn.c @@ -83,7 +83,7 @@ static char *_FindModifiers (XIMArg *args) { char *modifiers; - while (args->name) + while (args && args->name) { if (strcmp (args->name, IMModifiers) == 0) { @@ -144,8 +144,10 @@ XIMS IMOpenIM (Display *display, ...) modifiers = _FindModifiers (args); ims = _GetIMS (modifiers); - if (ims == (XIMS) NULL) + if (ims == (XIMS) NULL) { + XFree (args); return (XIMS) NULL; + } /*endif*/ ims->core.display = display; diff --git a/util/IMdkit/IMdkit.h b/util/IMdkit/IMdkit.h index 6f8d6730f..b7d27f5a0 100644 --- a/util/IMdkit/IMdkit.h +++ b/util/IMdkit/IMdkit.h @@ -60,7 +60,7 @@ extern "C" { #define I18N_INPUT_STYLES 0x0010 /* IMInputStyles */ #define I18N_ON_KEYS 0x0020 /* IMOnKeysList */ #define I18N_OFF_KEYS 0x0040 /* IMOffKeysList */ -#define I18N_IM_HANDLER 0x0080 /* IMProtocolHander */ +#define I18N_IM_HANDLER 0x0080 /* IMProtocolHandler */ #define I18N_ENCODINGS 0x0100 /* IMEncodingList */ #define I18N_FILTERMASK 0x0200 /* IMFilterEventMask */ #define I18N_PROTO_DEPEND 0x0400 /* IMProtoDepend */ diff --git a/util/IMdkit/Makefile.am b/util/IMdkit/Makefile.am index f07f5aaef..6cbb90836 100644 --- a/util/IMdkit/Makefile.am +++ b/util/IMdkit/Makefile.am @@ -2,23 +2,23 @@ # # ibus - The Input Bus # -# Copyright (c) 2007-2010 Peng Huang -# Copyright (c) 2007-2010 Red Hat, Inc. +# Copyright (c) 2007-2014 Peng Huang +# Copyright (c) 2007-2014 Red Hat, Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA noinst_LTLIBRARIES = libIMdkit.la @@ -29,6 +29,7 @@ libIMdkit_la_SOURCES = \ i18nIc.c \ i18nIMProto.c \ i18nMethod.c \ + i18nOffsetCache.c \ i18nPtHdr.c \ i18nUtil.c \ i18nX.c \ diff --git a/util/IMdkit/Xi18n.h b/util/IMdkit/Xi18n.h index 484cc624b..79dd9619a 100644 --- a/util/IMdkit/Xi18n.h +++ b/util/IMdkit/Xi18n.h @@ -1,7 +1,9 @@ /****************************************************************** - Copyright 1994, 1995 by Sun Microsystems, Inc. - Copyright 1993, 1994 by Hewlett-Packard Company + Copyright (C) 1994-1995 Sun Microsystems, Inc. + Copyright (C) 1993-1994 Hewlett-Packard Company + Copyright (C) 2014 Peng Huang + Copyright (C) 2014 Red Hat, Inc. Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, @@ -45,6 +47,7 @@ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. #define XIM_EXT_MOVE (0x33) #define COMMON_EXTENSIONS_NUM 3 +#include #include #include "IMdkit.h" @@ -138,6 +141,19 @@ typedef struct char *name; } XIMExt; +typedef struct +{ + Atom key; + unsigned long offset; +} Xi18nAtomOffsetPair; + +typedef struct +{ + size_t capacity; + size_t size; + Xi18nAtomOffsetPair *data; +} Xi18nOffsetCache; + typedef struct _Xi18nClient { int connect_id; @@ -149,8 +165,7 @@ typedef struct _Xi18nClient */ int sync; XIMPending *pending; - /* property offset to read next data */ - long property_offset; + Xi18nOffsetCache offset_cache; void *trans_rec; /* contains transport specific data */ struct _Xi18nClient *next; } Xi18nClient; @@ -460,7 +475,7 @@ typedef struct _Xi18nAddressRec XIMTriggerKeys on_keys; /* IMOnKeysList */ XIMTriggerKeys off_keys; /* IMOffKeysList */ XIMEncodings encoding_list; /* IMEncodingList */ - IMProtoHandler improto; /* IMProtocolHander */ + IMProtoHandler improto; /* IMProtocolHandler */ long filterevent_mask; /* IMFilterEventMask */ /* XIM_SERVERS target Atoms */ Atom selection; diff --git a/util/IMdkit/i18nClbk.c b/util/IMdkit/i18nClbk.c index b3edf3ad5..f55f970f4 100644 --- a/util/IMdkit/i18nClbk.c +++ b/util/IMdkit/i18nClbk.c @@ -55,6 +55,7 @@ int _Xi18nGeometryCallback (XIMS ims, IMProtocol *call_data) if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); + FrameMgrFree (fm); return False; } /*endif*/ @@ -97,6 +98,7 @@ int _Xi18nPreeditStartCallback (XIMS ims, IMProtocol *call_data) if (!reply) { _Xi18nSendMessage(ims, connect_id, XIM_ERROR, 0, 0, 0); + FrameMgrFree (fm); return False; } /*endif*/ @@ -159,6 +161,7 @@ int _Xi18nPreeditDrawCallback (XIMS ims, IMProtocol *call_data) if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); + FrameMgrFree (fm); return False; } /*endif*/ @@ -212,6 +215,7 @@ int _Xi18nPreeditCaretCallback (XIMS ims, IMProtocol *call_data) if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); + FrameMgrFree (fm); return False; } /*endif*/ @@ -256,6 +260,7 @@ int _Xi18nPreeditDoneCallback (XIMS ims, IMProtocol *call_data) if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); + FrameMgrFree (fm); return False; } /*endif*/ @@ -297,6 +302,7 @@ int _Xi18nStatusStartCallback (XIMS ims, IMProtocol *call_data) if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); + FrameMgrFree (fm); return False; } /*endif*/ @@ -363,6 +369,7 @@ int _Xi18nStatusDrawCallback (XIMS ims, IMProtocol *call_data) if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); + FrameMgrFree (fm); return False; } /*endif*/ @@ -390,6 +397,7 @@ int _Xi18nStatusDrawCallback (XIMS ims, IMProtocol *call_data) if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); + FrameMgrFree (fm); return False; } /*endif*/ @@ -435,6 +443,7 @@ int _Xi18nStatusDoneCallback (XIMS ims, IMProtocol *call_data) if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); + FrameMgrFree (fm); return False; } /*endif*/ @@ -479,6 +488,7 @@ int _Xi18nStringConversionCallback (XIMS ims, IMProtocol *call_data) if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); + FrameMgrFree (fm); return False; } /*endif*/ diff --git a/util/IMdkit/i18nIc.c b/util/IMdkit/i18nIc.c index 61b576f99..14a3dc51b 100644 --- a/util/IMdkit/i18nIc.c +++ b/util/IMdkit/i18nIc.c @@ -470,15 +470,20 @@ static XICAttribute *CreateNestedList (CARD16 attr_id, /*endfor*/ nest_list = (XICAttribute *) malloc (sizeof (XICAttribute)); - if (nest_list == NULL) + if (nest_list == NULL) { + XFree (values); return NULL; + } /*endif*/ memset (nest_list, 0, sizeof (XICAttribute)); nest_list->value = (void *) malloc (value_length); - if (nest_list->value == NULL) + if (nest_list->value == NULL) { + XFree (nest_list); + XFree (values); return NULL; + } /*endif*/ - memset (nest_list->value, 0, sizeof (value_length)); + memset (nest_list->value, 0, value_length); nest_list->attribute_id = attr_id; nest_list->value_length = value_length; @@ -537,7 +542,13 @@ static int GetICValue (Xi18n i18n_core, attr_ret[n].attribute_id = xic_attr[j].attribute_id; attr_ret[n].name_length = xic_attr[j].length; attr_ret[n].name = malloc (xic_attr[j].length + 1); - strcpy(attr_ret[n].name, xic_attr[j].name); + if (!attr_ret[n].name) { + fprintf (stderr, + "(XIM-IMdkit) WARNING: malloc failed in %s:%d.\n", + __FILE__, __LINE__); + } else { + strcpy(attr_ret[n].name, xic_attr[j].name); + } attr_ret[n].type = xic_attr[j].type; n++; i++; @@ -558,7 +569,13 @@ static int GetICValue (Xi18n i18n_core, attr_ret[n].attribute_id = xic_attr[j].attribute_id; attr_ret[n].name_length = xic_attr[j].length; attr_ret[n].name = malloc (xic_attr[j].length + 1); - strcpy(attr_ret[n].name, xic_attr[j].name); + if (!attr_ret[n].name) { + fprintf (stderr, + "(XIM-IMdkit) WARNING: malloc failed in %s:%d.\n", + __FILE__, __LINE__); + } else { + strcpy(attr_ret[n].name, xic_attr[j].name); + } attr_ret[n].type = xic_attr[j].type; n++; break; @@ -698,10 +715,15 @@ void _Xi18nChangeIC (XIMS ims, attrib_list[attrib_num].value_length = value_length; FrameMgrGetToken (fm, value); attrib_list[attrib_num].value = (void *) malloc (value_length + 1); - memmove (attrib_list[attrib_num].value, value, value_length); - ((char *)attrib_list[attrib_num].value)[value_length] = '\0'; + if (!attrib_list[attrib_num].value) { + fprintf (stderr, "(XIM-IMdkit) WARNING: malloc failed in %s:%d.\n", + __FILE__, __LINE__); + } else { + memmove (attrib_list[attrib_num].value, value, value_length); + ((char *)attrib_list[attrib_num].value)[value_length] = '\0'; + total_value_length += (value_length + 1); + } attrib_num++; - total_value_length += (value_length + 1); } /*endwhile*/ @@ -816,6 +838,7 @@ void _Xi18nChangeIC (XIMS ims, if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); + FrameMgrFree (fm); return; } /*endif*/ @@ -914,6 +937,12 @@ void _Xi18nGetIC (XIMS ims, IMProtocol *call_data, unsigned char *p) FrameMgrGetToken (fm, byte_length); attrID_list = (CARD16 *) malloc (sizeof (CARD16)*IC_SIZE); /* bogus */ + if (!attrID_list) { + fprintf (stderr, "(XIM-IMdkit) WARNING: malloc failed in %s:%d.\n", + __FILE__, __LINE__); + FrameMgrFree (fm); + return; + } memset (attrID_list, 0, sizeof (CARD16)*IC_SIZE); number = 0; @@ -973,8 +1002,10 @@ void _Xi18nGetIC (XIMS ims, IMProtocol *call_data, unsigned char *p) getic->ic_attr = ic_attr; if (i18n_core->address.improto) { - if (!(i18n_core->address.improto (ims, call_data))) + if (!(i18n_core->address.improto (ims, call_data))) { + XFree (attrID_list); return; + } /*endif*/ if (_Xi18nNeedSwap (i18n_core, connect_id)) SwapAttributes(getic->ic_attr, getic->ic_attr_num); @@ -1020,6 +1051,8 @@ void _Xi18nGetIC (XIMS ims, IMProtocol *call_data, unsigned char *p) if (reply == NULL) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); + XFree (attrID_list); + goto _Xi18nGetIC_finit; return; } /*endif*/ @@ -1090,6 +1123,7 @@ void _Xi18nGetIC (XIMS ims, IMProtocol *call_data, unsigned char *p) } /*endfor*/ +_Xi18nGetIC_finit: if (preedit_ret) { XFree (preedit_ret->value); diff --git a/util/IMdkit/i18nMethod.c b/util/IMdkit/i18nMethod.c index 203f83157..9c44e7feb 100644 --- a/util/IMdkit/i18nMethod.c +++ b/util/IMdkit/i18nMethod.c @@ -166,8 +166,14 @@ static Bool GetEncodings(Xi18n i18n_core, XIMEncodings **p_encoding) { (*p_encoding)->supported_encodings[i] = (char *) malloc (strlen (p->supported_encodings[i]) + 1); - strcpy ((*p_encoding)->supported_encodings[i], - p->supported_encodings[i]); + if (!((*p_encoding)->supported_encodings[i])) { + fprintf (stderr, "(XIM-IMdkit) WARNING: malloc failed in %s:%d.\n", + __FILE__, __LINE__); + + } else { + strcpy ((*p_encoding)->supported_encodings[i], + p->supported_encodings[i]); + } } /*endif*/ return True; @@ -187,11 +193,17 @@ static char *ParseArgs (Xi18n i18n_core, int mode, XIMArg *args) if (address->imvalue_mask & I18N_IM_LOCALE) return IMLocale; /*endif*/ + /* address->im_locale will be released later and don't need + * -Wanalyzer-malloc-leak flag in gcc 11.0.1. + */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wanalyzer-malloc-leak" address->im_locale = (char *) malloc (strlen (p->value) + 1); if (!address->im_locale) return IMLocale; /*endif*/ strcpy (address->im_locale, p->value); +#pragma GCC diagnostic pop address->imvalue_mask |= I18N_IM_LOCALE; } else if (strcmp (p->name, IMServerTransport) == 0) @@ -199,11 +211,14 @@ static char *ParseArgs (Xi18n i18n_core, int mode, XIMArg *args) if (address->imvalue_mask & I18N_IM_ADDRESS) return IMServerTransport; /*endif*/ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wanalyzer-malloc-leak" address->im_addr = (char *) malloc (strlen (p->value) + 1); if (!address->im_addr) return IMServerTransport; /*endif*/ strcpy(address->im_addr, p->value); +#pragma GCC diagnostic pop address->imvalue_mask |= I18N_IM_ADDRESS; } else if (strcmp (p->name, IMServerName) == 0) @@ -211,11 +226,14 @@ static char *ParseArgs (Xi18n i18n_core, int mode, XIMArg *args) if (address->imvalue_mask & I18N_IM_NAME) return IMServerName; /*endif*/ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wanalyzer-malloc-leak" address->im_name = (char *) malloc (strlen (p->value) + 1); if (!address->im_name) return IMServerName; /*endif*/ strcpy (address->im_name, p->value); +#pragma GCC diagnostic pop address->imvalue_mask |= I18N_IM_NAME; } else if (strcmp (p->name, IMServerWindow) == 0) @@ -698,7 +716,7 @@ static void ReturnSelectionNotify (Xi18n i18n_core, XSelectionRequestEvent *ev) { XEvent event; Display *dpy = i18n_core->address.dpy; - char buf[4096]; + char buf[4096] = { '\0', }; event.type = SelectionNotify; event.xselection.requestor = ev->requestor; @@ -895,6 +913,7 @@ static Status xi18n_forwardEvent (XIMS ims, XPointer xp) 0, 0, 0); + FrameMgrFree (fm); return False; } /*endif*/ @@ -964,6 +983,7 @@ static Status xi18n_commit (XIMS ims, XPointer xp) 0, 0, 0); + FrameMgrFree (fm); return False; } /*endif*/ @@ -997,6 +1017,7 @@ static Status xi18n_commit (XIMS ims, XPointer xp) 0, 0, 0); + FrameMgrFree (fm); return False; } /*endif*/ @@ -1132,6 +1153,7 @@ static int xi18n_syncXlib (XIMS ims, XPointer xp) reply = (unsigned char *) malloc (total_size); if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); + FrameMgrFree (fm); return False; } memset (reply, 0, total_size); diff --git a/util/IMdkit/i18nOffsetCache.c b/util/IMdkit/i18nOffsetCache.c new file mode 100644 index 000000000..e2fe8c6b3 --- /dev/null +++ b/util/IMdkit/i18nOffsetCache.c @@ -0,0 +1,102 @@ +/* + * Copyright (C) 2014 Peng Huang + * Copyright (C) 2014 Red Hat, Inc. + * + * Permission to use, copy, modify, distribute, and sell this + * software and its documentation for any purpose is hereby granted + * without fee, provided that the above copyright notice appear in + * all copies and that both that copyright notice and this permission + * notice appear in supporting documentation, and that the name of + * the copyright holders not be used in advertising or publicity + * pertaining to distribution of the software without specific, + * written prior permission. The copyright holders make no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied + * warranty. + * + * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY + * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN + * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, + * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF + * THIS SOFTWARE. + * + * Author: Klemens Baum + */ + +#include +#include +#include +#include "IMdkit.h" +#include "Xi18n.h" +#include "Xi18n.h" + +/* + * The XIM specification does not limit the number of window properties + * that can be used to transfer data, but Xlib uses the atom strings + * _client0 through _client20. + * + * So use that as a sensible initial size for the offset cache. + */ +#define INITIAL_OFFSET_CACHE_CAPACITY 21 +#define OFFSET_CACHE_GROWTH_FACTOR 2 + +void _Xi18nInitOffsetCache (Xi18nOffsetCache *offset_cache) +{ + offset_cache->size = 0; + offset_cache->capacity = INITIAL_OFFSET_CACHE_CAPACITY; + offset_cache->data = (Xi18nAtomOffsetPair *) malloc ( + INITIAL_OFFSET_CACHE_CAPACITY * sizeof (Xi18nAtomOffsetPair)); +} + +unsigned long _Xi18nLookupPropertyOffset (Xi18nOffsetCache *offset_cache, + Atom key) +{ + Xi18nAtomOffsetPair *data; + size_t i; + + assert (offset_cache); + data = offset_cache->data; + for (i = 0; i < offset_cache->size; ++i) { + if (data[i].key == key) { + return data[i].offset; + } + } + + return 0; +} + +void _Xi18nSetPropertyOffset (Xi18nOffsetCache *offset_cache, Atom key, + unsigned long offset) +{ + Xi18nAtomOffsetPair *data = offset_cache->data; + size_t i; + + assert (data != NULL); + for (i = 0; i < offset_cache->size; ++i) { + if (data[i].key == key) { + data[i].offset = offset; + return; + } + } + + if (++offset_cache->size > offset_cache->capacity) { + offset_cache->capacity *= OFFSET_CACHE_GROWTH_FACTOR; + offset_cache->data = (Xi18nAtomOffsetPair *) realloc (data, + offset_cache->capacity * sizeof (Xi18nAtomOffsetPair)); + if (offset_cache->data == NULL) { + offset_cache->data = data; + --offset_cache->size; + } + data = offset_cache->data; + } + + assert (data != NULL); + if (offset_cache->size > 0 && i < offset_cache->capacity) { + data[i].key = key; + data[i].offset = offset; + } +} + diff --git a/util/IMdkit/i18nPtHdr.c b/util/IMdkit/i18nPtHdr.c index 2e6735419..8dc52714d 100644 --- a/util/IMdkit/i18nPtHdr.c +++ b/util/IMdkit/i18nPtHdr.c @@ -110,6 +110,7 @@ static void ConnectMessageProc (XIMS ims, if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); + FrameMgrFree (fm); return; } /*endif*/ @@ -180,8 +181,13 @@ static void OpenMessageProc(XIMS ims, IMProtocol *call_data, unsigned char *p) FrameMgrGetToken (fm, name); imopen->lang.length = str_length; imopen->lang.name = malloc (str_length + 1); - strncpy (imopen->lang.name, name, str_length); - imopen->lang.name[str_length] = (char) 0; + if (!imopen->lang.name) { + fprintf (stderr, "(XIM-IMdkit) WARNING: malloc failed in %s:%d.\n", + __FILE__, __LINE__); + } else { + strncpy (imopen->lang.name, name, str_length); + imopen->lang.name[str_length] = (char) 0; + } FrameMgrFree (fm); @@ -230,6 +236,7 @@ static void OpenMessageProc(XIMS ims, IMProtocol *call_data, unsigned char *p) if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); + FrameMgrFree (fm); return; } /*endif*/ @@ -312,6 +319,7 @@ static void CloseMessageProc (XIMS ims, 0, 0, 0); + FrameMgrFree (fm); return; } /*endif*/ @@ -336,7 +344,7 @@ static XIMExt *MakeExtensionList (Xi18n i18n_core, int number, int *reply_number) { - XIMExt *ext_list; + XIMExt *ext_list = NULL; XIMExt *im_ext = (XIMExt *) i18n_core->address.extension; int im_ext_len = i18n_core->address.ext_num; int i; @@ -355,7 +363,8 @@ static XIMExt *MakeExtensionList (Xi18n i18n_core, { for (j = 0; j < (int) number; j++) { - if (strcmp (lib_extension[j].name, im_ext[i].name) == 0) + if (lib_extension[j].name + && strcmp (lib_extension[j].name, im_ext[i].name) == 0) { (*reply_number)++; break; @@ -386,7 +395,13 @@ static XIMExt *MakeExtensionList (Xi18n i18n_core, ext_list[i].minor_opcode = im_ext[i].minor_opcode; ext_list[i].length = im_ext[i].length; ext_list[i].name = malloc (im_ext[i].length + 1); - strcpy (ext_list[i].name, im_ext[i].name); + if (!ext_list[i].name) { + fprintf (stderr, + "(XIM-IMdkit) WARNING: malloc failed in %s:%d.\n", + __FILE__, __LINE__); + } else { + strcpy (ext_list[i].name, im_ext[i].name); + } } /*endfor*/ } @@ -398,13 +413,20 @@ static XIMExt *MakeExtensionList (Xi18n i18n_core, { for (j = 0; j < (int)number; j++) { - if (strcmp (lib_extension[j].name, im_ext[i].name) == 0) + if (lib_extension[j].name + && strcmp (lib_extension[j].name, im_ext[i].name) == 0) { ext_list[n].major_opcode = im_ext[i].major_opcode; ext_list[n].minor_opcode = im_ext[i].minor_opcode; ext_list[n].length = im_ext[i].length; ext_list[n].name = malloc (im_ext[i].length + 1); - strcpy (ext_list[n].name, im_ext[i].name); + if (!ext_list[n].name) { + fprintf (stderr, + "(XIM-IMdkit) WARNING: malloc failed in %s:%d.\n", + __FILE__, __LINE__); + } else { + strcpy (ext_list[n].name, im_ext[i].name); + } n++; break; } @@ -447,6 +469,11 @@ static void QueryExtensionMessageProc (XIMS ims, FrameMgrGetToken (fm, input_method_ID); FrameMgrGetToken (fm, byte_length); query_ext->extension = (XIMStr *) malloc (sizeof (XIMStr)*10); + if (!query_ext->extension) { + fprintf (stderr, "(XIM-IMdkit) WARNING: malloc failed in %s:%d.\n", + __FILE__, __LINE__); + return; + } memset (query_ext->extension, 0, sizeof (XIMStr)*10); number = 0; while (FrameMgrIsIterLoopEnd (fm, &status) == False) @@ -458,9 +485,20 @@ static void QueryExtensionMessageProc (XIMS ims, FrameMgrSetSize (fm, str_length); query_ext->extension[number].length = str_length; FrameMgrGetToken (fm, name); + /* I don't know why extension[number].name is detected as leak + * with -Wanalyzer-malloc-leak option in gcc 11.0.1. + */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wanalyzer-malloc-leak" query_ext->extension[number].name = malloc (str_length + 1); - strncpy (query_ext->extension[number].name, name, str_length); - query_ext->extension[number].name[str_length] = (char) 0; + if (!query_ext->extension[number].name) { + fprintf (stderr, "(XIM-IMdkit) WARNING: malloc failed in %s:%d.\n", + __FILE__, __LINE__); + } else { + strncpy (query_ext->extension[number].name, name, str_length); + query_ext->extension[number].name[str_length] = (char) 0; + } +#pragma GCC diagnostic pop number++; } /*endwhile*/ @@ -487,6 +525,8 @@ static void QueryExtensionMessageProc (XIMS ims, XFree (query_ext->extension[i].name); /*endfor*/ XFree (query_ext->extension); + if (!ext_list) + return; fm = FrameMgrInit (query_extension_reply_fr, NULL, @@ -498,7 +538,10 @@ static void QueryExtensionMessageProc (XIMS ims, /* set length of BARRAY item in ext_fr */ for (i = 0; i < reply_number; i++) { - str_size = strlen (ext_list[i].name); + if (ext_list[i].name) + str_size = strlen (ext_list[i].name); + else + str_size = 0; FrameMgrSetSize (fm, str_size); } /*endfor*/ @@ -513,6 +556,10 @@ static void QueryExtensionMessageProc (XIMS ims, 0, 0, 0); + FrameMgrFree (fm); + for (i = 0; i < reply_number; i++) + XFree (ext_list[i].name); + XFree ((char *) ext_list); return; } /*endif*/ @@ -610,8 +657,10 @@ static void GetIMValueFromName (Xi18n i18n_core, total_size = FrameMgrGetTotalSize (fm); data = (unsigned char *) malloc (total_size); - if (!data) + if (!data) { + FrameMgrFree (fm); return; + } /*endif*/ memset (data, 0, total_size); FrameMgrSetBuffer (fm, data); @@ -666,11 +715,12 @@ static XIMAttribute *MakeIMAttributeList (Xi18n i18n_core, /*endfor*/ } /*endfor*/ - attrib_list = (XIMAttribute *) malloc (sizeof (XIMAttribute)*list_num); + attrib_list = + (XIMAttribute *) malloc (sizeof (XIMAttribute)*(list_num + 1)); if (!attrib_list) return NULL; /*endif*/ - memset (attrib_list, 0, sizeof (XIMAttribute)*list_num); + memset (attrib_list, 0, sizeof (XIMAttribute)*(list_num + 1)); number_ret = list_num; list_num = 0; for (i = 0; i < *number; i++) @@ -690,7 +740,13 @@ static XIMAttribute *MakeIMAttributeList (Xi18n i18n_core, &value_length); attrib_list[list_num].value_length = value_length; attrib_list[list_num].value = (void *) malloc (value_length); - memset(attrib_list[list_num].value, 0, value_length); + if (attrib_list[list_num].value) { + memset(attrib_list[list_num].value, 0, value_length); + } else { + fprintf (stderr, + "(XIM-IMdkit) WARNING: malloc failed in %s:%d.\n", + __FILE__, __LINE__); + } GetIMValueFromName (i18n_core, connect_id, attrib_list[list_num].value, @@ -727,10 +783,10 @@ static void GetIMValuesMessageProc (XIMS ims, register int i; register int j; int number; - CARD16 *im_attrID_list; - char **name_list; + CARD16 *im_attrID_list = NULL; + char **name_list = NULL; CARD16 name_number; - XIMAttribute *im_attribute_list; + XIMAttribute *im_attribute_list = NULL; IMGetIMValuesStruct *getim = (IMGetIMValuesStruct *)&call_data->getim; CARD16 connect_id = call_data->any.connect_id; CARD16 input_method_ID; @@ -743,8 +799,18 @@ static void GetIMValuesMessageProc (XIMS ims, FrameMgrGetToken (fm, input_method_ID); FrameMgrGetToken (fm, byte_length); im_attrID_list = (CARD16 *) malloc (sizeof (CARD16)*20); + if (!im_attrID_list) { + fprintf (stderr, "(XIM-IMdkit) WARNING: malloc failed in %s:%d.\n", + __FILE__, __LINE__); + goto GetIMValuesMessageProc_finit; + } memset (im_attrID_list, 0, sizeof (CARD16)*20); name_list = (char **)malloc(sizeof(char *) * 20); + if (!name_list) { + fprintf (stderr, "(XIM-IMdkit) WARNING: malloc failed in %s:%d.\n", + __FILE__, __LINE__); + goto GetIMValuesMessageProc_finit; + } memset(name_list, 0, sizeof(char *) * 20); number = 0; while (FrameMgrIsIterLoopEnd (fm, &status) == False) @@ -782,8 +848,11 @@ static void GetIMValuesMessageProc (XIMS ims, im_attrID_list, &number, &list_len); - if (im_attrID_list) - XFree (im_attrID_list); + if (!im_attribute_list) { + fprintf (stderr, "(XIM-IMdkit) WARNING: malloc failed in %s:%d.\n", + __FILE__, __LINE__); + goto GetIMValuesMessageProc_finit2; + } /*endif*/ fm = FrameMgrInit (get_im_values_reply_fr, @@ -805,7 +874,7 @@ static void GetIMValuesMessageProc (XIMS ims, if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); - return; + goto GetIMValuesMessageProc_finit; } /*endif*/ memset (reply, 0, total_size); @@ -826,12 +895,18 @@ static void GetIMValuesMessageProc (XIMS ims, 0, reply, total_size); - FrameMgrFree (fm); XFree (reply); - for (i = 0; i < iter_count; i++) - XFree(im_attribute_list[i].value); - XFree (im_attribute_list); +GetIMValuesMessageProc_finit: + FrameMgrFree (fm); +GetIMValuesMessageProc_finit2: + if (im_attrID_list) + XFree (im_attrID_list); + if (im_attribute_list) { + for (i = 0; i < iter_count; i++) + XFree(im_attribute_list[i].value); + XFree (im_attribute_list); + } } static void CreateICMessageProc (XIMS ims, @@ -961,6 +1036,7 @@ static void DestroyICMessageProc (XIMS ims, if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); + FrameMgrFree (fm); return; } /*endif*/ @@ -1026,6 +1102,7 @@ static void ResetICMessageProc (XIMS ims, if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); + FrameMgrFree (fm); return; } /*endif*/ @@ -1072,7 +1149,7 @@ static int WireEventToEvent (Xi18n i18n_core, /* get & set serial */ FrameMgrGetToken(fm, c16); ev->xany.serial = (unsigned long)c16; - ev->xany.serial |= serial << 16; + ev->xany.serial |= ((unsigned long)serial) << 16; ev->xany.send_event = False; ev->xany.display = i18n_core->address.dpy; @@ -1308,6 +1385,7 @@ static void TriggerNotifyMessageProc (XIMS ims, if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); + FrameMgrFree (fm); return; } /*endif*/ @@ -1418,6 +1496,11 @@ static void EncodingNegotiatonMessageProc (XIMS ims, if (byte_length > 0) { enc_nego->encoding = (XIMStr *) malloc (sizeof (XIMStr)*10); + if (!enc_nego->encoding) { + fprintf (stderr, "(XIM-IMdkit) WARNING: malloc failed in %s:%d.\n", + __FILE__, __LINE__); + goto EncodingNegotiatonMessageProc_finit; + } memset (enc_nego->encoding, 0, sizeof (XIMStr)*10); i = 0; while (FrameMgrIsIterLoopEnd (fm, &status) == False) @@ -1429,9 +1512,21 @@ static void EncodingNegotiatonMessageProc (XIMS ims, FrameMgrSetSize (fm, str_length); enc_nego->encoding[i].length = str_length; FrameMgrGetToken (fm, name); + /* I don't know why encoding[i].name is detected as leak + * with -Wanalyzer-malloc-leak option in gcc 11.0.1. + */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wanalyzer-malloc-leak" enc_nego->encoding[i].name = malloc (str_length + 1); + if (!(enc_nego->encoding[i].name)) { + fprintf (stderr, + "(XIM-IMdkit) WARNING: malloc failed in %s:%d.\n", + __FILE__, __LINE__); + goto EncodingNegotiatonMessageProc_finit; + } strncpy (enc_nego->encoding[i].name, name, str_length); enc_nego->encoding[i].name[str_length] = '\0'; +#pragma GCC diagnostic pop i++; } /*endwhile*/ @@ -1443,20 +1538,37 @@ static void EncodingNegotiatonMessageProc (XIMS ims, if (byte_length > 0) { enc_nego->encodinginfo = (XIMStr *) malloc (sizeof (XIMStr)*10); - memset (enc_nego->encoding, 0, sizeof (XIMStr)*10); + if (!enc_nego->encodinginfo) { + fprintf (stderr, "(XIM-IMdkit) WARNING: malloc failed in %s:%d.\n", + __FILE__, __LINE__); + goto EncodingNegotiatonMessageProc_finit; + } + memset (enc_nego->encodinginfo, 0, sizeof (XIMStr)*10); i = 0; while (FrameMgrIsIterLoopEnd (fm, &status) == False) { char *name; int str_length; - + FrameMgrGetToken (fm, str_length); FrameMgrSetSize (fm, str_length); enc_nego->encodinginfo[i].length = str_length; FrameMgrGetToken (fm, name); + /* I don't know why encodinginfo[i].name is detected as leak + * with -Wanalyzer-malloc-leak option in gcc 11.0.1. + */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wanalyzer-malloc-leak" enc_nego->encodinginfo[i].name = malloc (str_length + 1); + if (!enc_nego->encodinginfo[i].name) { + fprintf (stderr, + "(XIM-IMdkit) WARNING: malloc failed in %s:%d.\n", + __FILE__, __LINE__); + goto EncodingNegotiatonMessageProc_finit; + } strncpy (enc_nego->encodinginfo[i].name, name, str_length); enc_nego->encodinginfo[i].name[str_length] = '\0'; +#pragma GCC diagnostic pop i++; } /*endwhile*/ @@ -1488,6 +1600,7 @@ static void EncodingNegotiatonMessageProc (XIMS ims, if (!reply) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); + FrameMgrFree (fm); return; } /*endif*/ @@ -1506,6 +1619,7 @@ static void EncodingNegotiatonMessageProc (XIMS ims, total_size); XFree (reply); +EncodingNegotiatonMessageProc_finit: /* free data for encoding list */ if (enc_nego->encoding) { diff --git a/util/IMdkit/i18nUtil.c b/util/IMdkit/i18nUtil.c index c07de481a..c62154e73 100644 --- a/util/IMdkit/i18nUtil.c +++ b/util/IMdkit/i18nUtil.c @@ -1,7 +1,9 @@ /****************************************************************** - Copyright 1994, 1995 by Sun Microsystems, Inc. - Copyright 1993, 1994 by Hewlett-Packard Company + Copyright (C) 1994-1995 Sun Microsystems, Inc. + Copyright (C) 1993-1994 Hewlett-Packard Company + Copyright (C) 2014 Peng Huang + Copyright (C) 2014 Red Hat, Inc. Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, @@ -36,6 +38,7 @@ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. #include "XimFunc.h" Xi18nClient *_Xi18nFindClient (Xi18n, CARD16); +void _Xi18nInitOffsetCache (Xi18nOffsetCache *); int _Xi18nNeedSwap (Xi18n i18n_core, CARD16 connect_id) @@ -43,6 +46,8 @@ _Xi18nNeedSwap (Xi18n i18n_core, CARD16 connect_id) CARD8 im_byteOrder = i18n_core->address.im_byteOrder; Xi18nClient *client = _Xi18nFindClient (i18n_core, connect_id); + if (!client) + return True; return (client->byte_order != im_byteOrder); } @@ -64,13 +69,18 @@ Xi18nClient *_Xi18nNewClient(Xi18n i18n_core) new_connect_id = ++connect_id; } /*endif*/ + if (!client) { + fprintf (stderr, "(XIM-IMdkit) WARNING: malloc failed in %s:%d.\n", + __FILE__, __LINE__); + return NULL; + } memset (client, 0, sizeof (Xi18nClient)); client->connect_id = new_connect_id; client->pending = (XIMPending *) NULL; client->sync = False; client->byte_order = '?'; /* initial value */ memset (&client->pending, 0, sizeof (XIMPending *)); - client->property_offset = 0; + _Xi18nInitOffsetCache (&client->offset_cache); client->next = i18n_core->address.clients; i18n_core->address.clients = client; @@ -110,7 +120,14 @@ void _Xi18nDeleteClient (Xi18n i18n_core, CARD16 connect_id) ccp0->next = ccp->next; /*endif*/ /* put it back to free list */ + /* gcc 11.0.1 warns dereference of NULL with + * -Wanalyzer-null-dereference option + * but target should not be NULL. + */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wanalyzer-null-dereference" target->next = i18n_core->address.free_clients; +#pragma GCC diagnostic pop i18n_core->address.free_clients = target; return; } @@ -145,6 +162,7 @@ void _Xi18nSendMessage (XIMS ims, if (reply_hdr == NULL) { _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); + FrameMgrFree (fm); return; } /*endif*/ @@ -157,10 +175,17 @@ void _Xi18nSendMessage (XIMS ims, reply_length = header_size + length; reply = (unsigned char *) malloc (reply_length); + if (!reply) { + _Xi18nSendMessage (ims, connect_id, XIM_ERROR, 0, 0, 0); + XFree (reply_hdr); + FrameMgrFree (fm); + return; + } replyp = reply; memmove (reply, reply_hdr, header_size); replyp += header_size; - memmove (replyp, data, length); + if (length > 0 && data != NULL) + memmove (replyp, data, length); i18n_core->methods.send (ims, connect_id, reply, reply_length); @@ -199,8 +224,10 @@ void _Xi18nSendTriggerKey (XIMS ims, CARD16 connect_id) total_size = FrameMgrGetTotalSize (fm); reply = (unsigned char *) malloc (total_size); - if (!reply) + if (!reply) { + FrameMgrFree (fm); return; + } /*endif*/ memset (reply, 0, total_size); FrameMgrSetBuffer (fm, reply); @@ -254,8 +281,10 @@ void _Xi18nSetEventMask (XIMS ims, total_size = FrameMgrGetTotalSize (fm); reply = (unsigned char *) malloc (total_size); - if (!reply) + if (!reply) { + FrameMgrFree (fm); return; + } /*endif*/ memset (reply, 0, total_size); FrameMgrSetBuffer (fm, reply); diff --git a/util/IMdkit/i18nX.c b/util/IMdkit/i18nX.c index 0a5405872..152fc4e80 100644 --- a/util/IMdkit/i18nX.c +++ b/util/IMdkit/i18nX.c @@ -1,7 +1,9 @@ /****************************************************************** - Copyright 1994, 1995 by Sun Microsystems, Inc. - Copyright 1993, 1994 by Hewlett-Packard Company + Copyright (C) 1994-1995 Sun Microsystems, Inc. + Copyright (C) 1993-1994 Hewlett-Packard Company + Copyright (C) 2014 Peng Huang + Copyright (C) 2014 Red Hat, Inc. Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, @@ -29,6 +31,8 @@ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ******************************************************************/ +#include +#include #include #include #include @@ -38,12 +42,14 @@ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. #include "Xi18nX.h" #include "XimFunc.h" -extern Xi18nClient *_Xi18nFindClient(Xi18n, CARD16); -extern Xi18nClient *_Xi18nNewClient(Xi18n); -extern void _Xi18nDeleteClient(Xi18n, CARD16); -static Bool WaitXConnectMessage(Display*, Window, - XEvent*, XPointer); -static Bool WaitXIMProtocol(Display*, Window, XEvent*, XPointer); +extern Xi18nClient *_Xi18nFindClient (Xi18n, CARD16); +extern Xi18nClient *_Xi18nNewClient (Xi18n); +extern void _Xi18nDeleteClient (Xi18n, CARD16); +extern unsigned long _Xi18nLookupPropertyOffset (Xi18nOffsetCache *, Atom); +extern void _Xi18nSetPropertyOffset (Xi18nOffsetCache *, Atom, unsigned long); +static Bool WaitXConnectMessage (Display*, Window, + XEvent*, XPointer); +static Bool WaitXIMProtocol (Display*, Window, XEvent*, XPointer); static XClient *NewXClient (Xi18n i18n_core, Window new_client) { @@ -52,16 +58,21 @@ static XClient *NewXClient (Xi18n i18n_core, Window new_client) XClient *x_client; x_client = (XClient *) malloc (sizeof (XClient)); - x_client->client_win = new_client; - x_client->accept_win = XCreateSimpleWindow (dpy, - DefaultRootWindow(dpy), - 0, - 0, - 1, - 1, - 1, - 0, - 0); + if (!x_client) { + fprintf (stderr, "(XIM-IMdkit) WARNING: malloc failed in %s:%d.\n", + __FILE__, __LINE__); + } else { + x_client->client_win = new_client; + x_client->accept_win = XCreateSimpleWindow (dpy, + DefaultRootWindow(dpy), + 0, + 0, + 1, + 1, + 1, + 0, + 0); + } client->trans_rec = x_client; return ((XClient *) x_client); } @@ -87,6 +98,7 @@ static unsigned char *ReadXIMMessage (XIMS ims, client = client->next; } + assert (client); if (ev->format == 8) { /* ClientMessage only */ XimProtoHdr *hdr = (XimProtoHdr *) ev->data.b; @@ -129,7 +141,6 @@ static unsigned char *ReadXIMMessage (XIMS ims, else if (ev->format == 32) { /* ClientMessage and WindowProperty */ unsigned long length = (unsigned long) ev->data.l[0]; - unsigned long get_length; Atom atom = (Atom) ev->data.l[1]; int return_code; Atom actual_type_ret; @@ -137,21 +148,29 @@ static unsigned char *ReadXIMMessage (XIMS ims, unsigned long bytes_after_ret; unsigned char *prop; unsigned long nitems; - - /* Round up length to next 4 byte value. */ - get_length = length + 3; - if (get_length > LONG_MAX) - get_length = LONG_MAX; - get_length /= 4; - if (get_length == 0) { - fprintf(stderr, "%s: invalid length 0\n", __func__); + Xi18nOffsetCache *offset_cache = &client->offset_cache; + unsigned long offset; + unsigned long end; + unsigned long long_begin; + unsigned long long_end; + + if (length == 0) { + fprintf (stderr, "%s: invalid length 0\n", __func__); return NULL; } + + offset = _Xi18nLookupPropertyOffset (offset_cache, atom); + end = offset + length; + + /* The property data is retrieved in 32-bit chunks */ + long_begin = offset / 4; + long_end = (end + 3) / 4; + assert (x_client); return_code = XGetWindowProperty (i18n_core->address.dpy, x_client->accept_win, atom, - client->property_offset / 4, - get_length, + long_begin, + long_end - long_begin, True, AnyPropertyType, &actual_type_ret, @@ -162,32 +181,22 @@ static unsigned char *ReadXIMMessage (XIMS ims, if (return_code != Success || actual_format_ret == 0 || nitems == 0) { if (return_code == Success) XFree (prop); - client->property_offset = 0; + fprintf (stderr, + "(XIM-IMdkit) ERROR: XGetWindowProperty failed.\n" + "Protocol data is likely to be inconsistent.\n"); + _Xi18nSetPropertyOffset (offset_cache, atom, 0); return (unsigned char *) NULL; } /* Update the offset to read next time as needed */ if (bytes_after_ret > 0) - client->property_offset += length; + _Xi18nSetPropertyOffset (offset_cache, atom, offset + length); else - client->property_offset = 0; - switch (actual_format_ret) { - case 8: - case 16: - case 32: - length = nitems * actual_format_ret / 8; - break; - default: - fprintf(stderr, "%s: unknown property return format: %d\n", - __func__, actual_format_ret); - XFree(prop); - client->property_offset = 0; - return NULL; - } + _Xi18nSetPropertyOffset (offset_cache, atom, 0); /* if hit, it might be an error */ if ((p = (unsigned char *) malloc (length)) == NULL) return (unsigned char *) NULL; - memmove (p, prop, length); + memcpy (p, prop + (offset % 4), length); XFree (prop); } return (unsigned char *) p; @@ -215,7 +224,7 @@ static void ReadXConnectMessage (XIMS ims, XClientMessageEvent *ev) } /*endif*/ _XRegisterFilterByType (dpy, - x_client->accept_win, + x_client ? x_client->accept_win : 0, ClientMessage, ClientMessage, WaitXIMProtocol, @@ -225,7 +234,7 @@ static void ReadXConnectMessage (XIMS ims, XClientMessageEvent *ev) event.xclient.window = new_client; event.xclient.message_type = spec->connect_request; event.xclient.format = 32; - event.xclient.data.l[0] = x_client->accept_win; + event.xclient.data.l[0] = x_client ? x_client->accept_win : 0; event.xclient.data.l[1] = major_version; event.xclient.data.l[2] = minor_version; event.xclient.data.l[3] = XCM_DATA_LIMIT; @@ -275,11 +284,11 @@ static Bool Xi18nXEnd(XIMS ims) static char *MakeNewAtom (CARD16 connect_id, char *atomName) { static int sequence = 0; - sprintf (atomName, "_server%d_%d", connect_id, - ((sequence > 20) ? (sequence = 0) : sequence++)); + ((sequence > 20) ? (sequence = 0) : (0x1f & sequence))); + sequence++; return atomName; } @@ -417,13 +426,16 @@ static Bool Xi18nXWait (XIMS ims, && (hdr->minor_opcode == minor_opcode)) { + XFree (packet); return True; } else if (hdr->major_opcode == XIM_ERROR) { + XFree (packet); return False; } /*endif*/ + XFree (packet); } /*endif*/ } diff --git a/util/Makefile.am b/util/Makefile.am index b41bc9105..fcb79770c 100644 --- a/util/Makefile.am +++ b/util/Makefile.am @@ -8,17 +8,17 @@ # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. +# version 2.1 of the License, or (at your option) any later version. # # This library 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 Lesser General Public License for more details. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the -# Free Software Foundation, Inc., 59 Temple Place, Suite 330, -# Boston, MA 02111-1307 USA +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA if ENABLE_XIM SUBDIRS = \ diff --git a/xinput-ibus b/xinput-ibus index 052ad30fc..458145392 100644 --- a/xinput-ibus +++ b/xinput-ibus @@ -3,13 +3,16 @@ exec_prefix=${prefix} XIM=ibus XIM_PROGRAM="${exec_prefix}/bin/ibus-daemon" -ICON=ibus +ICON="ibus" XIM_ARGS="--xim" PREFERENCE_PROGRAM="${exec_prefix}/bin/ibus-setup" SHORT_DESC="IBus" GTK_IM_MODULE=ibus +NOT_RUN=gnome3 -if test -f /usr/lib64/qt4/plugins/inputmethods/libqtim-ibus.so || \ +if test -f /usr/lib64/qt5/plugins/platforminputcontexts/libibusplatforminputcontextplugin.so || \ + test -f /usr/lib/qt5/plugins/platforminputcontexts/libibusplatforminputcontextplugin.so || \ + test -f /usr/lib64/qt4/plugins/inputmethods/libqtim-ibus.so || \ test -f /usr/lib/qt4/plugins/inputmethods/libqtim-ibus.so; then QT_IM_MODULE=ibus